Function at 0x1015fa20
Capabilities:
Resolve function by parsing pe exports

Disassembly:
push ebp
mov ebp, esp
sub esp, 0x19c
push edi
mov edi, dword [ebp + 8]
test edi, edi
je 0x101611a0
cmp dword [edi], 0xfff88e3b
jne 0x101611a0
mov edx, dword [edi + 0x120]
mov dword [ebp - 4], edx
test edx, edx
je 0x101611a0
cmp dword [edx], 0xfff88e3b
jne 0x1015fa64
cmp dword [edx + 4], 0
jg 0x101611a0
mov dword [edx], 0xfff88e3b
mov dword [edx + 4], 0
cmp dword [edi + 0xc], 1
jl 0x101611a0
mov eax, dword [edi + 8]
dec eax
cmp eax, 1
ja 0x101611a0
mov eax, dword [edi + 0x10]
test eax, eax
je 0x1015faae
lea ecx, [ebp - 0x10]
mov dword [ebp - 0x10], 0
push ecx
push eax
call fcn.10163430
add esp, 8
test eax, eax
js 0x101611a0
mov edx, dword [ebp - 4]
mov eax, dword [edi + 0xb4]
push esi
lea esi, [edx + 0x14]
mov dword [esi + 0x6c], eax
mov eax, dword [edi + 0x20]
mov dword [ebp - 0x10], esi
mov dword [esi + 0x7c], eax
test eax, eax
je 0x1015facf
mov dword [edi + 0x24], 0
cmp dword [edx + 0x14f30], 0
je 0x1015fadf
mov dword [edi + 0x24], 0
mov eax, dword [edi + 0x110]
mov dword [edx + 0x14f44], eax
mov eax, dword [edi + 0x114]
mov dword [edx + 0x14f48], eax
mov eax, dword [edi + 0x118]
mov dword [edx + 0x14f4c], eax
cmp dword [edi + 0x128], 0
je 0x1015fb25
call fcn.1001c340
mov edx, dword [ebp - 4]
add eax, eax
mov ecx, dword [edx + 0x14f00]
xor eax, ecx
and eax, 2
xor eax, ecx
jmp 0x1015fb2e
mov eax, dword [edx + 0x14f00]
and eax, 0xfffffffd
mov dword [edx + 0x14f00], eax
cmp dword [edi + 0x124], 0
je 0x1015fb54
call fcn.1001c340
mov edx, dword [ebp - 4]
mov ecx, dword [edx + 0x14f00]
xor eax, ecx
and eax, 1
xor eax, ecx
jmp 0x1015fb57
and eax, 0xfffffffe
mov dword [edx + 0x14f00], eax
cmp dword [edi + 0x12c], 0
je 0x1015fb9e
call fcn.1001c340
mov edx, dword [ebp - 4]
shl eax, 2
mov ecx, dword [edx + 0x14f00]
xor eax, ecx
and eax, 4
xor eax, ecx
mov dword [edx + 0x14f00], eax
call fcn.1001c340
mov edx, dword [ebp - 4]
shl eax, 3
mov ecx, dword [edx + 0x14f00]
xor eax, ecx
and eax, 8
xor eax, ecx
jmp 0x1015fba1
and eax, 0xfffffff3
mov dword [edx + 0x14f00], eax
mov eax, dword [edi + 0x9c]
mov dword [esi + 0x58], eax
mov eax, dword [edi + 0x78]
mov dword [esi + 0x90], eax
mov eax, dword [edi + 0x68]
mov dword [esi + 0x94], eax
mov eax, dword [edi + 0x6c]
mov dword [esi + 0x98], eax
mov eax, dword [edi + 0x70]
mov dword [esi + 0x9c], eax
mov eax, dword [edi + 0x74]
mov dword [esi + 0xa0], eax
mov eax, dword [edi + 8]
mov dword [esi + 0x34], eax
cmp eax, 1
jne 0x1015fbef
mov dword [edi + 0x30], 3
xor eax, eax
cmp dword [edi + 0x30], 3
setne al
inc eax
mov dword [esi + 0x38], eax
cmp dword [edi + 0x30], 1
je 0x1015fc09
mov dword [edi + 0x34], 0
cmp dword [esi + 0x58], 0
mov eax, dword [edi + 0x34]
mov dword [esi + 0x40], eax
jne 0x1015fc2b
mov eax, dword [edi + 0xa8]
cmp eax, 0x80
je 0x1015fc2b
cmp dword [edi + 0x60], 0
jne 0x1015fc2b
mov dword [edi + 0x60], eax
mov eax, dword [esi + 0x58]
sub eax, 0
je 0x1015fc44
sub eax, 1
je 0x1015fc44
sub eax, 3
je 0x1015fc44
mov dword [edi + 0x38], 0
cmp dword [esi + 0x58], 0
xorps xmm2, xmm2
mov eax, dword [edi + 0x38]
xorps xmm4, xmm4
mov dword [esi + 0x88], eax
jne 0x1015fd46
cmp dword [edi + 0x60], 0
jne 0x1015fcb3
movss xmm0, dword [edi + 0x64]
xor eax, eax
movsd xmm3, qword [0x101f33c0]
cvtps2pd xmm1, xmm0
subss xmm0, xmm4
andps xmm2, xmm3
andps xmm1, xmm3
comisd xmm1, xmm2
cvtps2pd xmm0, xmm0
andps xmm0, xmm3
jbe 0x1015fc99
mulsd xmm1, qword [0x102a2208]
comisd xmm1, xmm0
jmp 0x1015fca5
mulsd xmm2, qword [0x102a2208]
comisd xmm2, xmm0
setae al
test eax, eax
je 0x1015fcb3
mov dword [edi + 0x64], 0x41306666
cmp dword [esi + 0x58], 0
jne 0x1015fd46
movss xmm0, dword [edi + 0x64]
comiss xmm0, xmm4
jbe 0x1015fd46
mov edx, dword [edi + 0x10]
test edx, edx
jne 0x1015fcf1
movd xmm0, dword [edi + 0xc]
cvtdq2pd xmm0, xmm0
mulsd xmm0, qword [0x102a2218]
cvttsd2si eax, xmm0
push eax
call fcn.101643d0
mov edx, eax
add esp, 4
mov dword [edi + 0x10], edx
mov ecx, dword [esi + 0x38]
movss xmm0, dword [edi + 0x64]
imul ecx, edx
cvtps2pd xmm0, xmm0
push esi
push edx
shl ecx, 4
mulsd xmm0, qword [0x101f5f70]
movd xmm1, ecx
cvtdq2pd xmm1, xmm1
divsd xmm1, xmm0
cvttsd2si eax, xmm1
mov dword [edi + 0x60], eax
call fcn.10163430
add esp, 8
mov dword [esi + 4], eax
cmp dword [esi + 0x88], 0
jne 0x1015fd46
push dword [edi + 0x10]
push dword [esi]
push dword [edi + 0x60]
call fcn.101633c0
add esp, 0xc
mov dword [edi + 0x60], eax
mov edx, dword [edi + 0x10]
test edx, edx
je 0x1015fdd5
mov eax, dword [edi + 0xa8]
lea ecx, [edi + 0xa8]
cmp edx, 0x3e80
jge 0x1015fd8b
cmp eax, 8
jle 0x1015fd7d
mov dword [ecx], eax
cmp eax, 0x40
jl 0x1015fdce
mov eax, 0x40
mov dword [ecx], eax
jmp 0x10160010
mov eax, 8
mov dword [ecx], eax
mov dword [ecx], eax
jmp 0x10160010
cmp edx, 0x7d00
jge 0x1015fdad
cmp eax, 8
jle 0x1015fd7d
mov dword [ecx], eax
cmp eax, 0xa0
jl 0x1015fdce
mov eax, 0xa0
mov dword [ecx], eax
jmp 0x10160010
cmp eax, 0x20
jle 0x1015fdc7
mov dword [ecx], eax
cmp eax, 0x140
jl 0x1015fdce
mov eax, 0x140
mov dword [ecx], eax
jmp 0x10160010
mov eax, 0x20
mov dword [ecx], eax
mov dword [ecx], eax
jmp 0x10160010
mov eax, dword [esi + 0x58]
cmp eax, 1
je 0x1015fde6
cmp eax, 4
jne 0x10160010
movaps xmm0, xmmword [0x102a2370]
lea ecx, [ebp - 0x168]
movd xmm2, dword [edi + 0xa4]
mov edx, 2
movups xmmword [ebp - 0x198], xmm0
mov dword [ebp - 0x19c], 0xbb80
movaps xmm0, xmmword [0x102a2370]
movups xmmword [ebp - 0x180], xmm0
mov dword [ebp - 0x188], 0x5c94
movaps xmm0, xmmword [0x102a23b0]
movups xmmword [ebp - 0x168], xmm0
mov dword [ebp - 0x184], 0xac44
movaps xmm0, xmmword [0x102a2360]
movups xmmword [ebp - 0x150], xmm0
mov dword [ebp - 0x170], 0x5514
movaps xmm0, xmmword [0x102a23c0]
movups xmmword [ebp - 0x138], xmm0
mov dword [ebp - 0x16c], 0x7d00
movaps xmm0, xmmword [0x102a2380]
movups xmmword [ebp - 0x120], xmm0
mov dword [ebp - 0x158], 0x3db8
movaps xmm0, xmmword [0x102a2350]
cvtdq2ps xmm2, xmm2
mov dword [ebp - 0x154], 0x5dc0
mov dword [ebp - 0x140], 0x2e4a
mov dword [ebp - 0x13c], 0x5622
mov dword [ebp - 0x128], 0x2a8c
movups xmmword [ebp - 0x108], xmm0
mov dword [ebp - 0x124], 0x3e80
movaps xmm0, xmmword [0x102a23a0]
addss xmm2, dword [edi + 0xa0]
movups xmmword [ebp - 0xf0], xmm0
mov dword [ebp - 0x110], 0x1edf
movaps xmm0, xmmword [0x102a2390]
mov dword [ebp - 0x10c], 0x2ee0
mov dword [ebp - 0xf8], 0x1728
mov dword [ebp - 0xf4], 0x2b11
mov dword [ebp - 0xe0], 0x1546
mov dword [ebp - 0xdc], 0x1f40
movups xmmword [ebp - 0xd8], xmm0
mov dword [ebp - 0xc8], 0xf70
mov eax, dword [ecx - 4]
cmp dword [edi + 0xc], eax
jne 0x1015ff85
movss xmm1, dword [ecx]
comiss xmm1, xmm2
jbe 0x1015ff87
movaps xmm0, xmm2
divss xmm0, xmm1
xorps xmm1, xmm1
cvtss2sd xmm1, xmm0
movss xmm0, dword [ecx + 8]
cvtps2pd xmm0, xmm0
mulsd xmm1, xmm0
cvttsd2si eax, xmm1
mov dword [edi + 0xa4], eax
movd xmm0, eax
cvtdq2pd xmm0, xmm0
subsd xmm1, xmm0
cvtpd2ps xmm0, xmm1
movss dword [edi + 0xa0], xmm0
jmp 0x1015ff87
jl 0x1015ff9a
movss xmm4, dword [ecx]
comiss xmm2, xmm4
jb 0x1015ff9a
movss xmm3, dword [ecx + 4]
comiss xmm3, xmm2
ja 0x1015ffa5
inc edx
add ecx, 0x18
cmp edx, 9
jl 0x1015ff36
jmp 0x10160010
cmp dword [edi + 0xb8], 0
lea eax, [edx + edx*2]
movss xmm1, dword [ebp + eax*8 - 0x190]
subss xmm2, xmm4
movss xmm0, dword [ebp + eax*8 - 0x18c]
subss xmm3, xmm4
subss xmm0, xmm1
mulss xmm0, xmm2
divss xmm0, xmm3
addss xmm0, xmm1
cvtps2pd xmm1, xmm0
cvttsd2si eax, xmm1
mov dword [edi + 0xa4], eax
movd xmm0, eax
mov eax, dword [ecx - 4]
cvtdq2pd xmm0, xmm0
mov dword [edi + 0x10], eax
subsd xmm1, xmm0
cvtpd2ps xmm0, xmm1
movss dword [edi + 0xa0], xmm0
jne 0x10160010
mov dword [edi + 0xb8], 0xffffffff
mov edx, dword [edi + 0xb8]
lea eax, [edi + 0xb8]
test edx, edx
jne 0x101602ab
mov eax, dword [esi + 0x58]
cmp eax, 4
ja case.default.0x10160030
jmp dword [eax*4 + 0x101611a8]
movaps xmm0, xmmword [0x102a2270]
push dword [edi + 0x60]
movups xmmword [ebp - 0xc4], xmm0
mov dword [ebp - 0x44], 0x140
movaps xmm0, xmmword [0x102a2280]
movups xmmword [ebp - 0xb4], xmm0
mov dword [ebp - 0x40], 0x5014
movaps xmm0, xmmword [0x102a2290]
movups xmmword [ebp - 0xa4], xmm0
movaps xmm0, xmmword [0x102a22a0]
movups xmmword [ebp - 0x94], xmm0
movaps xmm0, xmmword [0x102a22d0]
movups xmmword [ebp - 0x84], xmm0
movaps xmm0, xmmword [0x102a22f0]
movups xmmword [ebp - 0x74], xmm0
movaps xmm0, xmmword [0x102a2330]
movups xmmword [ebp - 0x64], xmm0
movaps xmm0, xmmword [0x102a2340]
movups xmmword [ebp - 0x54], xmm0
call fcn.10164450
add esp, 4
movd xmm2, dword [ebp + eax*8 - 0xc0]
cvtdq2pd xmm2, xmm2
jmp 0x10160281
movaps xmm0, xmmword [0x102a2270]
push dword [edi + 0xa8]
movups xmmword [ebp - 0xc4], xmm0
mov dword [ebp - 0x44], 0x140
movaps xmm0, xmmword [0x102a2280]
movups xmmword [ebp - 0xb4], xmm0
mov dword [ebp - 0x40], 0x5014
movaps xmm0, xmmword [0x102a2290]
movups xmmword [ebp - 0xa4], xmm0
movaps xmm0, xmmword [0x102a22a0]
movups xmmword [ebp - 0x94], xmm0
movaps xmm0, xmmword [0x102a22d0]
movups xmmword [ebp - 0x84], xmm0
movaps xmm0, xmmword [0x102a22f0]
movups xmmword [ebp - 0x74], xmm0
movaps xmm0, xmmword [0x102a2330]
movups xmmword [ebp - 0x64], xmm0
movaps xmm0, xmmword [0x102a2340]
movups xmmword [ebp - 0x54], xmm0
call fcn.10164450
add esp, 4
movd xmm2, dword [ebp + eax*8 - 0xc0]
cvtdq2pd xmm2, xmm2
jmp 0x10160281
movaps xmm0, xmmword [0x102a2320]
mov eax, dword [edi + 0xa4]
mov dword [ebp - 0x1c], 0x30d4
mov dword [ebp - 0x18], 0x2710
mov dword [ebp - 0x14], 0xf6e
movups xmmword [ebp - 0x3c], xmm0
movaps xmm0, xmmword [0x102a22c0]
movups xmmword [ebp - 0x2c], xmm0
cmp eax, 9
ja 0x10160279
movd xmm1, dword [ebp + eax*4 - 0x3c]
movd xmm2, dword [ebp + eax*4 - 0x38]
jmp 0x10160258
movaps xmm0, xmmword [0x102a2310]
mov eax, dword [edi + 0xa4]
mov dword [ebp - 0x1c], 0x3b60
mov dword [ebp - 0x18], 0x1c3e
mov dword [ebp - 0x14], 0xf6e
movups xmmword [ebp - 0x3c], xmm0
movaps xmm0, xmmword [0x102a22e0]
movups xmmword [ebp - 0x2c], xmm0
cmp eax, 9
ja 0x1016020c
movd xmm1, dword [ebp + eax*4 - 0x3c]
movd xmm2, dword [ebp + eax*4 - 0x38]
movss xmm0, dword [edi + 0xa0]
cvtdq2pd xmm2, xmm2
cvtdq2pd xmm1, xmm1
cvtps2pd xmm0, xmm0
subsd xmm2, xmm1
mulsd xmm2, xmm0
addsd xmm2, xmm1
jmp 0x10160281
movsd xmm2, qword [0x102a2238]
jmp 0x10160281
movaps xmm0, xmmword [0x102a2300]
mov eax, dword [edi + 0xa4]
mov dword [ebp - 0x1c], 0x30d4
mov dword [ebp - 0x18], 0x251c
mov dword [ebp - 0x14], 0xf6e
movups xmmword [ebp - 0x3c], xmm0
movaps xmm0, xmmword [0x102a22b0]
movups xmmword [ebp - 0x2c], xmm0
cmp eax, 9
ja 0x10160279
movd xmm1, dword [ebp + eax*4 - 0x3c]
movd xmm2, dword [ebp + eax*4 - 0x38]
movss xmm0, dword [edi + 0xa0]
cvtdq2pd xmm2, xmm2
cvtdq2pd xmm1, xmm1
cvtps2pd xmm0, xmm0
subsd xmm2, xmm1
mulsd xmm2, xmm0
addsd xmm2, xmm1
jmp 0x10160281
movsd xmm2, qword [0x102a2230]
cmp dword [edi + 0x30], 3
jne 0x1016029b
mov eax, dword [esi + 0x58]
test eax, eax
je 0x10160293
cmp eax, 3
jne 0x1016029b
mulsd xmm2, qword [0x10205c68]
cvttsd2si edx, xmm2
lea eax, [edi + 0xb8]
mov dword [edi + 0xb8], edx
mov ecx, dword [edi + 0x10]
mov dword [ebp - 0xc], 0x5dc0
test ecx, ecx
jne 0x1016045e
mov ecx, dword [edi + 0xc]
lea eax, [edx + edx]
cmp eax, ecx
jle 0x101602d6
mov eax, ecx
cdq
sub eax, edx
mov edx, eax
sar edx, 1
mov dword [edi + 0xb8], edx
mov eax, dword [edi + 0xc]
mov ecx, 0xac44
mov dword [ebp - 8], 0x1f40
cmp eax, 0xbb80
jl 0x101602f3
mov ecx, 0xbb80
jmp 0x10160357
cmp eax, 0xac44
jge 0x10160357
cmp eax, 0x7d00
jl 0x10160308
mov ecx, 0x7d00
jmp 0x10160357
cmp eax, 0x5dc0
jl 0x10160316
mov ecx, 0x5dc0
jmp 0x10160357
cmp eax, 0x5622
jl 0x10160324
mov ecx, 0x5622
jmp 0x10160357
cmp eax, 0x3e80
jl 0x10160332
mov ecx, 0x3e80
jmp 0x10160357
cmp eax, 0x2ee0
jl 0x10160340
mov ecx, 0x2ee0
jmp 0x10160357
cmp eax, 0x2b11
jl 0x1016034e
mov ecx, 0x2b11
jmp 0x10160357
cmp eax, 0x1f40
cmovge ecx, dword [ebp - 8]
cmp edx, 0xffffffff
je 0x1016044f
cmp edx, 0x3e58
mov dword [ebp - 8], 0xac44
cmovle ecx, dword [ebp - 8]
cmp edx, 0x3b92
mov dword [ebp - 8], 0x7d00
cmovle ecx, dword [ebp - 8]
cmp edx, 0x2bd4
mov dword [ebp - 8], 0x5622
cmovle ecx, dword [ebp - 0xc]
cmp edx, 0x26f2
cmovle ecx, dword [ebp - 8]
cmp edx, 0x1c3e
mov dword [ebp - 8], 0x3e80
cmovle ecx, dword [ebp - 8]
cmp edx, 0x152c
mov dword [ebp - 8], 0x2ee0
cmovle ecx, dword [ebp - 8]
cmp edx, 0x119e
mov dword [ebp - 8], 0x2b11
cmovle ecx, dword [ebp - 8]
cmp edx, 0xf82
mov edx, 0x1f40
cmovle ecx, edx
cmp eax, ecx
jge 0x1016044f
cmp eax, 0xac44
jle 0x101603f0
mov ecx, 0xbb80
jmp 0x1016044f
cmp eax, 0x7d00
jle 0x101603fe
mov ecx, 0xac44
jmp 0x1016044f
cmp eax, 0x5dc0
jle 0x1016040c
mov ecx, 0x7d00
jmp 0x1016044f
cmp eax, 0x5622
jle 0x1016041a
mov ecx, 0x5dc0
jmp 0x1016044f
cmp eax, 0x3e80
jle 0x10160428
mov ecx, 0x5622
jmp 0x1016044f
cmp eax, 0x2ee0
jle 0x10160436
mov ecx, 0x3e80
jmp 0x1016044f
cmp eax, 0x2b11
jle 0x10160444
mov ecx, 0x2ee0
jmp 0x1016044f
cmp eax, 0x1f40
mov ecx, edx
cmovg ecx, dword [ebp - 8]
mov edx, dword [edi + 0xb8]
lea eax, [edi + 0xb8]
mov dword [edi + 0x10], ecx
cmp dword [esi + 0x58], 1
je 0x1016047d
cmp dword [esi + 0x58], 4
je 0x1016047d
cmp edx, 0x5014
mov dword [ebp - 0xc], 0x5014
cmovg edx, dword [ebp - 0xc]
jmp 0x10160487
cmp edx, 0x5dc0
cmovg edx, dword [ebp - 0xc]
mov dword [eax], edx
mov eax, ecx
movsd xmm2, qword [0x101f5f70]
mov dword [ebp - 0xc], edx
cdq
sub eax, edx
lea edx, [edi + 0x64]
sar eax, 1
cmp eax, dword [ebp - 0xc]
mov dword [ebp - 8], edx
cmovge eax, dword [ebp - 0xc]
mov dword [edi + 0xb8], eax
cmp dword [esi + 0x58], 0
jne 0x101604de
mov eax, dword [esi + 0x38]
movd xmm0, dword [edi + 0x60]
imul eax, ecx
cvtdq2pd xmm0, xmm0
shl eax, 4
mulsd xmm0, xmm2
movd xmm1, eax
cvtdq2pd xmm1, xmm1
divsd xmm1, xmm0
cvtpd2ps xmm0, xmm1
movss dword [edx], xmm0
cmp dword [esi + 0x58], 3
jne 0x10160515
mov eax, dword [esi + 0x38]
movd xmm0, dword [edi + 0xa8]
imul eax, ecx
mov ecx, edx
cvtdq2pd xmm0, xmm0
shl eax, 4
mulsd xmm0, xmm2
movd xmm1, eax
cvtdq2pd xmm1, xmm1
divsd xmm1, xmm0
cvtpd2ps xmm0, xmm1
movss dword [ecx], xmm0
jmp 0x10160518
mov ecx, dword [ebp - 8]
mov eax, dword [edi + 0x80]
mov dword [esi + 0x80], eax
mov eax, dword [edi + 0xb8]
mov dword [esi + 0x24], eax
mov eax, dword [edi + 0xbc]
mov dword [esi + 0x28], eax
mov eax, dword [edi + 0xc]
mov dword [esi + 0x2c], eax
mov eax, dword [edi + 0x10]
mov dword [ebp - 8], eax
mov dword [esi + 0x30], eax
xor eax, eax
cmp dword [ebp - 8], 0x5dc0
setg al
inc eax
mov dword [esi + 0x3c], eax
mov eax, dword [esi + 0x58]
dec eax
cmp eax, 3
ja case.default.0x1016055e
jmp dword [eax*4 + 0x101611bc]
movaps xmm0, xmmword [0x102a23d0]
mov eax, dword [edi + 0xa4]
movups xmmword [ebp - 0x38], xmm0
mov dword [ebp - 0x18], 0x41700000
movaps xmm0, xmmword [0x102a23e0]
movups xmmword [ebp - 0x28], xmm0
mov dword [ebp - 0x14], 0x41840000
movss xmm0, dword [ebp + eax*4 - 0x38]
jmp 0x101605ca
movd xmm0, dword [edi + 0xa8]
jmp 0x101605a6
movd xmm0, dword [edi + 0x60]
mov eax, dword [esi + 0x38]
mov edx, ecx
imul eax, dword [ebp - 8]
cvtdq2pd xmm0, xmm0
shl eax, 4
mulsd xmm0, xmm2
movd xmm1, eax
cvtdq2pd xmm1, xmm1
divsd xmm1, xmm0
cvtpd2ps xmm0, xmm1
movss dword [edx], xmm0
mov eax, dword [edi + 0x30]
cmp eax, 4
jne 0x101605e2
mov dword [edi + 0x30], 1
mov eax, 1
mov dword [esi + 0xa4], eax
lea ecx, [esi + 0xf0]
mov eax, dword [esi + 0x28]
lea edx, [esi + 0xf4]
test eax, eax
jle 0x10160640
movd xmm1, eax
cvtdq2pd xmm1, xmm1
addsd xmm1, xmm1
cvtpd2ps xmm2, xmm1
movss dword [ecx], xmm2
mov esi, dword [edi + 0xc4]
test esi, esi
jl 0x10160627
add eax, esi
movd xmm1, eax
cvtdq2pd xmm1, xmm1
addsd xmm1, xmm1
mov esi, dword [ebp - 0x10]
cvtpd2ps xmm1, xmm1
movd xmm0, dword [esi + 0x30]
cvtdq2ps xmm0, xmm0
divss xmm1, xmm0
divss xmm2, xmm0
jmp 0x10160646
xorps xmm1, xmm1
xorps xmm2, xmm2
movss dword [ecx], xmm2
xorps xmm3, xmm3
movss dword [edx], xmm1
mov ecx, dword [esi + 0x24]
mov dword [esi + 0xe8], 0
mov dword [esi + 0xec], 0
test ecx, ecx
jle 0x101606d9
mov eax, dword [esi + 0x30]
cdq
sub eax, edx
sar eax, 1
cmp ecx, eax
jge 0x101606d9
movd xmm0, ecx
cvtdq2pd xmm0, xmm0
addsd xmm0, xmm0
cvtpd2ps xmm2, xmm0
movss dword [esi + 0xec], xmm2
mov eax, dword [edi + 0xc0]
test eax, eax
js 0x101606b6
sub ecx, eax
movd xmm0, ecx
cvtdq2pd xmm0, xmm0
addsd xmm0, xmm0
cvtpd2ps xmm1, xmm0
comiss xmm3, xmm1
jbe 0x101606b9
xorps xmm1, xmm1
jmp 0x101606b9
movaps xmm1, xmm2
movd xmm0, dword [esi + 0x30]
cvtdq2ps xmm0, xmm0
divss xmm1, xmm0
divss xmm2, xmm0
movss dword [esi + 0xe8], xmm1
movss dword [esi + 0xec], xmm2
push dword [ebp - 4]
call fcn.101611d0
push esi
push dword [esi + 0x30]
call fcn.10163430
add esp, 0xc
mov dword [esi + 4], eax
cmp dword [esi + 0x58], 0
jne 0x10160745
cmp dword [esi + 0x88], 0
je 0x1016070e
mov ecx, dword [ebp - 4]
mov dword [ecx + 0x14b08], 0
jmp 0x10160752
push dword [esi + 0x30]
push dword [esi]
push dword [edi + 0x60]
call fcn.101633c0
mov dword [edi + 0x60], eax
push dword [esi + 0x30]
push dword [esi]
push eax
call fcn.10163380
mov ecx, dword [ebp - 4]
add esp, 0x18
mov dword [ecx + 0x14b08], eax
test eax, eax
jg 0x10160752
mov dword [ecx + 0x14b08], 8
jmp 0x10160752
mov ecx, dword [ebp - 4]
mov dword [ecx + 0x14b08], 1
push ecx
call fcn.10166da0
xor eax, eax
add esp, 4
cmp dword [esi + 0x30], 0x3e80
mov ecx, 2
mov edi, 0x17
cmovl eax, ecx
mov ecx, dword [ebp - 4]
add eax, dword [esi]
lea eax, [eax + eax*2]
add eax, dword [esi + 4]
lea esi, [ecx + 0x5374]
imul edx, eax, 0xcc
mov dword [ebp - 0xc], eax
add edx, 0x102a3270
mov eax, dword [edx]
lea edx, [edx + 4]
mov dword [esi], eax
lea esi, [esi + 4]
sub edi, 1
jne 0x10160791
mov esi, dword [ecx + 0x53c8]
mov eax, 0x2aaaaaab
mov ecx, dword [ecx + 0x53cc]
sub ecx, esi
imul ecx
mov ecx, edx
shr ecx, 0x1f
add ecx, edx
mov edx, dword [ebp - 4]
lea eax, [ecx + esi]
mov dword [edx + 0x5408], esi
mov dword [edx + 0x540c], eax
lea eax, [esi + ecx*2]
mov dword [edx + 0x5410], eax
lea eax, [esi + ecx*2]
add eax, ecx
mov dword [edx + 0x5420], 0x240
mov dword [edx + 0x5414], eax
lea eax, [esi + ecx*4]
mov dword [edx + 0x5418], eax
lea eax, [esi + ecx*4]
add eax, ecx
lea esi, [edx + 0x53d0]
imul ecx, dword [ebp - 0xc], 0xcc
mov dword [edx + 0x541c], eax
lea edx, [edi + 0xe]
add ecx, 0x102a32cc
mov eax, dword [ecx]
lea ecx, [ecx + 4]
mov dword [esi], eax
lea esi, [esi + 4]
sub edx, 1
jne 0x10160816
mov edx, dword [ebp - 4]
mov eax, 0x2aaaaaab
mov esi, dword [edx + 0x5400]
mov ecx, dword [edx + 0x5404]
sub ecx, esi
imul ecx
mov ecx, edx
shr ecx, 0x1f
add ecx, edx
mov edx, dword [ebp - 4]
lea eax, [ecx + esi]
mov dword [edx + 0x5424], esi
mov dword [edx + 0x5428], eax
lea eax, [esi + ecx*2]
mov dword [edx + 0x542c], eax
lea eax, [esi + ecx*2]
add eax, ecx
mov dword [edx + 0x543c], 0xc0
mov dword [edx + 0x5430], eax
lea eax, [esi + ecx*4]
mov dword [edx + 0x5434], eax
lea eax, [esi + ecx*4]
mov esi, dword [ebp - 0x10]
add eax, ecx
mov dword [edx + 0x5438], eax
cmp dword [esi + 0x3c], 2
mov ecx, dword [esi + 0x38]
jne 0x101608a9
cmp ecx, 1
mov dword [ebp - 0x10], 0x15
mov eax, 0x24
cmove eax, dword [ebp - 0x10]
jmp 0x101608b8
xor eax, eax
cmp ecx, 1
setne al
lea eax, [eax*8 + 0xd]
mov dword [esi + 8], eax
cmp dword [esi + 0x90], 0
je 0x101608ca
add eax, 2
mov dword [esi + 8], eax
lea ecx, [edx + 0x9b50]
mov edx, 2
mov eax, dword [esi + 0x3c]
lea ecx, [ecx + 0x20]
imul eax, dword [esi + 0x38]
imul eax, eax, 0x2bc
movd xmm0, eax
cvtdq2ps xmm0, xmm0
movss dword [ecx - 0x24], xmm0
mov eax, dword [esi + 0x3c]
imul eax, dword [esi + 0x38]
imul eax, eax, 0x2bc
movd xmm0, eax
cvtdq2ps xmm0, xmm0
movss dword [ecx - 0x20], xmm0
mov eax, dword [esi + 0x3c]
imul eax, dword [esi + 0x38]
imul eax, eax, 0x2bc
movd xmm0, eax
cvtdq2ps xmm0, xmm0
movss dword [ecx - 0x1c], xmm0
mov eax, dword [esi + 0x3c]
imul eax, dword [esi + 0x38]
imul eax, eax, 0x2bc
movd xmm0, eax
cvtdq2ps xmm0, xmm0
movss dword [ecx - 0x18], xmm0
mov eax, dword [esi + 0x3c]
imul eax, dword [esi + 0x38]
imul eax, eax, 0x2bc
movd xmm0, eax
cvtdq2ps xmm0, xmm0
movss dword [ecx - 0x14], xmm0
mov eax, dword [esi + 0x3c]
imul eax, dword [esi + 0x38]
imul eax, eax, 0x2bc
movd xmm0, eax
cvtdq2ps xmm0, xmm0
movss dword [ecx - 0x10], xmm0
mov eax, dword [esi + 0x3c]
imul eax, dword [esi + 0x38]
imul eax, eax, 0x2bc
movd xmm0, eax
cvtdq2ps xmm0, xmm0
movss dword [ecx - 0xc], xmm0
mov eax, dword [esi + 0x3c]
imul eax, dword [esi + 0x38]
imul eax, eax, 0x2bc
movd xmm0, eax
cvtdq2ps xmm0, xmm0
movss dword [ecx - 8], xmm0
sub edx, 1
jne 0x101608d5
mov edx, dword [ebp - 4]
mov edi, 3
lea ecx, [edx + 0x9b8c]
nop word [eax + eax]
mov eax, dword [esi + 0x3c]
lea ecx, [ecx + 4]
imul eax, dword [esi + 0x38]
imul eax, eax, 0x2bc
movd xmm0, eax
cvtdq2ps xmm0, xmm0
movss dword [ecx - 4], xmm0
sub edi, 1
jne 0x101609c0
mov edi, dword [ebp + 8]
cmp dword [edi + 0xdc], 0xffffffff
jne 0x101609f7
mov dword [edi + 0xdc], 4
mov eax, dword [esi + 0x58]
sub eax, 1
je 0x10160abd
sub eax, 1
je 0x10160a5c
sub eax, 2
je 0x10160abd
mov dword [edx + 0x14c64], 0
cmp dword [edi + 0x2c], 0
jge 0x10160a28
mov dword [edi + 0x2c], 3
cmp dword [esi + 0x58], 0
jne 0x10160a3a
push dword [edi + 0x60]
push edi
call fcn.10161d40
add esp, 8
push 0
push dword [edi + 0xa8]
push edi
call fcn.1016c580
mov eax, dword [esi + 0x58]
add esp, 0xc
mov dword [edi + 0x9c], eax
mov eax, dword [ebp - 4]
jmp 0x10160b49
mov eax, 0x32
sub eax, dword [edi + 0xa4]
push 0
lea eax, [eax + eax*4]
add eax, eax
push eax
push edi
call fcn.1016c580
xor ecx, ecx
add esp, 0xc
cmp dword [edi + 0x8c], ecx
jne 0x10160a8c
cmp dword [esi + 0x30], 0xabe0
setg cl
mov eax, dword [ebp - 4]
mov dword [eax + 0x14c64], ecx
mov ecx, dword [edi + 0x2c]
cmp ecx, 6
jle 0x10160aa9
mov dword [edi + 0x2c], 6
jmp 0x10160b49
test ecx, ecx
jns 0x10160b49
mov dword [edi + 0x2c], 3
jmp 0x10160b49
cmp dword [edi + 0x7c], 0
jge 0x10160aca
mov dword [edi + 0x7c], 2
cmp dword [edi + 0xf4], 0
jge 0x10160add
mov dword [edi + 0xf4], 0
mov eax, 0x32
sub eax, dword [edi + 0xa4]
push 0
lea eax, [eax + eax*4]
add eax, eax
push eax
push edi
call fcn.1016c580
mov eax, dword [edi + 0x2c]
add esp, 0xc
test eax, eax
js 0x10160b13
cmp eax, 5
jl 0x10160b13
cmp eax, 7
jle 0x10160b1a
mov dword [edi + 0x2c], 7
jmp 0x10160b1a
mov dword [edi + 0x2c], 0
cmp dword [edi + 0x8c], 0
je 0x10160b32
mov eax, dword [ebp - 4]
mov dword [eax + 0x14c64], 0
jmp 0x10160b49
mov ecx, dword [ebp - 4]
xor eax, eax
cmp dword [esi + 0x30], 0xabe0
setg al
mov dword [ecx + 0x14c64], eax
mov eax, ecx
movss xmm0, dword [edi + 0xc8]
movss dword [eax + 0x14bb0], xmm0
movss xmm1, dword [edi + 0xcc]
movss dword [eax + 0x14bb4], xmm1
cmp dword [edi + 0x100], 0
je 0x10160b92
addss xmm0, dword [edi + 0x104]
movss dword [eax + 0x14bb0], xmm0
addss xmm1, dword [edi + 0x104]
movss dword [eax + 0x14bb4], xmm1
cmp dword [esi + 0x58], 0
je 0x10160c9c
mov ecx, dword [esi + 0x30]
mov dword [esi + 0x60], 1
mov dword [esi + 0x64], 0xe
cmp ecx, 0x3e80
jge 0x10160bbc
mov dword [esi + 0x64], 8
mov eax, dword [edi + 0xac]
test eax, eax
je 0x10160bf1
push ecx
push dword [esi]
push eax
call fcn.101633c0
mov dword [edi + 0xac], eax
push dword [esi + 0x30]
push dword [esi]
push eax
call fcn.10163380
add esp, 0x18
mov dword [esi + 0x60], eax
test eax, eax
jns 0x10160bf1
mov dword [esi + 0x60], 1
mov eax, dword [edi + 0xb0]
test eax, eax
je 0x10160c38
push dword [esi + 0x30]
push dword [esi]
push eax
call fcn.101633c0
mov dword [edi + 0xb0], eax
push dword [esi + 0x30]
push dword [esi]
push eax
call fcn.10163380
add esp, 0x18
mov dword [esi + 0x64], eax
test eax, eax
jns 0x10160c38
cmp dword [esi + 0x30], 0x3e80
mov eax, 0xe
mov ecx, 8
cmovl eax, ecx
mov dword [esi + 0x64], eax
mov eax, dword [esi]
shl eax, 4
add eax, dword [esi + 0x60]
mov eax, dword [eax*4 + 0x102a4538]
mov dword [edi + 0xac], eax
mov eax, dword [esi]
shl eax, 4
add eax, dword [esi + 0x64]
mov eax, dword [eax*4 + 0x102a4538]
mov dword [edi + 0xb0], eax
mov eax, dword [esi]
shl eax, 4
add eax, dword [esi + 0x64]
mov ecx, dword [eax*4 + 0x102a4538]
mov eax, dword [edi + 0xa8]
cmp ecx, eax
cmovge ecx, eax
mov dword [edi + 0xa8], ecx
mov eax, dword [esi]
shl eax, 4
add eax, dword [esi + 0x60]
mov eax, dword [eax*4 + 0x102a4538]
cmp eax, ecx
cmovg ecx, eax
mov dword [edi + 0xa8], ecx
mov eax, dword [edi + 0x98]
mov ecx, dword [ebp - 4]
mov dword [esi + 0x54], eax
mov eax, dword [edi + 0x24]
mov dword [esi + 0x8c], eax
mov eax, dword [edi + 0x50]
mov dword [ecx + 0x14c68], eax
mov eax, dword [edi + 0x54]
mov dword [esi + 0xc], eax
mov eax, dword [edi + 0x58]
mov dword [esi + 0x10], eax
mov eax, dword [edi + 0x5c]
mov dword [esi + 0x14], eax
mov eax, dword [edi + 0x60]
mov dword [esi + 0x68], eax
mov eax, dword [edi + 0xa8]
mov dword [esi + 0x5c], eax
mov eax, dword [edi + 0x64]
push edi
mov dword [esi + 0xe4], eax
call fcn.101614e0
mov eax, dword [ebp - 4]
add esp, 4
mov ecx, dword [edi + 0xe8]
mov eax, dword [eax + 0x14f28]
test ecx, ecx
jns 0x10160d05
mov ecx, 3
mov dword [eax], ecx
movss xmm1, dword [edi + 0xec]
cvtps2pd xmm1, xmm1
movsd xmm0, qword [0x10203888]
divsd xmm1, qword [0x102a2250]
call fcn.10121930
mov eax, dword [ebp - 4]
cvtsd2ss xmm0, xmm0
mov eax, dword [eax + 0x14f28]
movss dword [eax + 4], xmm0
mov eax, dword [edi + 0xf0]
cmp eax, 0xffffffff
jne 0x10160d50
mov dword [edi + 0xf0], 0
jmp 0x10160d54
test eax, eax
jne 0x10160d74
mov ecx, dword [esi + 0xa4]
cmp ecx, 1
je 0x10160d65
xor eax, eax
test ecx, ecx
jne 0x10160d74
mov dword [edi + 0xf0], 1
mov eax, 1
push edi
mov dword [esi + 0xa8], eax
call fcn.10161b60
add esp, 4
test eax, eax
jns 0x10160d92
push 1
push edi
call fcn.101620c0
add esp, 8
push edi
call fcn.10161b90
add esp, 4
test eax, eax
jns 0x10160daa
push 0
push edi
call fcn.101620f0
add esp, 8
push edi
call fcn.10161b10
fstp dword [ebp + 8]
xorps xmm5, xmm5
add esp, 4
comiss xmm5, dword [ebp + 8]
jbe 0x10160dd3
sub esp, 8
xorps xmm0, xmm0
movsd qword [esp], xmm0
push edi
call fcn.10162010
add esp, 0xc
push edi
call fcn.101619e0
or eax, 1
push eax
push edi
call fcn.10161ed0
add esp, 0xc
cmp dword [edi + 0xdc], 0
jge 0x10160df9
mov dword [edi + 0xdc], 4
xorps xmm1, xmm1
comiss xmm1, dword [edi + 0xe0]
jbe 0x10160e0f
mov dword [edi + 0xe0], 0x40800000
movss xmm0, dword [edi + 0xf8]
comiss xmm1, xmm0
jbe 0x10160e29
mov dword [edi + 0xf8], 0
xorps xmm0, xmm0
cmp dword [edi + 0xf4], 0
jge 0x10160e3c
mov dword [edi + 0xf4], 1
movss dword [esi + 0xac], xmm0
mov eax, dword [edi + 0xfc]
movsd xmm0, qword [0x10203888]
mov dword [esi + 0xb0], eax
subss xmm1, dword [edi + 0xe4]
movss dword [esi + 0xb4], xmm1
mulss xmm1, dword [0x1029f584]
cvtps2pd xmm1, xmm1
call fcn.10121930
cmp dword [esi + 0xa4], 1
cvtsd2ss xmm0, xmm0
movss dword [esi + 0xb8], xmm0
mov eax, dword [edi + 0xe0]
mov dword [esi + 0xbc], eax
mov eax, dword [edi + 0xdc]
mov dword [esi + 0xc0], eax
mov eax, dword [edi + 0xd0]
mov dword [esi + 0xc4], eax
mov eax, dword [edi + 0xd4]
mov dword [esi + 0xc8], eax
mov eax, dword [edi + 0xd8]
mov dword [esi + 0xcc], eax
mov eax, dword [edi + 0x84]
mov dword [esi + 0x44], eax
mov eax, dword [edi + 0x88]
mov dword [esi + 0x48], eax
mov eax, dword [edi + 0xf4]
mov dword [esi + 0x4c], eax
jne 0x10160eef
mov eax, dword [edi + 0x94]
and eax, 2
jmp 0x10160ef1
xor eax, eax
mov dword [esi + 0x50], eax
mov eax, dword [edi + 0x94]
movss xmm3, dword [0x102a2244]
movss xmm2, dword [0x102a2248]
sar eax, 2
and eax, 0x3f
movd xmm0, eax
cvtdq2ps xmm0, xmm0
comiss xmm0, xmm3
jb 0x10160f20
subss xmm0, xmm2
movss xmm4, dword [0x10283dd8]
mulss xmm0, xmm4
movss dword [esi + 0xd8], xmm0
mov eax, dword [edi + 0x94]
sar eax, 8
and eax, 0x3f
movd xmm0, eax
cvtdq2ps xmm0, xmm0
comiss xmm0, xmm3
jb 0x10160f50
subss xmm0, xmm2
mulss xmm0, xmm4
movss dword [esi + 0xd4], xmm0
mov eax, dword [edi + 0x94]
sar eax, 0xe
and eax, 0x3f
movd xmm0, eax
cvtdq2ps xmm0, xmm0
comiss xmm0, xmm3
jb 0x10160f78
subss xmm0, xmm2
mulss xmm0, xmm4
movss dword [esi + 0xdc], xmm0
mov eax, dword [edi + 0x94]
sar eax, 0x14
and eax, 0x3f
movd xmm1, eax
cvtdq2ps xmm1, xmm1
comiss xmm1, xmm3
jb 0x10160fa0
subss xmm1, xmm2
cmp dword [esi + 0x34], 2
xorps xmm5, xmm5
mulss xmm1, xmm4
addss xmm1, xmm0
movss dword [esi + 0xe0], xmm1
movss xmm0, dword [edi + 0x14]
movss xmm3, dword [edi + 0x18]
movaps xmm1, xmm0
movss xmm2, dword [edi + 0x1c]
movaps xmm4, xmm3
mulss xmm1, xmm5
mulss xmm4, xmm0
mulss xmm3, xmm1
mulss xmm1, xmm2
mulss xmm2, xmm0
jne 0x10161006
cmp dword [esi + 0x38], 1
jne 0x10161006
addss xmm4, xmm1
xorps xmm1, xmm1
addss xmm3, xmm2
xorps xmm2, xmm2
mulss xmm4, dword [0x101f3684]
mulss xmm3, dword [0x101f3684]
mov eax, dword [ebp - 4]
movss dword [esi + 0xf8], xmm4
movss dword [esi + 0xfc], xmm3
movss dword [esi + 0x100], xmm1
movss dword [esi + 0x104], xmm2
mov dword [eax + 0x9b98], 0
mov dword [eax + 0x9b9c], 0
cmp dword [esi + 0x58], 0
jne 0x10161063
mov eax, dword [esi]
inc eax
imul eax, dword [esi + 0x68]
imul eax, eax, 0x11940
cdq
idiv dword [esi + 0x30]
mov eax, dword [ebp - 4]
mov dword [eax + 0x9b98], edx
mov dword [eax + 0x9b9c], edx
cmp dword [edi], 0xfff88e3b
jne 0x101610dd
mov eax, dword [edi + 0x120]
mov dword [ebp + 8], eax
test eax, eax
je 0x101610dd
mov dword [eax + 0x14b0c], 0
cmp dword [edi + 0x44], 0
je 0x10161094
push edi
call fcn.1015d960
mov eax, dword [ebp + 8]
add esp, 4
push 0x140
add eax, 0x14848
push 0
push eax
call fcn.1010f560
mov eax, dword [ebp + 8]
push 0x180
add eax, 0x14988
push 0
push eax
call fcn.1010f560
mov eax, dword [ebp + 8]
add esp, 0x18
cmp dword [eax + 0xa0], 0
mov dword [eax + 0x14eb4], 0
je 0x101610dd
push edi
call fcn.10162560
add esp, 4
push dword [ebp - 4]
call fcn.1016ad10
push edi
call fcn.1016ed80
push dword [edi + 0x7c]
push esi
call fcn.10166ac0
mov dword [esi + 0x84], eax
add esp, 0x10
mov ecx, dword [edi + 0x3c]
mov dword [esi + 0x70], ecx
mov eax, dword [edi + 0x40]
mov dword [esi + 0x78], eax
test eax, eax
je 0x10161114
mov dword [esi + 0x74], 1
test ecx, ecx
je 0x10161133
mov eax, dword [ebp - 4]
push dword [esi + 0x30]
push dword [eax + 0x14eac]
call fcn.10169790
add esp, 8
test eax, eax
jne 0x10161133
mov dword [esi + 0x70], eax
cmp dword [esi + 0x78], 0
mov esi, dword [ebp - 4]
je 0x10161191
cmp dword [edi + 0x28], 0
jne 0x10161191
mov eax, dword [esi + 0x14f34]
test eax, eax
je 0x10161155
push eax
call fcn.10167f90
add esp, 4
call fcn.10167fb0
mov dword [esi + 0x14f34], eax
push dword [edi + 0x118]
push eax
call fcn.10167ff0
push dword [edi + 0x114]
push dword [esi + 0x14f34]
call fcn.10167fd0
push dword [edi + 0x110]
push dword [esi + 0x14f34]
call fcn.10168010
add esp, 0x18
mov dword [esi + 4], 1
xor eax, eax
pop esi
pop edi
mov esp, ebp
pop ebp
ret
or eax, 0xffffffff
pop edi
mov esp, ebp
pop ebp
ret