Function at 0x1002a984
Capabilities:
Contain obfuscated stackstrings
Encode data using xor

Disassembly:
push ebp
mov ebp, esp
and esp, 0xfffffff0
sub esp, 0x48
mov eax, ecx
mov dword [esp + 0x40], edx
mov ecx, dword [ebp + 0x24]
mov edx, ecx
shr edx, 0x14
push esi
mov esi, dword [0x101c0bb0]
and edx, 1
mov dword [esp + 0x38], ecx
mov ecx, dword [ebp + 8]
mov dword [esp + 0x40], eax
mov dword [esp + 0x28], edx
push edi
cmp ecx, 8
je 0x1002a44f
cmp ecx, 9
je 0x1002a44f
xor cl, cl
jmp 0x1002a451
mov cl, 1
test byte [esp + 0x3c], 0x20
mov byte [esp + 0xf], cl
je 0x1002a465
mov byte [esp + 0xd], 1
test cl, cl
jne 0x1002a46a
mov byte [esp + 0xd], 0
movss xmm0, dword [eax + edx*4 + 8]
movss xmm4, dword [eax + edx*4]
mov eax, dword [ebp + 0x14]
movss xmm2, dword [esi + 0x1590]
cmp eax, dword [ebp + 0x1c]
mov eax, dword [ebp + 0x18]
mov edx, dword [ebp + 0x10]
movss dword [esp + 0x4c], xmm0
subss xmm0, xmm4
movss dword [esp + 0x30], xmm4
movss dword [esp + 0x34], xmm2
subss xmm0, dword [0x101afcc0]
movss dword [esp + 0x40], xmm0
ja 0x1002a4c1
jb 0x1002a4b5
cmp edx, eax
jae 0x1002a4c1
mov edi, eax
mov eax, dword [ebp + 0x1c]
sub edi, edx
sbb eax, dword [ebp + 0x14]
jmp 0x1002a4cb
mov edi, edx
sub edi, eax
mov eax, dword [ebp + 0x14]
sbb eax, dword [ebp + 0x1c]
mov dword [esp + 0x38], eax
test cl, cl
jne 0x1002a516
test eax, eax
jl 0x1002a516
jg 0x1002a4dd
test edi, edi
jb 0x1002a516
mov ecx, edi
mov edx, eax
add ecx, 1
adc edx, 0
call fcn.1015f9a0
movss xmm2, dword [esp + 0x40]
cvtsd2ss xmm0, xmm0
mov cl, byte [esp + 0xf]
movss xmm4, dword [esp + 0x30]
divss xmm2, xmm0
movss xmm0, dword [esp + 0x40]
maxss xmm2, dword [esp + 0x34]
movss dword [esp + 0x34], xmm2
comiss xmm0, xmm2
ja 0x1002a524
movaps xmm2, xmm0
movss dword [esp + 0x34], xmm2
cmp byte [esp + 0xd], 0
movaps xmm1, xmm0
addss xmm4, dword [0x101afc78]
mov eax, dword [ebp + 0x20]
subss xmm1, xmm2
movss xmm3, dword [0x101afc38]
xorps xmm0, xmm0
movss dword [esp + 0x28], xmm0
movss dword [esp + 0x24], xmm0
movss dword [esp + 0x30], xmm4
movss dword [esp + 0x10], xmm1
je 0x1002a5cb
test cl, cl
je 0x1002a56d
mov ecx, eax
call fcn.101239a0
jmp 0x1002a572
mov eax, 1
movsd xmm0, qword [0x101afc50]
movd xmm1, eax
cvtdq2ps xmm1, xmm1
cvtps2pd xmm1, xmm1
call fcn.10160390
movss xmm1, dword [esp + 0x10]
movss xmm3, dword [0x101afc38]
movss xmm2, dword [esi + 0x1598]
mulss xmm2, dword [0x101afbec]
cvtsd2ss xmm0, xmm0
movss xmm4, dword [esp + 0x30]
movss dword [esp + 0x28], xmm0
movaps xmm0, xmm1
maxss xmm0, xmm3
divss xmm2, xmm0
xorps xmm0, xmm0
movss dword [esp + 0x24], xmm2
mov eax, dword [esp + 0x48]
mov byte [esp + 0xe], 0
cmp dword [esi + 0x1aa4], eax
jne 0x1002a98a
mov eax, dword [esi + 0x1ad4]
cmp eax, 1
jne 0x1002a649
cmp byte [esi + 0xec], 0
je 0x1002a985
comiss xmm1, xmm0
mov eax, dword [esp + 0x2c]
jbe 0x1002a620
movss xmm2, dword [esi + eax*4 + 0xe4]
subss xmm2, xmm4
divss xmm2, xmm1
comiss xmm0, xmm2
ja 0x1002a620
movaps xmm1, xmm3
minss xmm1, xmm2
jmp 0x1002a623
xorps xmm1, xmm1
mov edi, dword [ebp + 0xc]
movss dword [esp + 0x10], xmm1
test eax, eax
je 0x1002a91d
movaps xmm0, xmm3
subss xmm0, xmm1
movaps xmm1, xmm0
movss dword [esp + 0x10], xmm1
jmp 0x1002a91d
cmp eax, 2
jne 0x1002a98a
cmp byte [esi + 0x1ab0], 0
je 0x1002a66c
mov dword [esi + 0x2e74], 0
mov byte [esi + 0x2e78], 0
push ecx
mov dword [esp], 0
lea ecx, [esp + 0x14]
push 5
xorps xmm3, xmm3
mov edx, 3
call fcn.100ddc00
add esp, 8
cmp dword [esp + 0x2c], 0
jne 0x1002a699
movss xmm1, dword [esp + 0x10]
jmp 0x1002a6a6
movss xmm1, dword [esp + 0x14]
xorps xmm1, xmmword [0x101b1470]
ucomiss xmm1, dword [0x101afb04]
movss dword [esp + 0x10], xmm1
lahf
test ah, 0x44
jnp 0x1002a798
cmp byte [esp + 0xf], 0
movss xmm3, dword [0x101afd04]
je 0x1002a6f6
mov ecx, dword [ebp + 0x20]
call fcn.101239a0
test eax, eax
jle 0x1002a6f6
movss xmm0, dword [esi + 0x338]
xorps xmm2, xmm2
comiss xmm0, xmm2
divss xmm1, dword [0x101afd6c]
jbe 0x1002a76c
divss xmm1, xmm3
jmp 0x1002a76c
mov edx, dword [esp + 0x38]
mov ecx, edi
call fcn.1015f9a0
movss xmm4, dword [0x101afd6c]
xorps xmm3, xmm3
cvtsd2ss xmm3, xmm0
comiss xmm3, dword [0x101afe7c]
jb 0x1002a71e
comiss xmm4, xmm3
jae 0x1002a72e
movss xmm0, dword [esi + 0x338]
xorps xmm2, xmm2
comiss xmm0, xmm2
jbe 0x1002a75a
xorps xmm0, xmm0
comiss xmm0, dword [esp + 0x10]
jbe 0x1002a749
movss xmm1, dword [0x101afe40]
xorps xmm2, xmm2
divss xmm1, xmm3
jmp 0x1002a764
movss xmm1, dword [0x101afc38]
xorps xmm2, xmm2
divss xmm1, xmm3
jmp 0x1002a764
movss xmm1, dword [esp + 0x10]
divss xmm1, xmm4
movss xmm3, dword [0x101afd04]
movss xmm0, dword [esi + 0x33c]
comiss xmm0, xmm2
jbe 0x1002a77d
mulss xmm1, xmm3
movss xmm0, dword [esi + 0x2e74]
addss xmm0, xmm1
mov byte [esi + 0x2e78], 1
movss dword [esi + 0x2e74], xmm0
movss xmm2, dword [esi + 0x2e74]
mov eax, dword [esp + 0x48]
movss dword [esp + 0x38], xmm2
cmp dword [esi + 0x1bd8], eax
jne 0x1002a7bf
cmp byte [esi + 0x1ab0], 0
je 0x1002a985
cmp byte [esi + 0x2e78], 0
mov edi, dword [ebp + 0xc]
je 0x1002a98d
movss xmm0, dword [esp + 0x24]
sub esp, 8
mov dl, byte [esp + 0x15]
movss dword [esp + 4], xmm0
movss xmm0, dword [esp + 0x30]
movss dword [esp], xmm0
push dword [ebp + 0x1c]
push dword [ebp + 0x18]
push dword [ebp + 0x14]
push dword [ebp + 0x10]
push dword [edi + 4]
push dword [edi]
call fcn.1002db50
movss xmm3, dword [0x101afc38]
movaps xmm2, xmm0
movss xmm1, dword [esp + 0x58]
add esp, 0x20
comiss xmm2, xmm3
movss dword [esp + 0x48], xmm2
xorps xmm0, xmm0
jb 0x1002a82a
comiss xmm1, xmm0
ja 0x1002a834
comiss xmm0, xmm2
jb 0x1002a84a
comiss xmm0, xmm1
jbe 0x1002a84a
mov dword [esi + 0x2e74], 0
mov byte [esi + 0x2e78], 0
jmp 0x1002a98d
addss xmm1, xmm2
comiss xmm0, xmm1
ja 0x1002a85a
movaps xmm0, xmm3
minss xmm0, xmm1
movss xmm1, dword [esp + 0x24]
sub esp, 8
mov dl, byte [esp + 0x15]
mov ecx, dword [ebp + 8]
movss dword [esp + 0x18], xmm0
movss dword [esp + 4], xmm1
movss xmm1, dword [esp + 0x30]
movss dword [esp], xmm1
movaps xmm1, xmm0
push dword [ebp + 0x1c]
push dword [ebp + 0x18]
push dword [ebp + 0x14]
push dword [ebp + 0x10]
call fcn.1002dfa0
add esp, 0x18
test byte [esp + 0x3c], 0x40
jne 0x1002a8af
mov ecx, dword [ebp + 0x20]
push edx
mov edx, dword [ebp + 8]
push eax
call fcn.1002e3c0
add esp, 8
movss xmm0, dword [esp + 0x24]
sub esp, 8
movss dword [esp + 4], xmm0
movss xmm0, dword [esp + 0x30]
movss dword [esp], xmm0
push dword [ebp + 0x1c]
push dword [ebp + 0x18]
push dword [ebp + 0x14]
push dword [ebp + 0x10]
push edx
mov dl, byte [esp + 0x29]
push eax
call fcn.1002db50
movss xmm2, dword [esp + 0x58]
add esp, 0x20
comiss xmm2, dword [0x101afb04]
movss xmm1, dword [esi + 0x2e74]
subss xmm0, dword [esp + 0x48]
jbe 0x1002a906
minss xmm0, xmm2
jmp 0x1002a90a
maxss xmm0, xmm2
subss xmm1, xmm0
movss dword [esi + 0x2e74], xmm1
mov byte [esi + 0x2e78], 0
movss xmm0, dword [esp + 0x24]
sub esp, 8
mov esi, dword [ebp + 8]
mov ecx, esi
mov dl, byte [esp + 0x15]
movss xmm1, dword [esp + 0x18]
movss dword [esp + 4], xmm0
movss xmm0, dword [esp + 0x30]
movss dword [esp], xmm0
push dword [ebp + 0x1c]
push dword [ebp + 0x18]
push dword [ebp + 0x14]
push dword [ebp + 0x10]
call fcn.1002dfa0
add esp, 0x18
test byte [esp + 0x3c], 0x40
jne 0x1002a970
mov ecx, dword [ebp + 0x20]
push edx
push eax
mov edx, esi
call fcn.1002e3c0
add esp, 8
cmp dword [edi], eax
jne 0x1002a979
cmp dword [edi + 4], edx
je 0x1002a98d
mov dword [edi], eax
mov dword [edi + 4], edx
mov byte [esp + 0xe], 1
jmp 0x1002a98d
call fcn.100ed160
mov edi, dword [ebp + 0xc]
movss xmm0, dword [0x101afc38]
comiss xmm0, dword [esp + 0x40]
jbe 0x1002a9ca
mov eax, dword [esp + 0x44]
mov ecx, dword [eax]
mov edx, dword [eax + 4]
mov al, byte [esp + 0xe]
mov dword [esp + 0x10], ecx
mov dword [esp + 0x18], ecx
mov ecx, dword [ebp + 0x28]
mov dword [esp + 0x14], edx
mov dword [esp + 0x1c], edx
movups xmm0, xmmword [esp + 0x10]
movups xmmword [ecx], xmm0
pop edi
pop esi
mov esp, ebp
pop ebp
ret
movss xmm0, dword [esp + 0x24]
sub esp, 8
mov dl, byte [esp + 0x15]
movss dword [esp + 4], xmm0
movss xmm0, dword [esp + 0x30]
movss dword [esp], xmm0
push dword [ebp + 0x1c]
push dword [ebp + 0x18]
push dword [ebp + 0x14]
push dword [ebp + 0x10]
push dword [edi + 4]
push dword [edi]
call fcn.1002db50
mov eax, dword [esp + 0x4c]
add esp, 0x20
test eax, eax
je 0x1002aa18
movss xmm1, dword [0x101afc38]
subss xmm1, xmm0
movaps xmm0, xmm1
movss xmm3, dword [esp + 0x4c]
test eax, eax
subss xmm3, dword [esp + 0x30]
movss xmm4, dword [0x101afbec]
mov eax, dword [esp + 0x44]
mulss xmm3, xmm0
movss xmm0, dword [esp + 0x34]
mulss xmm0, xmm4
addss xmm3, dword [esp + 0x30]
movaps xmm2, xmm3
addss xmm3, xmm0
subss xmm2, xmm0
jne 0x1002aa7d
movss xmm0, dword [eax + 4]
movss xmm1, dword [eax + 0xc]
mov eax, dword [ebp + 0x28]
movss dword [eax], xmm2
movss dword [eax + 4], xmm0
movss dword [eax + 8], xmm3
movss dword [eax + 0xc], xmm1
mov al, byte [esp + 0xe]
pop edi
pop esi
mov esp, ebp
pop ebp
ret
movss xmm0, dword [eax + 8]
movaps xmm1, xmm0
addss xmm0, dword [eax]
mov eax, dword [ebp + 0x28]
subss xmm1, dword [0x101afc78]
pop edi
pop esi
mulss xmm0, xmm4
movss dword [eax], xmm0
movss dword [eax + 4], xmm2
movss dword [eax + 8], xmm1
movss dword [eax + 0xc], xmm3
mov al, byte [esp + 6]
mov esp, ebp
pop ebp
ret