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

Disassembly:
push ebp
mov ebp, esp
and esp, 0xfffffff0
sub esp, 0x104
mov eax, dword [0x102cf440]
xor eax, esp
mov dword [esp + 0x100], eax
mov ecx, dword [ebp + 8]
xorps xmm0, xmm0
push ebx
push esi
mov esi, dword [ebp + 0xc]
test esi, esi
mov edx, dword [ecx + 0xc]
mov ebx, dword [ecx]
push edi
mov edi, 0x1016cb30
mov dword [esp + 0xd8], 0x10000
lea eax, [edx + 1]
mov dword [esp + 0x70], ecx
mov dword [ecx + 0xc], eax
mov eax, dword [ecx + 0x10]
mov dword [esp + 0x6c], eax
mov eax, dword [ecx + 4]
mov dword [esp + 0x24], eax
mov eax, 0x1016cb80
cmovne edi, eax
mov dword [esp + 0x50], esi
mov eax, dword [ecx + 8]
shl eax, 0x10
add eax, 0x8000
shl edx, 0x10
add edx, 0x8000
mov dword [esp + 0x28], eax
mov dword [esp + 0xd0], eax
mov dword [esp + 0xd4], edx
mov eax, dword [ebx + 0x30]
mov dword [esp + 0x1c], ebx
mov dword [esp + 0x20], edi
mov dword [esp + 0x2c], edx
movups xmmword [esp + 0xfc], xmm0
test eax, eax
je 0x10169533
lea ecx, [esp + 0xd0]
push ecx
push eax
call sym.project.dll_pixman_transform_point_3d
add esp, 8
test eax, eax
je 0x1016a68a
mov eax, dword [ebx + 0x30]
mov edx, dword [esp + 0xd4]
mov dword [esp + 0x2c], edx
mov ecx, dword [eax]
mov eax, dword [eax + 0xc]
mov dword [esp + 0x68], eax
mov eax, dword [esp + 0xd0]
mov dword [esp + 0x64], ecx
mov dword [esp + 0x28], eax
jmp 0x10169547
mov eax, dword [esp + 0x28]
mov dword [esp + 0x64], 0x10000
mov dword [esp + 0x68], 0
xor ecx, ecx
mov dword [esp + 0x34], ecx
cmp dword [esp + 0x6c], ecx
jle 0x1016a68a
movss xmm4, dword [0x1027de14]
test esi, esi
movss xmm3, dword [0x102bc0f8]
xorps xmm2, xmm2
mov dword [esp + 0x58], 4
mov esi, dword [esp + 0x58]
mov dword [esp + 0x30], 0x10
cmovne esi, dword [esp + 0x30]
mov dword [esp + 0x58], esi
mov esi, dword [esp + 0x24]
nop dword [eax]
cmp dword [ebp + 0x10], 0
mov edi, dword [esp + 0x20]
je 0x101695df
cmp dword [esp + 0x50], 0
jne 0x101695b3
mov ebx, dword [ebp + 0x10]
cmp dword [ebx + ecx*4], 0
mov ebx, dword [esp + 0x1c]
jne 0x101695df
jmp 0x1016a650
shl ecx, 4
lea edx, [esp + 0xfc]
add ecx, dword [ebp + 0x10]
mov esi, 0xc
mov eax, dword [ecx]
cmp eax, dword [edx]
jne 0x101695db
add ecx, 4
add edx, 4
sub esi, 4
jae 0x101695c5
jmp 0x1016a640
mov ecx, dword [esp + 0x34]
mov eax, dword [ebx + 0x38]
cmp eax, 6
ja case.default.0x101695eb
jmp dword [eax*4 + 0x1016a6a8]
mov esi, dword [esp + 0x28]
mov ecx, dword [esp + 0x2c]
mov eax, dword [ebx + 0x34]
lea esi, [esi - 1]
lea ecx, [ecx - 1]
sar esi, 0x10
sar ecx, 0x10
test eax, eax
je 0x101696ec
mov edi, dword [ebx + 0x70]
cmp eax, 1
jne 0x10169656
cmp esi, edi
jl 0x10169626
nop dword [eax]
sub esi, edi
cmp esi, edi
jge 0x10169620
test esi, esi
jns 0x10169634
nop word [eax + eax]
add esi, edi
js 0x10169630
mov eax, dword [ebx + 0x74]
cmp ecx, eax
jl 0x10169646
nop dword [eax + eax]
sub ecx, eax
cmp ecx, eax
jge 0x10169640
test ecx, ecx
jns 0x101696d5
nop
add ecx, eax
js 0x10169650
jmp 0x101696d5
cmp eax, 2
jne 0x1016967e
test esi, esi
jns 0x10169663
xor esi, esi
jmp 0x1016966b
lea eax, [edi - 1]
cmp esi, eax
cmovg esi, eax
mov eax, dword [ebx + 0x74]
test ecx, ecx
jns 0x10169676
xor ecx, ecx
jmp 0x101696d5
dec eax
cmp ecx, eax
cmovg ecx, eax
jmp 0x101696d5
lea ebx, [edi + edi]
test esi, esi
jns 0x10169693
not esi
mov eax, esi
cdq
idiv ebx
mov eax, ebx
sub eax, edx
dec eax
jmp 0x1016969a
mov eax, esi
cdq
idiv ebx
mov eax, edx
mov esi, eax
cmp eax, edi
jl 0x101696a5
mov esi, ebx
sub esi, eax
dec esi
mov eax, dword [esp + 0x1c]
mov ebx, dword [eax + 0x74]
lea edi, [ebx + ebx]
test ecx, ecx
jns 0x101696c1
not ecx
mov eax, ecx
mov ecx, edi
cdq
idiv edi
sub ecx, edx
dec ecx
jmp 0x101696c8
mov eax, ecx
cdq
idiv edi
mov ecx, edx
cmp ecx, ebx
mov ebx, dword [esp + 0x1c]
jl 0x101696d5
sub edi, ecx
lea ecx, [edi - 1]
push dword [esp + 0x24]
mov edi, dword [esp + 0x24]
push 0
push ecx
push esi
push ebx
call edi
add esp, 0x14
jmp 0x1016a640
push dword [esp + 0x24]
push 1
push ecx
push esi
push ebx
call edi
add esp, 0x14
jmp 0x1016a640
mov edx, dword [esp + 0x1c]
mov ebx, dword [esp + 0x28]
mov edi, dword [esp + 0x2c]
add ebx, 0xffff8000
add edi, 0xffff8000
cmp dword [esp + 0x50], 0
mov esi, dword [edx + 0x74]
mov ecx, dword [edx + 0x70]
mov dword [esp + 0xc], esi
mov esi, edx
je 0x10169b86
movzx eax, bx
sar ebx, 0x10
movd xmm0, eax
cvtdq2ps xmm0, xmm0
movzx eax, di
sar edi, 0x10
cmp dword [esi + 0x34], 0
mulss xmm0, xmm4
lea edx, [edi + 1]
mov dword [esp + 0x18], edx
movss dword [esp + 0x38], xmm0
movd xmm0, eax
lea eax, [ebx + 1]
cvtdq2ps xmm0, xmm0
mov dword [esp + 0x14], eax
mulss xmm0, xmm4
movss dword [esp + 0x30], xmm0
je 0x10169980
cmp dword [esi + 0x34], 1
mov esi, dword [esp + 0xc]
jne 0x101697ef
cmp ebx, ecx
jl 0x10169788
sub ebx, ecx
cmp ebx, ecx
jge 0x10169782
test ebx, ebx
jns 0x10169794
nop dword [eax]
add ebx, ecx
js 0x10169790
cmp edi, esi
jl 0x1016979e
sub edi, esi
cmp edi, esi
jge 0x10169798
test edi, edi
jns 0x101697a6
add edi, esi
js 0x101697a2
cmp eax, ecx
jl 0x101697ba
nop word [eax + eax]
sub eax, ecx
cmp eax, ecx
jge 0x101697b0
mov dword [esp + 0x14], eax
test eax, eax
jns 0x101697c8
nop
add eax, ecx
js 0x101697c0
mov dword [esp + 0x14], eax
cmp edx, esi
jl 0x101697da
nop dword [eax]
sub edx, esi
cmp edx, esi
jge 0x101697d0
mov dword [esp + 0x18], edx
test edx, edx
jns 0x1016992f
add edx, esi
js 0x101697e2
mov dword [esp + 0x18], edx
jmp 0x1016992f
mov esi, dword [esp + 0x1c]
cmp dword [esi + 0x34], 2
mov esi, dword [esp + 0xc]
jne 0x1016985f
test ebx, ebx
jns 0x10169806
xor ebx, ebx
dec ecx
jmp 0x10169811
dec ecx
mov dword [esp + 0xc], ecx
cmp ebx, ecx
jle 0x10169815
mov ebx, ecx
mov dword [esp + 0xc], ecx
lea ecx, [esi - 1]
test edi, edi
jns 0x10169820
xor edi, edi
jmp 0x10169826
cmp edi, ecx
jle 0x10169826
mov edi, ecx
test eax, eax
jns 0x1016982e
xor esi, esi
jmp 0x1016983d
cmp eax, dword [esp + 0xc]
cmovg eax, dword [esp + 0xc]
mov dword [esp + 0x14], eax
mov esi, eax
test edx, edx
jns 0x1016984e
mov dword [esp + 0x18], 0
jmp 0x10169933
cmp edx, ecx
jle 0x10169933
mov dword [esp + 0x18], ecx
jmp 0x10169933
lea eax, [ecx + ecx]
mov dword [esp + 0x10], eax
test ebx, ebx
jns 0x1016987e
not ebx
mov eax, ebx
cdq
idiv dword [esp + 0x10]
mov eax, dword [esp + 0x10]
mov ebx, eax
sub ebx, edx
dec ebx
jmp 0x1016988b
mov eax, ebx
cdq
idiv dword [esp + 0x10]
mov eax, dword [esp + 0x10]
mov ebx, edx
cmp ebx, ecx
jl 0x10169894
sub eax, ebx
lea ebx, [eax - 1]
lea eax, [esi + esi]
mov dword [esp + 0xc], eax
test edi, edi
jns 0x101698b3
not edi
mov eax, edi
cdq
idiv dword [esp + 0xc]
mov eax, dword [esp + 0xc]
mov edi, eax
sub edi, edx
dec edi
jmp 0x101698c0
mov eax, edi
cdq
idiv dword [esp + 0xc]
mov eax, dword [esp + 0xc]
mov edi, edx
cmp edi, esi
jl 0x101698c9
sub eax, edi
lea edi, [eax - 1]
mov eax, dword [esp + 0x14]
test eax, eax
jns 0x101698e5
not eax
cdq
idiv dword [esp + 0x10]
mov eax, dword [esp + 0x10]
sub eax, edx
dec eax
mov dword [esp + 0x14], eax
jmp 0x101698f0
cdq
idiv dword [esp + 0x10]
mov eax, edx
mov dword [esp + 0x14], edx
cmp eax, ecx
jl 0x101698ff
mov ecx, dword [esp + 0x10]
sub ecx, eax
dec ecx
mov dword [esp + 0x14], ecx
mov eax, dword [esp + 0x18]
mov ecx, dword [esp + 0xc]
test eax, eax
jns 0x1016991b
not eax
cdq
idiv ecx
mov eax, ecx
sub eax, edx
dec eax
mov dword [esp + 0x18], eax
jmp 0x10169924
cdq
idiv ecx
mov eax, edx
mov dword [esp + 0x18], edx
cmp eax, esi
jl 0x1016992f
sub ecx, eax
dec ecx
mov dword [esp + 0x18], ecx
mov esi, dword [esp + 0x14]
lea eax, [esp + 0x90]
push eax
push 0
push edi
push ebx
push dword [esp + 0x2c]
call dword [esp + 0x34]
lea eax, [esp + 0xb4]
push eax
push 0
push edi
push esi
push dword [esp + 0x40]
call dword [esp + 0x48]
mov edi, dword [esp + 0x40]
lea eax, [esp + 0xd8]
push eax
push 0
push edi
push ebx
mov ebx, dword [esp + 0x54]
push ebx
call dword [esp + 0x5c]
lea eax, [esp + 0xfc]
push eax
push 0
jmp 0x101699cc
lea eax, [esp + 0x90]
push eax
push 1
push edi
push ebx
push esi
call dword [esp + 0x34]
mov esi, dword [esp + 0x28]
lea eax, [esp + 0xb4]
push eax
push 1
push edi
push esi
push dword [esp + 0x40]
call dword [esp + 0x48]
mov edi, dword [esp + 0x40]
lea eax, [esp + 0xd8]
push eax
push 1
push edi
push ebx
mov ebx, dword [esp + 0x54]
push ebx
call dword [esp + 0x5c]
lea eax, [esp + 0xfc]
push eax
push 1
push edi
mov edi, dword [esp + 0x68]
push esi
push ebx
call edi
movss xmm1, dword [0x102bc0f8]
add esp, 0x50
movss xmm5, dword [esp + 0x30]
movaps xmm0, xmm1
movss xmm2, dword [esp + 0x38]
subss xmm0, xmm5
subss xmm1, xmm2
movss xmm7, dword [esp + 0x9c]
movaps xmm4, xmm5
movss xmm6, dword [esp + 0xb8]
mulss xmm4, xmm2
mov eax, dword [esp + 0x24]
movaps xmm3, xmm0
mulss xmm3, xmm2
movaps xmm2, xmm1
mulss xmm1, xmm0
movss xmm0, dword [esp + 0x94]
mulss xmm2, xmm5
mulss xmm0, xmm1
mulss xmm7, xmm1
movss dword [esp + 0x40], xmm0
movss xmm0, dword [esp + 0xa4]
mulss xmm0, xmm3
movss dword [esp + 0x30], xmm1
movss xmm5, dword [esp + 0xc8]
movss dword [esp + 0x48], xmm0
movss xmm0, dword [esp + 0xb4]
mulss xmm0, xmm2
movss dword [esp + 0x38], xmm3
movss dword [esp + 0x44], xmm2
movss dword [esp + 0xc], xmm0
movss xmm0, dword [esp + 0xc4]
mulss xmm0, xmm4
movss dword [esp + 0x3c], xmm4
mulss xmm5, xmm4
movss dword [esp + 0x10], xmm0
movss xmm0, dword [esp + 0x98]
mulss xmm0, xmm1
movss xmm1, dword [esp + 0x90]
mulss xmm1, dword [esp + 0x30]
movss dword [esp + 0x18], xmm0
movss xmm0, dword [esp + 0xa8]
mulss xmm0, xmm3
movss xmm4, dword [esp + 0xac]
mulss xmm4, xmm3
movss dword [esp + 0x14], xmm0
movss xmm0, dword [esp + 0xa0]
mulss xmm0, dword [esp + 0x38]
addss xmm7, xmm4
movss xmm3, dword [esp + 0xbc]
mulss xmm6, xmm2
addss xmm1, xmm0
mulss xmm3, xmm2
movss xmm0, dword [esp + 0xb0]
mulss xmm0, dword [esp + 0x44]
movss xmm2, dword [esp + 0xcc]
addss xmm7, xmm3
mulss xmm2, dword [esp + 0x3c]
addss xmm1, xmm0
movss xmm0, dword [esp + 0xc0]
mulss xmm0, dword [esp + 0x3c]
addss xmm7, xmm2
addss xmm1, xmm0
movss xmm0, dword [esp + 0x40]
addss xmm0, dword [esp + 0x48]
movss dword [eax], xmm1
addss xmm0, dword [esp + 0xc]
addss xmm0, dword [esp + 0x10]
movss dword [eax + 4], xmm0
movss xmm0, dword [esp + 0x18]
addss xmm0, dword [esp + 0x14]
addss xmm0, xmm6
addss xmm0, xmm5
movss dword [eax + 8], xmm0
movss dword [eax + 0xc], xmm7
jmp 0x1016a640
mov eax, ebx
sar ebx, 0x10
sar eax, 9
and eax, 0x7f
mov dword [esp + 0x30], eax
mov eax, edi
sar eax, 9
sar edi, 0x10
and eax, 0x7f
cmp dword [esi + 0x34], 0
mov dword [esp + 0x38], eax
lea eax, [ebx + 1]
mov dword [esp + 0x14], eax
lea edx, [edi + 1]
mov dword [esp + 0x18], edx
je 0x10169dc7
cmp dword [esi + 0x34], 1
mov esi, dword [esp + 0xc]
jne 0x10169c3f
cmp ebx, ecx
jl 0x10169bd6
nop word [eax + eax]
sub ebx, ecx
cmp ebx, ecx
jge 0x10169bd0
test ebx, ebx
jns 0x10169be4
nop word [eax + eax]
add ebx, ecx
js 0x10169be0
cmp edi, esi
jl 0x10169bee
sub edi, esi
cmp edi, esi
jge 0x10169be8
test edi, edi
jns 0x10169bf6
add edi, esi
js 0x10169bf2
cmp eax, ecx
jl 0x10169c0a
nop word [eax + eax]
sub eax, ecx
cmp eax, ecx
jge 0x10169c00
mov dword [esp + 0x14], eax
test eax, eax
jns 0x10169c18
nop
add eax, ecx
js 0x10169c10
mov dword [esp + 0x14], eax
cmp edx, esi
jl 0x10169c2a
nop dword [eax]
sub edx, esi
cmp edx, esi
jge 0x10169c20
mov dword [esp + 0x18], edx
test edx, edx
jns 0x10169d7f
add edx, esi
js 0x10169c32
mov dword [esp + 0x18], edx
jmp 0x10169d7f
mov esi, dword [esp + 0x1c]
cmp dword [esi + 0x34], 2
mov esi, dword [esp + 0xc]
jne 0x10169caf
test ebx, ebx
jns 0x10169c56
xor ebx, ebx
dec ecx
jmp 0x10169c61
dec ecx
mov dword [esp + 0xc], ecx
cmp ebx, ecx
jle 0x10169c65
mov ebx, ecx
mov dword [esp + 0xc], ecx
lea ecx, [esi - 1]
test edi, edi
jns 0x10169c70
xor edi, edi
jmp 0x10169c76
cmp edi, ecx
jle 0x10169c76
mov edi, ecx
test eax, eax
jns 0x10169c7e
xor esi, esi
jmp 0x10169c8d
cmp eax, dword [esp + 0xc]
cmovg eax, dword [esp + 0xc]
mov dword [esp + 0x14], eax
mov esi, eax
test edx, edx
jns 0x10169c9e
mov dword [esp + 0x18], 0
jmp 0x10169d83
cmp edx, ecx
jle 0x10169d83
mov dword [esp + 0x18], ecx
jmp 0x10169d83
lea eax, [ecx + ecx]
mov dword [esp + 0x10], eax
test ebx, ebx
jns 0x10169cce
not ebx
mov eax, ebx
cdq
idiv dword [esp + 0x10]
mov eax, dword [esp + 0x10]
mov ebx, eax
sub ebx, edx
dec ebx
jmp 0x10169cdb
mov eax, ebx
cdq
idiv dword [esp + 0x10]
mov eax, dword [esp + 0x10]
mov ebx, edx
cmp ebx, ecx
jl 0x10169ce4
sub eax, ebx
lea ebx, [eax - 1]
lea eax, [esi + esi]
mov dword [esp + 0xc], eax
test edi, edi
jns 0x10169d03
not edi
mov eax, edi
cdq
idiv dword [esp + 0xc]
mov eax, dword [esp + 0xc]
mov edi, eax
sub edi, edx
dec edi
jmp 0x10169d10
mov eax, edi
cdq
idiv dword [esp + 0xc]
mov eax, dword [esp + 0xc]
mov edi, edx
cmp edi, esi
jl 0x10169d19
sub eax, edi
lea edi, [eax - 1]
mov eax, dword [esp + 0x14]
test eax, eax
jns 0x10169d35
not eax
cdq
idiv dword [esp + 0x10]
mov eax, dword [esp + 0x10]
sub eax, edx
dec eax
mov dword [esp + 0x14], eax
jmp 0x10169d40
cdq
idiv dword [esp + 0x10]
mov eax, edx
mov dword [esp + 0x14], edx
cmp eax, ecx
jl 0x10169d4f
mov ecx, dword [esp + 0x10]
sub ecx, eax
dec ecx
mov dword [esp + 0x14], ecx
mov eax, dword [esp + 0x18]
mov ecx, dword [esp + 0xc]
test eax, eax
jns 0x10169d6b
not eax
cdq
idiv ecx
mov eax, ecx
sub eax, edx
dec eax
mov dword [esp + 0x18], eax
jmp 0x10169d74
cdq
idiv ecx
mov eax, edx
mov dword [esp + 0x18], edx
cmp eax, esi
jl 0x10169d7f
sub ecx, eax
dec ecx
mov dword [esp + 0x18], ecx
mov esi, dword [esp + 0x14]
lea eax, [esp + 0x54]
push eax
push 0
push edi
push ebx
push dword [esp + 0x2c]
call dword [esp + 0x34]
lea eax, [esp + 0x70]
push eax
push 0
push edi
push esi
push dword [esp + 0x40]
call dword [esp + 0x48]
mov edi, dword [esp + 0x40]
lea eax, [esp + 0x74]
push eax
push 0
push edi
push ebx
mov ebx, dword [esp + 0x54]
push ebx
call dword [esp + 0x5c]
lea eax, [esp + 0x9c]
push eax
push 0
jmp 0x10169e0a
lea eax, [esp + 0x54]
push eax
push 1
push edi
push ebx
push esi
call dword [esp + 0x34]
mov esi, dword [esp + 0x28]
lea eax, [esp + 0x70]
push eax
push 1
push edi
push esi
push dword [esp + 0x40]
call dword [esp + 0x48]
mov edi, dword [esp + 0x40]
lea eax, [esp + 0x74]
push eax
push 1
push edi
push ebx
mov ebx, dword [esp + 0x54]
push ebx
call dword [esp + 0x5c]
lea eax, [esp + 0x9c]
push eax
push 1
push edi
push esi
push ebx
call dword [esp + 0x70]
mov ecx, dword [esp + 0x80]
add esp, 0x50
mov eax, dword [esp + 0x38]
add ecx, ecx
add eax, eax
mov ebx, ecx
imul ebx, eax
shl eax, 8
mov edi, eax
shl ecx, 8
mov edx, ecx
sub edx, ebx
mov dword [esp + 0x14], ebx
mov dword [esp + 0x18], edx
mov esi, ebx
sub esi, eax
sub edi, ebx
mov eax, dword [esp + 0x4c]
sub esi, ecx
mov ecx, dword [esp + 0x54]
and eax, 0xff00
mov ebx, dword [esp + 0x5c]
mov edx, ecx
imul eax, edi
and edx, 0xff00
add esi, 0x10000
movzx ecx, cl
imul edx, esi
imul ecx, esi
add edx, eax
mov eax, ebx
and eax, 0xff00
imul eax, dword [esp + 0x18]
add edx, eax
mov dword [esp + 0x10], edx
mov edx, dword [esp + 0x60]
mov eax, edx
and eax, 0xff00
imul eax, dword [esp + 0x14]
add dword [esp + 0x10], eax
mov eax, dword [esp + 0x4c]
movzx eax, al
imul eax, edi
and dword [esp + 0x10], 0xff000000
add ecx, eax
movzx eax, bl
imul eax, dword [esp + 0x18]
shr ebx, 0x10
add ecx, eax
movzx eax, dl
imul eax, dword [esp + 0x14]
shr edx, 0x10
add ecx, eax
mov eax, dword [esp + 0x4c]
or dword [esp + 0x10], ecx
mov ecx, dword [esp + 0x54]
shr eax, 0x10
shr ecx, 0x10
mov dword [esp + 0x30], eax
mov dword [esp + 0xc], ecx
movzx eax, al
imul eax, edi
movzx ecx, cl
imul ecx, esi
add ecx, eax
movzx eax, bl
imul eax, dword [esp + 0x18]
add ecx, eax
movzx eax, dl
imul eax, dword [esp + 0x14]
add ecx, eax
mov eax, dword [esp + 0xc]
and eax, 0xff00
and ecx, 0xff0000
imul eax, esi
mov dword [esp + 0xc], eax
mov eax, dword [esp + 0x30]
and eax, 0xff00
and ebx, 0xff00
imul ebx, dword [esp + 0x18]
and edx, 0xff00
imul edx, dword [esp + 0x14]
imul eax, edi
add dword [esp + 0xc], eax
mov eax, dword [esp + 0xc]
add eax, ebx
mov ebx, dword [esp + 0x1c]
add eax, edx
and eax, 0xff000000
or ecx, eax
mov eax, dword [esp + 0x10]
shr eax, 0x10
or ecx, eax
mov eax, dword [esp + 0x24]
mov dword [eax], ecx
jmp 0x1016a640
mov eax, dword [ebx + 0x3c]
mov ecx, dword [ebx + 0x34]
mov ebx, dword [ebx + 0x70]
mov esi, dword [eax]
mov edx, dword [eax + 4]
add eax, 8
cmp dword [esp + 0x50], 0
je 0x1016a345
mov dword [esp + 0x18], ecx
mov ecx, dword [esp + 0x1c]
mov dword [esp + 0x14], eax
lea eax, [esi - 0x10000]
sar eax, 1
mov dword [esp + 0xc], edx
mov edi, dword [ecx + 0x74]
mov ecx, dword [esp + 0x28]
sub ecx, eax
sar esi, 0x10
lea eax, [edx - 0x10000]
dec ecx
mov edx, dword [esp + 0x2c]
sar eax, 1
sub edx, eax
sar ecx, 0x10
mov eax, edx
mov dword [esp + 0x10], edx
mov edx, dword [esp + 0xc]
dec eax
sar eax, 0x10
add esi, ecx
sar edx, 0x10
add edx, eax
mov dword [esp + 0x7c], ecx
mov dword [esp + 0xc], edx
xor edx, edx
mov dword [esp + 0x10], eax
mov dword [esp + 0x78], esi
mov dword [esp + 0x48], edx
mov dword [esp + 0x3c], edx
mov dword [esp + 0x44], edx
mov dword [esp + 0x40], edx
cmp eax, dword [esp + 0xc]
jge 0x1016a259
mov edx, ecx
mov dword [esp + 0x30], edx
cmp ecx, esi
jge 0x1016a233
mov esi, eax
mov ecx, edx
mov eax, dword [esp + 0x14]
mov eax, dword [eax]
test eax, eax
mov dword [esp + 0x74], eax
mov eax, dword [esp + 0x10]
je 0x1016a219
cmp dword [esp + 0x18], 0
je 0x1016a113
cmp dword [esp + 0x18], 1
jne 0x1016a06b
cmp edx, ebx
jl 0x1016a03b
sub ecx, ebx
cmp ecx, ebx
jge 0x1016a035
test ecx, ecx
jns 0x1016a044
nop
add ecx, ebx
js 0x1016a040
cmp eax, edi
jl 0x1016a04e
sub esi, edi
cmp esi, edi
jge 0x1016a048
test esi, esi
jns 0x1016a105
add esi, edi
js 0x1016a056
lea eax, [esp + 0xdc]
push eax
push 0
push esi
push ecx
jmp 0x1016a11f
cmp dword [esp + 0x18], 2
jne 0x1016a0b3
test edx, edx
jns 0x1016a07a
xor ecx, ecx
jmp 0x1016a086
lea eax, [ebx - 1]
cmp edx, eax
cmovg ecx, eax
mov eax, dword [esp + 0x10]
test eax, eax
jns 0x1016a09c
lea eax, [esp + 0xdc]
xor esi, esi
push eax
push esi
push esi
push ecx
jmp 0x1016a11f
lea edx, [edi - 1]
cmp eax, edx
jle 0x1016a105
lea eax, [esp + 0xdc]
mov esi, edx
push eax
push 0
push esi
push ecx
jmp 0x1016a11f
lea esi, [ebx + ebx]
mov eax, edx
test edx, edx
jns 0x1016a0c8
not eax
mov ecx, esi
cdq
idiv esi
sub ecx, edx
dec ecx
jmp 0x1016a0cd
cdq
idiv esi
mov ecx, edx
cmp ecx, ebx
jl 0x1016a0d6
sub esi, ecx
lea ecx, [esi - 1]
mov edx, dword [esp + 0x10]
lea esi, [edi + edi]
mov dword [esp + 0x38], esi
mov eax, edx
test edx, edx
jns 0x1016a0f3
not eax
cdq
idiv esi
mov eax, esi
sub esi, edx
dec esi
jmp 0x1016a0fc
cdq
idiv esi
mov eax, dword [esp + 0x38]
mov esi, edx
cmp esi, edi
jl 0x1016a105
sub eax, esi
lea esi, [eax - 1]
lea eax, [esp + 0xdc]
push eax
push 0
push esi
push ecx
jmp 0x1016a11f
lea ecx, [esp + 0xdc]
push ecx
push 1
push eax
push edx
push dword [esp + 0x2c]
call dword [esp + 0x34]
mov eax, dword [esp + 0x5c]
xorps xmm1, xmm1
mov esi, dword [esp + 0x88]
xorps xmm0, xmm0
add esp, 0x14
cvtsi2sd xmm1, eax
shr eax, 0x1f
cvtsi2ss xmm0, esi
addsd xmm1, qword [eax*8 + 0x1022b760]
mulss xmm0, dword [esp + 0xdc]
cvtpd2ps xmm1, xmm1
addss xmm0, xmm1
call fcn.101ebd40
mov dword [esp + 0x48], eax
xorps xmm1, xmm1
mov eax, dword [esp + 0x40]
xorps xmm0, xmm0
cvtsi2ss xmm0, esi
cvtsi2sd xmm1, eax
shr eax, 0x1f
mulss xmm0, dword [esp + 0xe0]
addsd xmm1, qword [eax*8 + 0x1022b760]
cvtpd2ps xmm1, xmm1
addss xmm0, xmm1
call fcn.101ebd40
mov dword [esp + 0x40], eax
xorps xmm1, xmm1
mov eax, dword [esp + 0x44]
xorps xmm0, xmm0
cvtsi2ss xmm0, esi
cvtsi2sd xmm1, eax
shr eax, 0x1f
mulss xmm0, dword [esp + 0xe4]
addsd xmm1, qword [eax*8 + 0x1022b760]
cvtpd2ps xmm1, xmm1
addss xmm0, xmm1
call fcn.101ebd40
mov dword [esp + 0x44], eax
xorps xmm1, xmm1
mov eax, dword [esp + 0x3c]
xorps xmm0, xmm0
cvtsi2ss xmm0, esi
cvtsi2sd xmm1, eax
shr eax, 0x1f
mulss xmm0, dword [esp + 0xe8]
addsd xmm1, qword [eax*8 + 0x1022b760]
cvtpd2ps xmm1, xmm1
addss xmm0, xmm1
call fcn.101ebd40
mov edx, dword [esp + 0x30]
mov dword [esp + 0x3c], eax
mov eax, dword [esp + 0x10]
add dword [esp + 0x14], 4
inc edx
mov esi, dword [esp + 0x78]
mov dword [esp + 0x30], edx
cmp edx, esi
jl 0x1016a005
mov ecx, dword [esp + 0x7c]
inc eax
mov dword [esp + 0x10], eax
cmp eax, dword [esp + 0xc]
jl 0x10169ff7
movss xmm3, dword [0x102bc0f8]
xorps xmm2, xmm2
movss xmm4, dword [0x1027de14]
mov edx, dword [esp + 0x48]
movd xmm0, edx
cvtdq2pd xmm0, xmm0
shr edx, 0x1f
addsd xmm0, qword [edx*8 + 0x1022b760]
cvtpd2ps xmm1, xmm0
mulss xmm1, xmm4
comiss xmm2, xmm1
jbe 0x1016a27f
movaps xmm0, xmm2
jmp 0x1016a286
movaps xmm0, xmm3
minss xmm0, xmm1
mov ecx, dword [esp + 0x24]
mov eax, dword [esp + 0x40]
movss dword [ecx], xmm0
movd xmm0, eax
cvtdq2pd xmm0, xmm0
shr eax, 0x1f
addsd xmm0, qword [eax*8 + 0x1022b760]
cvtpd2ps xmm1, xmm0
mulss xmm1, xmm4
comiss xmm2, xmm1
jbe 0x1016a2b8
movaps xmm0, xmm2
jmp 0x1016a2bf
movaps xmm0, xmm3
minss xmm0, xmm1
mov eax, dword [esp + 0x44]
movss dword [ecx + 4], xmm0
movd xmm0, eax
cvtdq2pd xmm0, xmm0
shr eax, 0x1f
addsd xmm0, qword [eax*8 + 0x1022b760]
cvtpd2ps xmm1, xmm0
mulss xmm1, xmm4
comiss xmm2, xmm1
jbe 0x1016a2ee
movaps xmm0, xmm2
jmp 0x1016a2f5
movaps xmm0, xmm3
minss xmm0, xmm1
mov eax, dword [esp + 0x3c]
movss dword [ecx + 8], xmm0
movd xmm0, eax
cvtdq2pd xmm0, xmm0
shr eax, 0x1f
addsd xmm0, qword [eax*8 + 0x1022b760]
cvtpd2ps xmm1, xmm0
mulss xmm1, xmm4
comiss xmm2, xmm1
jbe 0x1016a330
mov ebx, dword [esp + 0x1c]
movaps xmm0, xmm2
movss dword [ecx + 0xc], xmm0
jmp 0x1016a640
mov ebx, dword [esp + 0x1c]
movaps xmm0, xmm3
minss xmm0, xmm1
movss dword [ecx + 0xc], xmm0
jmp 0x1016a640
mov dword [esp + 0x3c], ecx
mov ecx, dword [esp + 0x1c]
mov dword [esp + 0x40], eax
lea eax, [esi - 0x10000]
sar eax, 1
mov dword [esp + 0x10], edx
mov edi, dword [ecx + 0x74]
mov ecx, dword [esp + 0x28]
sub ecx, eax
sar esi, 0x10
lea eax, [edx - 0x10000]
mov dword [esp + 0x30], ebx
mov edx, dword [esp + 0x2c]
dec ecx
sar eax, 1
sar ecx, 0x10
sub edx, eax
add esi, ecx
mov dword [esp + 0x18], ecx
mov ecx, dword [esp + 0x10]
mov eax, edx
dec eax
sar ecx, 0x10
sar eax, 0x10
add ecx, eax
mov dword [esp + 0xc], edx
mov dword [esp + 0x10], ecx
xor edx, edx
mov dword [esp + 0x48], esi
xor ecx, ecx
xor esi, esi
mov dword [esp + 0xc], eax
cmp eax, dword [esp + 0x10]
jge 0x1016a5ae
mov ecx, dword [esp + 0x48]
xorps xmm1, xmm1
mov esi, dword [esp + 0x18]
movaps xmmword [esp + 0x80], xmm1
mov edx, esi
mov dword [esp + 0x38], edx
cmp esi, ecx
jge 0x1016a578
mov ebx, dword [esp + 0x40]
mov ecx, edx
mov esi, eax
mov ebx, dword [ebx]
test ebx, ebx
mov dword [esp + 0x44], ebx
mov ebx, dword [esp + 0x30]
je 0x1016a55e
cmp dword [esp + 0x3c], 0
je 0x1016a4de
cmp dword [esp + 0x3c], 1
jne 0x1016a43b
cmp edx, ebx
jl 0x1016a40b
sub ecx, ebx
cmp ecx, ebx
jge 0x1016a405
test ecx, ecx
jns 0x1016a414
nop
add ecx, ebx
js 0x1016a410
cmp eax, edi
jl 0x1016a41e
sub esi, edi
cmp esi, edi
jge 0x1016a418
test esi, esi
jns 0x1016a4d0
add esi, edi
js 0x1016a426
lea eax, [esp + 0xec]
push eax
push 0
push esi
push ecx
jmp 0x1016a4ea
cmp dword [esp + 0x3c], 2
jne 0x1016a486
test edx, edx
jns 0x1016a44a
xor ecx, ecx
jmp 0x1016a456
lea eax, [ebx - 1]
cmp edx, eax
cmovg ecx, eax
mov eax, dword [esp + 0xc]
test eax, eax
jns 0x1016a46c
lea eax, [esp + 0xec]
xor esi, esi
push eax
push esi
push esi
push ecx
jmp 0x1016a4ea
lea edx, [edi - 1]
cmp eax, edx
jle 0x1016a4d0
lea eax, [esp + 0xec]
mov esi, edx
push eax
push 0
push esi
push ecx
jmp 0x1016a4ea
lea esi, [ebx + ebx]
mov eax, edx
test edx, edx
jns 0x1016a49b
not eax
mov ecx, esi
cdq
idiv esi
sub ecx, edx
dec ecx
jmp 0x1016a4a0
cdq
idiv esi
mov ecx, edx
cmp ecx, ebx
jl 0x1016a4a9
sub esi, ecx
lea ecx, [esi - 1]
mov edx, dword [esp + 0xc]
lea ebx, [edi + edi]
mov eax, edx
test edx, edx
jns 0x1016a4c2
not eax
mov esi, ebx
cdq
idiv ebx
sub esi, edx
dec esi
jmp 0x1016a4c7
cdq
idiv ebx
mov esi, edx
cmp esi, edi
jl 0x1016a4d0
sub ebx, esi
lea esi, [ebx - 1]
lea eax, [esp + 0xec]
push eax
push 0
push esi
push ecx
jmp 0x1016a4ea
lea ecx, [esp + 0xec]
push ecx
push 1
push eax
push edx
push dword [esp + 0x2c]
call dword [esp + 0x34]
mov ebx, dword [esp + 0x100]
add esp, 0x14
mov eax, ebx
movzx edx, bl
imul edx, dword [esp + 0x44]
mov esi, ebx
shr eax, 8
movzx ecx, al
imul ecx, dword [esp + 0x44]
shr ebx, 0x10
shr esi, 0x18
imul esi, dword [esp + 0x44]
movzx eax, bl
imul eax, dword [esp + 0x44]
movd xmm0, edx
mov edx, dword [esp + 0x38]
movd xmm1, ecx
movd xmm2, esi
punpckldq xmm1, xmm2
movd xmm3, eax
mov eax, dword [esp + 0xc]
punpckldq xmm3, xmm0
punpckldq xmm3, xmm1
paddd xmm3, xmmword [esp + 0x80]
movaps xmm1, xmm3
movaps xmmword [esp + 0x80], xmm1
add dword [esp + 0x40], 4
inc edx
mov ecx, dword [esp + 0x48]
mov dword [esp + 0x38], edx
cmp edx, ecx
jl 0x1016a3d5
mov esi, dword [esp + 0x18]
inc eax
mov dword [esp + 0xc], eax
cmp eax, dword [esp + 0x10]
jl 0x1016a3c7
movaps xmm0, xmm1
movd edx, xmm1
psrldq xmm0, 4
movd ecx, xmm0
movaps xmm0, xmm1
psrldq xmm0, 8
psrldq xmm1, 0xc
movd eax, xmm0
movd esi, xmm1
jmp 0x1016a5b0
xor eax, eax
add esi, 0x8000
add eax, 0x8000
shr esi, 0x10
add edx, 0x8000
add ecx, 0x8000
shr eax, 0x10
shr edx, 0x10
mov ebx, 0xff
shr ecx, 0x10
cmp esi, 0xff
cmova esi, ebx
cmp edx, ebx
cmova edx, ebx
cmp ecx, ebx
cmova ecx, ebx
cmp eax, ebx
cmova eax, ebx
mov ebx, dword [esp + 0x1c]
shl esi, 8
or esi, edx
shl esi, 8
or esi, ecx
shl esi, 8
or esi, eax
mov eax, dword [esp + 0x24]
mov dword [eax], esi
jmp 0x1016a640
cmp dword [esp + 0x50], 0
mov edx, dword [esp + 0x2c]
mov ecx, dword [esp + 0x28]
je 0x1016a626
push 0x1016cca0
push 0x1016bc60
jmp 0x1016a630
push 0x1016cc30
push 0x1016bc10
push dword [esp + 0x2c]
push edi
push edx
push ecx
push ebx
call fcn.1016bd50
add esp, 0x1c
mov ecx, dword [esp + 0x34]
mov edx, dword [esp + 0x2c]
mov eax, dword [esp + 0x28]
mov esi, dword [esp + 0x24]
add eax, dword [esp + 0x64]
inc ecx
add edx, dword [esp + 0x68]
xorps xmm2, xmm2
add esi, dword [esp + 0x58]
movss xmm3, dword [0x102bc0f8]
movss xmm4, dword [0x1027de14]
mov dword [esp + 0x28], eax
mov dword [esp + 0x2c], edx
mov dword [esp + 0x24], esi
mov dword [esp + 0x34], ecx
cmp ecx, dword [esp + 0x6c]
jl 0x10169590
mov eax, dword [esp + 0x70]
mov ecx, dword [esp + 0x10c]
pop edi
pop esi
mov eax, dword [eax + 4]
pop ebx
xor ecx, esp
call fcn.101eafcd
mov esp, ebp
pop ebp
ret