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

Disassembly:
sub esp, 0x26c
push esi
mov esi, ecx
mov eax, 0x200
xorps xmm0, xmm0
mov dword [esp + 0x38], esi
movups xmmword [esp + 0xa4], xmm0
cmp word [esi + 0x16], ax
jb 0x10166028
cmp word [esi + 0x14], ax
jb 0x10166028
push ebx
push ebp
mov ebp, 6
xor ebx, ebx
xor eax, eax
mov dword [esp + 0x94], ebp
push edi
add eax, 6
xor ecx, ecx
cdq
idiv ebp
add edx, 0x44
lea edi, [edx + edx*2]
add edi, edi
lea eax, [ecx + 6]
inc ecx
cdq
idiv ebp
add edx, edi
movsx eax, byte [edx + esi]
inc dword [esp + eax*4 + 0xb0]
cmp ecx, ebp
jl 0x10163ec4
inc ebx
mov eax, ebx
cmp eax, 6
jl 0x10163eb4
mov eax, dword [esp + 0xb0]
add eax, 0xfffffffa
cmp eax, 4
ja 0x1016607f
mov eax, dword [esp + 0xb4]
add eax, 0xfffffff0
cmp eax, 8
ja 0x1016607f
mov eax, dword [esp + 0xb8]
add eax, 0xfffffffa
cmp eax, 4
ja 0x1016607f
cmp dword [esp + 0xbc], 0
jne 0x1016607f
mov eax, 0x7fbc7fbc
lea edi, [esp + 0x15c]
mov ecx, 0x48
rep stosd dword es:[edi], eax
push 0
push 0
mov ecx, esi
call fcn.1012f840
xor ebx, ebx
mov ecx, esi
cmp dword [esp + 0x280], 1
setg bl
lea ebx, [ebx*4 + 4]
imul eax, ebx, 0x2c0000
mov dword [esp + 0x6c], ebx
add eax, 0x180000
push eax
call fcn.1016c170
mov ebp, eax
mov ecx, esi
push str.xtrans_interpolate__
push ebp
mov dword [esp + 0x7c], ebp
call fcn.1016c200
imul eax, ebx, 0x180000
mov dword [esp + 0x18], 0
mov dword [esp + 0x20], 0
mov dword [esp + 0x10], 0
mov dword [esp + 0x28], 0
add eax, ebp
mov dword [esp + 0xa0], eax
imul eax, ebx, 0x280000
add eax, 0x180000
add eax, ebp
mov dword [esp + 0x9c], eax
xor eax, eax
mov dword [esp + 0x1c], eax
mov dword [esp + 0x14], eax
add eax, 6
mov ecx, 6
cdq
xor ebx, ebx
idiv ecx
mov dword [esp + 0x48], ebx
add edx, 0x44
lea ecx, [edx + edx*2]
add ecx, ecx
mov dword [esp + 0x5c], ecx
lea eax, [ebx + 6]
xor edi, edi
cdq
xor ebp, ebp
idiv dword [esp + 0x98]
movzx eax, bx
add edx, ecx
mov dword [esp + 0x40], eax
xor eax, eax
mov dword [esp + 0x24], edi
mov cl, byte [edx + esi]
cmp cl, 1
mov byte [esp + 0x6b], cl
sete al
inc eax
mov dword [esp + 0x30], eax
movzx ecx, word [edi*2 + 0x102b2798]
mov esi, 6
movsx eax, word [edi*2 + 0x102b2794]
mov edx, ecx
mov dword [esp + 0x34], eax
mov dword [esp + 0x64], edx
mov edx, dword [esp + 0x1c]
add edx, 6
add eax, edx
cdq
idiv esi
movsx eax, cx
mov ecx, 6
add eax, 6
add edx, 0x44
add eax, ebx
lea esi, [edx + edx*2]
cdq
idiv ecx
lea eax, [ebp + 1]
xor ebp, ebp
add edx, dword [esp + 0x44]
cmp byte [edx + esi*2], 1
cmovne ebp, eax
mov eax, dword [esp + 0x40]
movzx ecx, ax
cmp ebp, 4
mov eax, dword [esp + 0x94]
movzx eax, ax
cmovne ecx, eax
mov dword [esp + 0x3c], ebp
mov eax, dword [esp + 0x1c]
movzx edx, cx
movzx ecx, ax
mov eax, dword [esp + 0x50]
movzx eax, ax
cmovne ecx, eax
mov dword [esp + 0x58], edx
movzx eax, cx
mov dword [esp + 0x8c], eax
cmp ebp, dword [esp + 0x30]
jne 0x1016462c
xor eax, eax
mov ecx, 0x20
cmp byte [esp + 0x6b], 1
cmove eax, ecx
mov ecx, dword [esp + 0x24]
mov dword [esp + 0x50], eax
movzx edx, word [eax + 0x102b27b0]
movzx edi, word [eax + 0x102b27b2]
movsx ebx, word [ecx*2 + 0x102b2796]
movsx ecx, dx
imul ecx, dword [esp + 0x34]
movsx eax, di
imul eax, ebx
mov ebx, dword [esp + 0x24]
add ecx, eax
mov eax, dword [esp + 0x18]
cmp ecx, eax
movzx esi, cx
cmovl eax, ecx
mov dword [esp + 0x18], eax
mov eax, dword [esp + 0x20]
cmp ecx, eax
cmovg eax, ecx
mov dword [esp + 0x20], eax
mov eax, dword [esp + 0x10]
cmp ecx, eax
cmovl eax, ecx
mov dword [esp + 0x10], eax
mov eax, dword [esp + 0x28]
cmp ecx, eax
cmovg eax, ecx
movzx ecx, word [ebx*2 + 0x102b279a]
mov dword [esp + 0x28], eax
mov eax, dword [esp + 0x64]
imul edx, eax
imul edi, ecx
mov ecx, 2
movzx ebp, ax
xor eax, eax
add edx, edi
cmp byte [esp + 0x6b], 1
cmove eax, ecx
and eax, ebx
mov ebx, dword [esp + 0x14]
add ebx, dword [esp + 0x48]
shl ebx, 4
mov dword [esp + 0x4c], eax
mov dword [esp + 0x38], ebx
lea ecx, [ebx + eax]
mov ebx, dword [esp + 0x44]
mov eax, esi
shl esi, 9
add esi, edx
movzx edi, word [ebx + 0x16]
mov ebx, dword [esp + 0x24]
imul eax, edi
add eax, edx
mov word [esp + ecx*2 + 0x15c], ax
mov eax, dword [esp + 0x50]
mov word [esp + ecx*2 + 0x16c], si
movsx esi, word [ebx*2 + 0x102b2796]
movzx edx, word [eax + 0x102b27b4]
movzx edi, word [eax + 0x102b27b6]
movsx ecx, dx
imul ecx, dword [esp + 0x34]
movsx eax, di
imul eax, esi
add ecx, eax
mov eax, dword [esp + 0x18]
cmp ecx, eax
cmovl eax, ecx
mov dword [esp + 0x18], eax
mov eax, dword [esp + 0x20]
cmp ecx, eax
cmovg eax, ecx
mov dword [esp + 0x20], eax
mov eax, dword [esp + 0x10]
cmp ecx, eax
cmovl eax, ecx
mov dword [esp + 0x10], eax
mov eax, dword [esp + 0x28]
cmp ecx, eax
movzx esi, cx
cmovg eax, ecx
imul edx, dword [esp + 0x64]
movzx ecx, word [ebx*2 + 0x102b279a]
mov ebx, dword [esp + 0x44]
mov dword [esp + 0x28], eax
mov eax, esi
imul ecx, edi
shl esi, 9
movzx edi, word [ebx + 0x16]
imul eax, edi
mov ebx, dword [esp + 0x24]
add ecx, edx
mov edx, dword [esp + 0x4c]
xor edx, 1
add esi, ecx
add edx, dword [esp + 0x38]
add eax, ecx
mov word [esp + edx*2 + 0x15c], ax
mov eax, dword [esp + 0x50]
mov word [esp + edx*2 + 0x16c], si
movsx esi, word [ebx*2 + 0x102b2796]
movzx edi, word [eax + 0x102b27ba]
movzx edx, word [eax + 0x102b27b8]
movsx ecx, dx
imul ecx, dword [esp + 0x34]
movsx eax, di
imul eax, esi
add ecx, eax
mov eax, dword [esp + 0x18]
cmp ecx, eax
movzx esi, cx
cmovl eax, ecx
mov dword [esp + 0x18], eax
mov eax, dword [esp + 0x20]
cmp ecx, eax
cmovg eax, ecx
mov dword [esp + 0x20], eax
mov eax, dword [esp + 0x10]
cmp ecx, eax
cmovl eax, ecx
mov dword [esp + 0x10], eax
mov eax, dword [esp + 0x28]
cmp ecx, eax
cmovg eax, ecx
movzx ecx, word [ebx*2 + 0x102b279a]
mov ebx, dword [esp + 0x44]
imul ecx, edi
imul edx, ebp
mov dword [esp + 0x28], eax
mov eax, esi
movzx edi, word [ebx + 0x16]
mov ebx, dword [esp + 0x24]
imul eax, edi
add ecx, edx
shl esi, 9
mov edx, dword [esp + 0x4c]
add esi, ecx
xor edx, 2
add edx, dword [esp + 0x38]
add eax, ecx
mov word [esp + edx*2 + 0x15c], ax
mov eax, dword [esp + 0x50]
mov word [esp + edx*2 + 0x16c], si
movsx esi, word [ebx*2 + 0x102b2796]
movzx edx, word [eax + 0x102b27bc]
movzx edi, word [eax + 0x102b27be]
movsx ecx, dx
imul ecx, dword [esp + 0x34]
movsx eax, di
imul eax, esi
add ecx, eax
mov eax, dword [esp + 0x18]
cmp ecx, eax
cmovl eax, ecx
mov dword [esp + 0x18], eax
mov eax, dword [esp + 0x20]
cmp ecx, eax
cmovg eax, ecx
mov dword [esp + 0x20], eax
mov eax, dword [esp + 0x10]
cmp ecx, eax
movzx esi, cx
cmovl eax, ecx
mov dword [esp + 0x10], eax
mov eax, dword [esp + 0x28]
cmp ecx, eax
cmovg eax, ecx
movzx ecx, word [ebx*2 + 0x102b279a]
mov ebx, dword [esp + 0x44]
mov dword [esp + 0x28], eax
mov eax, esi
imul ecx, edi
imul edx, ebp
movzx edi, word [ebx + 0x16]
imul eax, edi
mov ebx, dword [esp + 0x24]
shl esi, 9
add ecx, edx
mov edx, dword [esp + 0x4c]
xor edx, 3
add esi, ecx
add edx, dword [esp + 0x38]
add eax, ecx
mov word [esp + edx*2 + 0x15c], ax
mov eax, dword [esp + 0x50]
mov word [esp + edx*2 + 0x16c], si
movsx esi, word [ebx*2 + 0x102b2796]
movzx edi, word [eax + 0x102b27c2]
movzx edx, word [eax + 0x102b27c0]
movsx ecx, dx
imul ecx, dword [esp + 0x34]
movsx eax, di
imul eax, esi
add ecx, eax
mov eax, dword [esp + 0x18]
cmp ecx, eax
movzx esi, cx
cmovl eax, ecx
mov dword [esp + 0x18], eax
mov eax, dword [esp + 0x20]
cmp ecx, eax
cmovg eax, ecx
mov dword [esp + 0x20], eax
mov eax, dword [esp + 0x10]
cmp ecx, eax
cmovl eax, ecx
mov dword [esp + 0x10], eax
mov eax, dword [esp + 0x28]
cmp ecx, eax
cmovg eax, ecx
movzx ecx, word [ebx*2 + 0x102b279a]
mov ebx, dword [esp + 0x44]
mov dword [esp + 0x28], eax
mov eax, ebp
imul eax, edx
mov edx, dword [esp + 0x4c]
imul ecx, edi
xor edx, 4
movzx edi, word [ebx + 0x16]
add edx, dword [esp + 0x38]
mov ebx, dword [esp + 0x24]
add ecx, eax
mov eax, esi
imul eax, edi
shl esi, 9
add esi, ecx
add eax, ecx
mov word [esp + edx*2 + 0x15c], ax
mov eax, dword [esp + 0x50]
mov word [esp + edx*2 + 0x16c], si
movsx esi, word [ebx*2 + 0x102b2796]
movzx edx, word [eax + 0x102b27c4]
movzx edi, word [eax + 0x102b27c6]
movsx ecx, dx
imul ecx, dword [esp + 0x34]
movsx eax, di
imul eax, esi
add ecx, eax
mov eax, dword [esp + 0x18]
cmp ecx, eax
cmovl eax, ecx
movzx esi, cx
mov dword [esp + 0x18], eax
mov eax, dword [esp + 0x20]
cmp ecx, eax
cmovg eax, ecx
mov dword [esp + 0x20], eax
mov eax, dword [esp + 0x10]
cmp ecx, eax
cmovl eax, ecx
mov dword [esp + 0x10], eax
mov eax, dword [esp + 0x28]
cmp ecx, eax
cmovg eax, ecx
mov ecx, ebp
mov dword [esp + 0x28], eax
movzx eax, word [ebx*2 + 0x102b279a]
mov ebx, dword [esp + 0x44]
imul eax, edi
imul ecx, edx
mov edx, dword [esp + 0x4c]
movzx edi, word [ebx + 0x16]
xor edx, 5
add edx, dword [esp + 0x38]
mov ebx, dword [esp + 0x24]
add ecx, eax
mov eax, esi
imul eax, edi
shl esi, 9
add esi, ecx
add eax, ecx
mov word [esp + edx*2 + 0x15c], ax
mov eax, dword [esp + 0x50]
mov word [esp + edx*2 + 0x16c], si
movsx esi, word [ebx*2 + 0x102b2796]
movzx edx, word [eax + 0x102b27ca]
movzx edi, word [eax + 0x102b27c8]
movsx eax, dx
imul eax, esi
movsx ecx, di
imul ecx, dword [esp + 0x34]
add ecx, eax
mov eax, dword [esp + 0x18]
cmp ecx, eax
movzx esi, cx
cmovl eax, ecx
mov dword [esp + 0x18], eax
mov eax, dword [esp + 0x20]
cmp ecx, eax
cmovg eax, ecx
mov dword [esp + 0x20], eax
mov eax, dword [esp + 0x10]
cmp ecx, eax
cmovl eax, ecx
mov dword [esp + 0x10], eax
mov eax, dword [esp + 0x28]
cmp ecx, eax
cmovg eax, ecx
movzx ecx, word [ebx*2 + 0x102b279a]
mov ebx, dword [esp + 0x44]
mov dword [esp + 0x28], eax
mov eax, ebp
imul eax, edi
imul ecx, edx
movzx edi, word [ebx + 0x16]
mov edx, dword [esp + 0x4c]
xor edx, 6
add edx, dword [esp + 0x38]
add ecx, eax
mov eax, esi
imul eax, edi
shl esi, 9
add esi, ecx
add eax, ecx
mov word [esp + edx*2 + 0x15c], ax
mov eax, dword [esp + 0x50]
mov word [esp + edx*2 + 0x16c], si
movzx esi, word [eax + 0x102b27cc]
movzx edi, word [eax + 0x102b27ce]
movsx ecx, si
imul ecx, dword [esp + 0x34]
mov ebx, dword [esp + 0x24]
movsx eax, di
movsx edx, word [ebx*2 + 0x102b2796]
imul eax, edx
add ecx, eax
mov eax, dword [esp + 0x18]
cmp ecx, eax
movzx edx, cx
cmovl eax, ecx
mov dword [esp + 0x18], eax
mov eax, dword [esp + 0x20]
cmp ecx, eax
cmovg eax, ecx
mov dword [esp + 0x20], eax
mov eax, dword [esp + 0x10]
cmp ecx, eax
cmovl eax, ecx
mov dword [esp + 0x10], eax
mov eax, dword [esp + 0x28]
cmp ecx, eax
cmovg eax, ecx
movzx ecx, word [ebx*2 + 0x102b279a]
imul ebp, esi
mov esi, dword [esp + 0x44]
imul ecx, edi
mov edi, dword [esp + 0x24]
mov dword [esp + 0x28], eax
mov eax, edx
movzx ebx, word [esi + 0x16]
imul eax, ebx
add ecx, ebp
shl edx, 9
mov ebp, dword [esp + 0x4c]
xor ebp, 7
add ebp, dword [esp + 0x38]
add eax, ecx
add edx, ecx
mov word [esp + ebp*2 + 0x15c], ax
mov eax, dword [esp + 0x8c]
mov word [esp + ebp*2 + 0x16c], dx
mov ebp, dword [esp + 0x3c]
mov edx, dword [esp + 0x58]
jmp 0x10164630
mov esi, dword [esp + 0x44]
mov ebx, dword [esp + 0x48]
add edi, 2
movzx ecx, ax
mov dword [esp + 0x50], ecx
movzx ecx, dx
mov dword [esp + 0x24], edi
mov dword [esp + 0x94], ecx
cmp edi, 0xa
jl 0x10164021
mov ecx, dword [esp + 0x5c]
inc ebx
movzx eax, ax
mov dword [esp + 0x50], eax
movzx eax, dx
mov dword [esp + 0x94], eax
mov dword [esp + 0x48], ebx
cmp ebx, 3
jl 0x10163ff1
mov edi, dword [esp + 0x14]
mov eax, dword [esp + 0x1c]
add edi, 3
inc eax
mov dword [esp + 0x14], edi
mov dword [esp + 0x1c], eax
cmp edi, 9
jl 0x10163fd4
movzx eax, word [esi + 0x16]
lea ecx, [esp + 0x15c]
mov dword [esp + 0x48], 0
mov dword [esp + 0x38], ecx
nop dword [eax]
mov dword [esp + 0x14], 0
mov dword [esp + 0x1c], ecx
nop dword [eax]
mov dword [esp + 0x64], 0
mov dword [esp + 0x2c], ecx
nop dword [eax]
mov ebp, dword [esp + 0x28]
xor edx, edx
movzx ebx, ax
inc ebp
mov eax, ebx
imul eax, dword [esp + 0x20]
add ebp, eax
movsx edi, word [ecx]
cmp edi, ebp
jg 0x10166062
mov esi, dword [esp + 0x10]
mov eax, ebx
imul eax, dword [esp + 0x18]
dec esi
add eax, esi
mov esi, dword [esp + 0x44]
cmp edi, eax
jl 0x10166062
inc edx
add ecx, 2
cmp edx, 8
jl 0x101646e3
mov edi, dword [esp + 0x64]
mov ecx, dword [esp + 0x2c]
inc edi
movzx eax, word [esi + 0x16]
add ecx, 0x10
mov dword [esp + 0x64], edi
mov dword [esp + 0x2c], ecx
cmp edi, 2
jl 0x101646d0
mov edx, dword [esp + 0x14]
mov ecx, dword [esp + 0x1c]
inc edx
movzx eax, word [esi + 0x16]
add ecx, 0x20
mov dword [esp + 0x14], edx
mov dword [esp + 0x1c], ecx
cmp edx, 3
jl 0x101646c0
mov edx, dword [esp + 0x48]
mov ecx, dword [esp + 0x38]
inc edx
movzx eax, word [esi + 0x16]
add ecx, 0x60
mov dword [esp + 0x48], edx
mov dword [esp + 0x38], ecx
cmp edx, 3
jl 0x101646b0
movzx eax, word [esi + 0x14]
mov ebx, 2
mov ecx, eax
mov dword [esp + 0x14], 0
sub eax, ebx
mov dword [esp + 0x48], ebx
cmp eax, ebx
jle 0x10164a87
movzx edx, word [esi + 0x16]
mov ebp, 2
mov ecx, 0xffff
mov dword [esp + 0x10], 0
mov dword [esp + 0x18], ecx
lea eax, [edx - 2]
cmp eax, ebp
jle 0x10164a73
mov edi, edx
mov dword [esp + 0x24], 8
lea edx, [ebx + 6]
mov dword [esp + 0x34], edx
nop word [eax + eax]
movzx eax, cx
mov ecx, 6
mov dword [esp + 0x40], eax
mov eax, edx
cdq
idiv ecx
mov eax, dword [esp + 0x24]
add edx, 0x44
lea ecx, [edx + edx*2]
cdq
idiv dword [esp + 0x98]
add edx, esi
cmp byte [edx + ecx*2], 1
jne 0x10164811
mov ecx, 0xffff
mov dword [esp + 0x10], 0
mov dword [esp + 0x18], ecx
jmp 0x10164a54
mov eax, dword [esi + 8]
movzx ecx, di
imul ecx, ebx
add ecx, ebp
lea edi, [eax + ecx*8]
mov eax, 0x55555556
imul ebx
mov dword [esp + 0x1c], edi
mov eax, edx
shr eax, 0x1f
add eax, edx
lea ecx, [eax + eax*2]
mov eax, 0x55555555
imul ebp
sub edx, ebp
sar edx, 1
mov eax, edx
shr eax, 0x1f
add eax, edx
sub eax, ecx
add eax, ebx
lea ecx, [eax*2]
add ecx, ebp
add ecx, eax
shl ecx, 5
cmp word [esp + 0x10], 0
mov dword [esp + 0x2c], ecx
jne 0x101649aa
movsx eax, word [esp + ecx + 0x15c]
movzx edx, word [edi + eax*8 + 2]
mov esi, edx
mov eax, edx
cmp word [esp + 0x40], si
ja 0x10164884
mov eax, dword [esp + 0x18]
movzx edi, ax
xor eax, eax
cmp ax, dx
sbb eax, eax
and eax, esi
movzx ebx, ax
movsx eax, word [esp + ecx + 0x15e]
mov ecx, dword [esp + 0x1c]
movzx esi, word [ecx + eax*8 + 2]
mov eax, edi
mov edx, esi
cmp di, dx
mov ecx, edx
cmovbe ecx, eax
cmp bx, si
mov esi, dword [esp + 0x1c]
mov eax, ebx
movzx edi, cx
mov ecx, edx
mov edx, dword [esp + 0x2c]
cmovae ecx, eax
movzx eax, cx
mov dword [esp + 0x64], eax
movsx eax, word [esp + edx + 0x160]
movzx ebx, word [esi + eax*8 + 2]
mov ecx, ebx
mov eax, ebx
cmp di, cx
ja 0x101648e4
mov eax, edi
cmp word [esp + 0x64], bx
movzx edi, ax
mov eax, dword [esp + 0x64]
movzx eax, ax
cmovae ecx, eax
movsx eax, word [esp + edx + 0x162]
movzx ebx, cx
movzx esi, word [esi + eax*8 + 2]
mov eax, edi
mov edx, esi
cmp di, dx
mov ecx, edx
mov edi, dword [esp + 0x1c]
cmovbe ecx, eax
cmp bx, si
movzx eax, cx
mov ecx, edx
mov edx, dword [esp + 0x2c]
mov dword [esp + 0x40], eax
mov eax, ebx
cmovae ecx, eax
movzx eax, cx
mov dword [esp + 0x3c], eax
movzx eax, ax
mov dword [esp + 0x30], eax
movsx eax, word [esp + edx + 0x164]
movzx esi, word [edi + eax*8 + 2]
mov eax, dword [esp + 0x40]
mov ecx, esi
cmp ax, cx
jbe 0x10164955
mov eax, esi
jmp 0x10164958
movzx eax, ax
cmp word [esp + 0x3c], si
movzx ebx, ax
mov eax, dword [esp + 0x30]
movzx eax, ax
cmovae ecx, eax
movsx eax, word [esp + edx + 0x166]
movzx esi, cx
movzx ecx, word [edi + eax*8 + 2]
mov eax, esi
mov edi, ecx
cmp si, cx
mov esi, dword [esp + 0x44]
mov edx, edi
cmovae edx, eax
cmp bx, di
mov edi, dword [esp + 0x1c]
movzx eax, dx
mov dword [esp + 0x10], eax
mov eax, ebx
mov ebx, dword [esp + 0x48]
cmovbe ecx, eax
movzx eax, cx
mov dword [esp + 0x18], eax
jmp 0x101649ae
mov eax, dword [esp + 0x18]
mov word [edi + 2], ax
mov ax, word [esp + 0x10]
mov word [edi + 6], ax
mov eax, dword [esp + 0x50]
movzx ecx, ax
mov eax, ebx
sub eax, ecx
mov ecx, 3
cdq
idiv ecx
sub edx, 1
je 0x10164a2b
sub edx, 1
jne 0x10164a50
movzx edi, word [esi + 0x16]
add ebp, 2
add dword [esp + 0x24], 2
mov ecx, 0xffff
mov dword [esp + 0x10], edx
mov dword [esp + 0x18], ecx
lea eax, [edi - 3]
cmp ebp, eax
jge 0x10164a54
cmp ebx, 2
jle 0x10164a54
movzx ecx, word [esi + 0x14]
dec ebx
mov edx, dword [esp + 0x34]
imul ecx, edi
dec edx
mov edi, dword [esp + 0x14]
mov eax, edi
inc edi
mov dword [esp + 0x48], ebx
mov dword [esp + 0x34], edx
mov dword [esp + 0x14], edi
cmp eax, ecx
jg 0x10166045
mov ecx, dword [esp + 0x18]
jmp 0x10164a58
movzx eax, word [esi + 0x14]
mov ecx, dword [esp + 0x18]
sub eax, 3
cmp ebx, eax
jge 0x10164a54
mov edx, dword [esp + 0x34]
inc ebx
mov eax, dword [esp + 0x24]
inc edx
dec ebp
mov dword [esp + 0x48], ebx
mov dword [esp + 0x34], edx
dec eax
jmp 0x10164a5c
mov ecx, dword [esp + 0x18]
mov edx, dword [esp + 0x34]
mov eax, dword [esp + 0x24]
inc eax
inc ebp
mov dword [esp + 0x24], eax
movzx eax, word [esi + 0x16]
mov edi, eax
sub eax, 2
cmp ebp, eax
jl 0x101647d0
movzx ecx, word [esi + 0x14]
inc ebx
mov dword [esp + 0x48], ebx
lea eax, [ecx - 2]
cmp ebx, eax
jl 0x10164791
movzx eax, cx
mov ebx, 3
sub eax, 0x13
mov dword [esp + 0x28], ebx
cmp eax, ebx
jle 0x10166007
movzx edx, cx
movzx edi, word [esi + 0x16]
mov dword [esp + 0x20], 3
movzx ecx, dx
lea eax, [edi - 0x13]
cmp eax, 3
jle 0x10165fec
mov eax, dword [esp + 0x74]
lea ebp, [ebx + 0x200]
add eax, 0x180000
movzx ecx, dx
mov dword [esp + 0xc0], eax
mov eax, dword [esp + 0x6c]
shl eax, 0x12
mov dword [esp + 0x88], eax
mov eax, 8
cmp ebx, eax
cmovl eax, ebx
mov dword [esp + 0x64], eax
movzx eax, cx
mov ecx, ebp
add eax, 0xfffffffd
cmp ebp, eax
mov ebp, ebx
cmovge ecx, eax
movzx eax, di
mov dword [esp + 0x34], ecx
add eax, 0xfffffffd
mov ecx, dword [esp + 0x20]
lea edx, [ecx + 0x200]
cmp edx, eax
cmovge edx, eax
mov dword [esp + 0x10], edx
cmp ebx, dword [esp + 0x34]
jge 0x10164b7f
mov eax, dword [esp + 0x74]
mov dword [esp + 0x2c], eax
nop dword [eax + eax]
mov ebx, ecx
cmp ecx, edx
jge 0x10164b6f
mov edi, eax
nop dword [eax + eax]
movzx edx, word [esi + 0x16]
lea edi, [edi + 6]
mov ecx, dword [esi + 8]
imul edx, ebp
add edx, ebx
inc ebx
mov eax, dword [ecx + edx*8]
mov dword [edi - 6], eax
mov ax, word [ecx + edx*8 + 4]
mov edx, dword [esp + 0x10]
mov word [edi - 2], ax
cmp ebx, edx
jl 0x10164b40
mov eax, dword [esp + 0x2c]
mov ecx, dword [esp + 0x20]
inc ebp
add eax, 0xc00
mov dword [esp + 0x2c], eax
cmp ebp, dword [esp + 0x34]
jl 0x10164b30
mov edi, dword [esp + 0xc0]
mov ebx, 3
mov esi, dword [esp + 0x74]
nop
push 0x180000
push esi
push edi
call fcn.1026c360
add esp, 0xc
add edi, 0x180000
sub ebx, 1
jne 0x10164b90
mov ebp, dword [esp + 0x28]
mov edi, ebp
mov edx, dword [esp + 0x34]
mov esi, dword [esp + 0x44]
mov dword [esp + 0x14], edi
cmp ebp, edx
jge 0x10164e3b
mov eax, dword [esp + 0x20]
mov ecx, dword [esp + 0x10]
nop dword [eax]
mov dword [esp + 0x2c], eax
mov ebx, eax
cmp eax, ecx
jge 0x10164e2a
lea eax, [edi + 6]
mov ebp, 6
cdq
idiv ebp
add edx, 0x44
lea ecx, [edx + edx*2]
add ecx, ecx
mov dword [esp + 0x30], ecx
lea eax, [ebx + 6]
cdq
idiv ebp
add edx, ecx
movsx eax, byte [edx + esi]
mov dword [esp + 0x1c], eax
cmp eax, 1
je 0x10164e0f
movzx ecx, word [esi + 0x16]
mov eax, dword [esi + 8]
imul ecx, edi
add ecx, ebx
lea ebp, [eax + ecx*8]
mov eax, 0x55555556
imul edi
mov eax, edx
shr eax, 0x1f
add eax, edx
lea ecx, [eax + eax*2]
mov eax, 0x55555555
imul ebx
sub edx, ebx
sar edx, 1
mov eax, edx
shr eax, 0x1f
add eax, edx
sub eax, ecx
add eax, edi
lea ebx, [ebx + eax*2]
add ebx, eax
shl ebx, 5
movsx edi, word [esp + ebx + 0x15e]
movsx edx, word [esp + ebx + 0x15c]
movzx eax, word [ebp + edi*8 + 2]
add edi, edi
movzx ecx, word [ebp + edx*8 + 2]
add edx, edx
add ecx, eax
imul esi, ecx, 0xae
movzx eax, word [ebp + edi*8 + 2]
movzx ecx, word [ebp + edx*8 + 2]
add ecx, eax
imul eax, ecx, 0x2e
mov ecx, dword [esp + 0x1c]
movzx edi, word [ebp + ecx*2]
sub esi, eax
mov dword [esp + 0x11c], esi
movsx esi, word [esp + ebx + 0x160]
lea eax, [esi*4]
sub ecx, eax
movzx eax, word [ebp + ecx*2]
mov ecx, edi
sub ecx, eax
add edi, edi
movsx eax, word [esp + ebx + 0x162]
imul edx, ecx, 0x5c
movzx ecx, word [ebp + esi*8 + 2]
movsx esi, word [esp + ebx + 0x164]
movzx eax, word [ebp + eax*8 + 2]
imul eax, eax, 0xdf
add edx, eax
mov eax, ecx
shl eax, 5
add eax, ecx
mov ecx, edi
add edx, eax
mov eax, dword [esp + 0x1c]
mov dword [esp + 0x120], edx
lea edx, [esi + esi*2]
shl edx, 2
sub eax, edx
movzx eax, word [ebp + eax*2]
sub ecx, eax
mov eax, dword [esp + 0x1c]
add eax, edx
movzx eax, word [ebp + eax*2]
sub ecx, eax
mov eax, ebp
mov edx, ecx
shl edx, 5
add edx, ecx
mov ecx, esi
shl ecx, 4
sub eax, ecx
movzx eax, word [eax + 2]
imul eax, eax, 0x5c
add edx, eax
movzx eax, word [ebp + esi*8 + 2]
imul eax, eax, 0xa4
movsx esi, word [esp + ebx + 0x166]
add edx, eax
mov dword [esp + 0x124], edx
mov edx, dword [esp + 0x1c]
mov eax, edx
mov ebx, dword [esp + 0x2c]
lea ecx, [esi + esi*2]
shl ecx, 2
sub eax, ecx
movzx eax, word [ebp + eax*2]
sub edi, eax
lea eax, [ecx + edx]
movzx eax, word [ebp + eax*2]
mov ecx, esi
sub edi, eax
shl ecx, 4
mov eax, ebp
mov edx, edi
sub eax, ecx
shl edx, 5
add edx, edi
movzx eax, word [eax + 2]
imul eax, eax, 0x5c
add edx, eax
movzx eax, word [ebp + esi*8 + 2]
imul eax, eax, 0xa4
xor esi, esi
add edx, eax
mov eax, dword [esp + 0x50]
movzx ecx, ax
mov eax, dword [esp + 0x14]
sub eax, ecx
mov dword [esp + 0x128], edx
cdq
mov ecx, 3
idiv ecx
neg edx
sbb eax, eax
inc eax
mov dword [esp + 0x40], eax
nop dword [eax + eax]
mov ecx, dword [esp + esi*4 + 0x11c]
movzx edi, word [ebp + 6]
movzx edx, word [ebp + 2]
sar ecx, 8
cmp ecx, edi
mov eax, ecx
cmovge eax, edi
cmp edx, eax
jg 0x10164dd4
cmp ecx, edi
mov edx, edi
cmovl edx, ecx
mov eax, dword [esp + 0x40]
mov edi, dword [esp + 0x14]
xor eax, esi
mov ecx, dword [esp + 0x74]
inc esi
shl eax, 9
sub eax, dword [esp + 0x28]
add eax, edi
shl eax, 9
sub eax, dword [esp + 0x20]
add eax, ebx
lea eax, [eax + eax*2]
mov word [ecx + eax*2 + 2], dx
cmp esi, 4
jl 0x10164db0
mov esi, dword [esp + 0x44]
mov ebp, 6
mov ecx, dword [esp + 0x30]
inc ebx
mov dword [esp + 0x2c], ebx
cmp ebx, dword [esp + 0x10]
jl 0x10164bf5
mov eax, dword [esp + 0x20]
mov ecx, dword [esp + 0x10]
mov edx, dword [esp + 0x34]
inc edi
mov dword [esp + 0x14], edi
cmp edi, edx
jl 0x10164bd0
mov ebp, dword [esp + 0x28]
cmp dword [esp + 0x280], 0
mov dword [esp + 0x48], 0
jle 0x10165914
lea eax, [edx - 2]
mov ebx, dword [esp + 0x74]
mov dword [esp + 0x38], eax
mov ecx, ebp
mov eax, dword [esp + 0x50]
movzx edi, ax
mov eax, 0x55555556
sub ecx, edi
add ecx, 4
imul ecx
mov ecx, edx
shr ecx, 0x1f
add ecx, edx
lea eax, [edi + ecx*2]
add eax, ecx
lea edi, [ebp + 2]
lea ecx, [ebp + 3]
mov dword [esp + 0xac], eax
mov ebp, dword [esp + 0x10]
add ebp, 0xfffffffe
mov dword [esp + 0x8c], ecx
mov ecx, dword [esp + 0x48]
mov eax, ebp
mov dword [esp + 0x40], edi
mov dword [esp + 0x78], ebp
jmp 0x10164eb4
mov esi, dword [esp + 0x44]
cmp ecx, 1
jne 0x10164edb
push 0x600000
push dword [esp + 0x78]
add ebx, 0x600000
push ebx
mov dword [esp + 0x24], ebx
call fcn.1026c360
add esp, 0xc
mov dword [esp + 0x24], ebp
jmp 0x10164eed
mov dword [esp + 0x18], ebx
mov ebp, eax
mov dword [esp + 0x24], ebp
test ecx, ecx
je 0x101650f2
mov ecx, edi
mov dword [esp + 0x1c], ecx
cmp edi, dword [esp + 0x38]
jge 0x101650f2
mov edx, dword [esp + 0x20]
lea eax, [edi + 6]
add edx, 2
mov dword [esp + 0x54], eax
mov dword [esp + 0x5c], edx
nop
mov edi, edx
cmp edx, ebp
jge 0x101650de
cdq
idiv dword [esp + 0x98]
add edx, 0x44
lea eax, [edx + edx*2]
add eax, eax
mov dword [esp + 0x30], eax
mov eax, dword [esp + 0x20]
add eax, 8
mov dword [esp + 0x60], eax
nop dword [eax]
cdq
idiv dword [esp + 0x98]
add edx, dword [esp + 0x30]
movsx eax, byte [edx + esi]
mov dword [esp + 0x2c], eax
cmp eax, 1
je 0x101650c4
movzx eax, word [esi + 0x16]
imul eax, ecx
add eax, edi
mov dword [esp + 0x7c], eax
mov eax, dword [esi + 8]
mov dword [esp + 0x80], eax
mov eax, 0x55555556
imul ecx
mov eax, edx
shr eax, 0x1f
add eax, edx
lea esi, [eax + eax*2]
mov eax, 0x55555555
imul edi
sub edx, edi
sar edx, 1
mov ecx, edx
shr ecx, 0x1f
add ecx, edx
mov edx, dword [esp + 0x50]
sub ecx, esi
mov esi, 3
add ecx, dword [esp + 0x1c]
mov dword [esp + 0x84], esi
lea eax, [edi + ecx*2]
add eax, ecx
lea ecx, [esp + 0x16c]
shl eax, 5
add eax, ecx
movzx ecx, dx
mov dword [esp + 0x3c], eax
mov eax, dword [esp + 0x1c]
sub eax, ecx
mov ecx, esi
cdq
idiv ecx
neg edx
sbb ecx, ecx
inc ecx
mov dword [esp + 0x58], ecx
nop dword [eax]
lea eax, [esi - 2]
xor eax, ecx
shl eax, 9
sub eax, dword [esp + 0x28]
add eax, dword [esp + 0x1c]
shl eax, 9
sub eax, dword [esp + 0x20]
add eax, edi
lea eax, [eax + eax*2]
lea edx, [ebx + eax*2]
mov eax, dword [esp + 0x3c]
mov dword [esp + 0x4c], edx
movsx ecx, word [eax + esi*2]
mov esi, dword [esp + 0x80]
mov eax, dword [esp + 0x7c]
movzx eax, word [esi + eax*8 + 6]
lea esi, [ecx + ecx*2]
mov dword [esp + 0x14], eax
add esi, esi
mov eax, dword [esp + 0x2c]
lea eax, [eax + ecx*2]
add eax, ecx
lea ecx, [ecx + ecx*2]
shl ecx, 2
movzx eax, word [edx + eax*2]
movzx edx, word [esi + edx + 2]
sub edx, eax
mov eax, dword [esp + 0x4c]
sub eax, ecx
movzx eax, word [eax + 2]
lea ecx, [eax + edx*2]
mov edx, dword [esp + 0x2c]
mov eax, edx
sub eax, esi
mov esi, dword [esp + 0x4c]
movzx eax, word [esi + eax*2]
sub ecx, eax
movzx eax, word [esi + edx*2]
lea eax, [eax + eax*2]
add ecx, eax
mov eax, 0x55555556
imul ecx
mov eax, dword [esp + 0x7c]
mov ecx, edx
shr ecx, 0x1f
add ecx, edx
mov edx, dword [esp + 0x80]
cmp ecx, dword [esp + 0x14]
movzx edx, word [edx + eax*8 + 2]
mov eax, ecx
cmovge eax, dword [esp + 0x14]
cmp edx, eax
jg 0x1016509c
mov edx, dword [esp + 0x14]
cmp ecx, edx
cmovl edx, ecx
mov ecx, dword [esp + 0x58]
mov word [esi + 2], dx
mov esi, dword [esp + 0x84]
inc esi
mov dword [esp + 0x84], esi
cmp esi, 6
jl 0x10164fe0
mov ecx, dword [esp + 0x1c]
mov esi, dword [esp + 0x44]
mov eax, dword [esp + 0x60]
inc edi
inc eax
mov dword [esp + 0x60], eax
cmp edi, ebp
jl 0x10164f40
mov eax, dword [esp + 0x54]
mov edx, dword [esp + 0x5c]
inc ecx
inc eax
mov dword [esp + 0x1c], ecx
mov dword [esp + 0x54], eax
cmp ecx, dword [esp + 0x38]
jl 0x10164f10
mov eax, dword [esp + 0xac]
mov dword [esp + 0x1c], eax
mov dword [esp + 0x2c], ebp
cmp eax, dword [esp + 0x38]
jge 0x1016540c
mov eax, dword [esp + 0x94]
mov ecx, dword [esp + 0x20]
movzx esi, ax
mov eax, 0x55555556
sub ecx, esi
add ecx, 4
imul ecx
mov eax, dword [esp + 0xac]
mov ecx, edx
shr ecx, 0x1f
add ecx, edx
mov edx, ebp
mov ebp, dword [esp + 0x38]
lea edi, [esi + ecx*2]
mov esi, eax
sub esi, dword [esp + 0x28]
add edi, ecx
shl esi, 9
lea ecx, [eax + 6]
sub esi, dword [esp + 0x20]
mov eax, dword [esp + 0x1c]
mov dword [esp + 0xa4], edi
mov dword [esp + 0x5c], ecx
mov dword [esp + 0x4c], esi
mov dword [esp + 0x84], edi
cmp edi, edx
jge 0x101653ec
mov eax, ecx
mov ecx, 6
cdq
idiv ecx
lea eax, [esi + edi]
add edx, 0x44
lea eax, [eax + eax*2]
lea ecx, [edi + 7]
lea eax, [ebx + eax*2]
mov dword [esp + 0x7c], ecx
mov dword [esp + 0x80], eax
lea ebp, [edx + edx*2]
add ebp, ebp
mov dword [esp + 0xa8], ebp
mov esi, eax
xorps xmm0, xmm0
mov eax, ecx
movq qword [esp + 0xd4], xmm0
cdq
mov ecx, 6
idiv ecx
mov eax, dword [esp + 0x44]
mov ecx, 1
add edx, ebp
mov dword [esp + 0x14], ecx
movups xmmword [esp + 0xc4], xmm0
xor ebx, ebx
movsx ebp, byte [edx + eax]
movzx edx, word [esi + 2]
lea edi, [ecx + ecx*2]
add edi, edi
lea ecx, [ecx + ecx*2]
mov eax, esi
mov dword [esp + 0x58], edi
sub eax, edi
add edx, edx
movzx eax, word [eax + 2]
mov dword [esp + 0x54], eax
movzx eax, word [edi + esi + 2]
mov edi, edx
sub edi, eax
mov dword [esp + 0x30], eax
sub edi, dword [esp + 0x54]
mov eax, ebp
sub eax, ecx
movzx eax, word [esi + eax*2]
mov dword [esp + 0x60], eax
lea eax, [ecx + ebp]
movzx eax, word [esi + eax*2]
mov dword [esp + 0x3c], eax
lea ecx, [edi + eax]
add ecx, dword [esp + 0x60]
lea eax, [ebx + ebp*8]
mov dword [esp + eax*4 + 0xfc], ecx
cmp ebx, 1
jbe 0x10165262
mov eax, dword [esp + 0x30]
sub eax, dword [esp + 0x54]
sub eax, dword [esp + 0x3c]
add eax, dword [esp + 0x60]
imul edi, edi
imul eax, eax
add edi, eax
movd xmm0, edi
cvtdq2ps xmm0, xmm0
addss xmm0, dword [esp + ebx*4 + 0xc4]
movss dword [esp + ebx*4 + 0xc4], xmm0
mov eax, dword [esp + 0x14]
xor ebp, 2
mov edi, ebx
lea ecx, [eax + eax*2]
mov eax, esi
shl ecx, 2
sub eax, ecx
movzx ecx, word [esi + ecx + 2]
movzx eax, word [eax + 2]
sub edx, ecx
sub edx, eax
mov dword [esp + 0x3c], eax
mov dword [esp + 0x60], ecx
mov eax, ebp
mov ecx, dword [esp + 0x58]
sub eax, ecx
movzx eax, word [esi + eax*2]
mov dword [esp + 0x54], eax
lea eax, [ecx + ebp]
movzx eax, word [esi + eax*2]
mov dword [esp + 0x30], eax
lea ecx, [edx + eax]
add ecx, dword [esp + 0x54]
lea eax, [ebx + ebp*8]
mov dword [esp + eax*4 + 0xfc], ecx
cmp ebx, 1
jbe 0x10165317
mov eax, dword [esp + 0x54]
sub eax, dword [esp + 0x30]
sub eax, dword [esp + 0x3c]
add eax, dword [esp + 0x60]
imul eax, eax
imul edx, edx
add eax, edx
movd xmm0, eax
cvtdq2ps xmm0, xmm0
addss xmm0, dword [esp + edi*4 + 0xc4]
movss dword [esp + edi*4 + 0xc4], xmm0
test bl, 1
je 0x10165317
comiss xmm0, dword [esp + edi*4 + 0xc0]
jbe 0x10165317
mov eax, dword [esp + edi*4 + 0xf8]
mov dword [esp + edi*4 + 0xfc], eax
mov eax, dword [esp + edi*4 + 0x138]
mov dword [esp + edi*4 + 0x13c], eax
cmp ebx, 2
jb 0x10165321
test bl, 1
je 0x10165379
mov dword [esp + 0x54], 0
lea edi, [esp + edi*4 + 0xfc]
mov eax, dword [edi]
cdq
sub eax, edx
mov ecx, eax
sar ecx, 1
cmp ecx, 0xffff
jge 0x10165349
test ecx, ecx
jns 0x1016534e
xor ecx, ecx
jmp 0x1016535e
mov ecx, 0xffff
mov eax, dword [esp + 0x18]
mov dword [esp + 0x18], eax
mov eax, dword [esp + 0x24]
mov dword [esp + 0x24], eax
mov eax, dword [esp + 0x54]
add edi, 0x40
mov word [esi + eax*4], cx
inc eax
mov dword [esp + 0x54], eax
cmp eax, 2
jl 0x10165330
add esi, 0x180000
mov ecx, dword [esp + 0x14]
inc ebx
xor ecx, 0x201
mov dword [esp + 0x14], ecx
cmp ebx, 6
jl 0x101651d5
mov edi, dword [esp + 0x84]
mov eax, dword [esp + 0x80]
add edi, 3
mov ecx, dword [esp + 0x7c]
add eax, 0x12
mov edx, dword [esp + 0x2c]
add ecx, 3
mov ebp, dword [esp + 0xa8]
mov dword [esp + 0x84], edi
mov dword [esp + 0x80], eax
mov dword [esp + 0x7c], ecx
cmp edi, edx
jl 0x101651a0
mov ebx, dword [esp + 0x18]
mov esi, dword [esp + 0x4c]
mov edi, dword [esp + 0xa4]
mov eax, dword [esp + 0x1c]
mov ecx, dword [esp + 0x5c]
mov ebp, dword [esp + 0x38]
add eax, 3
add esi, 0x600
add ecx, 3
mov dword [esp + 0x1c], eax
mov dword [esp + 0x4c], esi
mov dword [esp + 0x5c], ecx
cmp eax, ebp
jl 0x10165161
mov ebp, dword [esp + 0x34]
mov eax, dword [esp + 0x8c]
add ebp, 0xfffffffd
cmp eax, ebp
jge 0x1016569b
mov ecx, dword [esp + 0x20]
mov esi, eax
mov edx, dword [esp + 0x10]
add edx, 0xfffffffd
lea edi, [ecx + 3]
mov dword [esp + 0x58], edi
mov edi, dword [esp + 0x50]
movzx eax, di
mov edi, dword [esp + 0x58]
sub esi, eax
mov eax, 0x600
mov dword [esp + 0x3c], esi
sub eax, ecx
sub ebp, dword [esp + 0x8c]
mov dword [esp + 0x1c], eax
mov dword [esp + 0x30], ebp
nop dword [eax]
mov ecx, edi
mov dword [esp + 0x80], ecx
cmp edi, edx
jge 0x1016567c
mov edx, dword [esp + 0x50]
mov ebp, 6
movzx eax, dx
add eax, 6
add eax, esi
cdq
idiv ebp
lea eax, [edi + 6]
add edx, 0x44
mov dword [esp + 0x7c], eax
lea ebp, [edx + edx*2]
add ebp, ebp
mov dword [esp + 0x70], ebp
cdq
mov edi, 6
idiv edi
mov eax, dword [esp + 0x44]
mov edi, 2
add edx, ebp
movsx eax, byte [edx + eax]
sub edi, eax
mov dword [esp + 0x54], edi
cmp edi, 1
je 0x1016564c
mov eax, dword [esp + 0x1c]
add eax, ecx
mov ecx, 3
lea eax, [eax + eax*2]
lea ebp, [ebx + eax*2]
mov eax, esi
cdq
idiv ecx
mov dword [esp + 0x4c], ebp
neg edx
sbb ebx, ebx
and ebx, 0x1ff
inc ebx
mov eax, ebx
mov dword [esp + 0x5c], ebx
xor eax, 0x201
xor ecx, ecx
mov dword [esp + 0x60], ecx
lea edx, [eax + eax*2]
mov dword [esp + 0x84], edx
nop
cmp ecx, 1
ja 0x101655c4
mov eax, ebx
xor eax, ecx
test al, 1
jne 0x101655c4
movzx edi, word [ebp + 2]
lea ecx, [edx + edx*2]
add ecx, ecx
mov dword [esp + 0x14], edi
mov edx, edi
mov eax, ebp
sub eax, ecx
movzx eax, word [eax + 2]
sub edi, eax
movzx eax, word [ecx + ebp + 2]
mov ecx, edx
mov dword [esp + 0xa4], edi
sub ecx, eax
mov esi, edi
mov eax, dword [esp + 0x4c]
mov ebp, ecx
mov dword [esp + 0xa8], ecx
mov edi, edx
lea ecx, [ebx + ebx*2]
sar esi, 0x1f
add ecx, ecx
sar ebp, 0x1f
sub eax, ecx
mov dword [esp + 0x90], esi
xor esi, dword [esp + 0xa4]
movzx eax, word [eax + 2]
sub edi, eax
mov eax, dword [esp + 0x4c]
mov ebx, edi
sar ebx, 0x1f
movzx eax, word [ecx + eax + 2]
mov ecx, ebx
sub edx, eax
xor ecx, edi
mov edi, dword [esp + 0x54]
mov eax, ebp
xor eax, dword [esp + 0xa8]
add esi, eax
mov dword [esp + 0x14], edx
sar edx, 0x1f
sub esi, ebp
sub esi, dword [esp + 0x90]
mov eax, edx
xor eax, dword [esp + 0x14]
add esi, esi
mov ebp, dword [esp + 0x4c]
add ecx, eax
sub ecx, edx
sub ecx, ebx
mov ebx, dword [esp + 0x5c]
cmp ecx, esi
mov esi, dword [esp + 0x84]
jge 0x101655c6
mov esi, ebx
lea eax, [esi + esi*2]
mov ecx, edi
sub ecx, eax
lea edx, [esi + esi*2]
lea eax, [edi + esi*2]
add edx, edx
add eax, esi
movzx ecx, word [ebp + ecx*2]
movzx eax, word [ebp + eax*2]
add ecx, eax
mov eax, ebp
sub eax, edx
movzx eax, word [eax + 2]
sub ecx, eax
movzx eax, word [edx + ebp + 2]
sub ecx, eax
movzx eax, word [ebp + 2]
lea eax, [ecx + eax*2]
cdq
sub eax, edx
sar eax, 1
cmp eax, 0xffff
jge 0x10165610
xor ecx, ecx
test eax, eax
cmovs eax, ecx
jmp 0x10165615
mov eax, 0xffff
mov ecx, dword [esp + 0x60]
mov edx, dword [esp + 0x84]
inc ecx
mov word [ebp + edi*2], ax
add ebp, 0x180000
mov dword [esp + 0x60], ecx
mov dword [esp + 0x4c], ebp
cmp ecx, 4
jl 0x10165500
mov ecx, dword [esp + 0x80]
mov esi, dword [esp + 0x3c]
mov ebp, dword [esp + 0x70]
mov eax, dword [esp + 0x7c]
inc ecx
mov edx, dword [esp + 0x10]
inc eax
mov ebx, dword [esp + 0x18]
add edx, 0xfffffffd
mov dword [esp + 0x80], ecx
mov dword [esp + 0x7c], eax
cmp ecx, edx
jl 0x10165498
mov eax, dword [esp + 0x1c]
mov edi, dword [esp + 0x58]
mov ebp, dword [esp + 0x30]
mov ebx, dword [esp + 0x18]
add eax, 0x200
inc esi
mov dword [esp + 0x1c], eax
sub ebp, 1
mov dword [esp + 0x3c], esi
mov dword [esp + 0x30], ebp
jne 0x10165460
mov edi, dword [esp + 0x40]
mov esi, edi
mov dword [esp + 0x14], esi
cmp edi, dword [esp + 0x38]
jge 0x101658ee
mov edx, dword [esp + 0x50]
mov ebx, edi
sub ebx, dword [esp + 0x28]
mov eax, edi
mov ebp, dword [esp + 0x20]
mov edi, 3
movzx ecx, dx
sub eax, ecx
shl ebx, 9
mov ecx, dword [esp + 0x24]
sub ebx, ebp
mov dword [esp + 0x54], eax
mov dword [esp + 0x60], ebx
nop word [eax + eax]
cdq
idiv edi
test edx, edx
je 0x101658c8
lea edi, [ebp + 2]
mov dword [esp + 0x58], edi
cmp edi, ecx
jge 0x101658c3
mov eax, dword [esp + 0x94]
mov edx, edi
movzx eax, ax
mov ebp, 3
sub edx, eax
mov dword [esp + 0x5c], edx
mov eax, edx
cdq
idiv ebp
test edx, edx
je 0x101658a9
lea eax, [ebx + edi]
mov ebp, dword [esp + 0x18]
lea eax, [eax + eax*2]
lea ebx, [eax*2]
mov eax, 0x55555556
imul esi
add ebx, ebp
mov eax, edx
shr eax, 0x1f
add eax, edx
lea esi, [eax + eax*2]
mov eax, 0x55555555
imul edi
sub edx, edi
sar edx, 1
mov ecx, edx
shr ecx, 0x1f
add ecx, edx
sub ecx, esi
add ecx, dword [esp + 0x14]
lea eax, [edi + ecx*2]
add eax, ecx
lea ecx, [esp + 0x16c]
shl eax, 5
add ecx, eax
xor eax, eax
mov dword [esp + 0x90], ecx
mov dword [esp + 0x3c], eax
nop dword [eax + eax]
movsx edx, word [ecx + eax*2 + 2]
movsx ecx, word [ecx + eax*2]
mov dword [esp + 0x30], 0
lea eax, [edx + edx*2]
lea edi, [ebx + eax*2]
lea eax, [ecx + ecx*2]
lea esi, [ebx + eax*2]
lea eax, [ecx + edx]
test eax, eax
je 0x10165819
movzx eax, word [ebx + 2]
movzx ecx, word [esi + 2]
add ecx, ecx
lea edx, [eax + eax*2]
movzx eax, word [edi + 2]
sub edx, ecx
sub edx, eax
mov dword [esp + 0x70], edx
nop dword [eax]
movzx eax, word [edi]
movzx ecx, word [esi]
add eax, edx
lea ecx, [eax + ecx*2]
mov eax, 0x55555556
imul ecx
mov eax, edx
shr eax, 0x1f
add eax, edx
cmp eax, 0xffff
jge 0x101657e8
test eax, eax
jns 0x101657ed
xor eax, eax
jmp 0x101657f5
mov eax, 0xffff
mov ecx, dword [esp + 0x24]
mov dword [esp + 0x24], ecx
mov ecx, dword [esp + 0x30]
add esi, 4
mov edx, dword [esp + 0x70]
add edi, 4
mov word [ebx + ecx*2], ax
add ecx, 2
mov dword [esp + 0x30], ecx
cmp ecx, 4
jl 0x101657c0
mov dword [esp + 0x18], ebp
jmp 0x10165872
movzx edx, word [ebx + 2]
movzx eax, word [edi + 2]
add edx, edx
sub edx, eax
movzx eax, word [esi + 2]
sub edx, eax
mov dword [esp + 0x70], edx
nop
movzx ecx, word [edi]
movzx eax, word [esi]
add ecx, edx
add eax, ecx
cdq
sub eax, edx
sar eax, 1
cmp eax, 0xffff
jge 0x1016584f
xor ecx, ecx
test eax, eax
cmovs eax, ecx
jmp 0x10165854
mov eax, 0xffff
mov ecx, dword [esp + 0x30]
add edi, 4
mov edx, dword [esp + 0x70]
add esi, 4
mov word [ebx + ecx*2], ax
add ecx, 2
mov dword [esp + 0x30], ecx
cmp ecx, 4
jl 0x10165830
mov eax, dword [esp + 0x3c]
add ebx, 0x180000
mov ecx, dword [esp + 0x90]
add eax, 2
mov dword [esp + 0x3c], eax
cmp eax, dword [esp + 0x6c]
jl 0x10165780
mov ecx, dword [esp + 0x24]
mov ebp, 3
mov edi, dword [esp + 0x58]
mov esi, dword [esp + 0x14]
mov ebx, dword [esp + 0x60]
mov edx, dword [esp + 0x5c]
inc edi
inc edx
mov dword [esp + 0x58], edi
mov dword [esp + 0x5c], edx
cmp edi, ecx
jl 0x10165711
mov ebp, dword [esp + 0x20]
mov edi, 3
mov eax, dword [esp + 0x54]
inc esi
inc eax
mov dword [esp + 0x14], esi
add ebx, 0x200
mov dword [esp + 0x54], eax
mov dword [esp + 0x60], ebx
cmp esi, dword [esp + 0x38]
jl 0x101656e0
mov edi, dword [esp + 0x40]
mov ecx, dword [esp + 0x48]
mov ebx, dword [esp + 0x18]
inc ecx
mov eax, dword [esp + 0x2c]
mov ebp, dword [esp + 0x78]
mov dword [esp + 0x48], ecx
cmp ecx, dword [esp + 0x280]
jl 0x10164eb0
mov edx, dword [esp + 0x34]
sub edx, dword [esp + 0x28]
xor esi, esi
mov ebx, dword [esp + 0x10]
sub ebx, dword [esp + 0x20]
xor edi, edi
mov dword [esp + 0x34], edx
lea eax, [edx - 2]
mov dword [esp + 0x10], ebx
lea ecx, [edx - 3]
mov dword [esp + 0x48], esi
mov dword [esp + 0x5c], eax
mov edx, ecx
mov dword [esp + 0x14], ecx
mov dword [esp + 0x1c], edi
jmp 0x10165954
mov ebx, dword [esp + 0x10]
mov ebp, 2
cmp eax, ebp
jle 0x101659ce
mov ecx, dword [esp + 0xa0]
lea edx, [ebx - 2]
add ecx, 0x180c
mov dword [esp + 0x78], edx
mov dword [esp + 0x40], ecx
cmp edx, 2
jle 0x101659b7
mov esi, dword [esp + 0x74]
lea eax, [edi + ebp]
imul eax, eax, 0xc00
lea ebx, [edx - 2]
add esi, 0xc
mov edi, ecx
add esi, eax
mov ecx, dword [esp + 0x44]
push edi
push esi
call fcn.1012f840
add edi, 6
add esi, 6
sub ebx, 1
jne 0x10165991
mov ecx, dword [esp + 0x40]
mov edx, dword [esp + 0x78]
mov edi, dword [esp + 0x1c]
mov eax, dword [esp + 0x5c]
inc ebp
add ecx, 0xc00
mov dword [esp + 0x40], ecx
cmp ebp, eax
jl 0x10165975
mov edx, dword [esp + 0x14]
mov esi, dword [esp + 0x48]
mov eax, esi
and eax, 3
movsx ecx, word [eax*2 + 0x102b27f0]
mov eax, 3
mov dword [esp + 0x70], ecx
mov dword [esp + 0x58], eax
cmp edx, eax
jle 0x10165b38
mov esi, dword [esp + 0x10]
mov ebx, 0x2400
add esi, 0xfffffffd
mov dword [esp + 0x8c], ebx
mov dword [esp + 0x78], esi
cmp esi, 3
jle 0x10165b16
mov ebp, dword [esp + 0xa0]
lea edx, [ecx + ecx*2]
add eax, edi
add edx, edx
shl eax, 0xb
add eax, 0x18000c
mov dword [esp + 0x3c], edx
add eax, ebp
lea ecx, [ebp + 0x12]
mov dword [esp + 0x40], eax
add ebp, 0x12
lea eax, [ebx + edx]
add ecx, eax
mov eax, ebx
sub eax, edx
mov dword [esp + 0x2c], ecx
add ebp, eax
lea eax, [esi - 3]
mov dword [esp + 0x30], eax
nop dword [eax]
movsx ebx, word [edx + ebp]
lea ebp, [ebp + 6]
movsx edi, word [edx + ebp - 2]
add ebx, ebx
movsx eax, word [ebp - 6]
add edi, edi
sub ebx, eax
movsx eax, word [ecx]
sub ebx, eax
movsx eax, word [ebp - 2]
sub edi, eax
imul esi, ebx, 0x1f4
movsx eax, word [ecx + 4]
sub edi, eax
imul ebx, ebx
mov eax, 0xe1fc780f
imul esi
add edx, esi
sar edx, 9
mov eax, edx
shr eax, 0x1f
add eax, edx
sub edi, eax
mov eax, dword [esp + 0x3c]
imul edi, edi
movsx ecx, word [eax + ebp - 4]
movsx eax, word [ebp - 4]
add ecx, ecx
sub ecx, eax
mov eax, dword [esp + 0x2c]
movsx eax, word [eax + 2]
sub ecx, eax
mov eax, 0x8d3dcb09
imul esi
add edx, esi
sar edx, 7
add ecx, edx
mov eax, edx
shr eax, 0x1f
add eax, ecx
mov edx, dword [esp + 0x3c]
mov ecx, dword [esp + 0x2c]
imul eax, eax
add ecx, 6
mov dword [esp + 0x2c], ecx
add eax, edi
add eax, ebx
movd xmm0, eax
mov eax, dword [esp + 0x40]
cvtdq2ps xmm0, xmm0
movss dword [eax], xmm0
add eax, 4
sub dword [esp + 0x30], 1
mov dword [esp + 0x40], eax
jne 0x10165a50
mov eax, dword [esp + 0x58]
mov ebx, dword [esp + 0x8c]
mov esi, dword [esp + 0x78]
mov ecx, dword [esp + 0x70]
mov edx, dword [esp + 0x14]
mov edi, dword [esp + 0x1c]
inc eax
add ebx, 0xc00
mov dword [esp + 0x58], eax
mov dword [esp + 0x8c], ebx
cmp eax, edx
jl 0x10165a07
mov esi, dword [esp + 0x48]
mov eax, dword [esp + 0x5c]
inc esi
add edi, 0x200
mov dword [esp + 0x48], esi
mov dword [esp + 0x1c], edi
cmp esi, dword [esp + 0x6c]
jl 0x10165950
push dword [esp + 0x88]
mov edi, dword [esp + 0xa0]
push 0
push edi
call fcn.1026c8e0
mov ebp, dword [esp + 0x40]
mov esi, 4
add esp, 0xc
mov dword [esp + 0x2c], esi
lea eax, [ebp - 4]
mov dword [esp + 0x3c], eax
cmp eax, esi
jle 0x10165d1d
mov eax, dword [esp + 0x10]
add edi, 0x800
mov edx, dword [esp + 0xa0]
add eax, 0xfffffffc
mov ecx, dword [esp + 0x3c]
add edx, 0x382010
mov dword [esp + 0x14], edi
mov dword [esp + 0x58], edx
mov ebx, 4
mov dword [esp + 0x40], ebx
cmp eax, ebx
jle 0x10165cf8
mov ecx, dword [esp + 0x6c]
mov ebp, edx
add ecx, 0xfffffffc
mov dword [esp + 0x30], edx
shr ecx, 2
inc ecx
mov dword [esp + 0x78], ecx
nop word [eax + eax]
movss xmm1, dword [0x102c6194]
lea edx, [ecx*4]
mov eax, ebp
movss xmm0, dword [eax - 0x200000]
lea eax, [eax + 0x400000]
minss xmm0, xmm1
movss xmm1, dword [eax - 0x500000]
minss xmm1, xmm0
movss xmm0, dword [eax - 0x400000]
minss xmm0, xmm1
movss xmm1, dword [eax - 0x300000]
minss xmm1, xmm0
sub ecx, 1
jne 0x10165bf1
mov ecx, dword [esp + 0x6c]
cmp edx, ecx
jge 0x10165c6c
mov eax, edx
shl eax, 9
add eax, esi
mov esi, dword [esp + 0xa0]
shl eax, 9
add esi, 0x180000
add eax, ebx
sub ecx, edx
lea eax, [esi + eax*4]
movss xmm0, dword [eax]
lea eax, [eax + 0x100000]
minss xmm0, xmm1
movaps xmm1, xmm0
sub ecx, 1
jne 0x10165c52
mov ecx, dword [esp + 0x6c]
mulss xmm1, dword [0x103efc4c]
lea esi, [ebp - 0x200804]
lea eax, [edi + ebx]
mov ebp, ecx
nop
mov edx, esi
mov ebx, 3
nop word [eax + eax]
mov ecx, edx
mov edi, 3
comiss xmm1, dword [ecx]
jb 0x10165c9e
inc byte [eax]
add ecx, 4
sub edi, 1
jne 0x10165c97
add edx, 0x800
sub ebx, 1
jne 0x10165c90
add esi, 0x100000
add eax, 0x40000
sub ebp, 1
jne 0x10165c80
mov ebx, dword [esp + 0x40]
mov ebp, dword [esp + 0x30]
inc ebx
mov eax, dword [esp + 0x10]
add ebp, 4
mov esi, dword [esp + 0x2c]
add eax, 0xfffffffc
mov edi, dword [esp + 0x14]
mov ecx, dword [esp + 0x78]
mov dword [esp + 0x40], ebx
mov dword [esp + 0x30], ebp
cmp ebx, eax
jl 0x10165be0
mov edx, dword [esp + 0x58]
mov ecx, dword [esp + 0x3c]
inc esi
add edx, 0x800
add edi, 0x200
mov dword [esp + 0x2c], esi
mov dword [esp + 0x58], edx
mov dword [esp + 0x14], edi
cmp esi, ecx
jl 0x10165bb0
mov ebp, dword [esp + 0x34]
mov esi, dword [esp + 0x44]
movzx edx, word [esi + 0x14]
mov eax, edx
sub eax, dword [esp + 0x28]
cmp eax, 0x204
jge 0x10165d35
lea ebp, [eax + 2]
movzx eax, word [esi + 0x16]
mov edi, dword [esp + 0x20]
sub eax, edi
cmp eax, 0x204
lea ecx, [eax + 2]
cmovge ecx, dword [esp + 0x10]
lea eax, [ebp - 8]
mov dword [esp + 0x1c], eax
cmp dword [esp + 0x64], eax
jge 0x10165fbf
mov eax, dword [esp + 0x28]
mov ebp, 8
mov edx, dword [esp + 0x1c]
cmp edi, ebp
cmovl ebp, edi
mov edi, dword [esp + 0x64]
add eax, dword [esp + 0x64]
add ecx, 0xfffffff8
shl edi, 9
sub edx, dword [esp + 0x64]
mov dword [esp + 0x90], ebp
mov dword [esp + 0x70], ecx
mov dword [esp + 0x3c], edi
mov dword [esp + 0x38], eax
mov dword [esp + 0x1c], edx
nop dword [eax + eax]
mov dword [esp + 0x2c], ebp
cmp ebp, ecx
jge 0x10165f9b
mov edx, dword [esp + 0x9c]
lea eax, [edi + ebp]
mov ecx, dword [esp + 0x74]
add edx, 0xfffffbfe
add edx, eax
lea eax, [edi + ebp]
lea eax, [eax + eax*2]
mov dword [esp + 0x30], edx
lea eax, [eax + 2]
lea eax, [ecx + eax*2]
mov dword [esp + 0x14], eax
xor ecx, ecx
mov ebx, edx
nop word [eax + eax]
xor edi, edi
mov dword [esp + 0x40], 5
mov esi, ebx
nop dword [eax]
mov edx, esi
mov ebp, 5
movsx eax, byte [edx]
lea edx, [edx + 1]
add edi, eax
sub ebp, 1
jne 0x10165df7
add esi, 0x200
sub dword [esp + 0x40], 1
jne 0x10165df0
mov edx, dword [esp + 0x6c]
add ebx, 0x40000
mov dword [esp + ecx*4 + 0xdc], edi
inc ecx
cmp ecx, edx
jl 0x10165de0
lea ebx, [edx - 4]
xor eax, eax
test ebx, ebx
jle 0x10165e5f
mov ecx, dword [esp + eax*4 + 0xec]
cmp dword [esp + eax*4 + 0xdc], ecx
jge 0x10165e4d
mov dword [esp + eax*4 + 0xdc], 0
jmp 0x10165e5a
jle 0x10165e5a
mov dword [esp + eax*4 + 0xec], 0
inc eax
cmp eax, ebx
jl 0x10165e30
movzx eax, word [esp + 0xdc]
mov edi, 1
mov dword [esp + 0x10], eax
movzx ecx, word [esp + 0x10]
mov esi, dword [esp + edi*4 + 0xdc]
cmp ecx, esi
movzx eax, word [esp + 0x10]
movzx edx, si
cmovge edx, eax
inc edi
movzx ecx, dx
mov eax, ecx
mov dword [esp + 0x10], eax
cmp edi, dword [esp + 0x6c]
jl 0x10165e70
mov dword [esp + 0x10], eax
xorps xmm0, xmm0
mov ax, cx
shr ax, 3
sub cx, ax
xor edx, edx
movups xmmword [esp + 0xb0], xmm0
mov edi, dword [esp + 0xbc]
mov ebx, dword [esp + 0xb8]
mov ebp, dword [esp + 0xb4]
mov esi, dword [esp + 0xb0]
movzx eax, cx
mov ecx, dword [esp + 0x14]
mov dword [esp + 0x78], eax
nop dword [eax + eax]
cmp dword [esp + edx*4 + 0xdc], eax
jl 0x10165eff
movzx eax, word [ecx - 4]
add esi, eax
movzx eax, word [ecx - 2]
add ebp, eax
movzx eax, word [ecx]
add ebx, eax
mov eax, dword [esp + 0x78]
inc edi
inc edx
add ecx, 0x180000
cmp edx, dword [esp + 0x6c]
jl 0x10165ee0
mov eax, esi
add dword [esp + 0x14], 6
cdq
idiv edi
mov esi, dword [esp + 0x44]
movzx edx, word [esi + 0x16]
imul edx, dword [esp + 0x38]
mov ecx, dword [esi + 8]
add edx, dword [esp + 0x20]
add edx, dword [esp + 0x2c]
mov word [ecx + edx*8], ax
mov eax, ebp
cdq
idiv edi
movzx edx, word [esi + 0x16]
imul edx, dword [esp + 0x38]
mov ebp, dword [esp + 0x2c]
mov ecx, dword [esi + 8]
add edx, dword [esp + 0x20]
add edx, ebp
mov word [ecx + edx*8 + 2], ax
mov eax, ebx
cdq
idiv edi
movzx edx, word [esi + 0x16]
imul edx, dword [esp + 0x38]
mov ecx, dword [esi + 8]
add edx, dword [esp + 0x20]
add edx, ebp
inc ebp
mov dword [esp + 0x2c], ebp
mov word [ecx + edx*8 + 4], ax
mov edx, dword [esp + 0x30]
mov ecx, dword [esp + 0x70]
inc edx
mov dword [esp + 0x30], edx
cmp ebp, ecx
jl 0x10165dd6
mov eax, dword [esp + 0x38]
mov edi, dword [esp + 0x3c]
mov ebp, dword [esp + 0x90]
mov edx, dword [esp + 0x1c]
inc eax
add edi, 0x200
sub edx, 1
mov dword [esp + 0x38], eax
mov dword [esp + 0x3c], edi
mov dword [esp + 0x1c], edx
jne 0x10165da0
movzx edx, word [esi + 0x14]
mov edi, dword [esp + 0x20]
movzx eax, word [esi + 0x16]
add edi, 0x1f0
mov ebx, dword [esp + 0x28]
mov dword [esp + 0x20], edi
mov edi, eax
sub eax, 0x13
movzx ecx, dx
lea ebp, [ebx + 0x200]
cmp dword [esp + 0x20], eax
jl 0x10164af1
movzx ecx, dx
movzx eax, cx
add ebx, 0x1f0
sub eax, 0x13
mov dword [esp + 0x28], ebx
movzx edx, cx
cmp ebx, eax
jl 0x10164aa1
push dword [esp + 0x74]
mov ecx, esi
call fcn.10168850
push 8
mov ecx, esi
call fcn.1012da00
pop edi
pop ebp
pop ebx
pop esi
add esp, 0x26c
ret 4
push 0x103fa020
lea eax, [esp + 0x80]
mov dword [esp + 0x80], 5
push eax
call fcn.1026cad5
push 0x103fa020
lea eax, [esp + 0xa0]
mov dword [esp + 0xa0], 5
push eax
call fcn.1026cad5
push 0x103fa020
lea eax, [esp + 0x8c]
mov dword [esp + 0x8c], 5
push eax
call fcn.1026cad5
push 0x103fa020
lea eax, [esp + 0x8c]
mov dword [esp + 0x8c], 5
push eax
call fcn.1026cad5
int3