Function at 0x1002b174
Capabilities:
Encode data using xor

Disassembly:
push ebp
mov ebp, esp
and esp, 0xfffffff0
sub esp, 0x58
mov eax, dword [ebp + 8]
push esi
mov esi, dword [0x101c0bb0]
push edi
mov edi, ecx
mov dword [esp + 0x14], edx
mov edx, dword [ebp + 0x14]
mov ecx, edx
shr ecx, 0x14
and ecx, 1
mov dword [esp + 0x38], edx
mov dword [esp + 0x28], ecx
cmp eax, 8
je 0x1002b13b
cmp eax, 9
je 0x1002b13b
xor al, al
jmp 0x1002b13d
mov al, 1
mov byte [esp + 0x13], al
test dl, 0x20
je 0x1002b14e
test al, al
je 0x1002b14e
mov dl, 1
jmp 0x1002b150
xor dl, dl
movss xmm0, dword [edi + ecx*4 + 8]
movss xmm5, dword [edi + ecx*4]
movaps xmm2, xmm0
movsd xmm1, qword [ebp + 0x24]
subss xmm2, xmm5
movsd xmm4, qword [ebp + 0x1c]
comisd xmm1, xmm4
mov byte [esp + 0x12], dl
subss xmm2, dword [0x101afcc0]
movss xmm3, dword [esi + 0x1590]
movss dword [esp + 0x44], xmm0
movss dword [esp + 0x2c], xmm3
movsd qword [esp + 0x48], xmm1
movss dword [esp + 0x40], xmm2
movsd qword [esp + 0x50], xmm4
jbe 0x1002b1ad
movaps xmm0, xmm1
subsd xmm0, xmm4
jmp 0x1002b1b4
movaps xmm0, xmm4
subsd xmm0, xmm1
movsd qword [esp + 0x20], xmm0
test al, al
jne 0x1002b1e8
comisd xmm0, xmmword [0x101afb08]
jb 0x1002b1e8
addsd xmm0, qword [0x101afc68]
cvtps2pd xmm1, xmm2
divsd xmm1, xmm0
cvtpd2ps xmm0, xmm1
maxss xmm0, xmm3
movaps xmm3, xmm0
movss dword [esp + 0x2c], xmm0
comiss xmm2, xmm3
ja 0x1002b1f6
movaps xmm3, xmm2
movss dword [esp + 0x2c], xmm3
addss xmm5, dword [0x101afc78]
movaps xmm1, xmm2
xorps xmm0, xmm0
subss xmm1, xmm3
movss dword [esp + 0x1c], xmm0
movss xmm3, dword [0x101afc38]
test dl, dl
mov edx, dword [ebp + 0x10]
movss dword [esp + 0x3c], xmm5
movss dword [esp + 0x18], xmm0
movss dword [esp + 0x30], xmm1
je 0x1002b29e
test al, al
je 0x1002b23c
mov ecx, edx
call fcn.101239a0
jmp 0x1002b241
mov eax, 1
movsd xmm0, qword [0x101afc50]
movd xmm1, eax
cvtdq2ps xmm1, xmm1
cvtps2pd xmm1, xmm1
call fcn.10160390
movss xmm1, dword [esp + 0x30]
movss xmm3, dword [0x101afc38]
movss xmm2, dword [esi + 0x1598]
mulss xmm2, dword [0x101afbec]
mov ecx, dword [esp + 0x28]
cvtsd2ss xmm0, xmm0
movss xmm5, dword [esp + 0x3c]
movss dword [esp + 0x1c], xmm0
movaps xmm0, xmm1
maxss xmm0, xmm3
divss xmm2, xmm0
xorps xmm0, xmm0
movss dword [esp + 0x18], xmm2
mov edx, dword [esp + 0x14]
xor al, al
cmp dword [esi + 0x1aa4], edx
mov edx, dword [ebp + 0xc]
mov byte [esp + 0x11], al
jne 0x1002b65c
mov eax, dword [esi + 0x1ad4]
cmp eax, 1
jne 0x1002b319
cmp byte [esi + 0xec], 0
je 0x1002b650
comiss xmm1, xmm0
jbe 0x1002b2f3
movss xmm2, dword [esi + ecx*4 + 0xe4]
subss xmm2, xmm5
divss xmm2, xmm1
comiss xmm0, xmm2
ja 0x1002b2f3
movaps xmm1, xmm3
minss xmm1, xmm2
jmp 0x1002b2f6
xorps xmm1, xmm1
movss dword [esp + 0x14], xmm1
test ecx, ecx
je 0x1002b5d6
movaps xmm0, xmm3
subss xmm0, xmm1
movaps xmm1, xmm0
movss dword [esp + 0x14], xmm1
jmp 0x1002b5d6
cmp eax, 2
jne 0x1002b658
cmp byte [esi + 0x1ab0], 0
je 0x1002b33c
mov dword [esi + 0x2e74], 0
mov byte [esi + 0x2e78], 0
push ecx
mov dword [esp], 0
lea ecx, [esp + 0x34]
push 5
xorps xmm3, xmm3
mov edx, 3
call fcn.100ddc00
add esp, 8
cmp dword [esp + 0x28], 0
jne 0x1002b369
movss xmm1, dword [esp + 0x30]
jmp 0x1002b376
movss xmm1, dword [esp + 0x34]
xorps xmm1, xmmword [0x101b1470]
xorps xmm2, xmm2
ucomiss xmm1, xmm2
lahf
test ah, 0x44
jnp 0x1002b444
cmp byte [esp + 0x13], 0
movss xmm4, dword [0x101afd04]
je 0x1002b3bc
mov ecx, dword [ebp + 0x10]
call fcn.101239a0
test eax, eax
jle 0x1002b3bc
movss xmm0, dword [esi + 0x338]
comiss xmm0, xmm2
divss xmm1, dword [0x101afd6c]
jbe 0x1002b418
divss xmm1, xmm4
jmp 0x1002b418
movsd xmm3, qword [esp + 0x20]
comisd xmm3, xmmword [0x101afe60]
jb 0x1002b3da
movsd xmm0, qword [0x101afcb0]
comisd xmm0, xmm3
jae 0x1002b3e7
movss xmm0, dword [esi + 0x338]
comiss xmm0, xmm2
jbe 0x1002b410
comiss xmm2, xmm1
jbe 0x1002b3fe
movss xmm1, dword [0x101afe40]
cvtpd2ps xmm0, xmm3
divss xmm1, xmm0
jmp 0x1002b418
movss xmm1, dword [0x101afc38]
cvtpd2ps xmm0, xmm3
divss xmm1, xmm0
jmp 0x1002b418
divss xmm1, dword [0x101afd6c]
movss xmm0, dword [esi + 0x33c]
comiss xmm0, xmm2
jbe 0x1002b429
mulss xmm1, xmm4
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 + 0x14]
movss dword [esp + 0x20], xmm2
cmp dword [esi + 0x1bd8], eax
jne 0x1002b46b
cmp byte [esi + 0x1ab0], 0
je 0x1002b650
cmp byte [esi + 0x2e78], 0
je 0x1002b655
movsd xmm0, qword [esp + 0x48]
sub esp, 0x18
mov eax, dword [ebp + 0xc]
movss xmm3, dword [esp + 0x30]
movss xmm2, dword [esp + 0x34]
mov dl, byte [esp + 0x2a]
movsd qword [esp + 0x10], xmm0
movsd xmm0, qword [esp + 0x68]
movsd qword [esp + 8], xmm0
movsd xmm0, qword [eax]
movsd qword [esp], xmm0
call fcn.1002ebc0
movss xmm3, dword [0x101afc38]
movaps xmm2, xmm0
movss xmm1, dword [esp + 0x38]
add esp, 0x18
comiss xmm2, xmm3
movss dword [esp + 0x30], xmm2
xorps xmm0, xmm0
jb 0x1002b4db
comiss xmm1, xmm0
ja 0x1002b4e5
comiss xmm0, xmm2
jb 0x1002b4fb
comiss xmm0, xmm1
jbe 0x1002b4fb
mov dword [esi + 0x2e74], 0
mov byte [esi + 0x2e78], 0
jmp 0x1002b655
addss xmm1, xmm2
comiss xmm0, xmm1
ja 0x1002b50b
movaps xmm0, xmm3
minss xmm0, xmm1
movsd xmm1, qword [esp + 0x48]
sub esp, 0x14
movss xmm3, dword [esp + 0x30]
mov dl, byte [esp + 0x26]
mov ecx, dword [ebp + 8]
movsd qword [esp + 0xc], xmm1
movsd xmm1, qword [esp + 0x64]
movsd qword [esp + 4], xmm1
movss xmm1, dword [esp + 0x2c]
movss dword [esp], xmm1
movaps xmm1, xmm0
movss dword [esp + 0x28], xmm0
call fcn.1002eef0
add esp, 0x14
test byte [esp + 0x38], 0x40
jne 0x1002b564
mov edx, dword [ebp + 8]
movaps xmm2, xmm0
mov ecx, dword [ebp + 0x10]
call fcn.1002f200
movsd xmm1, qword [esp + 0x48]
sub esp, 0x18
movss xmm3, dword [esp + 0x30]
movss xmm2, dword [esp + 0x34]
mov dl, byte [esp + 0x2a]
movsd qword [esp + 0x10], xmm1
movsd xmm1, qword [esp + 0x68]
movsd qword [esp + 8], xmm1
movsd qword [esp], xmm0
call fcn.1002ebc0
movss xmm2, dword [esp + 0x38]
add esp, 0x18
comiss xmm2, dword [0x101afb04]
movss xmm1, dword [esi + 0x2e74]
subss xmm0, dword [esp + 0x30]
jbe 0x1002b5bf
minss xmm0, xmm2
jmp 0x1002b5c3
maxss xmm0, xmm2
subss xmm1, xmm0
movss dword [esi + 0x2e74], xmm1
mov byte [esi + 0x2e78], 0
movsd xmm0, qword [esp + 0x48]
sub esp, 0x14
mov esi, dword [ebp + 8]
mov ecx, esi
movss xmm3, dword [esp + 0x30]
mov dl, byte [esp + 0x26]
movss xmm1, dword [esp + 0x28]
movsd qword [esp + 0xc], xmm0
movsd xmm0, qword [esp + 0x64]
movsd qword [esp + 4], xmm0
movss xmm0, dword [esp + 0x2c]
movss dword [esp], xmm0
call fcn.1002eef0
add esp, 0x14
movaps xmm1, xmm0
test byte [esp + 0x38], 0x40
jne 0x1002b633
mov ecx, dword [ebp + 0x10]
movaps xmm2, xmm1
mov edx, esi
call fcn.1002f200
movaps xmm1, xmm0
mov edx, dword [ebp + 0xc]
movsd xmm0, qword [edx]
ucomisd xmm0, xmm1
lahf
test ah, 0x44
jnp 0x1002b658
mov al, 1
movsd qword [edx], xmm1
mov byte [esp + 0x11], al
jmp 0x1002b65c
call fcn.100ed160
mov edx, dword [ebp + 0xc]
mov al, byte [esp + 0x11]
movss xmm0, dword [0x101afc38]
comiss xmm0, dword [esp + 0x40]
jbe 0x1002b691
mov ecx, dword [edi]
mov edx, dword [edi + 4]
mov dword [esp + 0x50], ecx
mov dword [esp + 0x58], ecx
mov ecx, dword [ebp + 0x18]
mov dword [esp + 0x54], edx
mov dword [esp + 0x5c], edx
movups xmm0, xmmword [esp + 0x50]
movups xmmword [ecx], xmm0
pop edi
pop esi
mov esp, ebp
pop ebp
ret
movsd xmm0, qword [esp + 0x48]
sub esp, 0x18
movss xmm3, dword [esp + 0x30]
movss xmm2, dword [esp + 0x34]
movsd qword [esp + 0x10], xmm0
movsd xmm0, qword [esp + 0x68]
movsd qword [esp + 8], xmm0
movsd xmm0, qword [edx]
mov dl, byte [esp + 0x2a]
movsd qword [esp], xmm0
call fcn.1002ebc0
mov eax, dword [esp + 0x40]
add esp, 0x18
test eax, eax
je 0x1002b6e4
movss xmm1, dword [0x101afc38]
subss xmm1, xmm0
movaps xmm0, xmm1
movss xmm3, dword [esp + 0x44]
test eax, eax
subss xmm3, dword [esp + 0x3c]
movss xmm4, dword [0x101afbec]
mov eax, dword [ebp + 0x18]
mulss xmm3, xmm0
movss xmm0, dword [esp + 0x2c]
mulss xmm0, xmm4
addss xmm3, dword [esp + 0x3c]
movaps xmm2, xmm3
addss xmm3, xmm0
subss xmm2, xmm0
jne 0x1002b745
movss xmm0, dword [edi + 4]
movss xmm1, dword [edi + 0xc]
movss dword [eax], xmm2
movss dword [eax + 4], xmm0
movss dword [eax + 8], xmm3
movss dword [eax + 0xc], xmm1
mov al, byte [esp + 0x11]
pop edi
pop esi
mov esp, ebp
pop ebp
ret
movss xmm0, dword [edi + 8]
movaps xmm1, xmm0
addss xmm0, dword [edi]
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 + 9]
mov esp, ebp
pop ebp
ret