Function at 0x1001b580
Capabilities:
Encode data using xor

Disassembly:
push ebp
pxor xmm0, xmm0
pxor xmm1, xmm1
mov ebp, esp
push edi
mov edi, edx
push esi
push ebx
mov ebx, eax
and esp, 0xfffffff0
sub esp, 0x70
mov eax, dword [edx + 4]
movaps xmm2, xmmword [0x10031690]
mov ecx, dword [ebx + 4]
movaps xmm3, xmmword [0x10031690]
movzx edx, ax
shr eax, 0x10
cvtsi2ss xmm1, edx
xor edx, edx
cvtsi2ss xmm0, eax
mov eax, dword [ebx + 0x10]
mulss xmm0, dword [0x10031684]
add eax, ecx
addss xmm0, xmm1
pxor xmm1, xmm1
cvtsi2ss xmm1, dword [ebx]
mulss xmm0, xmm1
pxor xmm1, xmm1
divss xmm0, dword [0x10031688]
movss xmm1, xmm0
movaps xmm0, xmm2
cmpleps xmm2, xmm1
andps xmm0, xmm2
subps xmm1, xmm0
pxor xmm0, xmm0
pslld xmm2, 0x1f
cvttps2dq xmm1, xmm1
pxor xmm1, xmm2
movd esi, xmm1
movss xmm2, dword [0x100316a8]
sub eax, esi
div ecx
mov ecx, dword [ebx + 0x1c]
movd xmm5, edx
xor edx, edx
punpckldq xmm1, xmm5
movq qword [ebx + 8], xmm1
movzx eax, byte [edi + 0xe]
pxor xmm1, xmm1
cvtsi2ss xmm0, eax
mov eax, dword [ebx + 0x28]
divss xmm0, dword [0x100316a0]
mulss xmm0, dword [0x100316a4]
add eax, ecx
subss xmm2, xmm0
pxor xmm0, xmm0
cvtsi2ss xmm0, dword [ebx + 0x18]
mulss xmm0, dword [0x100316ac]
divss xmm0, dword [0x10031688]
movss xmm1, xmm0
movaps xmm0, xmm3
cmpleps xmm3, xmm1
movss dword [ebx + 0x30], xmm2
andps xmm0, xmm3
subps xmm1, xmm0
pslld xmm3, 0x1f
cvttps2dq xmm1, xmm1
pxor xmm1, xmm3
movd esi, xmm1
sub eax, esi
div ecx
mov eax, dword [ebx + 0x3c]
test eax, eax
movd xmm6, edx
punpckldq xmm1, xmm6
movq qword [ebx + 0x20], xmm1
mov dword [esp + 0x20], eax
jle 0x1001c02a
movss xmm5, dword [0x100316b0]
lea eax, [ebx + 0x58]
mov dword [esp + 0x14], ebx
movss xmm7, dword [0x100316d0]
mov dword [esp + 0x18], eax
mov eax, dword [sym.imp.ucrtbase.dll_pow]
movss dword [esp + 0x58], xmm5
movsd xmm6, qword [0x100316b8]
movss dword [esp + 0x50], xmm7
movss xmm5, dword [0x100316d8]
mov dword [esp + 0x1c], 0
movss xmm7, dword [0x100316f4]
movsd qword [esp + 0x60], xmm6
movss xmm6, dword [0x100316e0]
movss xmm0, dword [0x10031754]
mov dword [esp + 0x5c], eax
mov eax, dword [sym.imp.ucrtbase.dll_tan]
movss dword [esp + 0x68], xmm5
movaps xmmword [esp + 0x40], xmm6
movss dword [esp + 0x30], xmm7
mov dword [esp + 0x54], eax
nop
mov edx, dword [esp + 0x1c]
pxor xmm2, xmm2
mov eax, dword [esp + 0x20]
call fcn.1001a940
mov ecx, eax
test al, 8
je 0x1001b753
movzx eax, byte [edi + 9]
pxor xmm2, xmm2
cvtsi2ss xmm2, eax
movzx eax, byte [edi + 8]
pxor xmm1, xmm1
mov esi, dword [esp + 0x18]
movaps xmm3, xmmword [0x10031690]
cvtsi2ss xmm1, eax
mov ebx, dword [esi - 0x14]
mov eax, dword [esi - 8]
addss xmm1, xmm2
pxor xmm2, xmm2
cvtsi2ss xmm2, dword [esi - 0x18]
add eax, ebx
mulss xmm1, xmm2
pxor xmm2, xmm2
divss xmm1, dword [0x10031688]
movss xmm2, xmm1
movaps xmm1, xmm3
cmpleps xmm3, xmm2
andps xmm1, xmm3
subps xmm2, xmm1
pslld xmm3, 0x1f
cvttps2dq xmm2, xmm2
pxor xmm2, xmm3
movd edx, xmm2
sub eax, edx
xor edx, edx
div ebx
and ecx, 2
movd xmm6, edx
punpckldq xmm2, xmm6
movq qword [esi - 0x10], xmm2
pxor xmm2, xmm2
je 0x1001b7d5
movss xmm2, dword [0x100316c0]
mov ebx, dword [esp + 0x18]
xor esi, esi
movss dword [esp + 0x24], xmm2
lea esi, [esi]
pxor xmm3, xmm3
cvtsi2ss xmm3, dword [ebx]
pxor xmm2, xmm2
mov ecx, dword [ebx + 4]
movss xmm1, dword [esp + 0x24]
movss dword [esp + 0x28], xmm0
add ebx, 0x6c
addss xmm1, dword [esi*4 + 0x10031660]
add esi, 1
movaps xmm4, xmmword [0x10031690]
mov eax, dword [ebx - 0x5c]
mulss xmm1, xmm3
divss xmm1, dword [0x10031688]
movss xmm2, xmm1
movaps xmm1, xmm4
cmpleps xmm4, xmm2
add eax, ecx
andps xmm1, xmm4
subps xmm2, xmm1
pxor xmm1, xmm1
pslld xmm4, 0x1f
cvttps2dq xmm2, xmm2
pxor xmm2, xmm4
movd edx, xmm2
sub eax, edx
xor edx, edx
div ecx
movd xmm7, edx
punpckldq xmm2, xmm7
movq qword [ebx - 0x64], xmm2
mov eax, dword [ebx - 0x64]
pxor xmm2, xmm2
movss xmm4, dword [edi + 0x28]
movss xmm7, dword [0x100316c8]
movzx edx, ax
shr eax, 0x10
cvtsi2ss xmm2, edx
cvtsi2ss xmm1, eax
mov eax, dword [esp + 0x5c]
mulss xmm1, dword [0x10031684]
addss xmm1, xmm2
movss xmm2, dword [0x100316c8]
mulss xmm1, dword [0x100316c4]
mulss xmm1, dword [0x10031688]
cmpltss xmm2, xmm4
andps xmm4, xmm2
andnps xmm2, xmm7
orps xmm2, xmm4
movsd xmm7, qword [esp + 0x60]
mulss xmm2, dword [0x10031688]
movsd qword [esp], xmm7
mulss xmm2, xmm3
divss xmm1, xmm2
cvtss2sd xmm1, xmm1
movsd qword [esp + 8], xmm1
call eax
pxor xmm1, xmm1
pxor xmm2, xmm2
cvtsi2ss xmm2, dword [ebx - 0x50]
fstp qword [esp + 0x38]
movsd xmm7, qword [esp + 0x60]
cvtsd2ss xmm1, qword [esp + 0x38]
movss dword [ebx - 0x54], xmm1
movzx eax, byte [edi + 0x11]
pxor xmm1, xmm1
cvtsi2ss xmm1, eax
movzx eax, byte [edi + 0x10]
movsd qword [esp], xmm7
mulss xmm1, dword [0x100316cc]
addss xmm1, dword [0x100316cc]
mulss xmm1, dword [esp + 0x50]
divss xmm1, xmm2
pxor xmm2, xmm2
cvtsi2ss xmm2, eax
mov eax, dword [esp + 0x5c]
subss xmm2, dword [0x100316d4]
divss xmm2, dword [esp + 0x58]
cvtss2sd xmm2, xmm2
movsd qword [esp + 8], xmm2
movss dword [esp + 0x34], xmm1
call eax
movss xmm1, dword [esp + 0x34]
pxor xmm2, xmm2
mulss xmm1, dword [esp + 0x68]
fstp qword [esp + 0x38]
cvtsd2ss xmm2, qword [esp + 0x38]
mov edx, dword [esp + 0x54]
movss dword [esp + 0x38], xmm2
cvtss2sd xmm1, xmm1
movsd qword [esp], xmm1
call edx
movss xmm2, dword [esp + 0x38]
mov dword [ebx - 0x44], 0
movss xmm0, dword [esp + 0x28]
fstp qword [esp + 0x38]
movaps xmm1, xmm2
mov dword [ebx - 0x3c], 0
movss xmm3, dword [0x100316dc]
addss xmm1, xmm0
movss dword [ebx - 0x34], xmm0
movsd xmm7, qword [esp + 0x60]
subss xmm2, xmm0
divss xmm3, xmm1
pxor xmm1, xmm1
cvtsd2ss xmm1, qword [esp + 0x38]
movss dword [ebx - 0x38], xmm2
pxor xmm2, xmm2
cvtsi2ss xmm2, dword [ebx - 0x28]
mulss xmm3, xmm1
movaps xmm1, xmm0
subss xmm1, xmm3
addss xmm3, xmm0
divss xmm1, xmm3
movaps xmm3, xmm0
subss xmm3, xmm1
mulss xmm3, dword [esp + 0x68]
xorps xmm1, xmmword [esp + 0x40]
movss dword [ebx - 0x40], xmm1
pxor xmm1, xmm1
movss dword [ebx - 0x4c], xmm3
movss dword [ebx - 0x48], xmm3
movzx eax, byte [edi + 0x13]
cvtsi2ss xmm1, eax
movzx eax, byte [edi + 0x12]
movsd qword [esp], xmm7
mulss xmm1, dword [0x100316f0]
addss xmm1, dword [0x10031688]
mulss xmm1, dword [esp + 0x50]
divss xmm1, xmm2
pxor xmm2, xmm2
cvtsi2ss xmm2, eax
subss xmm2, dword [0x100316d4]
divss xmm2, dword [esp + 0x58]
cvtss2sd xmm2, xmm2
movsd qword [esp + 8], xmm2
movss dword [esp + 0x34], xmm1
mov eax, dword [esp + 0x5c]
call eax
movss xmm1, dword [esp + 0x34]
pxor xmm2, xmm2
mulss xmm1, dword [esp + 0x68]
fstp qword [esp + 0x38]
cvtsd2ss xmm2, qword [esp + 0x38]
mov edx, dword [esp + 0x54]
movss dword [esp + 0x38], xmm2
cvtss2sd xmm1, xmm1
movsd qword [esp], xmm1
call edx
movss xmm2, dword [esp + 0x38]
pxor xmm3, xmm3
mov dword [ebx - 0x1c], 0
movss xmm0, dword [esp + 0x28]
fstp qword [esp + 0x38]
movaps xmm1, xmm2
cvtsd2ss xmm3, qword [esp + 0x38]
movaps xmm5, xmmword [esp + 0x40]
mov dword [ebx - 0x14], 0
addss xmm1, xmm0
mulss xmm1, dword [esp + 0x30]
movss dword [ebx - 0xc], xmm0
subss xmm2, xmm0
mulss xmm1, xmm3
movaps xmm3, xmm0
movss dword [ebx - 0x10], xmm2
subss xmm3, xmm1
addss xmm1, xmm0
divss xmm3, xmm1
movaps xmm1, xmm3
xorps xmm3, xmm5
movss dword [ebx - 0x18], xmm3
addss xmm1, xmm0
mulss xmm1, dword [esp + 0x68]
movss dword [ebx - 0x24], xmm1
xorps xmm1, xmm5
movss dword [ebx - 0x20], xmm1
cmp esi, 8
jne 0x1001b7e8
add dword [esp + 0x1c], 1
mov esi, dword [esp + 0x20]
mov eax, dword [esp + 0x1c]
add dword [esp + 0x18], 0x418
cmp eax, esi
jne 0x1001b730
mov ebx, dword [esp + 0x14]
movsd xmm5, qword [esp + 0x60]
movss dword [esp + 0x54], xmm0
mov esi, dword [esp + 0x5c]
movss xmm1, dword [edi + 0x20]
movsd qword [esp], xmm5
divss xmm1, dword [esp + 0x58]
cvtss2sd xmm1, xmm1
movsd qword [esp + 8], xmm1
call esi
movsd xmm5, qword [esp + 0x60]
pxor xmm7, xmm7
fstp qword [esp + 0x68]
cvtsd2ss xmm7, qword [esp + 0x68]
movss dword [ebx + 0x14b8], xmm7
movss xmm1, dword [edi + 0x24]
divss xmm1, dword [esp + 0x58]
movss dword [esp + 0x18], xmm7
cvtss2sd xmm1, xmm1
movsd qword [esp], xmm5
movsd qword [esp + 8], xmm1
call esi
movsd xmm5, qword [esp + 0x60]
pxor xmm1, xmm1
fstp qword [esp + 0x68]
cvtsd2ss xmm1, qword [esp + 0x68]
movss dword [ebx + 0x14bc], xmm1
movss xmm1, dword [edi + 0x18]
divss xmm1, dword [esp + 0x58]
movsd qword [esp], xmm5
cvtss2sd xmm1, xmm1
movsd qword [esp + 8], xmm1
call esi
pxor xmm1, xmm1
mov esi, dword [esp + 0x20]
fstp qword [esp + 0x68]
movss xmm0, dword [esp + 0x54]
movss xmm4, dword [0x100316a8]
cvtsd2ss xmm1, qword [esp + 0x68]
movss dword [ebx + 0x14c0], xmm1
pxor xmm1, xmm1
movzx eax, byte [edi + 0xf]
test esi, esi
cvtsi2ss xmm1, eax
divss xmm1, dword [0x100316a0]
mulss xmm1, dword [0x100316a4]
subss xmm4, xmm1
jle 0x1001bf10
movss xmm5, dword [0x100316d0]
mov dword [esp + 0x38], edi
mov edi, ebx
movss xmm7, dword [0x100316e0]
mov eax, dword [sym.imp.ucrtbase.dll_tan]
mov dword [esp + 0x34], 0
movss xmm6, dword [0x100316d8]
movss dword [esp + 0x50], xmm5
movss xmm5, dword [0x100316f4]
movaps xmmword [esp + 0x40], xmm7
movss dword [esp + 0x68], xmm6
mov dword [esp + 0x54], eax
movss dword [esp + 0x30], xmm5
movss dword [esp + 0x14], xmm4
mov dword [esp + 0x10], ebx
lea esi, [esi]
mov edx, dword [esp + 0x34]
pxor xmm3, xmm3
mov eax, dword [esp + 0x20]
call fcn.1001a940
mov esi, eax
and eax, 2
mov dword [esp + 0x1c], eax
je 0x1001bcbc
movss xmm3, dword [0x100316c0]
movss xmm4, dword [esp + 0x14]
mov ecx, edi
xor ebx, ebx
movss xmm1, dword [ebx*4 + 0x10031650]
pxor xmm2, xmm2
cvtsi2ss xmm2, dword [ecx + 0x3b8]
add ebx, 1
movaps xmm5, xmmword [0x10031690]
movss dword [ecx + 0x3d0], xmm4
addss xmm1, xmm3
mov eax, dword [ecx + 0x3bc]
add eax, dword [ecx + 0x3c8]
mulss xmm1, xmm2
pxor xmm2, xmm2
divss xmm1, dword [0x10031688]
movss xmm2, xmm1
movaps xmm1, xmm5
cmpleps xmm5, xmm2
andps xmm1, xmm5
subps xmm2, xmm1
pslld xmm5, 0x1f
cvttps2dq xmm2, xmm2
pxor xmm2, xmm5
movd edx, xmm2
sub eax, edx
xor edx, edx
div dword [ecx + 0x3bc]
add ecx, 0x1c
movd xmm5, edx
punpckldq xmm2, xmm5
movq qword [ecx + 0x3a4], xmm2
cmp ebx, 4
jne 0x1001bcc6
mov eax, dword [esp + 0x38]
pxor xmm2, xmm2
movss dword [esp + 0x24], xmm0
cvtsi2ss xmm2, dword [edi + 0x428]
movss xmm1, dword [esp + 0x50]
movsd xmm5, qword [esp + 0x60]
mov ecx, dword [esp + 0x5c]
mulss xmm1, dword [eax + 0x14]
divss xmm1, xmm2
movd ebx, xmm1
movss xmm1, dword [eax + 0x18]
addss xmm1, dword [eax + 0x1c]
movsd qword [esp], xmm5
divss xmm1, dword [esp + 0x58]
cvtss2sd xmm1, xmm1
movsd qword [esp + 8], xmm1
call ecx
movd xmm1, ebx
mov ecx, dword [esp + 0x54]
pxor xmm2, xmm2
mulss xmm1, dword [esp + 0x68]
fstp qword [esp + 0x28]
cvtsd2ss xmm2, qword [esp + 0x28]
movss dword [esp + 0x28], xmm2
cvtss2sd xmm1, xmm1
movsd qword [esp], xmm1
call ecx
movss xmm2, dword [esp + 0x28]
pxor xmm3, xmm3
mov edx, esi
movss xmm0, dword [esp + 0x24]
fstp qword [esp + 0x28]
and edx, 8
and esi, 1
movaps xmm1, xmm2
cvtsd2ss xmm3, qword [esp + 0x28]
movss xmm6, dword [esp + 0x68]
mov dword [edi + 0x434], 0
addss xmm1, xmm0
mov eax, dword [esp + 0x38]
mov dword [edi + 0x43c], 0
mulss xmm1, dword [esp + 0x30]
subss xmm2, xmm0
movss dword [edi + 0x444], xmm0
movaps xmm5, xmmword [esp + 0x40]
movss dword [edi + 0x440], xmm2
mulss xmm1, xmm3
movaps xmm3, xmm0
subss xmm3, xmm1
addss xmm1, xmm0
divss xmm3, xmm1
movaps xmm1, xmm3
xorps xmm3, xmm5
movss dword [edi + 0x438], xmm3
addss xmm1, xmm0
mulss xmm1, xmm6
movss dword [edi + 0x42c], xmm1
xorps xmm1, xmm5
movss dword [edi + 0x430], xmm1
je 0x1001bf40
movzx eax, byte [eax + 0xc]
pxor xmm1, xmm1
movss xmm2, dword [0x100316fc]
cvtsi2ss xmm1, eax
divss xmm1, dword [0x100316f8]
mulss xmm1, xmm6
subss xmm2, xmm1
test edx, edx
je 0x1001beae
mulss xmm2, dword [0x10031708]
mov eax, dword [esp + 0x38]
movss dword [edi + 0x454], xmm2
pxor xmm1, xmm1
movzx eax, byte [eax + 0xa]
cvtsi2ss xmm1, eax
divss xmm1, dword [0x10031700]
add dword [esp + 0x34], 1
add edi, 0x418
movss xmm2, dword [0x10031704]
mulss xmm1, dword [0x100316a4]
mov eax, dword [esp + 0x34]
mov esi, dword [esp + 0x20]
subss xmm2, xmm1
mulss xmm2, dword [esp + 0x18]
movss dword [edi + 0x38], xmm2
cmp eax, esi
jne 0x1001bc98
mov ebx, dword [esp + 0x10]
mov edi, dword [esp + 0x38]
movss xmm1, dword [edi]
divss xmm1, dword [0x10031758]
subss xmm0, xmm1
movss dword [ebx + 0x14c4], xmm1
movss dword [ebx + 0x14c8], xmm0
lea esp, [ebp - 0xc]
pop ebx
pop esi
pop edi
pop ebp
ret
mov ecx, dword [esp + 0x1c]
movzx eax, byte [eax + 0xd]
test ecx, ecx
je 0x1001bfa0
movss xmm2, dword [0x100316fc]
pxor xmm1, xmm1
cvtsi2ss xmm1, eax
divss xmm1, dword [0x100316f8]
mulss xmm1, dword [esp + 0x68]
subss xmm2, xmm1
test edx, edx
je 0x1001c010
mulss xmm2, dword [0x10031708]
movss dword [edi + 0x454], xmm2
mov eax, dword [esp + 0x38]
pxor xmm1, xmm1
movzx eax, byte [eax + 0xb]
cvtsi2ss xmm1, eax
jmp 0x1001bec6
mov ecx, dword [esp + 0x38]
pxor xmm1, xmm1
movss xmm6, dword [esp + 0x68]
movss xmm2, dword [0x100316fc]
movzx ecx, byte [ecx + 0xc]
add eax, ecx
cvtsi2ss xmm1, eax
mulss xmm1, xmm6
divss xmm1, dword [0x100316f8]
mulss xmm1, xmm6
subss xmm2, xmm1
test edx, edx
je 0x1001c020
mulss xmm2, dword [0x10031708]
movss dword [edi + 0x454], xmm2
mov esi, dword [esp + 0x38]
pxor xmm1, xmm1
movzx eax, byte [esi + 0xa]
movzx edx, byte [esi + 0xb]
add eax, edx
cvtsi2ss xmm1, eax
mulss xmm1, dword [esp + 0x68]
jmp 0x1001bec6
movss dword [edi + 0x454], xmm2
jmp 0x1001bf86
movss dword [edi + 0x454], xmm2
jmp 0x1001bfe8
movss xmm6, dword [0x100316b0]
mov eax, dword [sym.imp.ucrtbase.dll_pow]
movss xmm0, dword [0x10031754]
movss dword [esp + 0x58], xmm6
movsd xmm6, qword [0x100316b8]
mov dword [esp + 0x5c], eax
movsd qword [esp + 0x60], xmm6
jmp 0x1001bb4b