Function at 0x1000fef0
Capabilities:
Encode data using xor

Disassembly:
push ebp
pxor xmm0, xmm0
pxor xmm1, xmm1
pxor xmm4, xmm4
mov ebp, esp
push edi
mov edi, eax
push esi
mov esi, edx
push ebx
and esp, 0xfffffff0
sub esp, 0x70
movups xmm5, xmmword [0x100253c0]
mov ecx, dword [edi + 4]
mov dword [esp + 0x20], eax
mov eax, dword [edx + 4]
movups xmm6, xmm5
movzx edx, ax
shr eax, 0x10
cvtsi2ss xmm0, eax
mov eax, dword [edi + 0x10]
mulss xmm0, dword [0x100253ac]
cvtsi2ss xmm1, edx
add eax, ecx
addss xmm0, xmm1
pxor xmm1, xmm1
cvtsi2ss xmm1, dword [edi]
mulss xmm0, xmm1
movss xmm1, dword [0x100253d8]
divss xmm0, dword [0x100253b0]
movss xmm4, xmm0
pxor xmm0, xmm0
cmpleps xmm5, xmm4
andps xmm6, xmm5
pslld xmm5, 0x1f
subps xmm4, xmm6
cvttps2dq xmm4, xmm4
pxor xmm4, xmm5
movups xmm5, xmmword [0x100253c0]
movd edx, xmm4
movd dword [edi + 8], xmm4
pxor xmm4, xmm4
sub eax, edx
xor edx, edx
movups xmm6, xmm5
div ecx
mov ecx, dword [edi + 0x1c]
mov dword [edi + 0xc], edx
movzx eax, byte [esi + 0xe]
cvtsi2ss xmm0, eax
mov eax, dword [edi + 0x28]
divss xmm0, dword [0x100253d0]
mulss xmm0, dword [0x100253d4]
add eax, ecx
subss xmm1, xmm0
pxor xmm0, xmm0
cvtsi2ss xmm0, dword [edi + 0x18]
mulss xmm0, dword [0x100253dc]
divss xmm0, dword [0x100253b0]
movss xmm4, xmm0
cmpleps xmm5, xmm4
movss dword [edi + 0x30], xmm1
andps xmm6, xmm5
pslld xmm5, 0x1f
subps xmm4, xmm6
cvttps2dq xmm4, xmm4
pxor xmm4, xmm5
movd edx, xmm4
movd dword [edi + 0x20], xmm4
sub eax, edx
xor edx, edx
div ecx
mov ecx, dword [edi + 0x3c]
mov dword [edi + 0x24], edx
test ecx, ecx
jle 0x10010991
movss xmm4, dword [0x100253e0]
mov eax, dword [esp + 0x20]
mov dword [esp + 0x24], 0
movss xmm5, dword [0x10025424]
movss xmm1, dword [0x10025408]
movss dword [esp + 0x54], xmm4
movsd xmm4, qword [0x100253e8]
mov dword [esp + 0x14], eax
mov eax, dword [sym.imp.ucrtbase.dll_pow]
movsd qword [esp + 0x58], xmm4
movss xmm4, dword [0x100253a8]
mov dword [esp + 0x60], eax
mov eax, dword [sym.imp.ucrtbase.dll_tan]
movss dword [esp + 0x18], xmm4
movss xmm4, dword [0x100253fc]
mov dword [esp + 0x3c], eax
movss dword [esp + 0x50], xmm4
movss xmm4, dword [0x10025404]
movss dword [esp + 0x1c], xmm5
movss dword [esp + 0x68], xmm4
movss xmm4, dword [0x10025410]
movups xmmword [esp + 0x40], xmm4
nop
mov edx, dword [esp + 0x24]
mov eax, ecx
mov dword [esp + 0x64], ecx
pxor xmm2, xmm2
call fcn.1000f690
mov ecx, dword [esp + 0x64]
test al, 8
je 0x100100c7
movzx eax, byte [esi + 9]
pxor xmm2, xmm2
cvtsi2ss xmm2, eax
movzx eax, byte [esi + 8]
pxor xmm0, xmm0
mov edi, dword [esp + 0x14]
pxor xmm4, xmm4
movups xmm5, xmmword [0x100253c0]
mov dword [esp + 0x64], 0
cvtsi2ss xmm0, eax
mov ebx, dword [edi + 0x44]
mov eax, dword [edi + 0x50]
movups xmm7, xmm5
add eax, ebx
addss xmm0, xmm2
pxor xmm2, xmm2
cvtsi2ss xmm2, dword [edi + 0x40]
mulss xmm0, xmm2
divss xmm0, dword [0x100253b0]
movss xmm4, xmm0
cmpleps xmm5, xmm4
andps xmm7, xmm5
pslld xmm5, 0x1f
subps xmm4, xmm7
cvttps2dq xmm4, xmm4
pxor xmm4, xmm5
movd edx, xmm4
movd dword [edi + 0x48], xmm4
sub eax, edx
xor edx, edx
div ebx
lea ebx, [edi + 0x58]
mov eax, ecx
mov dword [edi + 0x4c], edx
jmp 0x10010415
mulss xmm2, dword [0x100253b0]
mov eax, dword [edi + 0x60]
pxor xmm0, xmm0
pxor xmm3, xmm3
add edi, 0x6c
movsd xmm6, qword [esp + 0x58]
movss dword [esp + 0x38], xmm1
add ebx, 0x6c
movzx edx, ax
shr eax, 0x10
cvtsi2ss xmm0, eax
mov eax, dword [esp + 0x60]
mulss xmm0, dword [0x100253ac]
cvtsi2ss xmm3, edx
addss xmm0, xmm3
pxor xmm3, xmm3
mulss xmm0, dword [0x100253f4]
cvtsi2ss xmm3, dword [edi - 0x14]
movsd qword [esp], xmm6
mulss xmm0, dword [0x100253b0]
mulss xmm2, xmm3
divss xmm0, xmm2
cvtss2sd xmm0, xmm0
movsd qword [esp + 8], xmm0
call eax
pxor xmm0, xmm0
pxor xmm2, xmm2
movsd xmm6, qword [esp + 0x58]
fstp qword [esp + 0x30]
cvtsi2ss xmm2, dword [ebx - 0x50]
cvtsd2ss xmm0, qword [esp + 0x30]
movss dword [ebx - 0x54], xmm0
movzx eax, byte [esi + 0x11]
pxor xmm0, xmm0
movsd qword [esp], xmm6
cvtsi2ss xmm0, eax
movzx eax, byte [esi + 0x10]
mulss xmm0, dword [0x100253f8]
addss xmm0, dword [0x100253f8]
mulss xmm0, dword [esp + 0x50]
divss xmm0, xmm2
pxor xmm2, xmm2
cvtsi2ss xmm2, eax
mov eax, dword [esp + 0x60]
subss xmm2, dword [0x10025400]
divss xmm2, dword [esp + 0x54]
cvtss2sd xmm2, xmm2
movsd qword [esp + 8], xmm2
movss dword [esp + 0x28], xmm0
call eax
movss xmm0, dword [esp + 0x28]
pxor xmm2, xmm2
mov ecx, dword [esp + 0x3c]
mulss xmm0, dword [esp + 0x68]
fstp qword [esp + 0x30]
cvtsd2ss xmm2, qword [esp + 0x30]
movss dword [esp + 0x30], xmm2
cvtss2sd xmm0, xmm0
movsd qword [esp], xmm0
call ecx
movss xmm2, dword [esp + 0x30]
movss xmm1, dword [esp + 0x38]
mov dword [ebx - 0x44], 0
movss xmm3, dword [0x1002540c]
fstp qword [esp + 0x30]
movsd xmm6, qword [esp + 0x58]
movups xmm0, xmm2
subss xmm2, xmm1
movss dword [ebx - 0x34], xmm1
addss xmm0, xmm1
mov dword [ebx - 0x3c], 0
movss dword [ebx - 0x38], xmm2
pxor xmm2, xmm2
divss xmm3, xmm0
cvtsi2ss xmm2, dword [ebx - 0x28]
pxor xmm0, xmm0
cvtsd2ss xmm0, qword [esp + 0x30]
mulss xmm3, xmm0
movups xmm0, xmm1
subss xmm0, xmm3
addss xmm3, xmm1
divss xmm0, xmm3
movups xmm3, xmm1
subss xmm3, xmm0
mulss xmm3, dword [esp + 0x68]
xorps xmm0, xmmword [esp + 0x40]
movss dword [ebx - 0x40], xmm0
pxor xmm0, xmm0
movss dword [ebx - 0x4c], xmm3
movss dword [ebx - 0x48], xmm3
movzx eax, byte [esi + 0x13]
movsd qword [esp], xmm6
cvtsi2ss xmm0, eax
movzx eax, byte [esi + 0x12]
mulss xmm0, dword [0x10025420]
addss xmm0, dword [0x100253b0]
mulss xmm0, dword [esp + 0x50]
divss xmm0, xmm2
pxor xmm2, xmm2
cvtsi2ss xmm2, eax
subss xmm2, dword [0x10025400]
divss xmm2, dword [esp + 0x54]
cvtss2sd xmm2, xmm2
movsd qword [esp + 8], xmm2
movss dword [esp + 0x28], xmm0
mov eax, dword [esp + 0x60]
call eax
movss xmm0, dword [esp + 0x28]
pxor xmm2, xmm2
mov ecx, dword [esp + 0x3c]
mulss xmm0, dword [esp + 0x68]
fstp qword [esp + 0x30]
cvtsd2ss xmm2, qword [esp + 0x30]
movss dword [esp + 0x30], xmm2
cvtss2sd xmm0, xmm0
movsd qword [esp], xmm0
call ecx
pxor xmm3, xmm3
movups xmm7, xmmword [esp + 0x40]
add dword [esp + 0x64], 1
movss xmm2, dword [esp + 0x30]
fstp qword [esp + 0x30]
movss xmm1, dword [esp + 0x38]
cvtsd2ss xmm3, qword [esp + 0x30]
mov eax, dword [esp + 0x64]
mov dword [ebx - 0x1c], 0
movups xmm0, xmm2
subss xmm2, xmm1
movss dword [ebx - 0xc], xmm1
addss xmm0, xmm1
mulss xmm0, dword [esp + 0x1c]
mov dword [ebx - 0x14], 0
movss dword [ebx - 0x10], xmm2
mulss xmm0, xmm3
movups xmm3, xmm1
subss xmm3, xmm0
addss xmm0, xmm1
divss xmm3, xmm0
movups xmm0, xmm3
xorps xmm3, xmm7
addss xmm0, xmm1
mulss xmm0, dword [esp + 0x68]
movss dword [ebx - 0x18], xmm3
movss dword [ebx - 0x24], xmm0
xorps xmm0, xmm7
movss dword [ebx - 0x20], xmm0
cmp eax, 8
je 0x100104b8
mov eax, dword [esp + 0x20]
mov eax, dword [eax + 0x3c]
mov ecx, dword [esp + 0x64]
mov edx, dword [esp + 0x24]
movss xmm2, dword [ecx*4 + 0x10025380]
call fcn.1000f690
movss xmm3, dword [0x100253a4]
test al, 2
jne 0x1001043b
pxor xmm3, xmm3
pxor xmm0, xmm0
addss xmm2, xmm3
pxor xmm6, xmm6
mov ecx, dword [ebx + 4]
cvtsi2ss xmm0, dword [ebx]
movups xmm4, xmmword [0x100253c0]
mov eax, dword [ebx + 0x10]
movups xmm7, xmm4
add eax, ecx
mulss xmm0, xmm2
divss xmm0, dword [0x100253b0]
movss xmm6, xmm0
cmpleps xmm4, xmm6
andps xmm7, xmm4
pslld xmm4, 0x1f
subps xmm6, xmm7
cvttps2dq xmm6, xmm6
pxor xmm6, xmm4
movd edx, xmm6
movd dword [ebx + 8], xmm6
sub eax, edx
xor edx, edx
div ecx
mov dword [ebx + 0xc], edx
movss xmm2, dword [esi + 0x28]
comiss xmm2, dword [0x100253f0]
ja 0x10010148
movss xmm2, dword [esp + 0x18]
jmp 0x10010150
mov edi, dword [esp + 0x20]
add dword [esp + 0x24], 1
mov eax, dword [esp + 0x24]
add dword [esp + 0x14], 0x418
mov ecx, dword [edi + 0x3c]
cmp ecx, eax
jg 0x100100a0
movsd xmm5, qword [esp + 0x58]
movss dword [esp + 0x64], xmm1
mov ebx, dword [esp + 0x60]
movss xmm0, dword [esi + 0x20]
divss xmm0, dword [esp + 0x54]
cvtss2sd xmm0, xmm0
movsd qword [esp + 8], xmm0
movsd qword [esp], xmm5
call ebx
mov edi, dword [esp + 0x20]
movsd xmm5, qword [esp + 0x58]
pxor xmm0, xmm0
fstp qword [esp + 0x68]
cvtsd2ss xmm0, qword [esp + 0x68]
movss dword [edi + 0x14b8], xmm0
movss xmm0, dword [esi + 0x24]
divss xmm0, dword [esp + 0x54]
movsd qword [esp], xmm5
cvtss2sd xmm0, xmm0
movsd qword [esp + 8], xmm0
call ebx
movsd xmm5, qword [esp + 0x58]
pxor xmm0, xmm0
fstp qword [esp + 0x68]
cvtsd2ss xmm0, qword [esp + 0x68]
movss dword [edi + 0x14bc], xmm0
movss xmm0, dword [esi + 0x18]
divss xmm0, dword [esp + 0x54]
movsd qword [esp], xmm5
cvtss2sd xmm0, xmm0
movsd qword [esp + 8], xmm0
call ebx
pxor xmm0, xmm0
movss xmm1, dword [esp + 0x64]
movss xmm2, dword [0x100253d8]
fstp qword [esp + 0x68]
cvtsd2ss xmm0, qword [esp + 0x68]
movss dword [edi + 0x14c0], xmm0
movzx eax, byte [esi + 0xf]
pxor xmm0, xmm0
cvtsi2ss xmm0, eax
mov eax, dword [edi + 0x3c]
divss xmm0, dword [0x100253d0]
mulss xmm0, dword [0x100253d4]
test eax, eax
subss xmm2, xmm0
jle 0x10010896
movss xmm5, dword [0x10025404]
mov edx, dword [sym.imp.ucrtbase.dll_tan]
mov dword [esp + 0x64], 0
movss xmm4, dword [0x100253fc]
mov edi, dword [esp + 0x20]
movss dword [esp + 0x14], xmm2
movss dword [esp + 0x68], xmm5
movss xmm5, dword [0x10025424]
mov dword [esp + 0x3c], edx
movss dword [esp + 0x50], xmm4
movss xmm4, dword [0x10025410]
movups xmmword [esp + 0x40], xmm4
movss dword [esp + 0x1c], xmm5
lea esi, [esi]
mov edx, dword [esp + 0x64]
pxor xmm4, xmm4
call fcn.1000f690
mov dword [esp + 0x30], eax
and eax, 2
mov dword [esp + 0x24], eax
je 0x10010642
movss xmm4, dword [0x100253a4]
mov dword [esp + 0x28], edi
movss xmm2, dword [esp + 0x14]
mov ecx, edi
xor ebx, ebx
movss xmm0, dword [ebx*4 + 0x10025354]
pxor xmm3, xmm3
pxor xmm5, xmm5
add ebx, 1
mov edi, dword [ecx + 0x3bc]
mov eax, dword [ecx + 0x3c8]
cvtsi2ss xmm3, dword [ecx + 0x3b8]
movss dword [ecx + 0x3d0], xmm2
addss xmm0, xmm4
movups xmm6, xmmword [0x100253c0]
add ecx, 0x1c
add eax, edi
movups xmm7, xmm6
mulss xmm0, xmm3
divss xmm0, dword [0x100253b0]
movss xmm5, xmm0
cmpleps xmm6, xmm5
andps xmm7, xmm6
pslld xmm6, 0x1f
subps xmm5, xmm7
cvttps2dq xmm5, xmm5
pxor xmm5, xmm6
movd edx, xmm5
movd dword [ecx + 0x3a4], xmm5
sub eax, edx
xor edx, edx
div edi
mov dword [ecx + 0x3a8], edx
cmp ebx, 4
jne 0x10010650
mov edi, dword [esp + 0x28]
movss xmm0, dword [esp + 0x50]
pxor xmm3, xmm3
movss dword [esp + 0x38], xmm1
mulss xmm0, dword [esi + 0x14]
movsd xmm4, qword [esp + 0x58]
cvtsi2ss xmm3, dword [edi + 0x428]
mov eax, dword [esp + 0x60]
movsd qword [esp], xmm4
divss xmm0, xmm3
movd ebx, xmm0
movss xmm0, dword [esi + 0x18]
addss xmm0, dword [esi + 0x1c]
divss xmm0, dword [esp + 0x54]
cvtss2sd xmm0, xmm0
movsd qword [esp + 8], xmm0
call eax
movd xmm0, ebx
pxor xmm3, xmm3
mov eax, dword [esp + 0x3c]
mulss xmm0, dword [esp + 0x68]
fstp qword [esp + 0x28]
cvtsd2ss xmm3, qword [esp + 0x28]
movss dword [esp + 0x28], xmm3
cvtss2sd xmm0, xmm0
movsd qword [esp], xmm0
call eax
movss xmm3, dword [esp + 0x28]
pxor xmm4, xmm4
mov eax, dword [esp + 0x30]
movss xmm1, dword [esp + 0x38]
fstp qword [esp + 0x28]
movss xmm6, dword [esp + 0x68]
movups xmm0, xmm3
cvtsd2ss xmm4, qword [esp + 0x28]
movups xmm7, xmmword [esp + 0x40]
mov edx, eax
addss xmm0, xmm1
mulss xmm0, dword [esp + 0x1c]
and edx, 8
mov dword [edi + 0x434], 0
subss xmm3, xmm1
movss dword [edi + 0x444], xmm1
mov dword [edi + 0x43c], 0
movss dword [edi + 0x440], xmm3
mulss xmm0, xmm4
movups xmm4, xmm1
subss xmm4, xmm0
addss xmm0, xmm1
divss xmm4, xmm0
movups xmm0, xmm4
xorps xmm4, xmm7
addss xmm0, xmm1
movss dword [edi + 0x438], xmm4
mulss xmm0, xmm6
movss dword [edi + 0x42c], xmm0
xorps xmm0, xmm7
movss dword [edi + 0x430], xmm0
test al, 1
je 0x100108c0
movzx eax, byte [esi + 0xc]
pxor xmm0, xmm0
movss xmm3, dword [0x1002542c]
cvtsi2ss xmm0, eax
divss xmm0, dword [0x10025428]
mulss xmm0, xmm6
subss xmm3, xmm0
movss dword [edi + 0x454], xmm3
test edx, edx
je 0x10010843
mulss xmm3, dword [0x10025438]
movss dword [edi + 0x454], xmm3
movzx eax, byte [esi + 0xa]
pxor xmm0, xmm0
cvtsi2ss xmm0, eax
mov eax, dword [esp + 0x20]
add dword [esp + 0x64], 1
add edi, 0x418
divss xmm0, dword [0x10025430]
mulss xmm0, dword [0x100253d4]
mov edx, dword [esp + 0x64]
movss xmm3, dword [0x10025434]
subss xmm3, xmm0
mulss xmm3, dword [eax + 0x14b8]
movss dword [edi + 0x38], xmm3
mov eax, dword [eax + 0x3c]
cmp eax, edx
jg 0x10010620
movss xmm0, dword [esi]
divss xmm0, dword [esp + 0x18]
subss xmm1, xmm0
mov eax, dword [esp + 0x20]
movss dword [eax + 0x14c4], xmm0
movss dword [eax + 0x14c8], xmm1
lea esp, [ebp - 0xc]
pop ebx
pop esi
pop edi
pop ebp
ret
mov ecx, dword [esp + 0x24]
movzx eax, byte [esi + 0xd]
test ecx, ecx
je 0x10010910
movss xmm3, dword [0x1002542c]
pxor xmm0, xmm0
cvtsi2ss xmm0, eax
divss xmm0, dword [0x10025428]
mulss xmm0, dword [esp + 0x68]
subss xmm3, xmm0
movss dword [edi + 0x454], xmm3
test edx, edx
jne 0x10010970
movzx eax, byte [esi + 0xb]
pxor xmm0, xmm0
cvtsi2ss xmm0, eax
jmp 0x1001084f
movzx ecx, byte [esi + 0xc]
pxor xmm0, xmm0
movss xmm4, dword [esp + 0x68]
movss xmm3, dword [0x1002542c]
add eax, ecx
cvtsi2ss xmm0, eax
mulss xmm0, xmm4
divss xmm0, dword [0x10025428]
mulss xmm0, xmm4
subss xmm3, xmm0
movss dword [edi + 0x454], xmm3
test edx, edx
jne 0x10010970
movzx eax, byte [esi + 0xb]
movzx edx, byte [esi + 0xa]
pxor xmm0, xmm0
add eax, edx
cvtsi2ss xmm0, eax
mulss xmm0, dword [esp + 0x68]
jmp 0x1001084f
mulss xmm3, dword [0x10025438]
mov edx, dword [esp + 0x24]
movss dword [edi + 0x454], xmm3
movzx eax, byte [esi + 0xb]
test edx, edx
je 0x10010950
jmp 0x100108fe
movss xmm4, dword [0x100253e0]
mov eax, dword [sym.imp.ucrtbase.dll_pow]
movss xmm1, dword [0x10025408]
movss dword [esp + 0x54], xmm4
movsd xmm4, qword [0x100253e8]
mov dword [esp + 0x60], eax
movsd qword [esp + 0x58], xmm4
movss xmm4, dword [0x100253a8]
movss dword [esp + 0x18], xmm4
jmp 0x100104d8