Function at 0x10170280
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 0x10171a00
cmp dword [edi], 0xfff88e3b
jne 0x10171a00
mov edx, dword [edi + 0x120]
mov dword [ebp - 4], edx
test edx, edx
je 0x10171a00
cmp dword [edx], 0xfff88e3b
jne 0x101702c4
cmp dword [edx + 4], 0
jg 0x10171a00
mov dword [edx], 0xfff88e3b
mov dword [edx + 4], 0
cmp dword [edi + 0xc], 1
jl 0x10171a00
mov eax, dword [edi + 8]
dec eax
cmp eax, 1
ja 0x10171a00
mov eax, dword [edi + 0x10]
test eax, eax
je 0x1017030e
lea ecx, [ebp - 0x10]
mov dword [ebp - 0x10], 0
push ecx
push eax
call fcn.10173ca0
add esp, 8
test eax, eax
js 0x10171a00
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 0x1017032f
mov dword [edi + 0x24], 0
cmp dword [edx + 0x14f30], 0
je 0x1017033f
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 0x10170385
call fcn.1000d680
mov edx, dword [ebp - 4]
add eax, eax
mov ecx, dword [edx + 0x14f00]
xor eax, ecx
and eax, 2
xor eax, ecx
jmp 0x1017038e
mov eax, dword [edx + 0x14f00]
and eax, 0xfffffffd
mov dword [edx + 0x14f00], eax
cmp dword [edi + 0x124], 0
je 0x101703b4
call fcn.1000d680
mov edx, dword [ebp - 4]
mov ecx, dword [edx + 0x14f00]
xor eax, ecx
and eax, 1
xor eax, ecx
jmp 0x101703b7
and eax, 0xfffffffe
mov dword [edx + 0x14f00], eax
cmp dword [edi + 0x12c], 0
je 0x101703fe
call fcn.1000d680
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.1000d680
mov edx, dword [ebp - 4]
shl eax, 3
mov ecx, dword [edx + 0x14f00]
xor eax, ecx
and eax, 8
xor eax, ecx
jmp 0x10170401
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 0x1017044f
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 0x10170469
mov dword [edi + 0x34], 0
cmp dword [esi + 0x58], 0
mov eax, dword [edi + 0x34]
mov dword [esi + 0x40], eax
jne 0x1017048b
mov eax, dword [edi + 0xa8]
cmp eax, 0x80
je 0x1017048b
cmp dword [edi + 0x60], 0
jne 0x1017048b
mov dword [edi + 0x60], eax
mov eax, dword [esi + 0x58]
sub eax, 0
je 0x101704a4
sub eax, 1
je 0x101704a4
sub eax, 3
je 0x101704a4
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 0x101705a6
cmp dword [edi + 0x60], 0
jne 0x10170513
movss xmm0, dword [edi + 0x64]
xor eax, eax
movsd xmm3, qword [0x101fc7b0]
cvtps2pd xmm1, xmm0
subss xmm0, xmm4
andps xmm2, xmm3
andps xmm1, xmm3
comisd xmm1, xmm2
cvtps2pd xmm0, xmm0
andps xmm0, xmm3
jbe 0x101704f9
mulsd xmm1, qword [0x102afa98]
comisd xmm1, xmm0
jmp 0x10170505
mulsd xmm2, qword [0x102afa98]
comisd xmm2, xmm0
setae al
test eax, eax
je 0x10170513
mov dword [edi + 0x64], 0x41306666
cmp dword [esi + 0x58], 0
jne 0x101705a6
movss xmm0, dword [edi + 0x64]
comiss xmm0, xmm4
jbe 0x101705a6
mov edx, dword [edi + 0x10]
test edx, edx
jne 0x10170551
movd xmm0, dword [edi + 0xc]
cvtdq2pd xmm0, xmm0
mulsd xmm0, qword [0x102afaa8]
cvttsd2si eax, xmm0
push eax
call fcn.10174c40
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 [0x1020f4c8]
movd xmm1, ecx
cvtdq2pd xmm1, xmm1
divsd xmm1, xmm0
cvttsd2si eax, xmm1
mov dword [edi + 0x60], eax
call fcn.10173ca0
add esp, 8
mov dword [esi + 4], eax
cmp dword [esi + 0x88], 0
jne 0x101705a6
push dword [edi + 0x10]
push dword [esi]
push dword [edi + 0x60]
call fcn.10173c30
add esp, 0xc
mov dword [edi + 0x60], eax
mov edx, dword [edi + 0x10]
test edx, edx
je 0x10170635
mov eax, dword [edi + 0xa8]
lea ecx, [edi + 0xa8]
cmp edx, 0x3e80
jge 0x101705eb
cmp eax, 8
jle 0x101705dd
mov dword [ecx], eax
cmp eax, 0x40
jl 0x1017062e
mov eax, 0x40
mov dword [ecx], eax
jmp 0x10170870
mov eax, 8
mov dword [ecx], eax
mov dword [ecx], eax
jmp 0x10170870
cmp edx, 0x7d00
jge 0x1017060d
cmp eax, 8
jle 0x101705dd
mov dword [ecx], eax
cmp eax, 0xa0
jl 0x1017062e
mov eax, 0xa0
mov dword [ecx], eax
jmp 0x10170870
cmp eax, 0x20
jle 0x10170627
mov dword [ecx], eax
cmp eax, 0x140
jl 0x1017062e
mov eax, 0x140
mov dword [ecx], eax
jmp 0x10170870
mov eax, 0x20
mov dword [ecx], eax
mov dword [ecx], eax
jmp 0x10170870
mov eax, dword [esi + 0x58]
cmp eax, 1
je 0x10170646
cmp eax, 4
jne 0x10170870
movaps xmm0, xmmword [0x102afbf0]
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 [0x102afbf0]
movups xmmword [ebp - 0x180], xmm0
mov dword [ebp - 0x188], 0x5c94
movaps xmm0, xmmword [0x102afc30]
movups xmmword [ebp - 0x168], xmm0
mov dword [ebp - 0x184], 0xac44
movaps xmm0, xmmword [0x102afbe0]
movups xmmword [ebp - 0x150], xmm0
mov dword [ebp - 0x170], 0x5514
movaps xmm0, xmmword [0x102afc40]
movups xmmword [ebp - 0x138], xmm0
mov dword [ebp - 0x16c], 0x7d00
movaps xmm0, xmmword [0x102afc00]
movups xmmword [ebp - 0x120], xmm0
mov dword [ebp - 0x158], 0x3db8
movaps xmm0, xmmword [0x102afbd0]
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 [0x102afc20]
addss xmm2, dword [edi + 0xa0]
movups xmmword [ebp - 0xf0], xmm0
mov dword [ebp - 0x110], 0x1edf
movaps xmm0, xmmword [0x102afc10]
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 0x101707e5
movss xmm1, dword [ecx]
comiss xmm1, xmm2
jbe 0x101707e7
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 0x101707e7
jl 0x101707fa
movss xmm4, dword [ecx]
comiss xmm2, xmm4
jb 0x101707fa
movss xmm3, dword [ecx + 4]
comiss xmm3, xmm2
ja 0x10170805
inc edx
add ecx, 0x18
cmp edx, 9
jl 0x10170796
jmp 0x10170870
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 0x10170870
mov dword [edi + 0xb8], 0xffffffff
mov edx, dword [edi + 0xb8]
lea eax, [edi + 0xb8]
test edx, edx
jne 0x10170b0b
mov eax, dword [esi + 0x58]
cmp eax, 4
ja case.default.0x10170890
jmp dword [eax*4 + 0x10171a08]
movaps xmm0, xmmword [0x102afaf0]
push dword [edi + 0x60]
movups xmmword [ebp - 0xc4], xmm0
mov dword [ebp - 0x44], 0x140
movaps xmm0, xmmword [0x102afb00]
movups xmmword [ebp - 0xb4], xmm0
mov dword [ebp - 0x40], 0x5014
movaps xmm0, xmmword [0x102afb10]
movups xmmword [ebp - 0xa4], xmm0
movaps xmm0, xmmword [0x102afb20]
movups xmmword [ebp - 0x94], xmm0
movaps xmm0, xmmword [0x102afb50]
movups xmmword [ebp - 0x84], xmm0
movaps xmm0, xmmword [0x102afb70]
movups xmmword [ebp - 0x74], xmm0
movaps xmm0, xmmword [0x102afbb0]
movups xmmword [ebp - 0x64], xmm0
movaps xmm0, xmmword [0x102afbc0]
movups xmmword [ebp - 0x54], xmm0
call fcn.10174cc0
add esp, 4
movd xmm2, dword [ebp + eax*8 - 0xc0]
cvtdq2pd xmm2, xmm2
jmp 0x10170ae1
movaps xmm0, xmmword [0x102afaf0]
push dword [edi + 0xa8]
movups xmmword [ebp - 0xc4], xmm0
mov dword [ebp - 0x44], 0x140
movaps xmm0, xmmword [0x102afb00]
movups xmmword [ebp - 0xb4], xmm0
mov dword [ebp - 0x40], 0x5014
movaps xmm0, xmmword [0x102afb10]
movups xmmword [ebp - 0xa4], xmm0
movaps xmm0, xmmword [0x102afb20]
movups xmmword [ebp - 0x94], xmm0
movaps xmm0, xmmword [0x102afb50]
movups xmmword [ebp - 0x84], xmm0
movaps xmm0, xmmword [0x102afb70]
movups xmmword [ebp - 0x74], xmm0
movaps xmm0, xmmword [0x102afbb0]
movups xmmword [ebp - 0x64], xmm0
movaps xmm0, xmmword [0x102afbc0]
movups xmmword [ebp - 0x54], xmm0
call fcn.10174cc0
add esp, 4
movd xmm2, dword [ebp + eax*8 - 0xc0]
cvtdq2pd xmm2, xmm2
jmp 0x10170ae1
movaps xmm0, xmmword [0x102afba0]
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 [0x102afb40]
movups xmmword [ebp - 0x2c], xmm0
cmp eax, 9
ja 0x10170ad9
movd xmm1, dword [ebp + eax*4 - 0x3c]
movd xmm2, dword [ebp + eax*4 - 0x38]
jmp 0x10170ab8
movaps xmm0, xmmword [0x102afb90]
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 [0x102afb60]
movups xmmword [ebp - 0x2c], xmm0
cmp eax, 9
ja 0x10170a6c
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 0x10170ae1
movsd xmm2, qword [0x102afac0]
jmp 0x10170ae1
movaps xmm0, xmmword [0x102afb80]
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 [0x102afb30]
movups xmmword [ebp - 0x2c], xmm0
cmp eax, 9
ja 0x10170ad9
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 0x10170ae1
movsd xmm2, qword [0x102afab8]
cmp dword [edi + 0x30], 3
jne 0x10170afb
mov eax, dword [esi + 0x58]
test eax, eax
je 0x10170af3
cmp eax, 3
jne 0x10170afb
mulsd xmm2, qword [0x1020f498]
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 0x10170cbe
mov ecx, dword [edi + 0xc]
lea eax, [edx + edx]
cmp eax, ecx
jle 0x10170b36
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 0x10170b53
mov ecx, 0xbb80
jmp 0x10170bb7
cmp eax, 0xac44
jge 0x10170bb7
cmp eax, 0x7d00
jl 0x10170b68
mov ecx, 0x7d00
jmp 0x10170bb7
cmp eax, 0x5dc0
jl 0x10170b76
mov ecx, 0x5dc0
jmp 0x10170bb7
cmp eax, 0x5622
jl 0x10170b84
mov ecx, 0x5622
jmp 0x10170bb7
cmp eax, 0x3e80
jl 0x10170b92
mov ecx, 0x3e80
jmp 0x10170bb7
cmp eax, 0x2ee0
jl 0x10170ba0
mov ecx, 0x2ee0
jmp 0x10170bb7
cmp eax, 0x2b11
jl 0x10170bae
mov ecx, 0x2b11
jmp 0x10170bb7
cmp eax, 0x1f40
cmovge ecx, dword [ebp - 8]
cmp edx, 0xffffffff
je 0x10170caf
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 0x10170caf
cmp eax, 0xac44
jle 0x10170c50
mov ecx, 0xbb80
jmp 0x10170caf
cmp eax, 0x7d00
jle 0x10170c5e
mov ecx, 0xac44
jmp 0x10170caf
cmp eax, 0x5dc0
jle 0x10170c6c
mov ecx, 0x7d00
jmp 0x10170caf
cmp eax, 0x5622
jle 0x10170c7a
mov ecx, 0x5dc0
jmp 0x10170caf
cmp eax, 0x3e80
jle 0x10170c88
mov ecx, 0x5622
jmp 0x10170caf
cmp eax, 0x2ee0
jle 0x10170c96
mov ecx, 0x3e80
jmp 0x10170caf
cmp eax, 0x2b11
jle 0x10170ca4
mov ecx, 0x2ee0
jmp 0x10170caf
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 0x10170cdd
cmp dword [esi + 0x58], 4
je 0x10170cdd
cmp edx, 0x5014
mov dword [ebp - 0xc], 0x5014
cmovg edx, dword [ebp - 0xc]
jmp 0x10170ce7
cmp edx, 0x5dc0
cmovg edx, dword [ebp - 0xc]
mov dword [eax], edx
mov eax, ecx
movsd xmm2, qword [0x1020f4c8]
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 0x10170d3e
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 0x10170d75
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 0x10170d78
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.0x10170dbe
jmp dword [eax*4 + 0x10171a1c]
movaps xmm0, xmmword [0x102afc50]
mov eax, dword [edi + 0xa4]
movups xmmword [ebp - 0x38], xmm0
mov dword [ebp - 0x18], 0x41700000
movaps xmm0, xmmword [0x102afc60]
movups xmmword [ebp - 0x28], xmm0
mov dword [ebp - 0x14], 0x41840000
movss xmm0, dword [ebp + eax*4 - 0x38]
jmp 0x10170e2a
movd xmm0, dword [edi + 0xa8]
jmp 0x10170e06
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 0x10170e42
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 0x10170ea0
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 0x10170e87
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 0x10170ea6
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 0x10170f39
mov eax, dword [esi + 0x30]
cdq
sub eax, edx
sar eax, 1
cmp ecx, eax
jge 0x10170f39
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 0x10170f16
sub ecx, eax
movd xmm0, ecx
cvtdq2pd xmm0, xmm0
addsd xmm0, xmm0
cvtpd2ps xmm1, xmm0
comiss xmm3, xmm1
jbe 0x10170f19
xorps xmm1, xmm1
jmp 0x10170f19
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.10171a30
push esi
push dword [esi + 0x30]
call fcn.10173ca0
add esp, 0xc
mov dword [esi + 4], eax
cmp dword [esi + 0x58], 0
jne 0x10170fa5
cmp dword [esi + 0x88], 0
je 0x10170f6e
mov ecx, dword [ebp - 4]
mov dword [ecx + 0x14b08], 0
jmp 0x10170fb2
push dword [esi + 0x30]
push dword [esi]
push dword [edi + 0x60]
call fcn.10173c30
mov dword [edi + 0x60], eax
push dword [esi + 0x30]
push dword [esi]
push eax
call fcn.10173bf0
mov ecx, dword [ebp - 4]
add esp, 0x18
mov dword [ecx + 0x14b08], eax
test eax, eax
jg 0x10170fb2
mov dword [ecx + 0x14b08], 8
jmp 0x10170fb2
mov ecx, dword [ebp - 4]
mov dword [ecx + 0x14b08], 1
push ecx
call fcn.10177610
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, 0x102b0ad0
mov eax, dword [edx]
lea edx, [edx + 4]
mov dword [esi], eax
lea esi, [esi + 4]
sub edi, 1
jne 0x10170ff1
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, 0x102b0b2c
mov eax, dword [ecx]
lea ecx, [ecx + 4]
mov dword [esi], eax
lea esi, [esi + 4]
sub edx, 1
jne 0x10171076
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 0x10171109
cmp ecx, 1
mov dword [ebp - 0x10], 0x15
mov eax, 0x24
cmove eax, dword [ebp - 0x10]
jmp 0x10171118
xor eax, eax
cmp ecx, 1
setne al
lea eax, [eax*8 + 0xd]
mov dword [esi + 8], eax
cmp dword [esi + 0x90], 0
je 0x1017112a
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 0x10171135
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 0x10171220
mov edi, dword [ebp + 8]
cmp dword [edi + 0xdc], 0xffffffff
jne 0x10171257
mov dword [edi + 0xdc], 4
mov eax, dword [esi + 0x58]
sub eax, 1
je 0x1017131d
sub eax, 1
je 0x101712bc
sub eax, 2
je 0x1017131d
mov dword [edx + 0x14c64], 0
cmp dword [edi + 0x2c], 0
jge 0x10171288
mov dword [edi + 0x2c], 3
cmp dword [esi + 0x58], 0
jne 0x1017129a
push dword [edi + 0x60]
push edi
call fcn.101725a0
add esp, 8
push 0
push dword [edi + 0xa8]
push edi
call fcn.1017cdf0
mov eax, dword [esi + 0x58]
add esp, 0xc
mov dword [edi + 0x9c], eax
mov eax, dword [ebp - 4]
jmp 0x101713a9
mov eax, 0x32
sub eax, dword [edi + 0xa4]
push 0
lea eax, [eax + eax*4]
add eax, eax
push eax
push edi
call fcn.1017cdf0
xor ecx, ecx
add esp, 0xc
cmp dword [edi + 0x8c], ecx
jne 0x101712ec
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 0x10171309
mov dword [edi + 0x2c], 6
jmp 0x101713a9
test ecx, ecx
jns 0x101713a9
mov dword [edi + 0x2c], 3
jmp 0x101713a9
cmp dword [edi + 0x7c], 0
jge 0x1017132a
mov dword [edi + 0x7c], 2
cmp dword [edi + 0xf4], 0
jge 0x1017133d
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.1017cdf0
mov eax, dword [edi + 0x2c]
add esp, 0xc
test eax, eax
js 0x10171373
cmp eax, 5
jl 0x10171373
cmp eax, 7
jle 0x1017137a
mov dword [edi + 0x2c], 7
jmp 0x1017137a
mov dword [edi + 0x2c], 0
cmp dword [edi + 0x8c], 0
je 0x10171392
mov eax, dword [ebp - 4]
mov dword [eax + 0x14c64], 0
jmp 0x101713a9
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 0x101713f2
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 0x101714fc
mov ecx, dword [esi + 0x30]
mov dword [esi + 0x60], 1
mov dword [esi + 0x64], 0xe
cmp ecx, 0x3e80
jge 0x1017141c
mov dword [esi + 0x64], 8
mov eax, dword [edi + 0xac]
test eax, eax
je 0x10171451
push ecx
push dword [esi]
push eax
call fcn.10173c30
mov dword [edi + 0xac], eax
push dword [esi + 0x30]
push dword [esi]
push eax
call fcn.10173bf0
add esp, 0x18
mov dword [esi + 0x60], eax
test eax, eax
jns 0x10171451
mov dword [esi + 0x60], 1
mov eax, dword [edi + 0xb0]
test eax, eax
je 0x10171498
push dword [esi + 0x30]
push dword [esi]
push eax
call fcn.10173c30
mov dword [edi + 0xb0], eax
push dword [esi + 0x30]
push dword [esi]
push eax
call fcn.10173bf0
add esp, 0x18
mov dword [esi + 0x64], eax
test eax, eax
jns 0x10171498
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 + 0x102b1d88]
mov dword [edi + 0xac], eax
mov eax, dword [esi]
shl eax, 4
add eax, dword [esi + 0x64]
mov eax, dword [eax*4 + 0x102b1d88]
mov dword [edi + 0xb0], eax
mov eax, dword [esi]
shl eax, 4
add eax, dword [esi + 0x64]
mov ecx, dword [eax*4 + 0x102b1d88]
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 + 0x102b1d88]
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.10171d40
mov eax, dword [ebp - 4]
add esp, 4
mov ecx, dword [edi + 0xe8]
mov eax, dword [eax + 0x14f28]
test ecx, ecx
jns 0x10171565
mov ecx, 3
mov dword [eax], ecx
movss xmm1, dword [edi + 0xec]
cvtps2pd xmm1, xmm1
movsd xmm0, qword [0x101fcb98]
divsd xmm1, qword [0x102afad0]
call fcn.1012bd40
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 0x101715b0
mov dword [edi + 0xf0], 0
jmp 0x101715b4
test eax, eax
jne 0x101715d4
mov ecx, dword [esi + 0xa4]
cmp ecx, 1
je 0x101715c5
xor eax, eax
test ecx, ecx
jne 0x101715d4
mov dword [edi + 0xf0], 1
mov eax, 1
push edi
mov dword [esi + 0xa8], eax
call fcn.101723c0
add esp, 4
test eax, eax
jns 0x101715f2
push 1
push edi
call fcn.10172920
add esp, 8
push edi
call fcn.101723f0
add esp, 4
test eax, eax
jns 0x1017160a
push 0
push edi
call fcn.10172950
add esp, 8
push edi
call fcn.10172370
fstp dword [ebp + 8]
xorps xmm5, xmm5
add esp, 4
comiss xmm5, dword [ebp + 8]
jbe 0x10171633
sub esp, 8
xorps xmm0, xmm0
movsd qword [esp], xmm0
push edi
call fcn.10172870
add esp, 0xc
push edi
call fcn.10172240
or eax, 1
push eax
push edi
call fcn.10172730
add esp, 0xc
cmp dword [edi + 0xdc], 0
jge 0x10171659
mov dword [edi + 0xdc], 4
xorps xmm1, xmm1
comiss xmm1, dword [edi + 0xe0]
jbe 0x1017166f
mov dword [edi + 0xe0], 0x40800000
movss xmm0, dword [edi + 0xf8]
comiss xmm1, xmm0
jbe 0x10171689
mov dword [edi + 0xf8], 0
xorps xmm0, xmm0
cmp dword [edi + 0xf4], 0
jge 0x1017169c
mov dword [edi + 0xf4], 1
movss dword [esi + 0xac], xmm0
mov eax, dword [edi + 0xfc]
movsd xmm0, qword [0x101fcb98]
mov dword [esi + 0xb0], eax
subss xmm1, dword [edi + 0xe4]
movss dword [esi + 0xb4], xmm1
mulss xmm1, dword [0x10211540]
cvtps2pd xmm1, xmm1
call fcn.1012bd40
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 0x1017174f
mov eax, dword [edi + 0x94]
and eax, 2
jmp 0x10171751
xor eax, eax
mov dword [esi + 0x50], eax
mov eax, dword [edi + 0x94]
movss xmm3, dword [0x102afacc]
movss xmm2, dword [0x1020f87c]
sar eax, 2
and eax, 0x3f
movd xmm0, eax
cvtdq2ps xmm0, xmm0
comiss xmm0, xmm3
jb 0x10171780
subss xmm0, xmm2
movss xmm4, dword [0x10211544]
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 0x101717b0
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 0x101717d8
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 0x10171800
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 0x10171866
cmp dword [esi + 0x38], 1
jne 0x10171866
addss xmm4, xmm1
xorps xmm1, xmm1
addss xmm3, xmm2
xorps xmm2, xmm2
mulss xmm4, dword [0x1020dfd0]
mulss xmm3, dword [0x1020dfd0]
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 0x101718c3
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 0x1017193d
mov eax, dword [edi + 0x120]
mov dword [ebp + 8], eax
test eax, eax
je 0x1017193d
mov dword [eax + 0x14b0c], 0
cmp dword [edi + 0x44], 0
je 0x101718f4
push edi
call fcn.1016e1c0
mov eax, dword [ebp + 8]
add esp, 4
push 0x140
add eax, 0x14848
push 0
push eax
call fcn.1011e7c0
mov eax, dword [ebp + 8]
push 0x180
add eax, 0x14988
push 0
push eax
call fcn.1011e7c0
mov eax, dword [ebp + 8]
add esp, 0x18
cmp dword [eax + 0xa0], 0
mov dword [eax + 0x14eb4], 0
je 0x1017193d
push edi
call fcn.10172dc0
add esp, 4
push dword [ebp - 4]
call fcn.1017b580
push edi
call fcn.1017f600
push dword [edi + 0x7c]
push esi
call fcn.10177330
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 0x10171974
mov dword [esi + 0x74], 1
test ecx, ecx
je 0x10171993
mov eax, dword [ebp - 4]
push dword [esi + 0x30]
push dword [eax + 0x14eac]
call fcn.1017a000
add esp, 8
test eax, eax
jne 0x10171993
mov dword [esi + 0x70], eax
cmp dword [esi + 0x78], 0
mov esi, dword [ebp - 4]
je 0x101719f1
cmp dword [edi + 0x28], 0
jne 0x101719f1
mov eax, dword [esi + 0x14f34]
test eax, eax
je 0x101719b5
push eax
call fcn.10178800
add esp, 4
call fcn.10178820
mov dword [esi + 0x14f34], eax
push dword [edi + 0x118]
push eax
call fcn.10178860
push dword [edi + 0x114]
push dword [esi + 0x14f34]
call fcn.10178840
push dword [edi + 0x110]
push dword [esi + 0x14f34]
call fcn.10178880
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