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

Disassembly:
push ebp
push edi
push esi
push ebx
sub esp, 0x2dc
mov dword [esp + 0x2d8], eax
mov ebp, dword [esp + 0x2fc]
mov dword [esp + 0x2d4], edx
mov dword [esp + 0x2d0], ebp
mov ebp, dword [esp + 0x2d8]
add ebp, 0x1eb8
mov edx, dword [ebp + 0x98]
mov esi, dword [ebp + 0x90]
mov edi, dword [ebp + 0x64]
mov dword [esp + 0x2b8], edx
mov edx, dword [ebp + 0x60]
mov ecx, dword [ebp + 0x150]
mov dword [esp + 0x2bc], esi
mov dword [esp + 0x2a0], edx
mov esi, dword [ebp + 0xa4]
mov edx, dword [esp + 0x308]
mov eax, dword [ebp + 0x94]
mov ebx, dword [ebp + 0x9c]
mov dword [esp + 0x2c0], edi
mov dword [esp + 0x2ac], ecx
mov edi, dword [ebp + 0xa0]
mov ecx, dword [esp + 0x300]
mov dword [esp + 0x2a4], esi
and edx, 1
mov esi, dword [esp + 0x2d8]
mov dword [esp + 0x2b4], eax
mov dword [esp + 0x2b0], ebx
mov dword [esp + 0x2a8], edi
mov ebx, dword [ebp + 0x68]
lea eax, [edx + 1]
mov edi, dword [esi + ecx*4 + 0xc88]
mov dword [esp + 0x29c], eax
mov dword [esp + 0x298], ebx
mov dword [esp + 0x2cc], edi
mov eax, dword [esp + 0x300]
mov ecx, dword [ebp + 0x8c]
mov ebx, dword [esi + eax*4 + 0xc8c]
test ecx, ecx
mov dword [esp + 0x2c4], 1
mov dword [esp + 0x2c8], ebx
jle 0x8f3e1c
mov eax, dword [esp + 0x2f8]
mov edi, dword [esp + 0x2f4]
mov esi, dword [esp + 0x2d4]
shl eax, 4
shl edi, 4
mov ebx, dword [esi]
mov ecx, dword [esp + 0x2d4]
mov dword [esp + 0x60], eax
mov dword [esp + 0x5c], edi
mov esi, dword [esp + 0x304]
mov eax, dword [esp + 0x5c]
mov dword [esp + 0xd0], ebx
sar esi, 1
mov ebx, dword [ecx + 4]
mov ecx, dword [esp + 0x60]
mov dword [esp + 0x21c], esi
mov dword [esp + 0x58], ecx
mov dword [esp + 0x54], eax
mov dword [esp + 0x50], ecx
mov dword [esp + 0x4c], eax
mov dword [esp + 0x48], ecx
mov dword [esp + 0x44], eax
mov dword [esp + 0x40], edx
mov eax, dword [esp + 0x2c4]
mov edi, dword [esp + 0xd0]
xor edx, edx
lea ecx, [ebx + eax]
mov eax, dword [esp + 0x2b4]
mov dword [esp + 0x290], edi
mov esi, ecx
mov dword [esp + 0x28c], ebx
sub esi, dword [esp + 0x2b0]
cmovns edx, esi
sub eax, edi
add eax, 1
mov dword [esp + 0x294], edx
cmp eax, dword [esp + 0x2c4]
cmovg eax, dword [esp + 0x2c4]
cmp edx, eax
mov dword [esp + 0x3c], eax
jge 0x8f16d8
mov edx, ecx
mov eax, dword [esp + 0x308]
mov esi, dword [esp + 0x60]
sub edx, dword [esp + 0x294]
mov edi, dword [esp + 0x5c]
and eax, 2
mov ecx, edx
add esi, ebp
add edi, ebp
shl ecx, 0xb
mov dword [esp + 0x74], eax
mov dword [esp + 0x70], esi
mov dword [esp + 0x6c], edi
mov dword [esp + 0x68], edx
mov dword [esp + 0x64], ecx
jmp 0x8f13ae
mov edx, dword [esp + 0xcc]
cmp dword [ebp + 0x90], edx
jg 0x8f4047
mov edi, dword [ebp + 0x94]
shl edi, cl
cmp edi, dword [esp + 0x278]
jl 0x8f4047
mov eax, dword [esp + 0x68]
cmp dword [ebp + 0x98], eax
jg 0x8f4047
mov esi, dword [ebp + 0x9c]
shl esi, cl
cmp esi, dword [esp + 0x274]
jl 0x8f4047
mov edi, dword [esp + 0x40]
mov ecx, dword [esp + 0x2d8]
mov edx, dword [esp + 0x2d8]
add edi, edi
movzx ebx, word [ecx + 0x27b0]
movzx ecx, word [edx + 0x27b2]
add edi, 1
cmp dword [edx + 0x1d40], 1
mov dword [esp + 0x264], ebx
mov dword [esp + 0x260], edi
je 0x8f252b
mov esi, dword [esp + 0x278]
mov edi, dword [esp + 0x274]
mov ebx, dword [esp + 0x278]
add esi, dword [ebp + 0x28]
add edi, dword [ebp + 0x2c]
test ebx, ebx
je 0x8f1686
mov eax, esi
mov edx, dword [esp + 0x274]
sub eax, dword [ebp + 8]
test edx, edx
mov dword [esp + 0x244], eax
je 0x8f16b5
mov ecx, edi
sub ecx, dword [ebp + 0xc]
mov dword [esp + 0x240], ecx
mov edx, dword [esp + 0x260]
mov eax, dword [esp + 0x260]
movzx ecx, byte [esp + 0xc0]
and edx, edi
and eax, esi
shl edx, cl
lea ebx, [eax + edx]
mov eax, dword [esp + 0x244]
mov edx, dword [esp + 0x240]
and eax, dword [esp + 0x260]
and dword [esp + 0x260], edx
mov dword [esp + 0x23c], ebx
shl dword [esp + 0x260], cl
mov ecx, dword [esp + 0x40]
add eax, dword [esp + 0x260]
test ecx, ecx
mov dword [esp + 0x238], eax
jne 0x8f31d4
mov edx, dword [esp + 0x2d8]
sar esi, 1
mov ecx, dword [edx + 0x2018]
mov ebx, esi
mov dword [esp + 0x22c], esi
shl ecx, 4
add ebx, ecx
cmp ebx, 0xfffffff0
jl 0x8f4155
mov esi, dword [esp + 0x2d8]
mov eax, edi
mov edx, dword [esi + 0x201c]
sar eax, 1
shl edx, 4
lea edi, [eax + edx]
cmp edi, 0xfffffff0
jl 0x8f4171
mov esi, dword [esp + 0x2d8]
mov esi, dword [esi + 4]
cmp ebx, esi
mov dword [esp + 0x228], esi
jg 0x8f418d
mov esi, dword [esp + 0x2d8]
mov ebx, dword [esi + 8]
cmp edi, ebx
mov dword [esp + 0x224], ebx
jg 0x8f41a9
mov esi, dword [esp + 0x244]
sar esi, 1
lea ecx, [esi + ecx]
cmp ecx, 0xfffffff0
jl 0x8f41e1
mov ebx, dword [esp + 0x240]
sar ebx, 1
lea edx, [ebx + edx]
cmp edx, 0xfffffff0
jl 0x8f4219
cmp ecx, dword [esp + 0x228]
jg 0x8f41fd
cmp edx, dword [esp + 0x224]
jg 0x8f41c5
mov edi, dword [esp + 0x280]
mov edx, dword [ebp + 0x13c]
mov ecx, dword [esp + 0x270]
mov dword [esp + 8], edi
mov dword [esp + 0xc], 0x10
imul eax, edi
mov ecx, dword [ecx]
mov edi, dword [esp + 0x23c]
add dword [esp + 0x22c], ecx
add eax, dword [esp + 0x22c]
mov dword [esp + 4], eax
mov eax, dword [ebp + 0x58]
mov dword [esp], eax
call dword [edx + edi*4]
mov eax, dword [esp + 0x280]
mov edi, dword [ebp + 0x140]
mov ecx, dword [esp + 0x270]
mov dword [esp + 0xc], 0x10
mov dword [esp + 8], eax
add esi, dword [ecx + 0x20]
imul ebx, eax
mov ecx, dword [esp + 0x238]
lea edx, [esi + ebx]
mov dword [esp + 4], edx
mov eax, dword [ebp + 0x58]
mov dword [esp], eax
call dword [edi + ecx*4]
mov edi, dword [esp + 0x280]
mov dword [esp + 0x10], 0x10
mov eax, dword [esp + 0x26c]
mov dword [esp + 0xc], edi
mov ebx, dword [esp + 0x2d8]
mov edx, dword [eax]
mov dword [esp + 8], edx
mov esi, dword [ebp + 0x58]
mov dword [esp], ebx
mov dword [esp + 4], esi
call dword [esp + 0x2cc]
mov dword [esp + 0x268], eax
mov edx, dword [esp + 0x284]
mov esi, dword [esp + 0x288]
mov edi, dword [esp + 0x2a0]
mov dword [edi + edx*4], esi
mov ebx, dword [esp + 0x2c0]
mov edi, dword [esp + 0x268]
mov dword [ebx + edx*4], edi
movzx ecx, byte [esp + 0x29c]
mov eax, dword [esp + 0xcc]
mov ebx, dword [esp + 0x68]
shl eax, cl
mov esi, dword [esp + 0x2ac]
shl ebx, cl
sub eax, dword [esp + 0x2a8]
sub ebx, dword [esp + 0x2a4]
movzx edx, byte [esi + eax]
movzx eax, byte [esi + ebx]
mov ebx, dword [esp + 0x2d4]
mov esi, dword [esp + 0x68]
lea ecx, [edx + eax]
mov edx, dword [ebx]
mov eax, dword [ebx + 4]
imul ecx, dword [esp + 0x2d0]
mov ebx, dword [esp + 0xcc]
add ecx, edi
mov edi, dword [esp + 0x2f0]
cmp ecx, edi
cmovl edi, ecx
cmovl edx, ebx
cmovl eax, esi
mov ecx, dword [esp + 0x2d4]
mov dword [esp + 0x2f0], edi
mov dword [esp + 0xd0], edx
mov dword [ecx], edx
mov ebx, eax
mov dword [ecx + 4], eax
add dword [esp + 0x294], 1
mov ecx, dword [esp + 0x3c]
sub dword [esp + 0x64], 0x800
sub dword [esp + 0x68], 1
cmp dword [esp + 0x294], ecx
jge 0x8f16d8
mov edx, dword [esp + 0x290]
mov eax, dword [esp + 0x64]
mov esi, dword [esp + 0x68]
add edx, dword [esp + 0x294]
mov ecx, dword [esp + 0x2bc]
add eax, edx
lea edi, [edx + esi*8]
mov dword [esp + 0xcc], edx
add eax, dword [esp + 0x298]
and edi, 0x3f
cmp edx, ecx
mov dword [esp + 0x288], eax
mov dword [esp + 0x284], edi
jl 0x8f4075
mov ecx, dword [esp + 0x2b4]
cmp dword [esp + 0xcc], ecx
jg 0x8f4091
mov edx, dword [esp + 0x2b8]
cmp dword [esp + 0x68], edx
jl 0x8f40ad
mov edi, dword [esp + 0x2b0]
cmp dword [esp + 0x68], edi
jg 0x8f40c9
mov eax, dword [esp + 0x288]
mov ecx, dword [esp + 0x284]
mov esi, dword [esp + 0x2a0]
cmp dword [esi + ecx*4], eax
je 0x8f1388
mov ecx, dword [esp + 0x40]
mov ebx, dword [ebp + 0x128]
mov eax, dword [esp + 0xcc]
add ecx, 1
mov dword [esp + 0x280], ebx
mov edi, dword [esp + 0x68]
mov dword [esp + 0xc0], ecx
shl eax, cl
mov edx, dword [esp + 0x70]
movzx ecx, byte [esp + 0xc0]
mov ebx, dword [esp + 0x6c]
add edx, 0xe8
shl edi, cl
add ebx, 0xa8
mov esi, dword [ebp + 0x12c]
test byte [esp + 0x308], 4
mov dword [esp + 0x27c], esi
mov dword [esp + 0x278], eax
mov dword [esp + 0x274], edi
mov dword [esp + 0x270], edx
mov dword [esp + 0x26c], ebx
jne 0x8f1020
mov ecx, dword [esp + 0x280]
mov edx, dword [esp + 0x304]
mov ebx, dword [esp + 0x70]
mov dword [esp + 0xc], ecx
mov dword [esp + 0x10], edx
mov eax, dword [esp + 0xcc]
mov edi, dword [esp + 0x68]
add eax, dword [ebx + 0xe8]
mov esi, dword [esp + 0x6c]
imul edi, ecx
mov ebx, dword [esp + 0x2d8]
add eax, edi
mov dword [esp + 8], eax
mov edx, dword [esi + 0xa8]
mov dword [esp], ebx
mov dword [esp + 4], edx
call dword [esp + 0x2cc]
mov ecx, dword [esp + 0x74]
test ecx, ecx
mov dword [esp + 0x268], eax
je 0x8f12d9
mov eax, dword [esp + 0xcc]
mov esi, dword [esp + 0x68]
mov edx, dword [esp + 0x300]
and eax, 1
and esi, 1
shl edx, 4
lea ebx, [eax + esi*2]
mov ecx, dword [esp + 0x280]
mov edi, dword [ebp + 0x58]
lea ebx, [edx + ebx*4]
mov eax, dword [esp + 0x21c]
mov esi, dword [esp + 0x27c]
mov edx, ebx
shl ecx, 4
add edx, dword [ebp + 0x13c]
add ecx, edi
mov dword [esp + 0xc], eax
mov dword [esp + 8], esi
mov edi, dword [esp + 0x270]
mov dword [esp + 0x220], ecx
mov esi, dword [esp + 0xcc]
mov ecx, dword [edi + 4]
mov edi, dword [esp + 0x68]
sar esi, 1
sar edi, 1
mov eax, dword [esp + 0x220]
imul edi, dword [esp + 0x27c]
add ecx, esi
mov dword [esp], eax
add ecx, edi
mov dword [esp + 4], ecx
call dword [edx + 0x10]
mov edx, dword [esp + 0x21c]
mov ecx, dword [esp + 0x27c]
add ebx, dword [ebp + 0x13c]
mov eax, dword [esp + 0x270]
mov dword [esp + 0xc], edx
mov dword [esp + 8], ecx
add esi, dword [eax + 8]
add esi, edi
mov dword [esp + 4], esi
mov esi, dword [esp + 0x220]
add esi, 8
mov dword [esp], esi
call dword [ebx + 0x10]
mov ebx, dword [esp + 0x21c]
mov edx, dword [esp + 0x27c]
mov dword [esp + 0x10], ebx
mov dword [esp + 0xc], edx
mov ecx, dword [esp + 0x26c]
mov edi, dword [ecx + 4]
mov ebx, dword [esp + 0x2d8]
mov eax, dword [esp + 0x220]
mov dword [esp + 8], edi
mov dword [esp], ebx
mov dword [esp + 4], eax
call dword [esp + 0x2c8]
mov edx, dword [esp + 0x21c]
mov ecx, dword [esp + 0x27c]
mov ebx, dword [esp + 0x268]
mov dword [esp + 0x10], edx
mov dword [esp + 0xc], ecx
mov edi, dword [esp + 0x26c]
add ebx, eax
mov eax, dword [edi + 8]
mov dword [esp + 4], esi
mov esi, dword [esp + 0x2d8]
mov dword [esp + 8], eax
mov dword [esp], esi
call dword [esp + 0x2c8]
add ebx, eax
mov dword [esp + 0x268], ebx
jmp 0x8f12d9
mov eax, ecx
sub eax, dword [esp + 0x264]
mov ebx, eax
imul ebx, dword [ebp + 8]
mov eax, ebx
cdq
idiv dword [esp + 0x264]
mov edx, dword [esp + 0x274]
test edx, edx
mov dword [esp + 0x244], eax
jne 0x8f10eb
sub ecx, dword [esp + 0x264]
mov ebx, dword [ebp + 0xc]
imul ebx, ecx
mov eax, ebx
cdq
idiv dword [esp + 0x264]
mov dword [esp + 0x240], eax
jmp 0x8f10f7
mov ecx, dword [esp + 0x290]
xor edx, edx
mov eax, dword [esp + 0x28c]
add ecx, dword [esp + 0x2c4]
mov edi, ecx
sub edi, dword [esp + 0x2b4]
cmovns edx, edi
sub eax, dword [esp + 0x2b8]
add eax, 1
mov dword [esp + 0x34], edx
cmp eax, dword [esp + 0x2c4]
cmovg eax, dword [esp + 0x2c4]
cmp edx, eax
mov dword [esp + 0x38], eax
jge 0x8f1e0c
mov eax, dword [esp + 0x308]
mov esi, dword [esp + 0x58]
mov edx, dword [esp + 0x308]
and eax, 2
add esi, ebp
and edx, 1
mov dword [esp + 0x8c], eax
mov dword [esp + 0x88], esi
mov eax, dword [esp + 0x34]
mov esi, dword [esp + 0x28c]
neg eax
mov dword [esp + 0x90], edx
mov edi, dword [esp + 0x54]
mov edx, dword [esp + 0x28c]
sub esi, dword [esp + 0x34]
add edx, eax
add edi, ebp
add eax, ecx
shl esi, 0xb
mov dword [esp + 0x84], edi
mov dword [esp + 0x80], edx
mov dword [esp + 0x7c], eax
mov dword [esp + 0x78], esi
jmp 0x8f1b31
mov esi, dword [esp + 0x7c]
cmp dword [ebp + 0x90], esi
jg 0x8f4047
mov edx, dword [ebp + 0x94]
movzx ecx, byte [esp + 0xbc]
shl edx, cl
cmp edx, dword [esp + 0x208]
jl 0x8f4047
mov eax, dword [esp + 0x80]
cmp dword [ebp + 0x98], eax
jg 0x8f4047
mov ebx, dword [ebp + 0x9c]
shl ebx, cl
cmp ebx, dword [esp + 0x204]
jl 0x8f4047
mov esi, dword [esp + 0x90]
mov ecx, dword [esp + 0x2d8]
mov edi, dword [esp + 0x2d8]
add esi, esi
movzx ebx, word [ecx + 0x27b0]
movzx ecx, word [edi + 0x27b2]
add esi, 1
cmp dword [edi + 0x1d40], 1
mov dword [esp + 0x1f4], ebx
mov dword [esp + 0x1f0], esi
je 0x8f2f30
mov esi, dword [esp + 0x208]
mov edi, dword [esp + 0x204]
mov ebx, dword [esp + 0x208]
add esi, dword [ebp + 0x28]
add edi, dword [ebp + 0x2c]
test ebx, ebx
je 0x8f27ec
mov eax, esi
sub eax, dword [ebp + 8]
mov edx, dword [esp + 0x204]
mov dword [esp + 0x1d4], eax
test edx, edx
je 0x8f27c9
mov ecx, edi
sub ecx, dword [ebp + 0xc]
mov dword [esp + 0x1d0], ecx
mov edx, dword [esp + 0x1f0]
mov eax, dword [esp + 0x1f0]
movzx ecx, byte [esp + 0xbc]
and edx, edi
and eax, esi
shl edx, cl
lea ebx, [eax + edx]
mov eax, dword [esp + 0x1d4]
mov edx, dword [esp + 0x1d0]
and eax, dword [esp + 0x1f0]
and dword [esp + 0x1f0], edx
mov dword [esp + 0x1cc], ebx
shl dword [esp + 0x1f0], cl
mov ecx, dword [esp + 0x90]
add eax, dword [esp + 0x1f0]
test ecx, ecx
mov dword [esp + 0x1c8], eax
jne 0x8f36d9
mov edx, dword [esp + 0x2d8]
sar esi, 1
mov ecx, dword [edx + 0x2018]
mov ebx, esi
mov dword [esp + 0x1bc], esi
shl ecx, 4
add ebx, ecx
cmp ebx, 0xfffffff0
jl 0x8f4155
mov esi, dword [esp + 0x2d8]
mov eax, edi
mov edx, dword [esi + 0x201c]
sar eax, 1
shl edx, 4
lea edi, [eax + edx]
cmp edi, 0xfffffff0
jl 0x8f4171
mov esi, dword [esp + 0x2d8]
mov esi, dword [esi + 4]
cmp ebx, esi
mov dword [esp + 0x1b8], esi
jg 0x8f418d
mov esi, dword [esp + 0x2d8]
mov ebx, dword [esi + 8]
cmp edi, ebx
mov dword [esp + 0x1b4], ebx
jg 0x8f41a9
mov esi, dword [esp + 0x1d4]
sar esi, 1
lea ecx, [esi + ecx]
cmp ecx, 0xfffffff0
jl 0x8f41e1
mov ebx, dword [esp + 0x1d0]
sar ebx, 1
lea edx, [ebx + edx]
cmp edx, 0xfffffff0
jl 0x8f4219
cmp ecx, dword [esp + 0x1b8]
jg 0x8f41fd
cmp edx, dword [esp + 0x1b4]
jg 0x8f41c5
mov edi, dword [esp + 0x210]
mov edx, dword [ebp + 0x13c]
mov ecx, dword [esp + 0x200]
mov dword [esp + 8], edi
mov dword [esp + 0xc], 0x10
imul eax, edi
mov ecx, dword [ecx]
mov edi, dword [esp + 0x1cc]
add dword [esp + 0x1bc], ecx
add eax, dword [esp + 0x1bc]
mov dword [esp + 4], eax
mov eax, dword [ebp + 0x58]
mov dword [esp], eax
call dword [edx + edi*4]
mov eax, dword [esp + 0x210]
mov edi, dword [ebp + 0x140]
mov ecx, dword [esp + 0x200]
mov dword [esp + 0xc], 0x10
mov dword [esp + 8], eax
add esi, dword [ecx + 0x20]
imul ebx, eax
mov ecx, dword [esp + 0x1c8]
lea edx, [esi + ebx]
mov dword [esp + 4], edx
mov eax, dword [ebp + 0x58]
mov dword [esp], eax
call dword [edi + ecx*4]
mov edi, dword [esp + 0x210]
mov dword [esp + 0x10], 0x10
mov eax, dword [esp + 0x1fc]
mov dword [esp + 0xc], edi
mov ebx, dword [esp + 0x2d8]
mov edx, dword [eax]
mov dword [esp + 8], edx
mov esi, dword [ebp + 0x58]
mov dword [esp], ebx
mov dword [esp + 4], esi
call dword [esp + 0x2cc]
mov dword [esp + 0x1f8], eax
mov edx, dword [esp + 0x214]
mov esi, dword [esp + 0x218]
mov edi, dword [esp + 0x2a0]
mov dword [edi + edx*4], esi
mov ebx, dword [esp + 0x2c0]
mov edi, dword [esp + 0x1f8]
mov dword [ebx + edx*4], edi
movzx ecx, byte [esp + 0x29c]
mov eax, dword [esp + 0x7c]
mov ebx, dword [esp + 0x80]
shl eax, cl
mov esi, dword [esp + 0x2ac]
shl ebx, cl
sub eax, dword [esp + 0x2a8]
sub ebx, dword [esp + 0x2a4]
movzx edx, byte [esi + eax]
movzx eax, byte [esi + ebx]
mov ebx, dword [esp + 0x2d4]
mov esi, dword [esp + 0x80]
lea ecx, [edx + eax]
mov edx, dword [ebx]
mov eax, dword [ebx + 4]
imul ecx, dword [esp + 0x2d0]
mov ebx, dword [esp + 0x7c]
add ecx, edi
mov edi, dword [esp + 0x2f0]
cmp ecx, edi
cmovl edi, ecx
cmovl edx, ebx
cmovl eax, esi
mov ecx, dword [esp + 0x2d4]
mov dword [esp + 0x2f0], edi
mov dword [esp + 0xd0], edx
mov dword [ecx], edx
mov ebx, eax
mov dword [ecx + 4], eax
add dword [esp + 0x34], 1
mov ecx, dword [esp + 0x38]
sub dword [esp + 0x78], 0x800
sub dword [esp + 0x7c], 1
sub dword [esp + 0x80], 1
cmp dword [esp + 0x34], ecx
jge 0x8f1e0c
mov edi, dword [esp + 0x7c]
mov edx, dword [esp + 0x78]
mov eax, dword [esp + 0x80]
add edx, dword [esp + 0x7c]
lea esi, [edi + eax*8]
mov ecx, dword [esp + 0x2bc]
add edx, dword [esp + 0x298]
and esi, 0x3f
cmp edi, ecx
mov dword [esp + 0x218], edx
mov dword [esp + 0x214], esi
jl 0x8f40e5
mov ecx, dword [esp + 0x2b4]
cmp dword [esp + 0x7c], ecx
jg 0x8f4101
mov edi, dword [esp + 0x2b8]
cmp dword [esp + 0x80], edi
jl 0x8f411d
mov esi, dword [esp + 0x2b0]
cmp dword [esp + 0x80], esi
jg 0x8f4139
mov edx, dword [esp + 0x218]
mov ecx, dword [esp + 0x214]
mov eax, dword [esp + 0x2a0]
cmp dword [eax + ecx*4], edx
je 0x8f1b09
mov eax, dword [esp + 0x90]
mov edi, dword [ebp + 0x128]
mov ebx, dword [ebp + 0x12c]
add eax, 1
mov dword [esp + 0x210], edi
mov dword [esp + 0x20c], ebx
mov ecx, eax
mov edx, dword [esp + 0x7c]
mov esi, dword [esp + 0x80]
mov edi, dword [esp + 0x88]
mov ebx, dword [esp + 0x84]
shl edx, cl
shl esi, cl
add edi, 0xe8
add ebx, 0xa8
test byte [esp + 0x308], 4
mov dword [esp + 0xbc], eax
mov dword [esp + 0x208], edx
mov dword [esp + 0x204], esi
mov dword [esp + 0x200], edi
mov dword [esp + 0x1fc], ebx
jne 0x8f1793
mov ecx, dword [esp + 0x210]
mov edx, dword [esp + 0x304]
mov ebx, dword [esp + 0x88]
mov dword [esp + 0xc], ecx
mov dword [esp + 0x10], edx
mov eax, dword [esp + 0x7c]
mov edi, dword [esp + 0x80]
add eax, dword [ebx + 0xe8]
mov esi, dword [esp + 0x84]
imul edi, ecx
mov ebx, dword [esp + 0x2d8]
add eax, edi
mov dword [esp + 8], eax
mov edx, dword [esi + 0xa8]
mov dword [esp], ebx
mov dword [esp + 4], edx
call dword [esp + 0x2cc]
mov ecx, dword [esp + 0x8c]
test ecx, ecx
mov dword [esp + 0x1f8], eax
je 0x8f1a5a
mov eax, dword [esp + 0x7c]
mov esi, dword [esp + 0x80]
mov edx, dword [esp + 0x300]
and eax, 1
and esi, 1
shl edx, 4
lea ebx, [eax + esi*2]
mov ecx, dword [esp + 0x210]
mov edi, dword [ebp + 0x58]
lea ebx, [edx + ebx*4]
mov eax, dword [esp + 0x21c]
mov esi, dword [esp + 0x20c]
mov edx, ebx
shl ecx, 4
add edx, dword [ebp + 0x13c]
add ecx, edi
mov dword [esp + 0xc], eax
mov dword [esp + 8], esi
mov edi, dword [esp + 0x200]
mov dword [esp + 0x1b0], ecx
mov esi, dword [esp + 0x7c]
mov ecx, dword [edi + 4]
mov edi, dword [esp + 0x80]
sar esi, 1
sar edi, 1
mov eax, dword [esp + 0x1b0]
imul edi, dword [esp + 0x20c]
add ecx, esi
mov dword [esp], eax
add ecx, edi
mov dword [esp + 4], ecx
call dword [edx + 0x10]
mov edx, dword [esp + 0x21c]
mov ecx, dword [esp + 0x20c]
add ebx, dword [ebp + 0x13c]
mov eax, dword [esp + 0x200]
mov dword [esp + 0xc], edx
mov dword [esp + 8], ecx
add esi, dword [eax + 8]
add esi, edi
mov dword [esp + 4], esi
mov esi, dword [esp + 0x1b0]
add esi, 8
mov dword [esp], esi
call dword [ebx + 0x10]
mov ebx, dword [esp + 0x21c]
mov edx, dword [esp + 0x20c]
mov dword [esp + 0x10], ebx
mov dword [esp + 0xc], edx
mov ecx, dword [esp + 0x1fc]
mov edi, dword [ecx + 4]
mov ebx, dword [esp + 0x2d8]
mov eax, dword [esp + 0x1b0]
mov dword [esp + 8], edi
mov dword [esp], ebx
mov dword [esp + 4], eax
call dword [esp + 0x2c8]
mov edx, dword [esp + 0x21c]
mov ecx, dword [esp + 0x20c]
mov ebx, dword [esp + 0x1f8]
mov dword [esp + 0x10], edx
mov dword [esp + 0xc], ecx
mov edi, dword [esp + 0x1fc]
add ebx, eax
mov eax, dword [edi + 8]
mov dword [esp + 4], esi
mov esi, dword [esp + 0x2d8]
mov dword [esp + 8], eax
mov dword [esp], esi
call dword [esp + 0x2c8]
add ebx, eax
mov dword [esp + 0x1f8], ebx
jmp 0x8f1a5a
mov edi, dword [esp + 0x2c4]
xor edx, edx
mov eax, dword [esp + 0x290]
sub edi, dword [esp + 0x28c]
add edi, dword [esp + 0x2b8]
cmovns edx, edi
sub eax, dword [esp + 0x2bc]
add eax, 1
mov dword [esp + 0x2c], edx
cmp eax, dword [esp + 0x2c4]
cmovg eax, dword [esp + 0x2c4]
cmp edx, eax
mov dword [esp + 0x30], eax
jge 0x8f280a
mov edi, dword [esp + 0x308]
mov edx, dword [esp + 0x308]
mov eax, dword [esp + 0x50]
mov ecx, dword [esp + 0x4c]
mov esi, dword [esp + 0x290]
and edi, 1
and edx, 2
add eax, ebp
add ecx, ebp
sub esi, dword [esp + 0x2c]
mov dword [esp + 0xa4], edi
mov dword [esp + 0xa0], edx
mov dword [esp + 0x9c], eax
mov dword [esp + 0x98], ecx
mov dword [esp + 0x94], esi
jmp 0x8f2246
mov esi, dword [esp + 0x94]
cmp dword [ebp + 0x90], esi
jg 0x8f4047
mov edx, dword [ebp + 0x94]
shl edx, cl
cmp edx, dword [esp + 0x19c]
jl 0x8f4047
cmp dword [ebp + 0x98], edi
jg 0x8f4047
mov edi, dword [ebp + 0x9c]
shl edi, cl
cmp edi, ebx
jl 0x8f4047
mov eax, dword [esp + 0xa4]
mov esi, dword [esp + 0x2d8]
mov ebx, dword [esp + 0x2d8]
add eax, eax
movzx ebx, word [ebx + 0x27b0]
movzx ecx, word [esi + 0x27b2]
add eax, 1
cmp dword [esi + 0x1d40], 1
mov dword [esp + 0x188], ebx
mov dword [esp + 0x184], eax
je 0x8f3435
mov esi, dword [esp + 0x19c]
mov ebx, dword [esp + 0x198]
mov edi, dword [esp + 0x19c]
add esi, dword [ebp + 0x28]
add ebx, dword [ebp + 0x2c]
test edi, edi
je 0x8f3410
mov edx, esi
sub edx, dword [ebp + 8]
mov dword [esp + 0x168], edx
mov edx, dword [esp + 0x198]
test edx, edx
je 0x8f33ed
mov ecx, ebx
sub ecx, dword [ebp + 0xc]
mov dword [esp + 0x164], ecx
mov edx, dword [esp + 0x184]
mov eax, dword [esp + 0x184]
movzx ecx, byte [esp + 0xd4]
and edx, ebx
and eax, esi
shl edx, cl
lea edi, [eax + edx]
mov eax, dword [esp + 0x168]
mov edx, dword [esp + 0x164]
and eax, dword [esp + 0x184]
and dword [esp + 0x184], edx
mov dword [esp + 0x160], edi
shl dword [esp + 0x184], cl
mov ecx, dword [esp + 0xa4]
add eax, dword [esp + 0x184]
test ecx, ecx
mov dword [esp + 0x15c], eax
jne 0x8f3bd7
sar esi, 1
mov dword [esp + 0x150], esi
mov esi, dword [esp + 0x2d8]
mov ecx, dword [esi + 0x2018]
mov esi, dword [esp + 0x150]
shl ecx, 4
add esi, ecx
cmp esi, 0xfffffff0
jl 0x8f4155
mov eax, ebx
mov ebx, dword [esp + 0x2d8]
mov edx, dword [ebx + 0x201c]
sar eax, 1
shl edx, 4
lea edi, [eax + edx]
cmp edi, 0xfffffff0
jl 0x8f4171
mov ebx, dword [esp + 0x2d8]
mov ebx, dword [ebx + 4]
cmp esi, ebx
mov dword [esp + 0x14c], ebx
jg 0x8f418d
mov ebx, dword [esp + 0x2d8]
mov esi, dword [ebx + 8]
cmp edi, esi
mov dword [esp + 0x148], esi
jg 0x8f41a9
mov esi, dword [esp + 0x168]
sar esi, 1
lea ecx, [esi + ecx]
cmp ecx, 0xfffffff0
jl 0x8f41e1
mov ebx, dword [esp + 0x164]
sar ebx, 1
lea edx, [ebx + edx]
cmp edx, 0xfffffff0
jl 0x8f4219
cmp ecx, dword [esp + 0x14c]
jg 0x8f41fd
cmp edx, dword [esp + 0x148]
jg 0x8f41c5
mov edi, dword [esp + 0x1a4]
mov edx, dword [ebp + 0x13c]
mov ecx, dword [esp + 0x194]
mov dword [esp + 8], edi
mov dword [esp + 0xc], 0x10
imul eax, edi
mov ecx, dword [ecx]
add dword [esp + 0x150], ecx
mov ecx, dword [esp + 0x160]
add eax, dword [esp + 0x150]
mov dword [esp + 4], eax
mov eax, dword [ebp + 0x58]
mov dword [esp], eax
call dword [edx + ecx*4]
mov eax, dword [esp + 0x1a4]
mov edx, dword [ebp + 0x140]
mov edi, dword [esp + 0x194]
mov dword [esp + 8], eax
mov dword [esp + 0xc], 0x10
add esi, dword [edi + 0x20]
imul ebx, eax
mov eax, dword [esp + 0x15c]
lea ecx, [esi + ebx]
mov dword [esp + 4], ecx
mov edi, dword [ebp + 0x58]
mov dword [esp], edi
call dword [edx + eax*4]
mov edi, dword [esp + 0x1a4]
mov dword [esp + 0x10], 0x10
mov eax, dword [esp + 0x190]
mov dword [esp + 0xc], edi
mov esi, dword [esp + 0x2d8]
mov edx, dword [eax]
mov dword [esp + 8], edx
mov ebx, dword [ebp + 0x58]
mov dword [esp], esi
mov dword [esp + 4], ebx
call dword [esp + 0x2cc]
mov dword [esp + 0x18c], eax
mov edx, dword [esp + 0x1a8]
mov edi, dword [esp + 0x1ac]
mov ecx, dword [esp + 0x2a0]
mov dword [ecx + edx*4], edi
movzx ecx, byte [esp + 0x29c]
mov edi, dword [esp + 0x94]
mov esi, dword [esp + 0x18c]
mov eax, dword [esp + 0x2c0]
shl edi, cl
mov dword [eax + edx*4], esi
sub edi, dword [esp + 0x2a8]
mov ebx, dword [esp + 0x2ac]
movzx edx, byte [ebx + edi]
mov ebx, dword [esp + 0x28c]
mov edi, dword [esp + 0x2d4]
sub ebx, dword [esp + 0x2c4]
add ebx, dword [esp + 0x2c]
mov esi, ebx
shl esi, cl
mov ecx, dword [esp + 0x2ac]
sub esi, dword [esp + 0x2a4]
movzx eax, byte [ecx + esi]
mov esi, dword [esp + 0x94]
lea ecx, [edx + eax]
mov edx, dword [edi]
mov eax, dword [edi + 4]
imul ecx, dword [esp + 0x2d0]
mov edi, dword [esp + 0x2f0]
add ecx, dword [esp + 0x18c]
cmp ecx, edi
cmovl edi, ecx
cmovl edx, esi
cmovl eax, ebx
mov dword [esp + 0x2f0], edi
mov edi, dword [esp + 0x2d4]
mov dword [esp + 0xd0], edx
mov ebx, eax
mov dword [edi], edx
mov dword [edi + 4], eax
add dword [esp + 0x2c], 1
mov eax, dword [esp + 0x30]
sub dword [esp + 0x94], 1
cmp dword [esp + 0x2c], eax
jge 0x8f280a
mov ecx, dword [esp + 0x28c]
mov esi, dword [esp + 0x2c]
mov eax, dword [esp + 0x94]
sub ecx, dword [esp + 0x2c4]
lea edi, [ecx + esi]
mov esi, dword [esp + 0x2bc]
mov edx, edi
lea ecx, [eax + edi*8]
shl edx, 0xb
and ecx, 0x3f
add edx, dword [esp + 0x94]
mov dword [esp + 0x1a8], ecx
add edx, dword [esp + 0x298]
cmp dword [esp + 0x94], esi
mov dword [esp + 0x1ac], edx
jl 0x8f4235
mov eax, dword [esp + 0x2b4]
cmp dword [esp + 0x94], eax
jg 0x8f4251
cmp edi, dword [esp + 0x2b8]
jl 0x8f426d
cmp edi, dword [esp + 0x2b0]
jg 0x8f4289
mov esi, dword [esp + 0x1ac]
mov edx, dword [esp + 0x1a8]
mov ecx, dword [esp + 0x2a0]
cmp dword [ecx + edx*4], esi
je 0x8f222b
mov ecx, dword [esp + 0xa4]
mov ebx, dword [esp + 0x94]
mov eax, dword [ebp + 0x128]
add ecx, 1
mov dword [esp + 0x1a4], eax
mov esi, dword [esp + 0x9c]
shl ebx, cl
mov dword [esp + 0xd4], ecx
mov eax, dword [esp + 0x98]
mov dword [esp + 0x19c], ebx
movzx ecx, byte [esp + 0xd4]
mov ebx, edi
shl ebx, cl
add esi, 0xe8
add eax, 0xa8
mov edx, dword [ebp + 0x12c]
test byte [esp + 0x308], 4
mov dword [esp + 0x198], ebx
mov dword [esp + 0x1a0], edx
mov dword [esp + 0x194], esi
mov dword [esp + 0x190], eax
jne 0x8f1ea9
mov ecx, dword [esp + 0x1a4]
mov edx, dword [esp + 0x304]
mov ebx, dword [esp + 0x9c]
mov dword [esp + 0x10], edx
mov dword [esp + 0xc], ecx
mov esi, ecx
mov eax, dword [esp + 0x94]
imul esi, edi
mov edx, dword [esp + 0x98]
add eax, dword [ebx + 0xe8]
add eax, esi
mov esi, dword [esp + 0x2d8]
mov dword [esp + 8], eax
mov ebx, dword [edx + 0xa8]
mov dword [esp], esi
mov dword [esp + 4], ebx
call dword [esp + 0x2cc]
mov ecx, dword [esp + 0xa0]
test ecx, ecx
mov dword [esp + 0x18c], eax
je 0x8f2164
mov eax, dword [esp + 0x94]
mov ebx, edi
mov esi, dword [esp + 0x1a4]
and eax, 1
mov edx, dword [esp + 0x300]
and ebx, 1
mov ecx, dword [ebp + 0x58]
lea ebx, [eax + ebx*2]
shl edx, 4
shl esi, 4
lea ebx, [edx + ebx*4]
mov eax, dword [esp + 0x21c]
add esi, ecx
mov edx, ebx
mov ecx, dword [esp + 0x194]
mov dword [esp + 0x144], esi
mov esi, dword [esp + 0x1a0]
add edx, dword [ebp + 0x13c]
mov dword [esp + 8], esi
mov dword [esp + 0xc], eax
mov esi, dword [esp + 0x94]
mov eax, dword [ecx + 4]
sar esi, 1
sar edi, 1
imul edi, dword [esp + 0x1a0]
add eax, esi
add eax, edi
mov dword [esp + 4], eax
mov eax, dword [esp + 0x144]
mov dword [esp], eax
call dword [edx + 0x10]
mov edx, dword [esp + 0x21c]
mov ecx, dword [esp + 0x1a0]
add ebx, dword [ebp + 0x13c]
mov eax, dword [esp + 0x194]
mov dword [esp + 0xc], edx
mov dword [esp + 8], ecx
add esi, dword [eax + 8]
add esi, edi
mov dword [esp + 4], esi
mov esi, dword [esp + 0x144]
add esi, 8
mov dword [esp], esi
call dword [ebx + 0x10]
mov ebx, dword [esp + 0x21c]
mov edi, dword [esp + 0x1a0]
mov dword [esp + 0x10], ebx
mov dword [esp + 0xc], edi
mov edx, dword [esp + 0x190]
mov ecx, dword [edx + 4]
mov ebx, dword [esp + 0x2d8]
mov eax, dword [esp + 0x144]
mov dword [esp + 8], ecx
mov dword [esp], ebx
mov dword [esp + 4], eax
call dword [esp + 0x2c8]
mov edi, dword [esp + 0x21c]
mov edx, dword [esp + 0x1a0]
mov dword [esp + 0x10], edi
mov ebx, dword [esp + 0x18c]
mov dword [esp + 0xc], edx
mov ecx, dword [esp + 0x190]
add ebx, eax
mov edi, dword [esp + 0x2d8]
mov eax, dword [ecx + 8]
mov dword [esp + 4], esi
mov dword [esp], edi
mov dword [esp + 8], eax
call dword [esp + 0x2c8]
add ebx, eax
mov dword [esp + 0x18c], ebx
jmp 0x8f2164
sub ecx, ebx
mov ebx, dword [esp + 0x40]
mov dword [esp + 0x25c], 0
add ebx, 4
mov dword [esp + 0x258], ecx
mov dword [esp + 0x254], ebx
mov eax, dword [esp + 0x25c]
mov esi, dword [esp + 0x278]
mov edi, dword [esp + 0x274]
mov edx, dword [esp + 0x278]
add edi, dword [ebp + eax*8 + 0x2c]
add esi, dword [ebp + eax*8 + 0x28]
test edx, edx
mov dword [esp + 0x20], edi
je 0x8f26bd
mov ebx, esi
mov edi, dword [esp + 0x274]
sub ebx, dword [ebp + eax*8 + 8]
test edi, edi
je 0x8f26f9
mov edi, dword [esp + 0x20]
mov eax, dword [esp + 0x25c]
sub edi, dword [ebp + eax*8 + 0xc]
mov eax, dword [esp + 0x260]
movzx ecx, byte [esp + 0xc0]
mov edx, dword [esp + 0x260]
and eax, dword [esp + 0x20]
and edx, esi
shl eax, cl
lea eax, [edx + eax]
mov edx, dword [esp + 0x260]
mov dword [esp + 0x250], eax
mov eax, dword [esp + 0x260]
and edx, ebx
and eax, edi
shl eax, cl
mov ecx, dword [esp + 0x25c]
lea eax, [edx + eax]
sar ecx, 1
mov edx, dword [esp + 0x25c]
imul ecx, dword [esp + 0x280]
and edx, 1
mov dword [esp + 0x24c], eax
add edx, ecx
mov eax, dword [ebp + 0x58]
lea ecx, [eax + edx*8]
mov eax, dword [esp + 0x40]
test eax, eax
mov dword [esp + 0x248], ecx
je 0x8f272f
mov eax, dword [esp + 0x280]
mov edx, dword [ebp + 0x144]
mov ecx, dword [esp + 0x270]
mov dword [esp + 8], eax
sar dword [esp + 0x20], 2
sar esi, 2
add esi, dword [ecx]
mov ecx, dword [esp + 0x20]
sar ebx, 2
imul ecx, eax
sar edi, 2
lea eax, [esi + ecx]
mov ecx, dword [esp + 0x250]
mov dword [esp + 4], eax
mov eax, dword [esp + 0x248]
mov dword [esp], eax
call dword [edx + ecx*4 + 0x40]
mov eax, dword [esp + 0x280]
mov edx, dword [ebp + 0x148]
mov esi, dword [esp + 0x270]
mov dword [esp + 8], eax
imul edi, eax
add ebx, dword [esi + 0x20]
mov esi, dword [esp + 0x24c]
lea ecx, [ebx + edi]
mov ebx, dword [esp + 0x248]
mov dword [esp + 4], ecx
mov dword [esp], ebx
call dword [edx + esi*4 + 0x40]
add dword [esp + 0x25c], 1
cmp dword [esp + 0x25c], 3
jle 0x8f254d
jmp 0x8f129a
mov ebx, dword [esp + 0x25c]
mov eax, dword [esp + 0x258]
movzx ecx, byte [esp + 0x254]
imul eax, dword [ebp + ebx*8 + 8]
mov edi, dword [esp + 0x274]
cdq
idiv dword [esp + 0x264]
mov edx, ebx
and edx, 1
shl edx, cl
test edi, edi
lea ebx, [eax + edx]
jne 0x8f2592
mov edi, dword [esp + 0x25c]
mov eax, dword [esp + 0x258]
movzx ecx, byte [esp + 0x254]
imul eax, dword [ebp + edi*8 + 0xc]
cdq
idiv dword [esp + 0x264]
mov edx, dword [esp + 0x25c]
sar edx, 1
shl edx, cl
lea edi, [eax + edx]
jmp 0x8f25a1
mov ecx, dword [esp + 0x280]
mov edx, dword [ebp + 0x13c]
mov eax, dword [esp + 0x270]
mov dword [esp + 8], ecx
sar dword [esp + 0x20], 1
mov dword [esp + 0xc], 8
sar esi, 1
sar ebx, 1
sar edi, 1
add esi, dword [eax]
mov eax, dword [esp + 0x20]
imul eax, ecx
lea ecx, [esi + eax]
mov dword [esp + 0x20], eax
mov eax, dword [esp + 0x248]
mov dword [esp + 4], ecx
mov dword [esp], eax
mov esi, dword [esp + 0x250]
call dword [edx + esi*4 + 0x10]
mov eax, dword [esp + 0x280]
mov edx, dword [ebp + 0x140]
mov ecx, dword [esp + 0x270]
mov dword [esp + 0xc], 8
mov dword [esp + 8], eax
add ebx, dword [ecx + 0x20]
imul edi, eax
lea esi, [ebx + edi]
mov ebx, dword [esp + 0x248]
mov edi, dword [esp + 0x24c]
mov dword [esp + 4], esi
mov dword [esp], ebx
call dword [edx + edi*4 + 0x10]
jmp 0x8f26a2
sub ecx, dword [esp + 0x1f4]
mov ebx, dword [ebp + 0xc]
imul ebx, ecx
mov eax, ebx
cdq
idiv dword [esp + 0x1f4]
mov dword [esp + 0x1d0], eax
jmp 0x8f1875
mov eax, ecx
sub eax, dword [esp + 0x1f4]
mov ebx, eax
imul ebx, dword [ebp + 8]
mov eax, ebx
cdq
idiv dword [esp + 0x1f4]
jmp 0x8f1853
mov ecx, dword [esp + 0x2c4]
xor edx, edx
mov esi, dword [esp + 0x2b0]
sub ecx, dword [esp + 0x290]
add ecx, dword [esp + 0x2bc]
cmovns edx, ecx
sub esi, dword [esp + 0x28c]
add esi, 1
mov dword [esp + 0x24], edx
cmp esi, dword [esp + 0x2c4]
cmovg esi, dword [esp + 0x2c4]
cmp edx, esi
mov dword [esp + 0x28], esi
jge 0x8f3de2
mov edi, dword [esp + 0x24]
mov ecx, dword [esp + 0x308]
mov edx, dword [esp + 0x308]
mov esi, dword [esp + 0x48]
mov eax, dword [esp + 0x44]
add edi, dword [esp + 0x28c]
and ecx, 1
and edx, 2
add esi, ebp
add eax, ebp
shl edi, 0xb
mov dword [esp + 0xb8], ecx
mov dword [esp + 0xb4], edx
mov dword [esp + 0xb0], esi
mov dword [esp + 0xac], eax
mov dword [esp + 0xa8], edi
jmp 0x8f2c43
cmp dword [ebp + 0x90], esi
jg 0x8f4047
mov esi, dword [ebp + 0x94]
shl esi, cl
cmp esi, dword [esp + 0x130]
jl 0x8f4047
mov edx, dword [esp + 0xc8]
cmp dword [ebp + 0x98], edx
jg 0x8f4047
mov edi, dword [ebp + 0x9c]
shl edi, cl
cmp edi, dword [esp + 0x12c]
jl 0x8f4047
mov eax, dword [esp + 0xb8]
mov ecx, dword [esp + 0x2d8]
mov esi, dword [esp + 0x2d8]
add eax, eax
movzx ebx, word [ecx + 0x27b0]
movzx ecx, word [esi + 0x27b2]
add eax, 1
cmp dword [esi + 0x1d40], 1
mov dword [esp + 0x11c], ebx
mov dword [esp + 0x118], eax
je 0x8f3933
mov esi, dword [esp + 0x130]
mov edi, dword [esp + 0x12c]
mov ebx, dword [esp + 0x130]
add esi, dword [ebp + 0x28]
add edi, dword [ebp + 0x2c]
test ebx, ebx
je 0x8f3915
mov eax, esi
sub eax, dword [ebp + 8]
mov edx, dword [esp + 0x12c]
mov dword [esp + 0xfc], eax
test edx, edx
je 0x8f38f2
mov ecx, edi
sub ecx, dword [ebp + 0xc]
mov dword [esp + 0xf8], ecx
mov edx, dword [esp + 0x118]
mov eax, dword [esp + 0x118]
movzx ecx, byte [esp + 0xc4]
and edx, edi
and eax, esi
shl edx, cl
lea ebx, [eax + edx]
mov eax, dword [esp + 0xfc]
mov edx, dword [esp + 0xf8]
and eax, dword [esp + 0x118]
and dword [esp + 0x118], edx
mov dword [esp + 0xf4], ebx
shl dword [esp + 0x118], cl
mov ecx, dword [esp + 0xb8]
add eax, dword [esp + 0x118]
test ecx, ecx
mov dword [esp + 0xf0], eax
jne 0x8f3e2e
mov edx, dword [esp + 0x2d8]
sar esi, 1
mov ecx, dword [edx + 0x2018]
mov ebx, esi
mov dword [esp + 0xe4], esi
shl ecx, 4
add ebx, ecx
cmp ebx, 0xfffffff0
jl 0x8f4155
mov esi, dword [esp + 0x2d8]
mov eax, edi
mov edx, dword [esi + 0x201c]
sar eax, 1
shl edx, 4
lea edi, [eax + edx]
cmp edi, 0xfffffff0
jl 0x8f4171
mov esi, dword [esp + 0x2d8]
mov esi, dword [esi + 4]
cmp ebx, esi
mov dword [esp + 0xe0], esi
jg 0x8f418d
mov esi, dword [esp + 0x2d8]
mov ebx, dword [esi + 8]
cmp edi, ebx
mov dword [esp + 0xdc], ebx
jg 0x8f41a9
mov esi, dword [esp + 0xfc]
sar esi, 1
lea ecx, [esi + ecx]
cmp ecx, 0xfffffff0
jl 0x8f41e1
mov ebx, dword [esp + 0xf8]
sar ebx, 1
lea edx, [ebx + edx]
cmp edx, 0xfffffff0
jl 0x8f4219
cmp ecx, dword [esp + 0xe0]
jg 0x8f41fd
cmp edx, dword [esp + 0xdc]
jg 0x8f41c5
mov edi, dword [esp + 0x138]
mov edx, dword [ebp + 0x13c]
mov ecx, dword [esp + 0x128]
mov dword [esp + 8], edi
mov dword [esp + 0xc], 0x10
imul eax, edi
mov ecx, dword [ecx]
mov edi, dword [esp + 0xf4]
add dword [esp + 0xe4], ecx
add eax, dword [esp + 0xe4]
mov dword [esp + 4], eax
mov eax, dword [ebp + 0x58]
mov dword [esp], eax
call dword [edx + edi*4]
mov eax, dword [esp + 0x138]
mov edi, dword [ebp + 0x140]
mov ecx, dword [esp + 0x128]
mov dword [esp + 0xc], 0x10
mov dword [esp + 8], eax
add esi, dword [ecx + 0x20]
imul ebx, eax
mov ecx, dword [esp + 0xf0]
lea edx, [esi + ebx]
mov dword [esp + 4], edx
mov eax, dword [ebp + 0x58]
mov dword [esp], eax
call dword [edi + ecx*4]
mov edi, dword [esp + 0x138]
mov dword [esp + 0x10], 0x10
mov eax, dword [esp + 0x124]
mov dword [esp + 0xc], edi
mov ebx, dword [esp + 0x2d8]
mov edx, dword [eax]
mov dword [esp + 8], edx
mov esi, dword [ebp + 0x58]
mov dword [esp], ebx
mov dword [esp + 4], esi
call dword [esp + 0x2cc]
mov dword [esp + 0x120], eax
mov esi, dword [esp + 0x13c]
mov ecx, dword [esp + 0x140]
mov edi, dword [esp + 0x2a0]
mov edx, dword [esp + 0x120]
mov ebx, dword [esp + 0x2c0]
mov dword [edi + esi*4], ecx
mov dword [ebx + esi*4], edx
mov ebx, dword [esp + 0x290]
movzx ecx, byte [esp + 0x29c]
sub ebx, dword [esp + 0x2c4]
mov edx, dword [esp + 0xc8]
mov edi, dword [esp + 0x2ac]
add ebx, dword [esp + 0x24]
shl edx, cl
mov eax, ebx
sub edx, dword [esp + 0x2a4]
shl eax, cl
sub eax, dword [esp + 0x2a8]
movzx esi, byte [edi + eax]
movzx eax, byte [edi + edx]
mov edi, dword [esp + 0x2d4]
lea ecx, [esi + eax]
mov edx, dword [edi]
mov eax, dword [edi + 4]
imul ecx, dword [esp + 0x2d0]
mov esi, dword [esp + 0x2f0]
mov edi, dword [esp + 0xc8]
add ecx, dword [esp + 0x120]
cmp ecx, esi
cmovl esi, ecx
cmovl edx, ebx
cmovl eax, edi
mov dword [esp + 0x2f0], esi
mov esi, dword [esp + 0x2d4]
mov dword [esp + 0xd0], edx
mov ebx, eax
mov dword [esi], edx
mov dword [esi + 4], eax
add dword [esp + 0x24], 1
mov eax, dword [esp + 0x28]
add dword [esp + 0xa8], 0x800
cmp dword [esp + 0x24], eax
jge 0x8f3de2
mov edi, dword [esp + 0x290]
mov edx, dword [esp + 0x28c]
mov ecx, dword [esp + 0x24]
sub edi, dword [esp + 0x2c4]
add edx, dword [esp + 0x24]
mov eax, dword [esp + 0xa8]
lea esi, [edi + ecx]
mov dword [esp + 0xc8], edx
add eax, esi
lea edi, [esi + edx*8]
add eax, dword [esp + 0x298]
and edi, 0x3f
cmp esi, dword [esp + 0x2bc]
mov dword [esp + 0x140], eax
mov dword [esp + 0x13c], edi
jl 0x8f42a5
cmp esi, dword [esp + 0x2b4]
jg 0x8f42c1
mov edx, dword [esp + 0x2b8]
cmp dword [esp + 0xc8], edx
jl 0x8f42dd
mov eax, dword [esp + 0x2b0]
cmp dword [esp + 0xc8], eax
jg 0x8f42f9
mov edx, dword [esp + 0x140]
mov ecx, dword [esp + 0x13c]
mov edi, dword [esp + 0x2a0]
cmp dword [edi + ecx*4], edx
je 0x8f2c25
mov ecx, dword [esp + 0xb8]
mov eax, dword [ebp + 0x128]
mov ebx, dword [ebp + 0x12c]
add ecx, 1
mov dword [esp + 0x138], eax
mov dword [esp + 0x134], ebx
mov dword [esp + 0xc4], ecx
mov edi, esi
mov edx, dword [esp + 0xc8]
movzx ecx, byte [esp + 0xc4]
mov eax, dword [esp + 0xb0]
mov ebx, dword [esp + 0xac]
shl edi, cl
shl edx, cl
add eax, 0xe8
add ebx, 0xa8
test byte [esp + 0x308], 4
mov dword [esp + 0x130], edi
mov dword [esp + 0x12c], edx
mov dword [esp + 0x128], eax
mov dword [esp + 0x124], ebx
jne 0x8f28aa
mov ecx, dword [esp + 0x138]
mov eax, dword [esp + 0x304]
mov edx, dword [esp + 0xb0]
mov dword [esp + 0x10], eax
mov dword [esp + 0xc], ecx
mov ebx, dword [esp + 0xc8]
mov edi, dword [edx + 0xe8]
imul ebx, ecx
mov eax, dword [esp + 0xac]
add edi, esi
add edi, ebx
mov ebx, dword [esp + 0x2d8]
mov dword [esp + 8], edi
mov edx, dword [eax + 0xa8]
mov dword [esp], ebx
mov dword [esp + 4], edx
call dword [esp + 0x2cc]
mov ecx, dword [esp + 0xb4]
test ecx, ecx
mov dword [esp + 0x120], eax
je 0x8f2b65
mov eax, esi
mov ebx, dword [esp + 0xc8]
mov edx, dword [esp + 0x300]
and eax, 1
and ebx, 1
mov edi, dword [esp + 0x138]
lea ebx, [eax + ebx*2]
shl edx, 4
mov ecx, dword [ebp + 0x58]
lea ebx, [edx + ebx*4]
shl edi, 4
mov eax, dword [esp + 0x21c]
add edi, ecx
mov edx, ebx
mov ecx, dword [esp + 0x134]
add edx, dword [ebp + 0x13c]
mov dword [esp + 0xd8], edi
mov dword [esp + 8], ecx
mov edi, dword [esp + 0x128]
mov dword [esp + 0xc], eax
sar esi, 1
mov eax, dword [edi + 4]
mov edi, dword [esp + 0xc8]
mov ecx, dword [esp + 0xd8]
sar edi, 1
add eax, esi
mov dword [esp], ecx
imul edi, dword [esp + 0x134]
add eax, edi
mov dword [esp + 4], eax
call dword [edx + 0x10]
mov eax, dword [esp + 0x21c]
mov edx, dword [esp + 0x134]
add ebx, dword [ebp + 0x13c]
mov ecx, dword [esp + 0x128]
mov dword [esp + 0xc], eax
mov dword [esp + 8], edx
add esi, dword [ecx + 8]
add esi, edi
mov dword [esp + 4], esi
mov esi, dword [esp + 0xd8]
add esi, 8
mov dword [esp], esi
call dword [ebx + 0x10]
mov ebx, dword [esp + 0x21c]
mov eax, dword [esp + 0x134]
mov dword [esp + 0x10], ebx
mov edx, dword [esp + 0x124]
mov dword [esp + 0xc], eax
mov edi, dword [edx + 4]
mov ecx, dword [esp + 0xd8]
mov ebx, dword [esp + 0x2d8]
mov dword [esp + 8], edi
mov dword [esp + 4], ecx
mov dword [esp], ebx
call dword [esp + 0x2c8]
mov ebx, dword [esp + 0x120]
mov edx, dword [esp + 0x134]
add ebx, eax
mov eax, dword [esp + 0x21c]
mov dword [esp + 0xc], edx
mov dword [esp + 0x10], eax
mov edi, dword [esp + 0x124]
mov ecx, dword [edi + 8]
mov dword [esp + 4], esi
mov esi, dword [esp + 0x2d8]
mov dword [esp + 8], ecx
mov dword [esp], esi
call dword [esp + 0x2c8]
add ebx, eax
mov dword [esp + 0x120], ebx
jmp 0x8f2b65
mov edx, dword [esp + 0x90]
sub ecx, ebx
mov dword [esp + 0x1ec], 0
add edx, 4
mov dword [esp + 0x1e8], ecx
mov dword [esp + 0x1e4], edx
mov eax, dword [esp + 0x1ec]
mov esi, dword [esp + 0x208]
mov edi, dword [esp + 0x204]
mov ebx, dword [esp + 0x208]
add edi, dword [ebp + eax*8 + 0x2c]
add esi, dword [ebp + eax*8 + 0x28]
test ebx, ebx
mov dword [esp + 0x20], edi
je 0x8f30c8
mov ebx, esi
mov edi, dword [esp + 0x204]
sub ebx, dword [ebp + eax*8 + 8]
test edi, edi
je 0x8f3104
mov edi, dword [esp + 0x20]
mov eax, dword [esp + 0x1ec]
sub edi, dword [ebp + eax*8 + 0xc]
mov eax, dword [esp + 0x1f0]
movzx ecx, byte [esp + 0xbc]
mov edx, dword [esp + 0x1f0]
and eax, dword [esp + 0x20]
and edx, esi
shl eax, cl
lea eax, [edx + eax]
mov edx, dword [esp + 0x1f0]
mov dword [esp + 0x1e0], eax
mov eax, dword [esp + 0x1f0]
and edx, ebx
and eax, edi
shl eax, cl
mov ecx, dword [esp + 0x1ec]
lea eax, [edx + eax]
sar ecx, 1
mov edx, dword [esp + 0x1ec]
imul ecx, dword [esp + 0x210]
and edx, 1
mov dword [esp + 0x1dc], eax
add edx, ecx
mov eax, dword [ebp + 0x58]
lea ecx, [eax + edx*8]
mov eax, dword [esp + 0x90]
test eax, eax
mov dword [esp + 0x1d8], ecx
je 0x8f313a
mov eax, dword [esp + 0x210]
mov edx, dword [ebp + 0x144]
mov ecx, dword [esp + 0x200]
mov dword [esp + 8], eax
sar dword [esp + 0x20], 2
sar esi, 2
add esi, dword [ecx]
mov ecx, dword [esp + 0x20]
sar ebx, 2
imul ecx, eax
sar edi, 2
lea eax, [esi + ecx]
mov ecx, dword [esp + 0x1e0]
mov dword [esp + 4], eax
mov eax, dword [esp + 0x1d8]
mov dword [esp], eax
call dword [edx + ecx*4 + 0x40]
mov eax, dword [esp + 0x210]
mov edx, dword [ebp + 0x148]
mov esi, dword [esp + 0x200]
mov dword [esp + 8], eax
imul edi, eax
add ebx, dword [esi + 0x20]
mov esi, dword [esp + 0x1dc]
lea ecx, [ebx + edi]
mov ebx, dword [esp + 0x1d8]
mov dword [esp + 4], ecx
mov dword [esp], ebx
call dword [edx + esi*4 + 0x40]
add dword [esp + 0x1ec], 1
cmp dword [esp + 0x1ec], 3
jle 0x8f2f55
jmp 0x8f1a1b
mov ebx, dword [esp + 0x1ec]
mov eax, dword [esp + 0x1e8]
movzx ecx, byte [esp + 0x1e4]
imul eax, dword [ebp + ebx*8 + 8]
mov edi, dword [esp + 0x204]
cdq
idiv dword [esp + 0x1f4]
mov edx, ebx
and edx, 1
shl edx, cl
test edi, edi
lea ebx, [eax + edx]
jne 0x8f2f9a
mov edi, dword [esp + 0x1ec]
mov eax, dword [esp + 0x1e8]
movzx ecx, byte [esp + 0x1e4]
imul eax, dword [ebp + edi*8 + 0xc]
cdq
idiv dword [esp + 0x1f4]
mov edx, dword [esp + 0x1ec]
sar edx, 1
shl edx, cl
lea edi, [eax + edx]
jmp 0x8f2fa9
mov ecx, dword [esp + 0x210]
mov edx, dword [ebp + 0x13c]
mov eax, dword [esp + 0x200]
mov dword [esp + 8], ecx
sar dword [esp + 0x20], 1
mov dword [esp + 0xc], 8
sar esi, 1
sar ebx, 1
sar edi, 1
add esi, dword [eax]
mov eax, dword [esp + 0x20]
imul eax, ecx
lea ecx, [esi + eax]
mov dword [esp + 0x20], eax
mov eax, dword [esp + 0x1d8]
mov dword [esp + 4], ecx
mov dword [esp], eax
mov esi, dword [esp + 0x1e0]
call dword [edx + esi*4 + 0x10]
mov eax, dword [esp + 0x210]
mov edx, dword [ebp + 0x140]
mov ecx, dword [esp + 0x200]
mov dword [esp + 0xc], 8
mov dword [esp + 8], eax
add ebx, dword [ecx + 0x20]
imul edi, eax
lea esi, [ebx + edi]
mov ebx, dword [esp + 0x1d8]
mov edi, dword [esp + 0x1dc]
mov dword [esp + 4], esi
mov dword [esp], ebx
call dword [edx + edi*4 + 0x10]
jmp 0x8f30ad
mov eax, dword [esp + 0x280]
mov edx, dword [ebp + 0x144]
mov ebx, dword [esp + 0x270]
mov dword [esp + 8], eax
sar esi, 2
mov ecx, dword [esp + 0x280]
mov eax, dword [ebx]
mov ebx, edi
sar ebx, 2
add eax, esi
imul ecx, ebx
add ebx, 8
add eax, ecx
mov dword [esp + 0x234], ecx
mov ecx, dword [esp + 0x23c]
mov dword [esp + 4], eax
mov edi, dword [ebp + 0x58]
mov dword [esp], edi
call dword [edx + ecx*4 + 0x40]
mov eax, dword [esp + 0x280]
mov edx, dword [ebp + 0x144]
mov edi, dword [esp + 0x270]
mov dword [esp + 8], eax
mov ecx, dword [esp + 0x234]
mov eax, dword [edi]
add eax, esi
lea edi, [eax + ecx + 8]
mov dword [esp + 4], edi
mov edi, dword [esp + 0x23c]
mov eax, dword [ebp + 0x58]
add eax, 8
mov dword [esp], eax
call dword [edx + edi*4 + 0x40]
mov ecx, dword [esp + 0x280]
mov edx, dword [ebp + 0x144]
mov eax, dword [esp + 0x270]
mov dword [esp + 8], ecx
imul ebx, ecx
mov edi, dword [eax]
add edi, esi
add ebx, edi
mov edi, dword [esp + 0x280]
mov dword [esp + 4], ebx
shl edi, 3
mov ebx, dword [ebp + 0x58]
add ebx, edi
mov dword [esp], ebx
mov ebx, dword [esp + 0x23c]
call dword [edx + ebx*4 + 0x40]
mov ecx, dword [esp + 0x280]
mov edx, dword [ebp + 0x144]
mov eax, dword [esp + 0x270]
mov dword [esp + 8], ecx
add esi, dword [eax]
add esi, dword [esp + 0x234]
lea ecx, [esi + edi + 8]
mov dword [esp + 4], ecx
mov eax, dword [ebp + 0x58]
add eax, edi
add eax, 8
mov dword [esp], eax
call dword [edx + ebx*4 + 0x40]
mov esi, dword [esp + 0x280]
mov edx, dword [ebp + 0x148]
mov ebx, dword [esp + 0x270]
mov dword [esp + 8], esi
mov esi, dword [esp + 0x244]
mov eax, dword [ebx + 0x20]
mov ebx, dword [esp + 0x240]
sar esi, 2
sar ebx, 2
mov ecx, dword [esp + 0x280]
add eax, esi
imul ecx, ebx
add ebx, 8
add eax, ecx
mov dword [esp + 0x230], ecx
mov ecx, dword [esp + 0x238]
mov dword [esp + 4], eax
mov eax, dword [ebp + 0x58]
mov dword [esp], eax
call dword [edx + ecx*4 + 0x40]
mov eax, dword [esp + 0x280]
mov edx, dword [ebp + 0x148]
mov ecx, dword [esp + 0x270]
mov dword [esp + 8], eax
mov eax, dword [ecx + 0x20]
mov ecx, dword [esp + 0x230]
add eax, esi
lea eax, [eax + ecx + 8]
mov ecx, dword [esp + 0x238]
mov dword [esp + 4], eax
mov eax, dword [ebp + 0x58]
add eax, 8
mov dword [esp], eax
call dword [edx + ecx*4 + 0x40]
mov eax, dword [esp + 0x280]
mov edx, dword [ebp + 0x148]
mov ecx, dword [esp + 0x270]
mov dword [esp + 8], eax
imul ebx, eax
mov eax, dword [ecx + 0x20]
add eax, esi
add ebx, eax
mov dword [esp + 4], ebx
mov ebx, dword [esp + 0x238]
mov eax, dword [ebp + 0x58]
add eax, edi
mov dword [esp], eax
call dword [edx + ebx*4 + 0x40]
mov edx, dword [esp + 0x280]
mov eax, dword [ebp + 0x148]
mov ecx, dword [esp + 0x270]
mov dword [esp + 8], edx
add esi, dword [ecx + 0x20]
add esi, dword [esp + 0x230]
lea esi, [esi + edi + 8]
mov dword [esp + 4], esi
add edi, dword [ebp + 0x58]
add edi, 8
mov dword [esp], edi
call dword [eax + ebx*4 + 0x40]
jmp 0x8f129a
sub ecx, dword [esp + 0x188]
mov edi, dword [ebp + 0xc]
imul edi, ecx
mov eax, edi
cdq
idiv dword [esp + 0x188]
mov dword [esp + 0x164], eax
jmp 0x8f1f7a
mov eax, ecx
sub eax, dword [esp + 0x188]
mov edi, eax
imul edi, dword [ebp + 8]
mov eax, edi
cdq
idiv dword [esp + 0x188]
mov dword [esp + 0x168], eax
jmp 0x8f1f5f
sub ecx, ebx
mov dword [esp + 0x180], 0
mov dword [esp + 0x17c], ecx
mov ecx, dword [esp + 0xa4]
add ecx, 4
mov dword [esp + 0x178], ecx
mov eax, dword [esp + 0x180]
mov esi, dword [esp + 0x19c]
mov edi, dword [esp + 0x198]
mov edx, dword [esp + 0x19c]
add edi, dword [ebp + eax*8 + 0x2c]
add esi, dword [ebp + eax*8 + 0x28]
test edx, edx
mov dword [esp + 0x20], edi
je 0x8f35cd
mov ebx, esi
mov edi, dword [esp + 0x198]
sub ebx, dword [ebp + eax*8 + 8]
test edi, edi
je 0x8f3609
mov edi, dword [esp + 0x20]
mov eax, dword [esp + 0x180]
sub edi, dword [ebp + eax*8 + 0xc]
mov eax, dword [esp + 0x184]
movzx ecx, byte [esp + 0xd4]
mov edx, dword [esp + 0x184]
and eax, dword [esp + 0x20]
and edx, esi
shl eax, cl
lea eax, [edx + eax]
mov edx, dword [esp + 0x184]
mov dword [esp + 0x174], eax
mov eax, dword [esp + 0x184]
and edx, ebx
and eax, edi
shl eax, cl
mov ecx, dword [esp + 0x180]
lea eax, [edx + eax]
sar ecx, 1
mov edx, dword [esp + 0x180]
imul ecx, dword [esp + 0x1a4]
and edx, 1
mov dword [esp + 0x170], eax
add edx, ecx
mov eax, dword [ebp + 0x58]
lea ecx, [eax + edx*8]
mov eax, dword [esp + 0xa4]
test eax, eax
mov dword [esp + 0x16c], ecx
je 0x8f363f
mov eax, dword [esp + 0x1a4]
mov edx, dword [ebp + 0x144]
mov ecx, dword [esp + 0x194]
mov dword [esp + 8], eax
sar dword [esp + 0x20], 2
sar esi, 2
add esi, dword [ecx]
mov ecx, dword [esp + 0x20]
sar ebx, 2
imul ecx, eax
sar edi, 2
lea eax, [esi + ecx]
mov ecx, dword [esp + 0x174]
mov dword [esp + 4], eax
mov eax, dword [esp + 0x16c]
mov dword [esp], eax
call dword [edx + ecx*4 + 0x40]
mov eax, dword [esp + 0x1a4]
mov edx, dword [ebp + 0x148]
mov esi, dword [esp + 0x194]
mov dword [esp + 8], eax
imul edi, eax
add ebx, dword [esi + 0x20]
mov esi, dword [esp + 0x170]
lea ecx, [ebx + edi]
mov ebx, dword [esp + 0x16c]
mov dword [esp + 4], ecx
mov dword [esp], ebx
call dword [edx + esi*4 + 0x40]
add dword [esp + 0x180], 1
cmp dword [esp + 0x180], 3
jle 0x8f345a
jmp 0x8f2125
mov ebx, dword [esp + 0x180]
mov eax, dword [esp + 0x17c]
movzx ecx, byte [esp + 0x178]
imul eax, dword [ebp + ebx*8 + 8]
mov edi, dword [esp + 0x198]
cdq
idiv dword [esp + 0x188]
mov edx, ebx
and edx, 1
shl edx, cl
test edi, edi
lea ebx, [eax + edx]
jne 0x8f349f
mov edi, dword [esp + 0x180]
mov eax, dword [esp + 0x17c]
movzx ecx, byte [esp + 0x178]
imul eax, dword [ebp + edi*8 + 0xc]
cdq
idiv dword [esp + 0x188]
mov edx, dword [esp + 0x180]
sar edx, 1
shl edx, cl
lea edi, [eax + edx]
jmp 0x8f34ae
mov ecx, dword [esp + 0x1a4]
mov edx, dword [ebp + 0x13c]
mov eax, dword [esp + 0x194]
mov dword [esp + 8], ecx
sar dword [esp + 0x20], 1
mov dword [esp + 0xc], 8
sar esi, 1
sar ebx, 1
sar edi, 1
add esi, dword [eax]
mov eax, dword [esp + 0x20]
imul eax, ecx
lea ecx, [esi + eax]
mov dword [esp + 0x20], eax
mov eax, dword [esp + 0x16c]
mov dword [esp + 4], ecx
mov dword [esp], eax
mov esi, dword [esp + 0x174]
call dword [edx + esi*4 + 0x10]
mov eax, dword [esp + 0x1a4]
mov edx, dword [ebp + 0x140]
mov ecx, dword [esp + 0x194]
mov dword [esp + 0xc], 8
mov dword [esp + 8], eax
add ebx, dword [ecx + 0x20]
imul edi, eax
lea esi, [ebx + edi]
mov ebx, dword [esp + 0x16c]
mov edi, dword [esp + 0x170]
mov dword [esp + 4], esi
mov dword [esp], ebx
call dword [edx + edi*4 + 0x10]
jmp 0x8f35b2
mov eax, dword [esp + 0x210]
mov edx, dword [ebp + 0x144]
mov ebx, dword [esp + 0x200]
mov dword [esp + 8], eax
sar esi, 2
mov ecx, dword [esp + 0x210]
mov eax, dword [ebx]
mov ebx, edi
sar ebx, 2
add eax, esi
imul ecx, ebx
add ebx, 8
add eax, ecx
mov dword [esp + 0x1c4], ecx
mov ecx, dword [esp + 0x1cc]
mov dword [esp + 4], eax
mov edi, dword [ebp + 0x58]
mov dword [esp], edi
call dword [edx + ecx*4 + 0x40]
mov eax, dword [esp + 0x210]
mov edx, dword [ebp + 0x144]
mov edi, dword [esp + 0x200]
mov dword [esp + 8], eax
mov ecx, dword [esp + 0x1c4]
mov eax, dword [edi]
add eax, esi
lea edi, [eax + ecx + 8]
mov dword [esp + 4], edi
mov edi, dword [esp + 0x1cc]
mov eax, dword [ebp + 0x58]
add eax, 8
mov dword [esp], eax
call dword [edx + edi*4 + 0x40]
mov ecx, dword [esp + 0x210]
mov edx, dword [ebp + 0x144]
mov eax, dword [esp + 0x200]
mov dword [esp + 8], ecx
imul ebx, ecx
mov edi, dword [eax]
add edi, esi
add ebx, edi
mov edi, dword [esp + 0x210]
mov dword [esp + 4], ebx
shl edi, 3
mov ebx, dword [ebp + 0x58]
add ebx, edi
mov dword [esp], ebx
mov ebx, dword [esp + 0x1cc]
call dword [edx + ebx*4 + 0x40]
mov ecx, dword [esp + 0x210]
mov edx, dword [ebp + 0x144]
mov eax, dword [esp + 0x200]
mov dword [esp + 8], ecx
add esi, dword [eax]
add esi, dword [esp + 0x1c4]
lea ecx, [esi + edi + 8]
mov dword [esp + 4], ecx
mov eax, dword [ebp + 0x58]
add eax, edi
add eax, 8
mov dword [esp], eax
call dword [edx + ebx*4 + 0x40]
mov esi, dword [esp + 0x210]
mov edx, dword [ebp + 0x148]
mov ebx, dword [esp + 0x200]
mov dword [esp + 8], esi
mov esi, dword [esp + 0x1d4]
mov eax, dword [ebx + 0x20]
mov ebx, dword [esp + 0x1d0]
sar esi, 2
sar ebx, 2
mov ecx, dword [esp + 0x210]
add eax, esi
imul ecx, ebx
add ebx, 8
add eax, ecx
mov dword [esp + 0x1c0], ecx
mov ecx, dword [esp + 0x1c8]
mov dword [esp + 4], eax
mov eax, dword [ebp + 0x58]
mov dword [esp], eax
call dword [edx + ecx*4 + 0x40]
mov eax, dword [esp + 0x210]
mov edx, dword [ebp + 0x148]
mov ecx, dword [esp + 0x200]
mov dword [esp + 8], eax
mov eax, dword [ecx + 0x20]
mov ecx, dword [esp + 0x1c0]
add eax, esi
lea eax, [eax + ecx + 8]
mov ecx, dword [esp + 0x1c8]
mov dword [esp + 4], eax
mov eax, dword [ebp + 0x58]
add eax, 8
mov dword [esp], eax
call dword [edx + ecx*4 + 0x40]
mov eax, dword [esp + 0x210]
mov edx, dword [ebp + 0x148]
mov ecx, dword [esp + 0x200]
mov dword [esp + 8], eax
imul ebx, eax
mov eax, dword [ecx + 0x20]
add eax, esi
add ebx, eax
mov dword [esp + 4], ebx
mov ebx, dword [esp + 0x1c8]
mov eax, dword [ebp + 0x58]
add eax, edi
mov dword [esp], eax
call dword [edx + ebx*4 + 0x40]
mov edx, dword [esp + 0x210]
mov eax, dword [ebp + 0x148]
mov ecx, dword [esp + 0x200]
mov dword [esp + 8], edx
add esi, dword [ecx + 0x20]
add esi, dword [esp + 0x1c0]
lea esi, [esi + edi + 8]
mov dword [esp + 4], esi
add edi, dword [ebp + 0x58]
add edi, 8
mov dword [esp], edi
call dword [eax + ebx*4 + 0x40]
jmp 0x8f1a1b
sub ecx, dword [esp + 0x11c]
mov ebx, dword [ebp + 0xc]
imul ebx, ecx
mov eax, ebx
cdq
idiv dword [esp + 0x11c]
mov dword [esp + 0xf8], eax
jmp 0x8f2980
mov eax, ecx
sub eax, dword [esp + 0x11c]
mov ebx, eax
imul ebx, dword [ebp + 8]
mov eax, ebx
cdq
idiv dword [esp + 0x11c]
jmp 0x8f295e
sub ecx, ebx
mov ebx, dword [esp + 0xb8]
mov dword [esp + 0x114], 0
add ebx, 4
mov dword [esp + 0x110], ecx
mov dword [esp + 0x10c], ebx
mov eax, dword [esp + 0x114]
mov esi, dword [esp + 0x130]
mov edi, dword [esp + 0x12c]
mov edx, dword [esp + 0x130]
add edi, dword [ebp + eax*8 + 0x2c]
add esi, dword [ebp + eax*8 + 0x28]
test edx, edx
mov dword [esp + 0x20], edi
je 0x8f3acb
mov ebx, esi
mov edi, dword [esp + 0x12c]
sub ebx, dword [ebp + eax*8 + 8]
test edi, edi
je 0x8f3b07
mov edi, dword [esp + 0x20]
mov eax, dword [esp + 0x114]
sub edi, dword [ebp + eax*8 + 0xc]
mov eax, dword [esp + 0x118]
movzx ecx, byte [esp + 0xc4]
mov edx, dword [esp + 0x118]
and eax, dword [esp + 0x20]
and edx, esi
shl eax, cl
lea eax, [edx + eax]
mov edx, dword [esp + 0x118]
mov dword [esp + 0x108], eax
mov eax, dword [esp + 0x118]
and edx, ebx
and eax, edi
shl eax, cl
mov ecx, dword [esp + 0x114]
lea eax, [edx + eax]
sar ecx, 1
mov edx, dword [esp + 0x114]
imul ecx, dword [esp + 0x138]
and edx, 1
mov dword [esp + 0x104], eax
add edx, ecx
mov eax, dword [ebp + 0x58]
lea ecx, [eax + edx*8]
mov eax, dword [esp + 0xb8]
test eax, eax
mov dword [esp + 0x100], ecx
je 0x8f3b3d
mov eax, dword [esp + 0x138]
mov edx, dword [ebp + 0x144]
mov ecx, dword [esp + 0x128]
mov dword [esp + 8], eax
sar dword [esp + 0x20], 2
sar esi, 2
add esi, dword [ecx]
mov ecx, dword [esp + 0x20]
sar ebx, 2
imul ecx, eax
sar edi, 2
lea eax, [esi + ecx]
mov ecx, dword [esp + 0x108]
mov dword [esp + 4], eax
mov eax, dword [esp + 0x100]
mov dword [esp], eax
call dword [edx + ecx*4 + 0x40]
mov eax, dword [esp + 0x138]
mov edx, dword [ebp + 0x148]
mov esi, dword [esp + 0x128]
mov dword [esp + 8], eax
imul edi, eax
add ebx, dword [esi + 0x20]
mov esi, dword [esp + 0x104]
lea ecx, [ebx + edi]
mov ebx, dword [esp + 0x100]
mov dword [esp + 4], ecx
mov dword [esp], ebx
call dword [edx + esi*4 + 0x40]
add dword [esp + 0x114], 1
cmp dword [esp + 0x114], 3
jle 0x8f3958
jmp 0x8f2b26
mov ebx, dword [esp + 0x114]
mov eax, dword [esp + 0x110]
movzx ecx, byte [esp + 0x10c]
imul eax, dword [ebp + ebx*8 + 8]
mov edi, dword [esp + 0x12c]
cdq
idiv dword [esp + 0x11c]
mov edx, ebx
and edx, 1
shl edx, cl
test edi, edi
lea ebx, [eax + edx]
jne 0x8f399d
mov edi, dword [esp + 0x114]
mov eax, dword [esp + 0x110]
movzx ecx, byte [esp + 0x10c]
imul eax, dword [ebp + edi*8 + 0xc]
cdq
idiv dword [esp + 0x11c]
mov edx, dword [esp + 0x114]
sar edx, 1
shl edx, cl
lea edi, [eax + edx]
jmp 0x8f39ac
mov ecx, dword [esp + 0x138]
mov edx, dword [ebp + 0x13c]
mov eax, dword [esp + 0x128]
mov dword [esp + 8], ecx
sar dword [esp + 0x20], 1
mov dword [esp + 0xc], 8
sar esi, 1
sar ebx, 1
sar edi, 1
add esi, dword [eax]
mov eax, dword [esp + 0x20]
imul eax, ecx
lea ecx, [esi + eax]
mov dword [esp + 0x20], eax
mov eax, dword [esp + 0x100]
mov dword [esp + 4], ecx
mov dword [esp], eax
mov esi, dword [esp + 0x108]
call dword [edx + esi*4 + 0x10]
mov eax, dword [esp + 0x138]
mov edx, dword [ebp + 0x140]
mov ecx, dword [esp + 0x128]
mov dword [esp + 0xc], 8
mov dword [esp + 8], eax
add ebx, dword [ecx + 0x20]
imul edi, eax
lea esi, [ebx + edi]
mov ebx, dword [esp + 0x100]
mov edi, dword [esp + 0x104]
mov dword [esp + 4], esi
mov dword [esp], ebx
call dword [edx + edi*4 + 0x10]
jmp 0x8f3ab0
mov edi, dword [esp + 0x1a4]
mov edx, dword [ebp + 0x144]
mov ecx, dword [esp + 0x194]
mov dword [esp + 8], edi
sar esi, 2
sar ebx, 2
mov eax, dword [ecx]
imul edi, ebx
add ebx, 8
add eax, esi
mov dword [esp + 0x158], edi
add eax, edi
mov edi, dword [esp + 0x160]
mov dword [esp + 4], eax
mov ecx, dword [ebp + 0x58]
mov dword [esp], ecx
call dword [edx + edi*4 + 0x40]
mov eax, dword [esp + 0x1a4]
mov edx, dword [ebp + 0x144]
mov ecx, dword [esp + 0x194]
mov dword [esp + 8], eax
mov edi, dword [esp + 0x158]
mov eax, dword [ecx]
add eax, esi
lea ecx, [eax + edi + 8]
mov dword [esp + 4], ecx
mov ecx, dword [esp + 0x160]
mov eax, dword [ebp + 0x58]
add eax, 8
mov dword [esp], eax
call dword [edx + ecx*4 + 0x40]
mov ecx, dword [esp + 0x1a4]
mov edx, dword [ebp + 0x144]
mov edi, dword [esp + 0x194]
mov dword [esp + 8], ecx
imul ebx, ecx
mov eax, dword [edi]
mov edi, ecx
add eax, esi
shl edi, 3
add ebx, eax
mov eax, dword [esp + 0x160]
mov dword [esp + 4], ebx
mov ecx, dword [ebp + 0x58]
add ecx, edi
mov dword [esp], ecx
call dword [edx + eax*4 + 0x40]
mov ebx, dword [esp + 0x1a4]
mov edx, dword [ebp + 0x144]
mov dword [esp + 8], ebx
mov ebx, dword [esp + 0x194]
mov eax, dword [esp + 0x160]
add esi, dword [ebx]
add esi, dword [esp + 0x158]
lea esi, [esi + edi + 8]
mov dword [esp + 4], esi
mov ecx, dword [ebp + 0x58]
add ecx, edi
add ecx, 8
mov dword [esp], ecx
call dword [edx + eax*4 + 0x40]
mov esi, dword [esp + 0x1a4]
mov edx, dword [ebp + 0x148]
mov dword [esp + 8], esi
mov esi, dword [esp + 0x168]
mov ecx, dword [esp + 0x1a4]
mov eax, dword [ebx + 0x20]
mov ebx, dword [esp + 0x164]
sar esi, 2
sar ebx, 2
add eax, esi
imul ecx, ebx
add ebx, 8
add eax, ecx
mov dword [esp + 0x154], ecx
mov ecx, dword [esp + 0x15c]
mov dword [esp + 4], eax
mov eax, dword [ebp + 0x58]
mov dword [esp], eax
call dword [edx + ecx*4 + 0x40]
mov eax, dword [esp + 0x1a4]
mov edx, dword [ebp + 0x148]
mov ecx, dword [esp + 0x194]
mov dword [esp + 8], eax
mov eax, dword [ecx + 0x20]
mov ecx, dword [esp + 0x154]
add eax, esi
lea eax, [eax + ecx + 8]
mov ecx, dword [esp + 0x15c]
mov dword [esp + 4], eax
mov eax, dword [ebp + 0x58]
add eax, 8
mov dword [esp], eax
call dword [edx + ecx*4 + 0x40]
mov eax, dword [esp + 0x1a4]
mov edx, dword [ebp + 0x148]
mov ecx, dword [esp + 0x194]
mov dword [esp + 8], eax
imul ebx, eax
mov eax, dword [ecx + 0x20]
add eax, esi
add ebx, eax
mov dword [esp + 4], ebx
mov ebx, dword [esp + 0x15c]
mov eax, dword [ebp + 0x58]
add eax, edi
mov dword [esp], eax
call dword [edx + ebx*4 + 0x40]
mov edx, dword [esp + 0x1a4]
mov eax, dword [ebp + 0x148]
mov ecx, dword [esp + 0x194]
mov dword [esp + 8], edx
add esi, dword [ecx + 0x20]
add esi, dword [esp + 0x154]
lea esi, [esi + edi + 8]
mov dword [esp + 4], esi
add edi, dword [ebp + 0x58]
add edi, 8
mov dword [esp], edi
call dword [eax + ebx*4 + 0x40]
jmp 0x8f2125
mov esi, dword [esp + 0x290]
cmp dword [esp + 0xd0], esi
je 0x8f4063
mov dword [esp + 0x2c4], 0
add dword [esp + 0x2c4], 1
mov edx, dword [esp + 0x2c4]
cmp dword [ebp + 0x8c], edx
jge 0x8f0f88
mov eax, dword [esp + 0x2f0]
add esp, 0x2dc
pop ebx
pop esi
pop edi
pop ebp
ret
mov eax, dword [esp + 0x138]
mov edx, dword [ebp + 0x144]
mov ebx, dword [esp + 0x128]
mov dword [esp + 8], eax
sar esi, 2
mov ecx, dword [esp + 0x138]
mov eax, dword [ebx]
mov ebx, edi
sar ebx, 2
add eax, esi
imul ecx, ebx
add ebx, 8
add eax, ecx
mov dword [esp + 0xec], ecx
mov ecx, dword [esp + 0xf4]
mov dword [esp + 4], eax
mov edi, dword [ebp + 0x58]
mov dword [esp], edi
call dword [edx + ecx*4 + 0x40]
mov eax, dword [esp + 0x138]
mov edx, dword [ebp + 0x144]
mov edi, dword [esp + 0x128]
mov dword [esp + 8], eax
mov ecx, dword [esp + 0xec]
mov eax, dword [edi]
add eax, esi
lea edi, [eax + ecx + 8]
mov dword [esp + 4], edi
mov edi, dword [esp + 0xf4]
mov eax, dword [ebp + 0x58]
add eax, 8
mov dword [esp], eax
call dword [edx + edi*4 + 0x40]
mov ecx, dword [esp + 0x138]
mov edx, dword [ebp + 0x144]
mov eax, dword [esp + 0x128]
mov dword [esp + 8], ecx
imul ebx, ecx
mov edi, dword [eax]
add edi, esi
add ebx, edi
mov edi, dword [esp + 0x138]
mov dword [esp + 4], ebx
shl edi, 3
mov ebx, dword [ebp + 0x58]
add ebx, edi
mov dword [esp], ebx
mov ebx, dword [esp + 0xf4]
call dword [edx + ebx*4 + 0x40]
mov ecx, dword [esp + 0x138]
mov edx, dword [ebp + 0x144]
mov eax, dword [esp + 0x128]
mov dword [esp + 8], ecx
add esi, dword [eax]
add esi, dword [esp + 0xec]
lea ecx, [esi + edi + 8]
mov dword [esp + 4], ecx
mov eax, dword [ebp + 0x58]
add eax, edi
add eax, 8
mov dword [esp], eax
call dword [edx + ebx*4 + 0x40]
mov esi, dword [esp + 0x138]
mov edx, dword [ebp + 0x148]
mov ebx, dword [esp + 0x128]
mov dword [esp + 8], esi
mov esi, dword [esp + 0xfc]
mov eax, dword [ebx + 0x20]
mov ebx, dword [esp + 0xf8]
sar esi, 2
sar ebx, 2
mov ecx, dword [esp + 0x138]
add eax, esi
imul ecx, ebx
add ebx, 8
add eax, ecx
mov dword [esp + 0xe8], ecx
mov ecx, dword [esp + 0xf0]
mov dword [esp + 4], eax
mov eax, dword [ebp + 0x58]
mov dword [esp], eax
call dword [edx + ecx*4 + 0x40]
mov eax, dword [esp + 0x138]
mov edx, dword [ebp + 0x148]
mov ecx, dword [esp + 0x128]
mov dword [esp + 8], eax
mov eax, dword [ecx + 0x20]
mov ecx, dword [esp + 0xe8]
add eax, esi
lea eax, [eax + ecx + 8]
mov ecx, dword [esp + 0xf0]
mov dword [esp + 4], eax
mov eax, dword [ebp + 0x58]
add eax, 8
mov dword [esp], eax
call dword [edx + ecx*4 + 0x40]
mov eax, dword [esp + 0x138]
mov edx, dword [ebp + 0x148]
mov ecx, dword [esp + 0x128]
mov dword [esp + 8], eax
imul ebx, eax
mov eax, dword [ecx + 0x20]
add eax, esi
add ebx, eax
mov dword [esp + 4], ebx
mov ebx, dword [esp + 0xf0]
mov eax, dword [ebp + 0x58]
add eax, edi
mov dword [esp], eax
call dword [edx + ebx*4 + 0x40]
mov edx, dword [esp + 0x138]
mov eax, dword [ebp + 0x148]
mov ecx, dword [esp + 0x128]
mov dword [esp + 8], edx
add esi, dword [ecx + 0x20]
add esi, dword [esp + 0xe8]
lea esi, [esi + edi + 8]
mov dword [esp + 4], esi
add edi, dword [ebp + 0x58]
add edi, 8
mov dword [esp], edi
call dword [eax + ebx*4 + 0x40]
jmp 0x8f2b26
mov dword [esp + 8], 0x7d
mov dword [esp + 4], 0xd30f4c
mov dword [esp], 0xd30f5c
call fcn.00a5b730
cmp ebx, dword [esp + 0x28c]
jne 0x8f3df6
jmp 0x8f3e01
mov dword [esp + 8], 0x3bc
mov dword [esp + 4], 0xd30faf
mov dword [esp], 0xd312ea
call fcn.00a5b730
mov dword [esp + 8], 0x3bc
mov dword [esp + 4], 0xd30faf
mov dword [esp], 0xd31336
call fcn.00a5b730
mov dword [esp + 8], 0x3bc
mov dword [esp + 4], 0xd30faf
mov dword [esp], 0xd31319
call fcn.00a5b730
mov dword [esp + 8], 0x3bc
mov dword [esp + 4], 0xd30faf
mov dword [esp], 0xd312fc
call fcn.00a5b730
mov dword [esp + 8], 0x3c5
mov dword [esp + 4], 0xd30faf
mov dword [esp], 0xd312cd
call fcn.00a5b730
mov dword [esp + 8], 0x3c5
mov dword [esp + 4], 0xd30faf
mov dword [esp], 0xd312b0
call fcn.00a5b730
mov dword [esp + 8], 0x3c5
mov dword [esp + 4], 0xd30faf
mov dword [esp], 0xd31348
call fcn.00a5b730
mov dword [esp + 8], 0x3c5
mov dword [esp + 4], 0xd30faf
mov dword [esp], 0xd3135a
call fcn.00a5b730
mov dword [esp + 8], 0xa7
mov dword [esp + 4], 0xd30f4c
mov dword [esp], 0xd31129
call fcn.00a5b730
mov dword [esp + 8], 0xa8
mov dword [esp + 4], 0xd30f4c
mov dword [esp], 0xd3110d
call fcn.00a5b730
mov dword [esp + 8], 0xa9
mov dword [esp + 4], 0xd30f4c
mov dword [esp], 0xd310ec
call fcn.00a5b730
mov dword [esp + 8], 0xaa
mov dword [esp + 4], 0xd30f4c
mov dword [esp], 0xd310c8
call fcn.00a5b730
mov dword [esp + 8], 0xae
mov dword [esp + 4], 0xd30f4c
mov dword [esp], 0xd31148
call fcn.00a5b730
mov dword [esp + 8], 0xab
mov dword [esp + 4], 0xd30f4c
mov dword [esp], 0xd311a9
call fcn.00a5b730
mov dword [esp + 8], 0xad
mov dword [esp + 4], 0xd30f4c
mov dword [esp], 0xd3116c
call fcn.00a5b730
mov dword [esp + 8], 0xac
mov dword [esp + 4], 0xd30f4c
mov dword [esp], 0xd3118d
call fcn.00a5b730
mov dword [esp + 8], 0x3ce
mov dword [esp + 4], 0xd30faf
mov dword [esp], 0xd3137e
call fcn.00a5b730
mov dword [esp + 8], 0x3ce
mov dword [esp + 4], 0xd30faf
mov dword [esp], 0xd3136c
call fcn.00a5b730
mov dword [esp + 8], 0x3ce
mov dword [esp + 4], 0xd30faf
mov dword [esp], 0xd3140b
call fcn.00a5b730
mov dword [esp + 8], 0x3ce
mov dword [esp + 4], 0xd30faf
mov dword [esp], 0xd313ee
call fcn.00a5b730
mov dword [esp + 8], 0x3d7
mov dword [esp + 4], 0xd30faf
mov dword [esp], 0xd313d1
call fcn.00a5b730
mov dword [esp + 8], 0x3d7
mov dword [esp + 4], 0xd30faf
mov dword [esp], 0xd313b4
call fcn.00a5b730
mov dword [esp + 8], 0x3d7
mov dword [esp + 4], 0xd30faf
mov dword [esp], 0xd313a2
call fcn.00a5b730
mov dword [esp + 8], 0x3d7
mov dword [esp + 4], 0xd30faf
mov dword [esp], 0xd31390
call fcn.00a5b730