Function at 0x100167c0
Capabilities:
Encode data using xor

Disassembly:
push ebp
mov ebp, esp
and esp, 0xffffffc0
push esi
push edi
push ebx
sub esp, 0xf4
mov edx, dword [ebp + 0x18]
mov ebx, dword [ebp + 8]
cmp dword [ebp + 0x14], 0
mov ecx, dword [edx + 8]
mov esi, dword [edx + 4]
mov eax, dword [ecx + 8]
je 0x10016854
test esi, esi
jbe 0x100168b2
mov dword [esp + 0xc0], esi
xor edi, edi
mov esi, eax
mov edx, dword [ebx + 0x60]
movss xmm0, dword [esi + edi*4]
addss xmm0, dword [edx + edi*4]
movd ecx, xmm0
movss dword [esp + edi*4 + 0x70], xmm0
push ecx
push dword [ebx + edi*4 + 0x10]
push dword [ebx + 0xc]
call fcn.100185d0
fstp dword [esp + 0xd4]
movss xmm0, dword [esp + 0xd4]
add esp, 0xc
movss dword [ebx + edi*4 + 0x10], xmm0
addss xmm0, dword [ebp + 0xc]
movss dword [esp + edi*4 + 0x14], xmm0
inc edi
cmp edi, dword [esp + 0xc0]
jb 0x100167f7
mov esi, dword [esp + 0xc0]
test esi, esi
jmp 0x100168b2
test esi, esi
jbe 0x100168b2
mov edi, dword [ebx + 0x60]
cmp esi, 8
jb 0x10016d27
mov ecx, esi
xor edx, edx
and ecx, 0xfffffff8
movups xmm1, xmmword [eax + edx*4]
movups xmm3, xmmword [eax + edx*4 + 0x10]
movups xmm0, xmmword [edi + edx*4]
movups xmm2, xmmword [edi + edx*4 + 0x10]
addps xmm1, xmm0
addps xmm3, xmm2
movaps xmmword [esp + edx*4 + 0x70], xmm1
movaps xmmword [esp + edx*4 + 0x80], xmm3
add edx, 8
cmp edx, ecx
jb 0x1001686b
cmp ecx, esi
jae 0x100168b0
movss xmm0, dword [eax + ecx*4]
addss xmm0, dword [edi + ecx*4]
movss dword [esp + ecx*4 + 0x70], xmm0
inc ecx
cmp ecx, esi
jb 0x1001689b
test esi, esi
movss xmm0, dword [0x103433e4]
jbe 0x100168e5
xor edi, edi
mov edx, dword [esp + edi*4 + 0x70]
movss dword [esp], xmm0
mov dword [esp + 4], edx
call fcn.100182e0
fstp dword [esp + 0xc8]
movss xmm0, dword [esp + 0xc8]
inc edi
cmp edi, esi
jb 0x100168be
mov edx, dword [ebx + 0xc]
mov ecx, dword [ebx]
mov dword [esp], edx
mov dword [esp + 4], ecx
movss dword [esp + 8], xmm0
call fcn.100185d0
fstp dword [esp + 0xc8]
movss xmm2, dword [esp + 0xc8]
movss xmm1, dword [ebp + 0xc]
movss dword [ebx], xmm2
addss xmm1, xmm2
movss xmm2, dword [0x10365910]
movss xmm0, dword [ebp + 0x10]
comiss xmm2, xmm1
jae 0x10016984
comiss xmm1, dword [0x10365914]
jb 0x1001693a
pxor xmm0, xmm0
jmp 0x10016984
cvtss2sd xmm0, xmm0
movsd qword [esp], xmm0
mov dword [esp + 8], 4
movss dword [esp + 0x10], xmm1
call fcn.10009ad0
movss xmm1, dword [esp + 0x10]
fstp qword [esp + 0xc8]
movsd xmm0, qword [esp + 0xc8]
cvtsd2ss xmm0, xmm0
subss xmm1, dword [0x10365914]
mulss xmm1, dword [0x1036590c]
mulss xmm0, xmm1
cmp dword [ebp + 0x14], 0
je 0x10016a44
xor eax, eax
test esi, esi
jbe 0x10016b54
mov edx, dword [ebx + 0x64]
mov edi, dword [ebx + 0x68]
mov ebx, eax
mov eax, esi
mov esi, edx
movss xmm3, dword [esi + ebx*4]
movss xmm1, dword [esp + ebx*4 + 0x14]
movss xmm2, dword [edi + ebx*4]
comiss xmm3, xmm1
jb 0x100169bf
pxor xmm1, xmm1
jmp 0x10016a28
comiss xmm1, xmm2
jb 0x100169ce
movss xmm1, dword [0x103433e0]
jmp 0x10016a28
movss xmm1, dword [esp + ebx*4 + 0x14]
subss xmm1, xmm3
movss xmm3, dword [0x1036591c]
mulss xmm1, xmm3
cvtss2sd xmm1, xmm1
movsd qword [esp], xmm1
mov dword [esp + 8], 4
movss dword [esp + 0x10], xmm0
mov dword [esp + 0xc0], eax
call fcn.10009ad0
fstp qword [esp + 0xc8]
movsd xmm1, qword [esp + 0xc8]
mov eax, dword [esp + 0xc0]
movss xmm0, dword [esp + 0x10]
cvtsd2ss xmm1, xmm1
mulss xmm1, xmm0
movss dword [esp + ebx*4 + 0x64], xmm1
inc ebx
cmp ebx, eax
jb 0x100169a4
mov esi, eax
mov eax, ebx
jmp 0x10016b4b
test esi, esi
jbe 0x10016b52
mov ecx, esi
shr ecx, 1
mov ebx, dword [ebx + 0x6c]
test ecx, ecx
jbe 0x10016cce
pxor xmm1, xmm1
mov edx, 1
cvtss2sd xmm1, xmm0
movsd qword [esp + 0x18], xmm1
xor edi, edi
movss dword [esp + 0x10], xmm0
mov dword [esp + 0x14], ecx
mov dword [esp + 0xc0], esi
mov esi, edx
movsd xmm0, qword [esp + 0x18]
movsd qword [esp], xmm0
mov dword [esp + 8], esi
call fcn.10009ad0
fstp qword [esp + 0xc8]
movsd xmm0, qword [esp + 0xc8]
cvtsd2ss xmm0, xmm0
mulss xmm0, dword [ebx + edi*8]
movsd xmm1, qword [esp + 0x18]
movsd qword [esp], xmm1
movss dword [esp + edi*8 + 0x64], xmm0
mov dword [esp + 8], esi
call fcn.10009ad0
fstp qword [esp + 0xc8]
movsd xmm0, qword [esp + 0xc8]
cvtsd2ss xmm0, xmm0
mulss xmm0, dword [ebx + edi*8 + 4]
movss dword [esp + edi*8 + 0x68], xmm0
inc edi
cmp edi, dword [esp + 0x14]
jb 0x10016a83
movss xmm0, dword [esp + 0x10]
lea eax, [edi + edi]
mov esi, dword [esp + 0xc0]
lea edx, [edi + edi + 1]
lea edi, [edx - 1]
cmp edi, esi
jae 0x10016b4b
cvtss2sd xmm0, xmm0
movsd qword [esp], xmm0
mov dword [esp + 8], 1
mov dword [esp + 0x10], edx
call fcn.10009ad0
fstp qword [esp + 0xc8]
movsd xmm0, qword [esp + 0xc8]
cvtsd2ss xmm0, xmm0
mulss xmm0, dword [ebx + edi*4]
mov edx, dword [esp + 0x10]
mov eax, edx
movss dword [esp + edi*4 + 0x64], xmm0
cmp eax, 0x14
jb 0x10016b54
jmp 0x10016b88
xor eax, eax
mov edx, eax
neg edx
add edx, 0x14
cmp edx, 0x18
jle 0x10016ce4
lea edx, [eax*4]
neg edx
lea ecx, [esp + eax*4 + 0x64]
add edx, 0x50
push edx
push 0
push ecx
call fcn.1001b590
add esp, 0xc
test esi, esi
jbe 0x10016c45
mov ecx, dword [ebp + 0x1c]
mov edx, dword [ebp + 0x18]
mov edi, dword [ecx + 8]
mov ecx, esi
shr ecx, 1
mov edx, dword [edx + 8]
test ecx, ecx
jbe 0x10016cda
mov dword [esp + 0xc0], esi
xor ebx, ebx
mov eax, dword [edx + 8]
mov dword [esp + 0x10], eax
mov eax, dword [edi + 8]
mov esi, dword [esp + 0x10]
nop word [eax + eax]
movss xmm1, dword [esp + ebx*8 + 0x64]
movss xmm0, dword [esi + ebx*8]
movss xmm4, dword [esp + ebx*8 + 0x68]
addss xmm0, xmm1
movss dword [esi + ebx*8], xmm0
movss xmm2, dword [eax + ebx*8]
addss xmm2, xmm1
movss dword [eax + ebx*8], xmm2
movss xmm3, dword [esi + ebx*8 + 4]
addss xmm3, xmm4
movss dword [esi + ebx*8 + 4], xmm3
movss xmm5, dword [eax + ebx*8 + 4]
addss xmm5, xmm4
movss dword [eax + ebx*8 + 4], xmm5
inc ebx
cmp ebx, ecx
jb 0x10016bc0
mov esi, dword [esp + 0xc0]
lea ebx, [ebx + ebx + 1]
dec ebx
cmp ebx, esi
jae 0x10016c45
mov edx, dword [edx + 8]
mov ecx, dword [edi + 8]
movss xmm1, dword [esp + ebx*4 + 0x64]
movss xmm0, dword [edx + ebx*4]
addss xmm0, xmm1
movss dword [edx + ebx*4], xmm0
movss xmm2, dword [ecx + ebx*4]
addss xmm2, xmm1
movss dword [ecx + ebx*4], xmm2
mov ecx, dword [ebp + 0x20]
test ecx, ecx
je 0x10016cc1
test esi, esi
jbe 0x10016cc1
movss xmm2, dword [0x103433e8]
xor edx, edx
movss xmm1, dword [0x103433e0]
movss xmm0, dword [0x103433f0]
nop word [eax + eax]
movss xmm4, dword [esp + edx*4 + 0x64]
mulss xmm4, xmm2
movss xmm5, dword [0x103433ec]
andps xmm5, xmm4
movaps xmm3, xmm5
pxor xmm3, xmm4
cmpltss xmm3, xmm0
andps xmm3, xmm0
orps xmm3, xmm5
movaps xmm7, xmm3
addss xmm7, xmm4
subss xmm7, xmm3
movaps xmm6, xmm7
subss xmm6, xmm4
cmpnless xmm6, xmm5
andps xmm6, xmm1
subss xmm7, xmm6
cvtss2si ebx, xmm7
add dword [ecx + edx*4], ebx
inc edx
cmp edx, esi
jb 0x10016c70
add esp, 0xf4
pop ebx
pop edi
pop esi
mov esp, ebp
pop ebp
ret
xor eax, eax
mov edx, 1
jmp 0x10016b05
mov ebx, 1
jmp 0x10016c18
cmp edx, 8
jl 0x10016d23
mov ecx, edx
xor ebx, ebx
and ecx, 0xfffffff8
lea edi, [esp + eax*4 + 0x64]
pxor xmm0, xmm0
movups xmmword [edi + ebx*4], xmm0
movups xmmword [edi + ebx*4 + 0x10], xmm0
add ebx, 8
cmp ebx, ecx
jb 0x10016cf8
cmp ecx, edx
jae 0x10016b80
xor edi, edi
lea ebx, [esp + eax*4 + 0x64]
mov dword [ebx + ecx*4], edi
inc ecx
cmp ecx, edx
jb 0x10016d16
jmp 0x10016b80
xor ecx, ecx
jmp 0x10016d08
xor ecx, ecx
jmp 0x10016897