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

Disassembly:
push ebp
mov ebp, esp
and esp, 0xfffffff8
sub esp, 0x9c
mov eax, dword [0x1039f6e0]
xor eax, esp
mov dword [esp + 0x98], eax
push ebx
mov ebx, dword [ebp + 8]
push esi
mov esi, ecx
mov ecx, dword [esi + 0x14]
mov edx, dword [ecx + 0x4c]
mov eax, dword [esi + 0xc]
mov eax, dword [eax + 8]
xor ecx, ecx
push edi
xor edi, edi
cmp eax, 1
sete cl
mov dword [esp + 0x20], eax
push edi
mov eax, ebx
mov dword [esp + 0x40], ebx
mov dword [esp + 0x38], edi
mov dword [esp + 0x4c], edi
inc ecx
mov dword [esp + 0x58], ecx
mov ecx, esi
mov dword [esp + 0x1c], edi
mov dword [esp + 0x50], edx
call fcn.007ed7b0
add esp, 4
cmp dword [esi + 0x1c], edi
je 0x80049d
mov edi, dword [esi + 0x94]
and edi, 1
mov dword [esp + 0x34], edi
mov dword [esi + 0xbc], edi
jne 0x80046d
mov byte [esi + 0xe8], 0
cmp dword [esi + 0xac], 0
je 0x8003e7
mov edx, dword [esi + 0xac]
test byte [edx + 0xc], 0x80
je 0x8003e7
mov byte [esi + 0xe8], 2
cmp dword [esi + 0xb0], 0
je 0x800403
mov eax, dword [esi + 0xb0]
test byte [eax + 0xc], 0x80
je 0x800403
or byte [esi + 0xe8], 8
cmp dword [esi + 0xb4], 0
je 0x80041f
mov ecx, dword [esi + 0xb4]
test byte [ecx + 0xc], 0x80
je 0x80041f
or byte [esi + 0xe8], 0x20
cmp dword [esi + 0xb8], 0
je 0x80043b
mov edx, dword [esi + 0xb8]
test byte [edx + 0xc], 0x80
je 0x80043b
or byte [esi + 0xe8], 0x80
mov eax, dword [esi + 0xac]
mov dword [esi + 0xf0], eax
mov ecx, dword [esi + 0xb0]
mov dword [esi + 0xf4], ecx
mov edx, dword [esi + 0xb4]
mov dword [esi + 0xf8], edx
mov eax, dword [esi + 0xb8]
mov dword [esi + 0xfc], eax
jmp 0x80049d
mov ecx, dword [esi + 0xf0]
mov dword [esi + 0xac], ecx
mov edx, dword [esi + 0xf4]
mov dword [esi + 0xb0], edx
mov eax, dword [esi + 0xf8]
mov dword [esi + 0xb4], eax
mov ecx, dword [esi + 0xfc]
mov dword [esi + 0xb8], ecx
mov edx, dword [esi + 0xc]
mov eax, dword [edx + 8]
cmp eax, 2
je 0x800500
cmp eax, 4
je 0x800500
cmp dword [esi + 0x86c], 0xffffffff
jne 0x8004cb
lea eax, [esi + 0x874]
push eax
call fcn.0081b630
add esp, 4
mov dword [esi + 0x86c], eax
mov eax, dword [esi + 0x86c]
lea ecx, [eax - 1]
mov dword [esi + 0x86c], ecx
test eax, eax
je 0x800500
mov ecx, ebx
mov edx, esi
mov dword [ebx + 0xc], 0x800
call fcn.007f7d50
mov edx, dword [esi + 0x1211cc]
push ebx
push esi
call edx
add esp, 8
jmp 0x8062f2
cmp dword [esi + 0x1c], 0
je 0x800569
test edi, edi
jne 0x800569
mov ecx, dword [esi + 0x880]
test ecx, ecx
jl 0x80053c
mov eax, dword [esi + 0x878]
movzx edx, byte [eax + 1]
movzx eax, byte [eax]
shl eax, 8
or edx, eax
shl edx, cl
or dword [esi + 0x884], edx
add dword [esi + 0x878], 2
add dword [esi + 0x880], 0xfffffff0
mov ecx, dword [esi + 0x884]
mov eax, ecx
add ecx, ecx
shr eax, 0x1f
mov dword [esi + 0x884], ecx
inc dword [esi + 0x880]
test eax, eax
je 0x800562
or byte [esi + 0xe8], 0x55
jmp 0x800569
and byte [esi + 0xe8], 0xaa
lea edi, [esi + 0x874]
push edi
mov dword [esi + 0x870], 0
call fcn.0081b630
add esp, 4
cmp dword [esp + 0x20], 1
mov dword [ebx + 0xc], eax
jne 0x8005ae
cmp eax, 0x17
jae 0x8005a9
movzx edx, byte [eax*8 + 0x10369c64]
mov eax, dword [eax*8 + 0x10369c60]
mov dword [esp + 0x18], edx
mov dword [ebx + 0xc], eax
jmp 0x80060c
add eax, 0xffffffe9
jmp 0x8005d5
cmp dword [esp + 0x20], 0
jne 0x8005d8
cmp eax, 5
jae 0x8005d2
movzx ecx, byte [eax*8 + 0x10369c1c]
mov edx, dword [eax*8 + 0x10369c18]
mov dword [esp + 0x18], ecx
mov dword [ebx + 0xc], edx
jmp 0x80060c
add eax, 0xfffffffb
mov dword [ebx + 0xc], eax
mov eax, dword [ebx + 0xc]
cmp eax, 0x19
ja 0x803a1a
movzx eax, byte [eax*8 + 0x10369b4d]
mov dword [ebx], eax
mov ecx, dword [ebx + 0xc]
movzx edx, byte [ecx*8 + 0x10369b4c]
mov dword [esi + 0xa0], edx
mov eax, dword [ebx + 0xc]
mov ecx, dword [eax*8 + 0x10369b48]
mov dword [ebx + 0xc], ecx
test byte [esi + 0xe8], 0x55
je 0x800638
mov edx, dword [esi + 0x4c]
mov ecx, dword [esp + 0x34]
add edx, edx
mov dword [esi + 0x4c], edx
mov eax, dword [esi + 0x50]
add eax, eax
lea edx, [ecx + ecx + 2]
mov dword [esi + 0x50], eax
or dword [ebx + 0xc], 0x80
mov dword [esp + 0x48], edx
mov ecx, dword [esi + 0x1211c8]
mov eax, ebx
push eax
push esi
call ecx
mov eax, dword [esp + 0x44]
mov eax, dword [eax + 0xc]
mov edx, dword [esi + 0x8c]
mov ebx, dword [esi + 0x90]
add esp, 8
mov dword [esp + 0x50], edx
mov dword [esp + 0x60], ebx
test al, 4
je 0x80074f
mov eax, 0x10
sub eax, dword [esi + 0x880]
push esi
cdq
and edx, 7
add eax, edx
mov ecx, eax
mov eax, dword [esi + 0x878]
sar ecx, 3
sub eax, ecx
call fcn.007f37e0
movzx edx, byte [eax]
movzx ecx, byte [eax + 1]
shl edx, 8
or edx, ecx
movzx ecx, byte [eax + 2]
shl edx, 8
or edx, ecx
movzx ecx, byte [eax + 3]
shl edx, 8
or edx, ecx
mov dword [esi + 0x884], edx
lea edi, [ebx + ebx*2]
add eax, 4
lea edx, [ebx*8]
add edi, edi
mov dword [esi + 0x880], 0xfffffff0
sub edx, ebx
mov dword [esi + 0x878], eax
mov dword [esp + 0x24], edi
xor ecx, ecx
jmp 0x8006e4
mov edi, dword [esp + 0x24]
mov eax, dword [esi + 0x762c]
add eax, ecx
mov dword [eax + edx], 0x10101010
mov dword [eax + edi], 0x10101010
lea edi, [ebx + ebx*4]
mov dword [eax + edi], 0x10101010
mov dword [eax + ebx*4], 0x10101010
lea edi, [ebx + ebx*2]
mov dword [eax + edi], 0x10101010
mov dword [eax + ebx*2], 0x10101010
add ecx, 0x360
cmp ecx, 0xa20
mov dword [eax + ebx], 0x10101010
mov dword [eax], 0x10101010
jl 0x8006e0
mov eax, dword [esp + 0x3c]
or ecx, 0xffffffff
mov dword [eax], 0x2f
mov dword [eax + 8], ecx
mov dword [eax + 4], ecx
jmp 0x8062d5
test al, 7
je 0x80089c
test al, 1
je 0x80087a
cmp dword [esp + 0x4c], 0
je 0x8007a8
mov ecx, dword [edi + 0xc]
test ecx, ecx
jl 0x800789
mov eax, dword [edi + 4]
movzx edx, byte [eax + 1]
movzx eax, byte [eax]
shl eax, 8
or edx, eax
shl edx, cl
or dword [edi + 0x10], edx
add dword [edi + 4], 2
add dword [edi + 0xc], 0xfffffff0
mov ecx, dword [edi + 0x10]
mov eax, ecx
add ecx, ecx
shr eax, 0x1f
mov dword [edi + 0x10], ecx
inc dword [edi + 0xc]
test eax, eax
je 0x8007a8
mov eax, dword [esp + 0x3c]
or dword [eax + 0xc], 0x1000000
xor eax, eax
mov dword [esp + 0x18], eax
mov edi, edi
mov edx, dword [esp + 0x50]
mov eax, dword [edx + eax*4]
add eax, dword [esi + 0x7630]
movsx ecx, byte [eax - 1]
mov edx, eax
sub edx, ebx
movsx edx, byte [edx]
cmp ecx, edx
mov dword [esp + 0x10], eax
jl 0x8007d2
mov ecx, edx
and ecx, 0x7f
mov dword [esp + 0x14], ecx
mov ecx, dword [edi + 0xc]
test ecx, ecx
jl 0x8007ff
mov ecx, dword [edi + 4]
movzx edx, byte [ecx]
movzx ecx, byte [ecx + 1]
shl edx, 8
or edx, ecx
mov ecx, dword [edi + 0xc]
shl edx, cl
or dword [edi + 0x10], edx
add dword [edi + 4], 2
add dword [edi + 0xc], 0xfffffff0
mov ecx, dword [edi + 0x10]
mov edx, ecx
add ecx, ecx
shr edx, 0x1f
mov dword [edi + 0x10], ecx
inc dword [edi + 0xc]
test edx, edx
jne 0x800831
push 3
push edi
call fcn.0081b480
xor edx, edx
add esp, 8
cmp eax, dword [esp + 0x14]
setge dl
add edx, eax
mov eax, dword [esp + 0x10]
mov dword [esp + 0x14], edx
mov edx, dword [esp + 0x3c]
test dword [edx + 0xc], 0x1000000
mov ecx, dword [esp + 0x14]
je 0x800863
imul ecx, ecx, 0x101
lea edx, [eax + ebx*2]
mov word [ebx + edx], cx
mov word [eax + ebx*2], cx
mov word [eax + ebx], cx
mov word [eax], cx
mov eax, dword [esp + 0x18]
add eax, 3
jmp 0x80086c
mov byte [eax + ebx], cl
mov byte [eax], cl
mov eax, dword [esp + 0x18]
inc eax
cmp eax, 0x10
mov dword [esp + 0x18], eax
jl 0x8007b0
mov eax, dword [esi + 0x10]
cmp dword [eax + 0x20], 0
je 0x803a02
push edi
call fcn.0081b630
mov ecx, dword [esp + 0x40]
add esp, 4
mov byte [ecx + 0x15], al
jmp 0x803a02
cmp dword [esp + 0x18], 4
jne 0x801f71
mov edx, dword [esi + 0xc]
xor eax, eax
cmp dword [edx + 8], 1
mov dword [esp + 0x44], eax
jne 0x801a5d
mov dword [esp + 0x24], eax
mov eax, dword [esp + 0x50]
mov dword [esp + 0x14], eax
lea eax, [esi + 0xa4]
mov dword [esp + 0x18], eax
push edi
call fcn.0081b630
add esp, 4
cmp eax, 0xd
jge 0x803a1a
movzx ecx, byte [eax*8 + 0x10369d1c]
movzx eax, word [eax*8 + 0x10369d18]
mov edx, dword [esp + 0x24]
mov dword [esp + edx*4 + 0x8c], ecx
mov ecx, dword [esp + 0x18]
mov word [ecx], ax
test eax, 0x100
je 0x800934
mov eax, dword [esi + 0x7634]
mov edx, dword [esp + 0x14]
add eax, dword [edx]
inc dword [esp + 0x44]
mov edx, 0x101
lea ecx, [eax + ebx*2]
mov word [ebx + ecx], dx
mov ecx, edx
mov word [eax + ebx*2], cx
mov word [eax + ebx], dx
mov word [eax], cx
mov eax, dword [esp + 0x24]
add dword [esp + 0x18], 2
add dword [esp + 0x14], 0x10
inc eax
cmp eax, 4
mov dword [esp + 0x24], eax
jl 0x8008d0
cmp dword [esp + 0x44], 0
je 0x801aa6
mov edx, dword [esi + 0x8c]
mov ebx, dword [esi + 0x90]
mov eax, dword [esp + 0x3c]
mov dword [esp + 0x38], edx
xor edx, edx
mov dword [esp + 0x64], edx
mov eax, dword [eax + 0xc]
mov ecx, eax
and ecx, 0x40
mov dword [esp + 0x20], ecx
mov ecx, eax
and ecx, 0x80
mov dword [esp + 0x68], eax
mov dword [esp + 0x78], edx
mov dword [esp + 0x80], edx
test byte [esi + 0xe8], 1
mov dword [esp + 0x2c], ecx
je 0x8009b1
mov ecx, dword [esi + 0xbc]
lea ecx, [ecx + ecx + 2]
mov dword [esp + 0x44], ecx
jmp 0x8009b5
mov dword [esp + 0x44], edx
mov dword [esp + 0x7c], edx
mov ecx, dword [esi + 0xc]
cmp dword [ecx + 0x240], edx
je 0x800a04
mov eax, dword [esi + 0x40040]
cmp eax, edx
je 0x8009f4
cmp eax, 4
je 0x8009f4
lea edx, [esp + 0x7c]
push edx
lea eax, [esp + 0x7c]
push eax
lea ecx, [esp + 0x70]
push ecx
lea edx, [esp + 0x8c]
lea ecx, [esp + 0x70]
call fcn.007f6ec0
jmp 0x800a28
lea edx, [esp + 0x68]
push edx
lea ecx, [esp + 0x68]
call fcn.007f7820
jmp 0x800a28
or eax, 8
mov dword [esp + 0x68], eax
mov eax, 0x1010101
mov dword [esi + 0x771c], eax
mov dword [esi + 0x7718], eax
mov dword [esi + 0x7714], eax
mov dword [esi + 0x7710], eax
mov eax, dword [esi + 0xc]
cmp dword [eax + 0x18], 0
je 0x80114a
mov eax, dword [esi + 0x7638]
xor ecx, ecx
sub eax, ebx
dec eax
mov dword [esp + 0x14], ecx
mov dword [esp + 0x34], eax
jmp 0x800a50
movsx edx, byte [eax + 5]
mov dword [esp + 0x18], edx
cmp edx, 0xfffffff8
jne 0x800a64
movsx edx, byte [eax]
mov dword [esp + 0x18], edx
movsx edx, byte [ebx + eax]
cmp dword [edx*4 + 0x1036bf50], 0x7fffffff
lea ecx, [esp + ecx*4 + 0x58]
mov dword [ecx], 0x7fffffff
jge 0x800a81
mov dword [ecx], edx
movsx edx, byte [eax + 1]
mov edx, dword [edx*4 + 0x1036bf50]
cmp edx, dword [ecx]
jge 0x800a96
movsx edx, byte [eax + 1]
mov dword [ecx], edx
mov edx, dword [esp + 0x18]
mov edx, dword [edx*4 + 0x1036bf50]
cmp edx, dword [ecx]
jge 0x800aab
mov edx, dword [esp + 0x18]
mov dword [ecx], edx
mov edx, dword [ecx]
cmp edx, 0x7fffffff
je 0x800ad8
mov eax, dword [esp + 0x14]
lea ecx, [esp + eax*4 + 0x9c]
push ecx
push edx
push eax
push 4
push 0
mov eax, esi
call fcn.007f6cb0
mov eax, dword [esp + 0x34]
mov ecx, dword [esp + 0x14]
jmp 0x800af4
mov dword [ecx], 0xffffffff
mov ecx, dword [esp + 0x14]
xor edx, edx
mov word [esp + ecx*4 + 0x9e], dx
mov word [esp + ecx*4 + 0x9c], dx
inc ecx
add eax, 0x360
cmp ecx, 2
mov dword [esp + 0x14], ecx
mov dword [esp + 0x34], eax
jl 0x800a50
mov eax, dword [esp + 0x58]
test eax, eax
jge 0x800b2a
cmp dword [esp + 0x5c], 0
jge 0x800b38
xor eax, eax
mov dword [esp + 0x5c], 0
mov dword [esp + 0x58], eax
jmp 0x800b49
cmp dword [esp + 0x5c], 0
jge 0x800b38
mov ecx, 0xffff3fff
jmp 0x800b41
test eax, eax
jge 0x800b49
mov ecx, 0xffffcfff
and dword [esp + 0x68], ecx
and dword [esp + 0x64], ecx
test byte [esp + 0x68], 8
je 0x800df1
mov ecx, dword [esi + 0x7638]
movzx eax, al
imul eax, eax, 0x1010101
lea edx, [ebx*8]
sub edx, ebx
mov dword [edx + ecx], eax
mov dword [esp + 0x30], edx
lea edx, [ebx + ebx*2]
add edx, edx
mov dword [edx + ecx], eax
mov dword [esp + 0x1c], edx
lea edx, [ebx + ebx*4]
mov dword [edx + ecx], eax
lea edx, [ebx*4]
mov dword [edx + ecx], eax
mov dword [esp + 0x14], edx
lea edx, [ebx + ebx*2]
mov dword [edx + ecx], eax
mov dword [ecx + ebx*2], eax
mov dword [ecx + ebx], eax
mov dword [ecx], eax
mov eax, dword [esi + 0x7638]
movzx ecx, byte [esp + 0x5c]
mov edx, dword [esp + 0x30]
imul ecx, ecx, 0x1010101
mov dword [edx + eax + 0x360], ecx
mov edx, dword [esp + 0x1c]
mov dword [edx + eax + 0x360], ecx
add eax, 0x360
lea edx, [ebx + ebx*4]
mov dword [edx + eax], ecx
mov edx, dword [esp + 0x14]
mov dword [edx + eax], ecx
lea edx, [ebx + ebx*2]
mov dword [edx + eax], ecx
mov dword [eax + ebx*2], ecx
mov dword [eax + ebx], ecx
mov dword [eax], ecx
mov eax, dword [esp + 0x44]
mov edx, dword [esp + 0x58]
mov ecx, eax
shl ecx, 5
add ecx, esi
add eax, ecx
mov ecx, dword [esi + 0x763c]
mov dword [esp + 0x40], eax
movzx eax, byte [eax + edx + 0x145e99]
mov edx, dword [esp + 0x30]
imul eax, eax, 0x1010101
mov dword [ecx + edx], eax
mov edx, dword [esp + 0x1c]
mov dword [ecx + edx], eax
lea edx, [ebx + ebx*4]
mov dword [ecx + edx], eax
mov edx, dword [esp + 0x14]
mov dword [ecx + edx], eax
lea edx, [ebx + ebx*2]
mov dword [ecx + edx], eax
mov dword [ecx + ebx*2], eax
mov edx, dword [esp + 0x30]
mov dword [ecx + ebx], eax
mov dword [ecx], eax
mov eax, dword [esp + 0x40]
mov ecx, dword [esp + 0x5c]
movzx ecx, byte [eax + ecx + 0x145eba]
mov eax, dword [esi + 0x763c]
imul ecx, ecx, 0x1010101
mov dword [edx + eax + 0x360], ecx
mov edx, dword [esp + 0x1c]
add eax, 0x360
mov dword [edx + eax], ecx
lea edx, [ebx + ebx*4]
mov dword [edx + eax], ecx
mov edx, dword [esp + 0x14]
mov dword [edx + eax], ecx
lea edx, [ebx + ebx*2]
mov dword [edx + eax], ecx
mov dword [eax + ebx*2], ecx
mov dword [ebx + eax], ecx
mov dword [eax], ecx
cmp byte [esi + 0x7710], 0
jne 0x800cf8
mov al, byte [esi + 0x76d0]
test al, al
jne 0x800cb7
movsx ecx, word [esi + 0x7650]
inc ecx
cmp ecx, 2
ja 0x800cb5
movsx edx, word [esi + 0x7652]
inc edx
cmp edx, 2
jbe 0x800cdc
test al, al
jge 0x800cf8
cmp byte [esi + 0x76e0], 0
jne 0x800cf8
movsx eax, word [esi + 0x7690]
inc eax
cmp eax, 2
ja 0x800cf8
movsx ecx, word [esi + 0x7692]
inc ecx
cmp ecx, 2
ja 0x800cf8
xor eax, eax
cmp dword [esp + 0x58], eax
jg 0x800ceb
mov dword [esp + 0x9c], eax
cmp dword [esp + 0x5c], eax
jg 0x800cf8
mov dword [esp + 0xa0], eax
mov ecx, dword [esi + 0x7640]
mov eax, dword [esp + 0x14]
movd mm0, dword [esp + 0x9c]
movq mm1, mm0
punpckldq mm1, mm0
movq mm0, mm1
movq qword [ecx], mm0
movq qword [ecx + 8], mm0
movq qword [ecx + eax], mm0
movq qword [ecx + eax + 8], mm0
movq qword [ecx + eax*2], mm0
movq qword [ecx + eax*2 + 8], mm0
lea edx, [ecx + eax*2]
movq qword [edx + eax], mm0
movq qword [edx + eax + 8], mm0
movq qword [ecx + eax*4], mm0
movq qword [ecx + eax*4 + 8], mm0
add edx, eax
lea edx, [ecx + eax*4]
movq qword [edx + eax], mm0
movq qword [edx + eax + 8], mm0
add edx, eax
lea edx, [eax + eax*2]
movq qword [ecx + edx*2], mm0
movq qword [ecx + edx*2 + 8], mm0
lea edx, [ecx + edx*2]
lea edx, [eax*8]
sub edx, eax
movq qword [ecx + edx], mm0
movq qword [ecx + edx + 8], mm0
movd mm0, dword [esp + 0xa0]
add ecx, edx
mov ecx, dword [esi + 0x7640]
add ecx, 0xd80
movq mm1, mm0
punpckldq mm1, mm0
movq mm0, mm1
movq qword [ecx], mm0
movq qword [ecx + 8], mm0
movq qword [ecx + eax], mm0
movq qword [ecx + eax + 8], mm0
movq qword [ecx + eax*2], mm0
movq qword [ecx + eax*2 + 8], mm0
lea edx, [ecx + eax*2]
movq qword [edx + eax], mm0
movq qword [edx + eax + 8], mm0
add edx, eax
movq qword [ecx + eax*4], mm0
movq qword [ecx + eax*4 + 8], mm0
lea edx, [ecx + eax*4]
add edx, eax
movq qword [edx], mm0
movq qword [edx + 8], mm0
lea edx, [eax + eax*2]
lea edx, [ecx + edx*2]
movq qword [edx], mm0
movq qword [edx + 8], mm0
lea edx, [eax*8]
sub edx, eax
add ecx, edx
movq qword [ecx], mm0
movq qword [ecx + 8], mm0
jmp 0x801a49
mov edx, dword [esp + 0x38]
mov ecx, 0x10369a48
lea eax, [esi + 0xa4]
sub edx, ecx
mov dword [esp + 0x18], ecx
mov dword [esp + 0x30], eax
mov dword [esp + 0x14], edx
cmp dword [esp + 0x20], 0
mov edx, dword [ecx]
mov dword [esp + 0x2c], edx
mov edx, dword [esp + 0x14]
mov ecx, dword [ecx + edx]
mov dword [esp + 0x24], ecx
je 0x800e34
mov edx, 0x100
test word [eax], dx
je 0x801123
mov dx, word [esp + 0x64]
mov word [eax], dx
lea edx, [ecx*4]
mov ecx, dword [esi + 0x7640]
add ecx, edx
mov dword [esp + 0x10], ecx
lea eax, [ebx*4]
mov dword [esp + 0x38], edx
lea edx, [ecx + eax*2]
mov ecx, dword [esp + 0x9c]
mov dword [eax + edx], ecx
mov dword [eax + edx + 4], ecx
mov edx, dword [esp + 0x10]
mov dword [edx + eax*2], ecx
mov dword [edx + eax*2 + 4], ecx
mov dword [edx + eax], ecx
mov dword [edx + eax + 4], ecx
mov dword [edx], ecx
mov dword [edx + 4], ecx
mov ecx, dword [esi + 0x7640]
mov edx, dword [esp + 0x24]
lea edx, [edx*4 + 0xd80]
add ecx, edx
mov dword [esp + 0x10], ecx
mov dword [esp + 0x28], edx
lea edx, [ecx + eax*2]
mov ecx, dword [esp + 0xa0]
mov dword [eax + edx], ecx
mov dword [eax + edx + 4], ecx
mov edx, dword [esp + 0x10]
mov dword [edx + eax*2], ecx
mov dword [edx + eax*2 + 4], ecx
mov dword [edx + eax], ecx
mov dword [edx + eax + 4], ecx
mov dword [edx], ecx
mov dword [edx + 4], ecx
mov eax, dword [esi + 0x7638]
add eax, dword [esp + 0x24]
movzx ecx, byte [esp + 0x58]
imul ecx, ecx, 0x101
lea edx, [ebx + ebx*2]
mov word [edx + eax], cx
mov word [eax + ebx*2], cx
mov word [eax + ebx], cx
mov word [eax], cx
mov eax, dword [esi + 0x7638]
mov ecx, dword [esp + 0x24]
lea ecx, [ecx + eax + 0x360]
movzx eax, byte [esp + 0x5c]
imul eax, eax, 0x101
mov word [edx + ecx], ax
mov word [ecx + ebx*2], ax
mov word [ecx + ebx], ax
mov word [ecx], ax
mov eax, dword [esp + 0x44]
mov ecx, eax
shl ecx, 5
add ecx, esi
add eax, ecx
mov ecx, dword [esp + 0x58]
movzx ecx, byte [eax + ecx + 0x145e99]
imul ecx, ecx, 0x101
mov dword [esp + 0x40], eax
mov eax, dword [esi + 0x763c]
add eax, dword [esp + 0x24]
mov word [edx + eax], cx
mov word [eax + ebx*2], cx
mov word [eax + ebx], cx
mov word [eax], cx
mov ecx, dword [esp + 0x5c]
mov eax, dword [esp + 0x40]
movzx eax, byte [eax + ecx + 0x145eba]
mov ecx, dword [esi + 0x763c]
mov dword [esp + 0x10], eax
mov eax, dword [esp + 0x24]
lea ecx, [eax + ecx + 0x360]
mov eax, dword [esp + 0x10]
imul eax, eax, 0x101
mov word [ecx + edx], ax
mov word [ecx + ebx*2], ax
mov word [ecx + ebx], ax
mov word [ecx], ax
mov eax, dword [esp + 0x2c]
cmp byte [eax + esi + 0x7710], 0
jne 0x801123
mov cl, byte [eax + esi + 0x76d0]
test cl, cl
je 0x800fc6
jge 0x801123
cmp byte [eax + esi + 0x76e0], 0
jne 0x801123
test cl, cl
jne 0x800fce
lea edx, [esi + 0x7650]
jmp 0x800fd4
lea edx, [esi + 0x7690]
test byte [esp + 0x64], 8
mov dword [esp + 0x34], edx
je 0x801095
movsx ecx, word [edx + eax*4]
inc ecx
cmp ecx, 2
ja 0x801123
movsx edx, word [edx + eax*4 + 2]
inc edx
cmp edx, 2
ja 0x801123
cmp dword [esp + 0x58], 0
jne 0x801041
mov ecx, dword [esi + 0x7640]
add ecx, dword [esp + 0x38]
lea eax, [ebx*4]
xor edx, edx
mov dword [esp + 0x10], ecx
lea ecx, [ecx + eax*2]
mov dword [eax + ecx], edx
mov dword [eax + ecx + 4], edx
mov ecx, dword [esp + 0x10]
mov dword [ecx + eax*2], edx
mov dword [ecx + eax*2 + 4], edx
mov dword [ecx + eax], edx
mov dword [ecx + eax + 4], edx
xor eax, eax
mov dword [ecx], eax
mov dword [ecx + 4], edx
cmp dword [esp + 0x5c], 0
jne 0x801123
mov ecx, dword [esi + 0x7640]
add ecx, dword [esp + 0x28]
lea eax, [ebx*4]
mov dword [esp + 0x2c], ecx
lea ecx, [ecx + eax*2]
xor edx, edx
mov dword [eax + ecx], edx
mov dword [esp + 0x10], ecx
mov edx, ecx
xor ecx, ecx
mov dword [eax + edx + 4], ecx
mov ecx, dword [esp + 0x2c]
xor edx, edx
mov dword [ecx + eax*2], edx
mov dword [ecx + eax*2 + 4], edx
mov dword [eax + ecx], edx
mov dword [eax + ecx + 4], edx
xor eax, eax
mov dword [ecx], eax
mov dword [ecx + 4], edx
jmp 0x801123
mov eax, dword [esp + 0x18]
mov dword [esp + 0x38], eax
mov dword [esp + 0x24], 4
jmp 0x8010b4
mov edx, dword [esp + 0x34]
mov ecx, dword [esp + 0x14]
mov ecx, dword [ecx + eax]
mov eax, dword [eax]
lea eax, [edx + eax*4]
movsx edx, word [eax]
inc edx
cmp edx, 2
ja 0x801111
movsx eax, word [eax + 2]
inc eax
cmp eax, 2
ja 0x801111
cmp dword [esp + 0x58], 0
jne 0x8010f0
mov edx, dword [esi + 0x7640]
lea eax, [edx + ecx*4]
mov dword [eax + ebx*4], 0
mov dword [eax], 0
cmp dword [esp + 0x5c], 0
jne 0x801111
mov eax, dword [esi + 0x7640]
lea eax, [eax + ecx*4 + 0xd80]
mov dword [eax + ebx*4], 0
mov dword [eax], 0
mov eax, dword [esp + 0x38]
add eax, 4
sub dword [esp + 0x24], 1
mov dword [esp + 0x38], eax
jne 0x8010b0
mov ecx, dword [esp + 0x18]
mov eax, dword [esp + 0x30]
add ecx, 0x10
add eax, 2
cmp ecx, 0x10369a88
mov dword [esp + 0x30], eax
mov dword [esp + 0x18], ecx
jl 0x800e0e
jmp 0x801a49
test byte [esp + 0x68], 8
je 0x8015b3
mov eax, dword [esi + 0x7638]
add eax, 0x360
lea edx, [ebx*8]
sub edx, ebx
mov dword [eax + edx], 0
lea ecx, [ebx + ebx*2]
add ecx, ecx
mov dword [eax + ecx], 0
mov dword [esp + 0x1c], ecx
lea ecx, [ebx + ebx*4]
mov dword [eax + ecx], 0
mov dword [eax + ebx*4], 0
lea ecx, [ebx + ebx*2]
mov dword [eax + ecx], 0
mov dword [eax + ebx*2], 0
mov dword [eax + ebx], 0
mov dword [eax], 0
mov eax, dword [esp + 0x44]
mov ecx, eax
shl ecx, 5
add ecx, esi
add eax, ecx
movzx ecx, byte [eax + 0x145eba]
imul ecx, ecx, 0x1010101
mov dword [esp + 0x40], eax
mov eax, dword [esi + 0x763c]
add eax, 0x360
mov dword [edx + eax], ecx
mov dword [esp + 0x30], edx
mov edx, dword [esp + 0x1c]
mov dword [edx + eax], ecx
lea edx, [ebx + ebx*4]
mov dword [edx + eax], ecx
mov dword [eax + ebx*4], ecx
lea edx, [ebx + ebx*2]
mov dword [edx + eax], ecx
mov dword [eax + ebx*2], ecx
mov dword [ebx + eax], ecx
mov dword [eax], ecx
cmp byte [esi + 0x7710], 0
je 0x801353
mov ecx, dword [esi + 0x7640]
xor eax, eax
movd mm1, eax
lea eax, [ebx*4]
movq mm0, mm1
movq mm2, mm0
lea edx, [ecx + eax*2]
add edx, eax
punpckldq mm2, mm0
movq mm0, mm2
movq qword [ecx], mm0
movq qword [ecx + 8], mm0
movq qword [ecx + eax], mm0
movq qword [ecx + eax + 8], mm0
movq qword [ecx + eax*2], mm0
movq qword [ecx + eax*2 + 8], mm0
movq qword [edx], mm0
movq qword [edx + 8], mm0
movq qword [ecx + eax*4], mm0
movq qword [ecx + eax*4 + 8], mm0
lea edx, [ecx + eax*4]
movq qword [edx + eax], mm0
movq qword [edx + eax + 8], mm0
add edx, eax
lea edx, [eax + eax*2]
movq qword [ecx + edx*2], mm0
movq qword [ecx + edx*2 + 8], mm0
lea edx, [ecx + edx*2]
lea edx, [eax*8]
sub edx, eax
movq qword [ecx + edx], mm0
movq qword [ecx + edx + 8], mm0
add ecx, edx
mov ecx, dword [esi + 0x7640]
add ecx, 0xd80
lea edx, [ecx + eax*2]
add edx, eax
movq mm0, mm1
punpckldq mm0, mm1
movq qword [ecx], mm0
movq qword [ecx + 8], mm0
movq qword [ecx + eax], mm0
movq qword [ecx + eax + 8], mm0
movq qword [ecx + eax*2], mm0
movq qword [ecx + eax*2 + 8], mm0
movq qword [edx], mm0
movq qword [edx + 8], mm0
movq qword [ecx + eax*4], mm0
movq qword [ecx + eax*4 + 8], mm0
lea edx, [ecx + eax*4]
movq qword [edx + eax], mm0
movq qword [edx + eax + 8], mm0
add edx, eax
lea edx, [eax + eax*2]
movq qword [ecx + edx*2], mm0
movq qword [ecx + edx*2 + 8], mm0
lea edx, [ecx + edx*2]
lea edx, [eax*8]
sub edx, eax
movq qword [ecx + edx], mm0
movq qword [ecx + edx + 8], mm0
add ecx, edx
mov ecx, dword [esi + 0x7638]
mov edx, dword [esp + 0x30]
mov dword [ecx + edx], 0
mov edx, dword [esp + 0x1c]
mov dword [ecx + edx], 0
lea edx, [ebx + ebx*4]
mov dword [ecx + edx], 0
mov dword [ecx + eax], 0
lea eax, [ebx + ebx*2]
mov dword [ecx + eax], 0
mov eax, dword [esp + 0x40]
mov dword [ecx + ebx*2], 0
mov dword [ecx + ebx], 0
mov dword [ecx], 0
movzx eax, byte [eax + 0x145e99]
jmp 0x80157d
cmp dword [esp + 0x2c], 0
je 0x801363
mov ecx, dword [esi + 0xbc]
inc ecx
jmp 0x801365
xor ecx, ecx
mov eax, dword [esp + 0x78]
mov edx, dword [esp + 0x7c]
lea ecx, [ecx + eax*2]
add ecx, eax
lea eax, [edx + ecx*2]
movsx ecx, byte [esi + 0x7720]
shl eax, 7
add eax, ecx
imul eax, eax, 0x190
lea ecx, [eax + esi + 0x40048]
mov al, byte [esi + 0x76d0]
test al, al
jl 0x8013a4
movsx edx, byte [esi + 0x76f0]
mov cl, byte [edx + ecx]
jmp 0x8013b2
movsx edx, byte [esi + 0x7700]
mov cl, byte [edx + ecx + 0xc8]
movzx ecx, cl
test al, al
mov dword [esp + 0x34], ecx
lea eax, [esi + 0x7650]
jge 0x8013c9
lea eax, [esi + 0x7690]
mov edx, dword [esp + 0x30]
mov dword [esp + 0x24], eax
movzx eax, cl
mov ecx, dword [esi + 0x7638]
imul eax, eax, 0x1010101
mov dword [edx + ecx], eax
mov edx, dword [esp + 0x1c]
mov dword [edx + ecx], eax
lea edx, [ebx + ebx*4]
mov dword [edx + ecx], eax
mov dword [ecx + ebx*4], eax
lea edx, [ebx + ebx*2]
mov dword [edx + ecx], eax
mov edx, dword [esp + 0x24]
mov dword [ecx + ebx*2], eax
mov dword [ecx + ebx], eax
mov dword [ecx], eax
mov eax, dword [esp + 0x80]
shl eax, 5
add eax, dword [esp + 0x34]
mov ecx, dword [esi + eax*4 + 0x121048]
mov eax, dword [esp + 0x78]
cmp eax, 2
jne 0x801430
mov ax, word [edx + 2]
add ax, ax
mov word [edx + 2], ax
jmp 0x801446
cmp eax, 1
jne 0x801446
movsx eax, word [edx + 2]
cdq
sub eax, edx
mov edx, dword [esp + 0x24]
sar eax, 1
mov word [edx + 2], ax
movsx eax, word [edx]
imul eax, ecx
sub eax, 0xffffff80
sar eax, 8
mov word [esp + 0x28], ax
movsx eax, word [edx + 2]
imul eax, ecx
mov ecx, dword [esi + 0x7640]
sub eax, 0xffffff80
sar eax, 8
mov word [esp + 0x2a], ax
movd mm0, dword [esp + 0x28]
lea eax, [ebx*4]
lea edx, [ecx + eax*2]
add edx, eax
movq mm1, mm0
punpckldq mm1, mm0
movq mm0, mm1
movq qword [ecx], mm0
movq qword [ecx + 8], mm0
movq qword [ecx + eax], mm0
movq qword [ecx + eax + 8], mm0
movq qword [ecx + eax*2], mm0
movq qword [ecx + eax*2 + 8], mm0
movq qword [edx], mm0
movq qword [edx + 8], mm0
movq qword [ecx + eax*4], mm0
movq qword [ecx + eax*4 + 8], mm0
lea edx, [ecx + eax*4]
movq qword [edx + eax], mm0
movq qword [edx + eax + 8], mm0
add edx, eax
lea edx, [eax + eax*2]
movq qword [ecx + edx*2], mm0
movq qword [ecx + edx*2 + 8], mm0
lea edx, [ecx + edx*2]
lea edx, [eax*8]
sub edx, eax
movq qword [ecx + edx], mm0
movq qword [ecx + edx + 8], mm0
add ecx, edx
mov ecx, dword [esp + 0x24]
mov dx, word [ecx]
mov cx, word [ecx + 2]
sub word [esp + 0x28], dx
sub word [esp + 0x2a], cx
mov ecx, dword [esi + 0x7640]
movd mm0, dword [esp + 0x28]
add ecx, 0xd80
movq mm1, mm0
punpckldq mm1, mm0
movq mm0, mm1
movq qword [ecx], mm0
movq qword [ecx + 8], mm0
movq qword [ecx + eax], mm0
movq qword [ecx + eax + 8], mm0
movq qword [ecx + eax*2], mm0
movq qword [ecx + eax*2 + 8], mm0
lea edx, [ecx + eax*2]
movq qword [edx + eax], mm0
movq qword [edx + eax + 8], mm0
add edx, eax
movq qword [ecx + eax*4], mm0
movq qword [ecx + eax*4 + 8], mm0
lea edx, [ecx + eax*4]
add edx, eax
movq qword [edx], mm0
movq qword [edx + 8], mm0
lea edx, [eax + eax*2]
lea edx, [ecx + edx*2]
movq qword [edx], mm0
movq qword [edx + 8], mm0
lea edx, [eax*8]
sub edx, eax
mov eax, dword [esp + 0x40]
add ecx, edx
movq qword [ecx], mm0
movq qword [ecx + 8], mm0
mov ecx, dword [esp + 0x34]
movzx eax, byte [eax + ecx + 0x145e99]
mov ecx, dword [esi + 0x763c]
imul eax, eax, 0x1010101
mov edx, dword [esp + 0x30]
mov dword [ecx + edx], eax
mov edx, dword [esp + 0x1c]
mov dword [ecx + edx], eax
lea edx, [ebx + ebx*4]
mov dword [ecx + edx], eax
mov dword [ecx + ebx*4], eax
lea edx, [ebx + ebx*2]
mov dword [ecx + edx], eax
mov dword [ecx + ebx*2], eax
mov dword [ecx + ebx], eax
mov dword [ecx], eax
jmp 0x801a49
lea eax, [esi + 0xa4]
mov dword [esp + 0x18], eax
mov eax, dword [esp + 0x38]
mov ecx, 0x10369a48
sub eax, ecx
mov dword [esp + 0x34], ecx
mov dword [esp + 0x14], eax
jmp 0x8015d6
mov eax, dword [esp + 0x14]
cmp dword [esp + 0x20], 0
mov eax, dword [ecx + eax]
mov ecx, dword [ecx]
mov dword [esp + 0x1c], ecx
lea ecx, [esi + 0x7650]
mov dword [esp + 0x30], eax
mov dword [esp + 0x24], ecx
je 0x801606
mov ecx, dword [esp + 0x18]
mov edx, 0x100
test word [ecx], dx
je 0x801a2d
mov edx, dword [esi + 0x7638]
lea eax, [edx + eax + 0x360]
xor ecx, ecx
lea edx, [ebx + ebx*2]
mov word [edx + eax], cx
mov word [eax + ebx*2], cx
mov word [ebx + eax], cx
mov word [eax], cx
mov eax, dword [esp + 0x44]
mov ecx, eax
shl ecx, 5
add ecx, esi
add eax, ecx
mov ecx, dword [esi + 0x763c]
mov dword [esp + 0x40], eax
movzx eax, byte [eax + 0x145eba]
mov dword [esp + 0x10], eax
mov eax, dword [esp + 0x30]
lea ecx, [ecx + eax + 0x360]
mov eax, dword [esp + 0x10]
imul eax, eax, 0x101
mov word [edx + ecx], ax
mov word [ecx + ebx*2], ax
mov word [ebx + ecx], ax
mov word [ecx], ax
mov cx, word [esp + 0x64]
mov eax, dword [esp + 0x18]
mov word [eax], cx
mov ecx, dword [esp + 0x1c]
cmp byte [esi + ecx + 0x7710], 0
je 0x801763
mov edx, dword [esi + 0x7640]
mov ecx, dword [esp + 0x30]
lea ecx, [edx + ecx*4]
lea eax, [ebx*4]
mov dword [esp + 0x38], ecx
lea ecx, [ecx + eax*2]
mov dword [esp + 0x10], ecx
xor edx, edx
mov dword [eax + ecx], edx
mov edx, dword [esp + 0x10]
xor ecx, ecx
mov dword [eax + edx + 4], ecx
mov ecx, dword [esp + 0x38]
xor edx, edx
mov dword [ecx + eax*2], edx
mov dword [ecx + eax*2 + 4], edx
mov dword [ecx + eax], edx
mov dword [ecx + eax + 4], edx
mov dword [ecx], edx
mov dword [ecx + 4], edx
mov ecx, dword [esi + 0x7640]
mov edx, dword [esp + 0x30]
lea ecx, [ecx + edx*4 + 0xd80]
mov dword [esp + 0x38], ecx
lea ecx, [ecx + eax*2]
xor edx, edx
mov dword [eax + ecx], edx
mov dword [esp + 0x10], ecx
mov edx, ecx
xor ecx, ecx
mov dword [eax + edx + 4], ecx
mov ecx, dword [esp + 0x38]
xor edx, edx
mov dword [ecx + eax*2], edx
mov dword [ecx + eax*2 + 4], edx
mov dword [ecx + eax], edx
mov dword [ecx + eax + 4], edx
xor eax, eax
mov dword [ecx], eax
mov dword [ecx + 4], edx
mov eax, dword [esi + 0x7638]
add eax, dword [esp + 0x30]
xor ecx, ecx
lea edx, [ebx + ebx*2]
mov word [eax + edx], cx
mov word [eax + ebx*2], cx
mov word [eax + ebx], cx
mov word [eax], cx
mov eax, dword [esp + 0x40]
movzx ecx, byte [eax + 0x145e99]
mov eax, dword [esi + 0x763c]
add eax, dword [esp + 0x30]
imul ecx, ecx, 0x101
mov word [edx + eax], cx
mov word [eax + ebx*2], cx
mov word [ebx + eax], cx
mov word [eax], cx
jmp 0x801a2d
cmp dword [esp + 0x2c], 0
je 0x801773
mov ecx, dword [esi + 0xbc]
inc ecx
jmp 0x801775
xor ecx, ecx
mov eax, dword [esp + 0x78]
lea ecx, [ecx + eax*2]
add ecx, eax
mov eax, dword [esp + 0x7c]
lea ecx, [eax + ecx*2]
mov eax, dword [esp + 0x1c]
movsx eax, byte [esi + eax + 0x7720]
shl ecx, 7
add ecx, eax
imul ecx, ecx, 0x190
lea eax, [ecx + esi + 0x40048]
mov ecx, dword [esp + 0x1c]
cmp byte [esi + ecx + 0x76d0], 0
jl 0x8017bf
movsx ecx, byte [esi + ecx + 0x76f0]
movzx eax, byte [ecx + eax]
jmp 0x8017d9
movsx ecx, byte [esi + ecx + 0x7700]
movzx eax, byte [ecx + eax + 0xc8]
lea ecx, [esi + 0x7690]
mov dword [esp + 0x24], ecx
mov ecx, dword [esp + 0x80]
shl ecx, 5
add ecx, eax
mov ecx, dword [esi + ecx*4 + 0x121048]
mov dword [esp + 0x38], ecx
movzx ecx, al
imul ecx, ecx, 0x101
mov dword [esp + 0x10], eax
mov eax, dword [esi + 0x7638]
add eax, dword [esp + 0x30]
mov word [edx + eax], cx
mov word [eax + ebx*2], cx
mov word [eax + ebx], cx
mov word [eax], cx
mov eax, dword [esp + 0x40]
mov ecx, dword [esp + 0x10]
movzx ecx, byte [eax + ecx + 0x145e99]
mov eax, dword [esi + 0x763c]
imul ecx, ecx, 0x101
add eax, dword [esp + 0x30]
mov word [eax + edx], cx
mov word [eax + ebx*2], cx
mov word [eax + ebx], cx
mov word [eax], cx
test byte [esp + 0x64], 8
je 0x80195b
mov eax, dword [esp + 0x78]
mov ecx, dword [esp + 0x24]
cmp eax, 2
jne 0x801870
mov eax, dword [esp + 0x1c]
mov dx, word [ecx + eax*4 + 2]
add dx, dx
mov word [ecx + eax*4 + 2], dx
jmp 0x80188c
cmp eax, 1
jne 0x80188c
mov eax, dword [esp + 0x1c]
movsx eax, word [ecx + eax*4 + 2]
cdq
sub eax, edx
mov edx, dword [esp + 0x1c]
sar eax, 1
mov word [ecx + edx*4 + 2], ax
mov eax, dword [esp + 0x1c]
movsx eax, word [ecx + eax*4]
mov edx, dword [esp + 0x38]
imul eax, edx
sub eax, 0xffffff80
sar eax, 8
mov word [esp + 0x28], ax
mov eax, dword [esp + 0x1c]
movsx eax, word [ecx + eax*4 + 2]
mov ecx, dword [esi + 0x7640]
imul eax, edx
mov edx, dword [esp + 0x30]
lea ecx, [ecx + edx*4]
sub eax, 0xffffff80
sar eax, 8
mov word [esp + 0x2a], ax
mov edx, dword [esp + 0x28]
lea eax, [ebx*4]
mov dword [esp + 0x10], ecx
lea ecx, [ecx + eax*2]
mov dword [eax + ecx], edx
mov dword [eax + ecx + 4], edx
mov ecx, dword [esp + 0x10]
mov dword [ecx + eax*2], edx
mov dword [ecx + eax*2 + 4], edx
mov dword [ecx + eax], edx
mov dword [ecx + eax + 4], edx
mov eax, dword [esp + 0x24]
mov dword [ecx], edx
mov dword [ecx + 4], edx
mov ecx, dword [esp + 0x1c]
mov dx, word [eax + ecx*4]
mov ax, word [eax + ecx*4 + 2]
mov ecx, dword [esi + 0x7640]
sub word [esp + 0x28], dx
mov edx, dword [esp + 0x30]
sub word [esp + 0x2a], ax
lea eax, [ebx*4]
lea ecx, [ecx + edx*4 + 0xd80]
mov edx, dword [esp + 0x28]
mov dword [esp + 0x10], ecx
lea ecx, [ecx + eax*2]
mov dword [eax + ecx], edx
mov dword [eax + ecx + 4], edx
mov ecx, dword [esp + 0x10]
mov dword [ecx + eax*2], edx
mov dword [ecx + eax*2 + 4], edx
mov dword [eax + ecx], edx
mov dword [eax + ecx + 4], edx
mov dword [ecx], edx
mov dword [ecx + 4], edx
jmp 0x801a2d
mov eax, dword [esp + 0x34]
mov dword [esp + 0x30], eax
mov dword [esp + 0x40], 4
mov ecx, dword [esp + 0x14]
mov edx, dword [eax + ecx]
mov eax, dword [eax]
mov ecx, dword [esp + 0x24]
lea ecx, [ecx + eax*4]
mov eax, dword [esp + 0x78]
mov dword [esp + 0x10], edx
mov dword [esp + 0x1c], ecx
cmp eax, 2
jne 0x801999
mov dx, word [ecx + 2]
add dx, dx
mov word [ecx + 2], dx
jmp 0x8019ab
cmp eax, 1
jne 0x8019ab
movsx eax, word [ecx + 2]
cdq
sub eax, edx
sar eax, 1
mov word [ecx + 2], ax
movsx edx, word [ecx + 2]
movsx eax, word [ecx]
imul edx, dword [esp + 0x38]
imul eax, dword [esp + 0x38]
mov ecx, dword [esi + 0x7640]
sub edx, 0xffffff80
sub eax, 0xffffff80
sar edx, 8
sar eax, 8
mov word [esp + 0x28], ax
mov word [esp + 0x2a], dx
mov edx, dword [esp + 0x10]
lea ecx, [ecx + edx*4]
mov edx, dword [esp + 0x28]
mov dword [ecx + ebx*4], edx
mov dword [ecx], edx
mov ecx, dword [esp + 0x1c]
sub ax, word [ecx]
mov edx, dword [esp + 0x10]
mov word [esp + 0x28], ax
mov ax, word [ecx + 2]
sub word [esp + 0x2a], ax
mov ecx, dword [esi + 0x7640]
lea eax, [ecx + edx*4 + 0xd80]
mov ecx, dword [esp + 0x28]
mov dword [eax + ebx*4], ecx
mov dword [eax], ecx
mov eax, dword [esp + 0x30]
add eax, 4
sub dword [esp + 0x40], 1
mov dword [esp + 0x30], eax
jne 0x80196b
mov ecx, dword [esp + 0x34]
add dword [esp + 0x18], 2
add ecx, 0x10
cmp ecx, 0x10369a88
mov dword [esp + 0x34], ecx
jl 0x8015d2
cmp dword [esp + 0x20], 0
jne 0x801aa6
mov eax, dword [esp + 0x68]
mov ecx, dword [esp + 0x3c]
mov dword [ecx + 0xc], eax
jmp 0x801aa6
lea eax, [esi + 0xa4]
xor ebx, ebx
mov dword [esp + 0x10], eax
push edi
call fcn.0081b630
add esp, 4
cmp eax, 4
jge 0x803a1a
movzx edx, byte [eax*8 + 0x10369c44]
mov cx, word [eax*8 + 0x10369c40]
mov eax, dword [esp + 0x10]
mov dword [esp + ebx*4 + 0x8c], edx
mov word [eax], cx
inc ebx
add eax, 2
cmp ebx, 4
mov dword [esp + 0x10], eax
jl 0x801a69
cmp dword [esp + 0x4c], 0
je 0x801aef
xor ecx, ecx
lea edx, [esi + 0xa4]
movzx eax, word [edx]
test al, 8
jne 0x801ac7
test eax, 0x100
je 0x801bcb
mov ebx, dword [esi + 0x10]
cmp dword [ebx + 0x4b0], 0
jne 0x801ade
test eax, 0x100
jne 0x801bcb
inc ecx
add edx, 2
cmp ecx, 4
jl 0x801ab5
mov dword [esp + 0x4c], 1
mov edx, dword [esp + 0x3c]
test dword [edx + 0xc], 0x40000
jne 0x801cb8
cmp dword [esp + 0x54], 0
mov dword [esp + 0x1c], 0
jle 0x801d51
mov eax, dword [esp + 0x48]
mov edx, eax
xor ecx, ecx
shl edx, 5
add edx, esi
lea eax, [eax + edx + 0x145e99]
lea ebx, [esi + 0x4c]
mov dword [esp + 0x44], ecx
mov dword [esp + 0x34], ecx
mov dword [esp + 0x10], ebx
mov dword [esp + 0x38], eax
lea edx, [ecx + 2]
lea ecx, [ecx]
cmp dword [ebx], ecx
jle 0x801c88
mov dword [esp + 0x24], ecx
mov ecx, dword [esp + 0x50]
lea eax, [esi + 0xa4]
mov dword [esp + 0x14], ecx
mov dword [esp + 0x20], eax
mov eax, dword [esp + 0x20]
movzx eax, word [eax]
test eax, 0x100
jne 0x801c6b
mov ecx, dword [esp + 0x34]
mov edx, 0x1000
shl edx, cl
movzx eax, ax
test eax, edx
je 0x801bf3
mov eax, dword [ebx]
cmp eax, 1
jle 0x801be3
cmp eax, 2
jne 0x801bd8
mov ecx, dword [edi + 0xc]
test ecx, ecx
jl 0x801bb1
mov eax, dword [edi + 4]
movzx edx, byte [eax]
movzx eax, byte [eax + 1]
shl edx, 8
or edx, eax
shl edx, cl
or dword [edi + 0x10], edx
add dword [edi + 4], 2
add dword [edi + 0xc], 0xfffffff0
mov eax, dword [edi + 0x10]
mov ecx, eax
lea edx, [eax + eax]
shr ecx, 0x1f
mov dword [edi + 0x10], edx
inc dword [edi + 0xc]
xor eax, eax
test ecx, ecx
sete al
jmp 0x801be5
mov dword [esp + 0x4c], 0
jmp 0x801aef
push edi
call fcn.0081b630
add esp, 4
jmp 0x801be5
xor eax, eax
cmp eax, dword [ebx]
mov dword [esp + 0x18], eax
jge 0x803a1a
jmp 0x801bfa
or eax, 0xffffffff
mov dword [esp + 0x18], eax
mov ecx, dword [esp + 0x14]
movzx edx, al
mov eax, dword [esi + 0x7638]
imul edx, edx, 0x101
add eax, dword [ecx]
mov ecx, dword [esp + 0x60]
add eax, dword [esp + 0x44]
lea ebx, [ecx + ecx*2]
mov word [eax + ebx], dx
mov word [eax + ecx*2], dx
mov word [eax + ecx], dx
mov word [eax], dx
mov eax, dword [esp + 0x18]
mov edx, dword [esp + 0x38]
movzx edx, byte [edx + eax]
mov eax, dword [esi + 0x763c]
mov dword [esp + 0x2c], edx
mov edx, dword [esp + 0x14]
add eax, dword [edx]
mov edx, dword [esp + 0x2c]
add eax, dword [esp + 0x44]
imul edx, edx, 0x101
mov word [ebx + eax], dx
mov ebx, dword [esp + 0x10]
mov word [eax + ecx*2], dx
mov word [eax + ecx], dx
mov word [eax], dx
mov edx, 2
mov eax, dword [esp + 0x24]
add dword [esp + 0x20], edx
add dword [esp + 0x14], 0x10
inc eax
cmp eax, 4
mov dword [esp + 0x24], eax
jl 0x801b5e
xor ecx, ecx
mov eax, dword [esp + 0x1c]
add dword [esp + 0x34], edx
add dword [esp + 0x38], 0x21
add dword [esp + 0x44], 0x360
inc eax
add ebx, 4
cmp eax, dword [esp + 0x54]
mov dword [esp + 0x1c], eax
mov dword [esp + 0x10], ebx
jl 0x801b40
jmp 0x801d51
mov ecx, dword [esi + 0x7638]
mov eax, dword [esp + 0x60]
lea ebx, [eax*8]
sub ebx, eax
mov dword [ebx + ecx], 0
lea edx, [eax + eax*2]
add edx, edx
mov dword [edx + ecx], 0
mov dword [esp + 0x24], edx
lea edx, [eax + eax*4]
mov dword [edx + ecx], 0
mov dword [ecx + eax*4], 0
lea edx, [eax + eax*2]
mov dword [edx + ecx], 0
mov dword [ecx + eax*2], 0
mov dword [ecx + eax], 0
mov dword [ecx], 0
mov ecx, dword [esp + 0x48]
mov edx, ecx
shl edx, 5
add edx, esi
movzx ecx, byte [ecx + edx + 0x145e99]
mov edx, dword [esi + 0x763c]
imul ecx, ecx, 0x1010101
mov dword [edx + ebx], ecx
mov ebx, dword [esp + 0x24]
mov dword [edx + ebx], ecx
lea ebx, [eax + eax*4]
mov dword [edx + ebx], ecx
mov dword [edx + eax*4], ecx
lea ebx, [eax + eax*2]
mov dword [edx + ebx], ecx
mov dword [edx + eax*2], ecx
mov dword [edx + eax], ecx
mov dword [edx], ecx
cmp dword [esp + 0x54], 0
mov dword [esp + 0x1c], 0
jle 0x803a02
xor eax, eax
mov dword [esp + 0x14], eax
mov dword [esp + 0x48], eax
mov eax, dword [esp + 0x50]
mov dword [esp + 0x18], eax
xor edx, edx
lea eax, [esi + 0xa4]
mov dword [esp + 0x44], edx
mov dword [esp + 0x38], eax
jmp 0x801d90
mov ecx, dword [esp + 0x38]
movzx eax, word [ecx]
test eax, 0x100
jne 0x801f2f
mov ecx, dword [esp + 0x48]
movzx ebx, ax
mov eax, 0x1000
shl eax, cl
mov dword [esp + 0x40], ebx
test ebx, eax
je 0x801ee8
mov eax, dword [esp + edx + 0x8c]
test bl, 0x18
mov ecx, 0
setne cl
inc ecx
mov dword [esp + 0x10], ecx
test eax, eax
jle 0x801f2f
mov dword [esp + 0x34], edx
mov edx, dword [esp + 0x18]
and ebx, 8
mov dword [esp + 0x24], ebx
mov dword [esp + 0x20], edx
mov dword [esp + 0x2c], eax
mov eax, dword [esp + 0x20]
mov eax, dword [eax]
mov ecx, dword [esp + 0x14]
mov ebx, dword [esi + 0x7640]
lea edx, [ecx + eax]
lea ebx, [ebx + edx*4]
lea edx, [esp + 0x30]
push edx
mov edx, dword [esi + 0x7638]
add edx, ecx
movsx eax, byte [edx + eax]
mov ecx, dword [esp + 0x20]
mov edx, dword [esp + 0x14]
push eax
mov eax, dword [esp + 0x3c]
push ecx
push edx
push eax
mov eax, esi
call fcn.007f6cb0
push edi
call fcn.0081b520
add word [esp + 0x34], ax
push edi
call fcn.0081b520
add word [esp + 0x3a], ax
add esp, 8
cmp dword [esp + 0x24], 0
je 0x801e7b
mov ecx, dword [esp + 0x30]
mov eax, dword [esp + 0x60]
add eax, eax
add eax, eax
lea edx, [ebx + eax*2]
mov dword [eax + edx], ecx
mov dword [eax + edx + 4], ecx
mov dword [ebx + eax*2], ecx
mov dword [ebx + eax*2 + 4], ecx
mov dword [eax + ebx], ecx
mov dword [eax + ebx + 4], ecx
mov dword [ebx], ecx
mov dword [ebx + 4], ecx
jmp 0x801ec8
mov al, byte [esp + 0x40]
test al, 0x10
je 0x801e97
mov eax, dword [esp + 0x30]
mov ecx, dword [esp + 0x60]
mov dword [ebx + ecx*4 + 4], eax
mov dword [ebx + ecx*4], eax
mov dword [ebx + 4], eax
jmp 0x801ec6
test al, 0x20
je 0x801eb7
mov eax, dword [esp + 0x60]
mov ecx, dword [esp + 0x30]
add eax, eax
add eax, eax
lea edx, [ebx + eax*2]
mov dword [eax + edx], ecx
mov dword [ebx + eax*2], ecx
mov dword [ebx + eax], ecx
mov dword [ebx], ecx
jmp 0x801ec8
test al, 0x40
je 0x801ec8
mov eax, dword [esp + 0x30]
mov ecx, dword [esp + 0x60]
mov dword [ebx + ecx*4], eax
mov dword [ebx], eax
mov ecx, dword [esp + 0x10]
add dword [esp + 0x34], ecx
lea eax, [ecx*4]
add dword [esp + 0x20], eax
sub dword [esp + 0x2c], 1
jne 0x801df2
jmp 0x801f2b
mov edx, dword [esp + 0x18]
mov ecx, dword [edx]
mov edx, dword [esi + 0x7640]
mov eax, dword [esp + 0x60]
add ecx, dword [esp + 0x14]
add eax, eax
add eax, eax
lea ecx, [edx + ecx*4]
xor edx, edx
lea ebx, [ecx + eax*2]
mov dword [eax + ebx], edx
mov dword [eax + ebx + 4], edx
mov ebx, edx
mov dword [ecx + eax*2], ebx
mov dword [ecx + eax*2 + 4], edx
mov dword [ecx + eax], ebx
mov dword [ecx + eax + 4], edx
mov dword [ecx], ebx
mov dword [esp + 0x9c], edx
mov dword [ecx + 4], edx
mov edx, dword [esp + 0x44]
add dword [esp + 0x18], 0x10
mov ecx, 2
add dword [esp + 0x38], ecx
add edx, 4
cmp edx, 0x10
mov dword [esp + 0x44], edx
jl 0x801d90
mov eax, dword [esp + 0x1c]
add dword [esp + 0x48], ecx
add dword [esp + 0x14], 0x360
inc eax
cmp eax, dword [esp + 0x54]
mov dword [esp + 0x1c], eax
jl 0x801d6e
jmp 0x803a02
test eax, 0x100
je 0x8030ae
mov eax, dword [esp + 0x3c]
xor edx, edx
mov dword [esp + 0x70], edx
mov eax, dword [eax + 0xc]
mov ecx, eax
and ecx, 0x40
mov dword [esp + 0x38], ecx
mov ecx, eax
and ecx, 0x80
mov dword [esp + 0x6c], eax
mov dword [esp + 0x74], edx
mov dword [esp + 0x84], edx
test byte [esi + 0xe8], 1
mov dword [esp + 0x10], ecx
je 0x801fc6
mov ecx, dword [esi + 0xbc]
lea ecx, [ecx + ecx + 2]
mov dword [esp + 0x44], ecx
jmp 0x801fca
mov dword [esp + 0x44], edx
mov dword [esp + 0x88], edx
mov ecx, dword [esi + 0xc]
cmp dword [ecx + 0x240], edx
je 0x80201f
mov eax, dword [esi + 0x40040]
cmp eax, edx
je 0x80200f
cmp eax, 4
je 0x80200f
lea edx, [esp + 0x88]
push edx
lea eax, [esp + 0x78]
push eax
lea ecx, [esp + 0x74]
push ecx
lea edx, [esp + 0x90]
lea ecx, [esp + 0x7c]
call fcn.007f6ec0
jmp 0x802043
lea edx, [esp + 0x6c]
push edx
lea ecx, [esp + 0x74]
call fcn.007f7820
jmp 0x802043
or eax, 8
mov dword [esp + 0x6c], eax
mov eax, 0x1010101
mov dword [esi + 0x771c], eax
mov dword [esi + 0x7718], eax
mov dword [esi + 0x7714], eax
mov dword [esi + 0x7710], eax
mov eax, dword [esi + 0xc]
cmp dword [eax + 0x18], 0
je 0x80274a
mov eax, dword [esi + 0x7638]
xor ecx, ecx
sub eax, ebx
dec eax
mov dword [esp + 0x18], ecx
mov dword [esp + 0x10], eax
movsx edx, byte [eax + 5]
mov dword [esp + 0x20], edx
cmp edx, 0xfffffff8
jne 0x802077
movsx edx, byte [eax]
mov dword [esp + 0x20], edx
movsx edx, byte [ebx + eax]
cmp dword [edx*4 + 0x1036bf50], 0x7fffffff
lea ecx, [esp + ecx*4 + 0x58]
mov dword [ecx], 0x7fffffff
jge 0x802094
mov dword [ecx], edx
movsx edx, byte [eax + 1]
mov edx, dword [edx*4 + 0x1036bf50]
cmp edx, dword [ecx]
jge 0x8020a9
movsx edx, byte [eax + 1]
mov dword [ecx], edx
mov edx, dword [esp + 0x20]
mov edx, dword [edx*4 + 0x1036bf50]
cmp edx, dword [ecx]
jge 0x8020be
mov edx, dword [esp + 0x20]
mov dword [ecx], edx
mov edx, dword [ecx]
cmp edx, 0x7fffffff
je 0x8020eb
mov eax, dword [esp + 0x18]
lea ecx, [esp + eax*4 + 0x9c]
push ecx
push edx
push eax
push 4
push 0
mov eax, esi
call fcn.007f6cb0
mov ecx, dword [esp + 0x18]
mov eax, dword [esp + 0x10]
jmp 0x802107
mov dword [ecx], 0xffffffff
mov ecx, dword [esp + 0x18]
xor edx, edx
mov word [esp + ecx*4 + 0x9e], dx
mov word [esp + ecx*4 + 0x9c], dx
inc ecx
add eax, 0x360
cmp ecx, 2
mov dword [esp + 0x18], ecx
mov dword [esp + 0x10], eax
jl 0x802063
mov eax, dword [esp + 0x58]
test eax, eax
jge 0x80213d
cmp dword [esp + 0x5c], 0
jge 0x80214b
xor eax, eax
mov dword [esp + 0x5c], 0
mov dword [esp + 0x58], eax
jmp 0x80215c
cmp dword [esp + 0x5c], 0
jge 0x80214b
mov ecx, 0xffff3fff
jmp 0x802154
test eax, eax
jge 0x80215c
mov ecx, 0xffffcfff
and dword [esp + 0x6c], ecx
and dword [esp + 0x70], ecx
test byte [esp + 0x6c], 8
je 0x802402
mov ecx, dword [esi + 0x7638]
movzx eax, al
imul eax, eax, 0x1010101
lea edx, [ebx*8]
sub edx, ebx
mov dword [edx + ecx], eax
mov dword [esp + 0x40], edx
lea edx, [ebx + ebx*2]
add edx, edx
mov dword [edx + ecx], eax
mov dword [esp + 0x30], edx
lea edx, [ebx + ebx*4]
mov dword [edx + ecx], eax
lea edx, [ebx*4]
mov dword [edx + ecx], eax
mov dword [esp + 0x18], edx
lea edx, [ebx + ebx*2]
mov dword [edx + ecx], eax
mov dword [ecx + ebx*2], eax
mov dword [ecx + ebx], eax
mov dword [ecx], eax
mov eax, dword [esi + 0x7638]
movzx ecx, byte [esp + 0x5c]
mov edx, dword [esp + 0x40]
imul ecx, ecx, 0x1010101
mov dword [edx + eax + 0x360], ecx
mov edx, dword [esp + 0x30]
mov dword [edx + eax + 0x360], ecx
add eax, 0x360
lea edx, [ebx + ebx*4]
mov dword [edx + eax], ecx
mov edx, dword [esp + 0x18]
mov dword [edx + eax], ecx
lea edx, [ebx + ebx*2]
mov dword [edx + eax], ecx
mov dword [eax + ebx*2], ecx
mov dword [eax + ebx], ecx
mov dword [eax], ecx
mov ecx, dword [esp + 0x44]
mov edx, dword [esp + 0x40]
mov eax, ecx
shl eax, 5
add eax, ecx
mov ecx, dword [esp + 0x58]
mov dword [esp + 0x54], eax
add ecx, esi
movzx eax, byte [ecx + eax + 0x145e99]
mov ecx, dword [esi + 0x763c]
imul eax, eax, 0x1010101
mov dword [ecx + edx], eax
mov edx, dword [esp + 0x30]
mov dword [ecx + edx], eax
lea edx, [ebx + ebx*4]
mov dword [ecx + edx], eax
mov edx, dword [esp + 0x18]
mov dword [ecx + edx], eax
lea edx, [ebx + ebx*2]
mov dword [ecx + edx], eax
mov dword [ecx + ebx*2], eax
mov dword [ecx + ebx], eax
mov edx, dword [esp + 0x40]
mov dword [ecx], eax
mov eax, dword [esp + 0x5c]
mov ecx, dword [esp + 0x54]
add eax, esi
movzx ecx, byte [eax + ecx + 0x145eba]
mov eax, dword [esi + 0x763c]
add eax, 0x360
imul ecx, ecx, 0x1010101
mov dword [edx + eax], ecx
mov edx, dword [esp + 0x30]
mov dword [edx + eax], ecx
lea edx, [ebx + ebx*4]
mov dword [edx + eax], ecx
mov edx, dword [esp + 0x18]
mov dword [edx + eax], ecx
lea edx, [ebx + ebx*2]
mov dword [edx + eax], ecx
mov dword [eax + ebx*2], ecx
mov dword [ebx + eax], ecx
mov dword [eax], ecx
cmp byte [esi + 0x7710], 0
jne 0x802309
mov al, byte [esi + 0x76d0]
test al, al
jne 0x8022c8
movsx ecx, word [esi + 0x7650]
inc ecx
cmp ecx, 2
ja 0x8022c6
movsx edx, word [esi + 0x7652]
inc edx
cmp edx, 2
jbe 0x8022ed
test al, al
jge 0x802309
cmp byte [esi + 0x76e0], 0
jne 0x802309
movsx eax, word [esi + 0x7690]
inc eax
cmp eax, 2
ja 0x802309
movsx ecx, word [esi + 0x7692]
inc ecx
cmp ecx, 2
ja 0x802309
xor eax, eax
cmp dword [esp + 0x58], eax
jg 0x8022fc
mov dword [esp + 0x9c], eax
cmp dword [esp + 0x5c], eax
jg 0x802309
mov dword [esp + 0xa0], eax
mov ecx, dword [esi + 0x7640]
mov eax, dword [esp + 0x18]
movd mm0, dword [esp + 0x9c]
movq mm1, mm0
punpckldq mm1, mm0
movq mm0, mm1
movq qword [ecx], mm0
movq qword [ecx + 8], mm0
movq qword [ecx + eax], mm0
movq qword [ecx + eax + 8], mm0
movq qword [ecx + eax*2], mm0
movq qword [ecx + eax*2 + 8], mm0
lea edx, [ecx + eax*2]
movq qword [edx + eax], mm0
movq qword [edx + eax + 8], mm0
movq qword [ecx + eax*4], mm0
movq qword [ecx + eax*4 + 8], mm0
add edx, eax
lea edx, [ecx + eax*4]
movq qword [edx + eax], mm0
movq qword [edx + eax + 8], mm0
add edx, eax
lea edx, [eax + eax*2]
movq qword [ecx + edx*2], mm0
movq qword [ecx + edx*2 + 8], mm0
lea edx, [ecx + edx*2]
lea edx, [eax*8]
sub edx, eax
movq qword [ecx + edx], mm0
movq qword [ecx + edx + 8], mm0
movd mm0, dword [esp + 0xa0]
add ecx, edx
mov ecx, dword [esi + 0x7640]
add ecx, 0xd80
movq mm1, mm0
punpckldq mm1, mm0
movq mm0, mm1
movq qword [ecx], mm0
movq qword [ecx + 8], mm0
movq qword [ecx + eax], mm0
movq qword [ecx + eax + 8], mm0
movq qword [ecx + eax*2], mm0
movq qword [ecx + eax*2 + 8], mm0
lea edx, [ecx + eax*2]
movq qword [edx + eax], mm0
movq qword [edx + eax + 8], mm0
add edx, eax
movq qword [ecx + eax*4], mm0
movq qword [ecx + eax*4 + 8], mm0
lea edx, [ecx + eax*4]
add edx, eax
movq qword [edx], mm0
movq qword [edx + 8], mm0
lea edx, [eax + eax*2]
lea edx, [ecx + edx*2]
movq qword [edx], mm0
movq qword [edx + 8], mm0
lea edx, [eax*8]
sub edx, eax
add ecx, edx
movq qword [ecx], mm0
movq qword [ecx + 8], mm0
jmp 0x80308a
mov edx, dword [esp + 0x50]
mov ecx, 0x10369a48
lea eax, [esi + 0xa4]
sub edx, ecx
mov dword [esp + 0x20], ecx
mov dword [esp + 0x18], eax
mov dword [esp + 0x48], edx
cmp dword [esp + 0x38], 0
mov edx, dword [ecx]
mov dword [esp + 0x2c], edx
mov edx, dword [esp + 0x48]
mov ecx, dword [ecx + edx]
mov dword [esp + 0x14], ecx
je 0x802445
mov edx, 0x100
test word [eax], dx
je 0x802723
mov dx, word [esp + 0x70]
mov word [eax], dx
lea edx, [ecx*4]
mov ecx, dword [esi + 0x7640]
add ecx, edx
mov dword [esp + 0x10], ecx
lea eax, [ebx*4]
mov dword [esp + 0x34], edx
lea edx, [ecx + eax*2]
mov ecx, dword [esp + 0x9c]
mov dword [eax + edx], ecx
mov dword [eax + edx + 4], ecx
mov edx, dword [esp + 0x10]
mov dword [edx + eax*2], ecx
mov dword [edx + eax*2 + 4], ecx
mov dword [edx + eax], ecx
mov dword [edx + eax + 4], ecx
mov dword [edx], ecx
mov dword [edx + 4], ecx
mov ecx, dword [esi + 0x7640]
mov edx, dword [esp + 0x14]
lea edx, [edx*4 + 0xd80]
add ecx, edx
mov dword [esp + 0x10], ecx
mov dword [esp + 0x24], edx
lea edx, [ecx + eax*2]
mov ecx, dword [esp + 0xa0]
mov dword [eax + edx], ecx
mov dword [eax + edx + 4], ecx
mov edx, dword [esp + 0x10]
mov dword [edx + eax*2], ecx
mov dword [edx + eax*2 + 4], ecx
mov dword [edx + eax], ecx
mov dword [edx + eax + 4], ecx
mov dword [edx], ecx
mov dword [edx + 4], ecx
mov eax, dword [esi + 0x7638]
add eax, dword [esp + 0x14]
movzx ecx, byte [esp + 0x58]
imul ecx, ecx, 0x101
lea edx, [ebx + ebx*2]
mov word [edx + eax], cx
mov word [eax + ebx*2], cx
mov word [ebx + eax], cx
mov word [eax], cx
mov eax, dword [esi + 0x7638]
mov ecx, dword [esp + 0x14]
lea ecx, [ecx + eax + 0x360]
movzx eax, byte [esp + 0x5c]
imul eax, eax, 0x101
mov word [edx + ecx], ax
mov word [ecx + ebx*2], ax
mov word [ebx + ecx], ax
mov word [ecx], ax
mov ecx, dword [esp + 0x44]
mov eax, ecx
shl eax, 5
add eax, ecx
mov ecx, dword [esp + 0x58]
add ecx, esi
movzx ecx, byte [ecx + eax + 0x145e99]
imul ecx, ecx, 0x101
mov dword [esp + 0x54], eax
mov eax, dword [esi + 0x763c]
add eax, dword [esp + 0x14]
mov word [eax + edx], cx
mov word [eax + ebx*2], cx
mov word [eax + ebx], cx
mov word [eax], cx
mov eax, dword [esp + 0x5c]
mov ecx, dword [esp + 0x54]
add eax, esi
movzx eax, byte [eax + ecx + 0x145eba]
mov ecx, dword [esi + 0x763c]
mov dword [esp + 0x10], eax
mov eax, dword [esp + 0x14]
lea ecx, [eax + ecx + 0x360]
mov eax, dword [esp + 0x10]
imul eax, eax, 0x101
mov word [edx + ecx], ax
mov word [ecx + ebx*2], ax
mov word [ebx + ecx], ax
mov word [ecx], ax
mov eax, dword [esp + 0x2c]
cmp byte [eax + esi + 0x7710], 0
jne 0x802723
mov cl, byte [eax + esi + 0x76d0]
test cl, cl
je 0x8025d9
jge 0x802723
cmp byte [eax + esi + 0x76e0], 0
jne 0x802723
test cl, cl
jne 0x8025e1
lea edx, [esi + 0x7650]
jmp 0x8025e7
lea edx, [esi + 0x7690]
test byte [esp + 0x70], 8
mov dword [esp + 0x10], edx
je 0x80269e
movsx ecx, word [edx + eax*4]
inc ecx
cmp ecx, 2
ja 0x802723
movsx edx, word [edx + eax*4 + 2]
inc edx
cmp edx, 2
ja 0x802723
cmp dword [esp + 0x58], 0
jne 0x802654
mov ecx, dword [esi + 0x7640]
add ecx, dword [esp + 0x34]
lea eax, [ebx*4]
xor edx, edx
mov dword [esp + 0x10], ecx
lea ecx, [ecx + eax*2]
mov dword [eax + ecx], edx
mov dword [eax + ecx + 4], edx
mov ecx, dword [esp + 0x10]
mov dword [ecx + eax*2], edx
mov dword [ecx + eax*2 + 4], edx
mov dword [ecx + eax], edx
mov dword [ecx + eax + 4], edx
xor eax, eax
mov dword [ecx], eax
mov dword [ecx + 4], edx
cmp dword [esp + 0x5c], 0
jne 0x802723
mov ecx, dword [esi + 0x7640]
add ecx, dword [esp + 0x24]
lea eax, [ebx*4]
xor edx, edx
mov dword [esp + 0x10], ecx
lea ecx, [ecx + eax*2]
mov dword [eax + ecx], edx
mov dword [eax + ecx + 4], edx
mov ecx, dword [esp + 0x10]
mov dword [ecx + eax*2], edx
mov dword [ecx + eax*2 + 4], edx
mov dword [ecx + eax], edx
mov dword [ecx + eax + 4], edx
xor eax, eax
mov dword [ecx], eax
mov dword [ecx + 4], edx
jmp 0x802723
mov eax, dword [esp + 0x20]
mov dword [esp + 0x2c], eax
mov dword [esp + 0x34], 4
jmp 0x8026b4
mov edx, dword [esp + 0x10]
mov ecx, dword [esp + 0x48]
mov ecx, dword [ecx + eax]
mov eax, dword [eax]
lea eax, [edx + eax*4]
movsx edx, word [eax]
inc edx
cmp edx, 2
ja 0x802711
movsx eax, word [eax + 2]
inc eax
cmp eax, 2
ja 0x802711
cmp dword [esp + 0x58], 0
jne 0x8026f0
mov edx, dword [esi + 0x7640]
lea eax, [edx + ecx*4]
mov dword [eax + ebx*4], 0
mov dword [eax], 0
cmp dword [esp + 0x5c], 0
jne 0x802711
mov eax, dword [esi + 0x7640]
lea eax, [eax + ecx*4 + 0xd80]
mov dword [eax + ebx*4], 0
mov dword [eax], 0
mov eax, dword [esp + 0x2c]
add eax, 4
sub dword [esp + 0x34], 1
mov dword [esp + 0x2c], eax
jne 0x8026b0
mov ecx, dword [esp + 0x20]
mov eax, dword [esp + 0x18]
add ecx, 0x10
add eax, 2
cmp ecx, 0x10369a88
mov dword [esp + 0x18], eax
mov dword [esp + 0x20], ecx
jl 0x80241f
jmp 0x80308a
test byte [esp + 0x6c], 8
je 0x802be6
mov eax, dword [esi + 0x7638]
add eax, 0x360
lea edx, [ebx*8]
sub edx, ebx
mov dword [edx + eax], 0
lea ecx, [ebx + ebx*2]
add ecx, ecx
mov dword [ecx + eax], 0
mov dword [esp + 0x30], ecx
lea ecx, [ebx + ebx*4]
mov dword [ecx + eax], 0
mov dword [eax + ebx*4], 0
lea ecx, [ebx + ebx*2]
mov dword [ecx + eax], 0
mov ecx, dword [esp + 0x44]
mov dword [eax + ebx*2], 0
mov dword [ebx + eax], 0
mov dword [eax], 0
mov eax, ecx
shl eax, 5
add eax, ecx
movzx ecx, byte [esi + eax + 0x145eba]
imul ecx, ecx, 0x1010101
mov dword [esp + 0x54], eax
mov eax, dword [esi + 0x763c]
add eax, 0x360
mov dword [edx + eax], ecx
mov dword [esp + 0x40], edx
mov edx, dword [esp + 0x30]
mov dword [edx + eax], ecx
lea edx, [ebx + ebx*4]
mov dword [edx + eax], ecx
mov dword [eax + ebx*4], ecx
lea edx, [ebx + ebx*2]
mov dword [edx + eax], ecx
mov dword [eax + ebx*2], ecx
mov dword [ebx + eax], ecx
mov dword [eax], ecx
cmp byte [esi + 0x7710], 0
je 0x802983
mov ecx, dword [esi + 0x7640]
xor eax, eax
movd mm1, eax
lea eax, [ebx*4]
lea edx, [ecx + eax*2]
add edx, eax
movq mm0, mm1
movq mm2, mm0
punpckldq mm2, mm0
movq mm0, mm2
movq qword [ecx], mm0
movq qword [ecx + 8], mm0
movq qword [ecx + eax], mm0
movq qword [ecx + eax + 8], mm0
movq qword [ecx + eax*2], mm0
movq qword [ecx + eax*2 + 8], mm0
movq qword [edx], mm0
movq qword [edx + 8], mm0
movq qword [ecx + eax*4], mm0
movq qword [ecx + eax*4 + 8], mm0
lea edx, [ecx + eax*4]
movq qword [edx + eax], mm0
movq qword [edx + eax + 8], mm0
add edx, eax
lea edx, [eax + eax*2]
movq qword [ecx + edx*2], mm0
movq qword [ecx + edx*2 + 8], mm0
lea edx, [ecx + edx*2]
lea edx, [eax*8]
sub edx, eax
movq qword [ecx + edx], mm0
movq qword [ecx + edx + 8], mm0
add ecx, edx
mov ecx, dword [esi + 0x7640]
add ecx, 0xd80
lea edx, [ecx + eax*2]
add edx, eax
movq mm0, mm1
punpckldq mm0, mm1
movq qword [ecx], mm0
movq qword [ecx + 8], mm0
movq qword [ecx + eax], mm0
movq qword [ecx + eax + 8], mm0
movq qword [ecx + eax*2], mm0
movq qword [ecx + eax*2 + 8], mm0
movq qword [edx], mm0
movq qword [edx + 8], mm0
movq qword [ecx + eax*4], mm0
movq qword [ecx + eax*4 + 8], mm0
lea edx, [ecx + eax*4]
movq qword [edx + eax], mm0
movq qword [edx + eax + 8], mm0
add edx, eax
lea edx, [eax + eax*2]
movq qword [ecx + edx*2], mm0
movq qword [ecx + edx*2 + 8], mm0
lea edx, [ecx + edx*2]
lea edx, [eax*8]
sub edx, eax
movq qword [ecx + edx], mm0
add ecx, edx
mov edx, dword [esp + 0x40]
movq qword [ecx + 8], mm0
mov ecx, dword [esi + 0x7638]
mov dword [ecx + edx], 0
mov edx, dword [esp + 0x30]
mov dword [ecx + edx], 0
lea edx, [ebx + ebx*4]
mov dword [ecx + edx], 0
mov edx, dword [esp + 0x40]
mov dword [ecx + eax], 0
lea eax, [ebx + ebx*2]
mov dword [ecx + eax], 0
mov eax, dword [esp + 0x54]
mov dword [ecx + ebx*2], 0
mov dword [ecx + ebx], 0
mov dword [ecx], 0
movzx eax, byte [esi + eax + 0x145e99]
mov ecx, dword [esi + 0x763c]
imul eax, eax, 0x1010101
mov dword [ecx + edx], eax
mov edx, dword [esp + 0x30]
mov dword [ecx + edx], eax
lea edx, [ebx + ebx*4]
mov dword [ecx + edx], eax
mov dword [ecx + ebx*4], eax
lea edx, [ebx + ebx*2]
mov dword [ecx + edx], eax
mov dword [ecx + ebx*2], eax
mov dword [ecx + ebx], eax
mov dword [ecx], eax
jmp 0x80308a
cmp dword [esp + 0x10], 0
je 0x802993
mov ecx, dword [esi + 0xbc]
inc ecx
jmp 0x802995
xor ecx, ecx
mov eax, dword [esp + 0x74]
mov edx, dword [esp + 0x88]
lea ecx, [ecx + eax*2]
add ecx, eax
lea eax, [edx + ecx*2]
movsx ecx, byte [esi + 0x7720]
shl eax, 7
add eax, ecx
imul eax, eax, 0x190
lea ecx, [eax + esi + 0x40048]
mov al, byte [esi + 0x76d0]
test al, al
jl 0x8029d7
movsx edx, byte [esi + 0x76f0]
mov cl, byte [edx + ecx]
jmp 0x8029e5
movsx edx, byte [esi + 0x7700]
mov cl, byte [edx + ecx + 0xc8]
movzx ecx, cl
test al, al
mov dword [esp + 0x10], ecx
lea eax, [esi + 0x7650]
jge 0x8029fc
lea eax, [esi + 0x7690]
mov edx, dword [esp + 0x40]
mov dword [esp + 0x24], eax
movzx eax, cl
mov ecx, dword [esi + 0x7638]
imul eax, eax, 0x1010101
mov dword [edx + ecx], eax
mov edx, dword [esp + 0x30]
mov dword [edx + ecx], eax
lea edx, [ebx + ebx*4]
mov dword [edx + ecx], eax
mov dword [ecx + ebx*4], eax
lea edx, [ebx + ebx*2]
mov dword [edx + ecx], eax
mov edx, dword [esp + 0x24]
mov dword [ecx + ebx*2], eax
mov dword [ebx + ecx], eax
mov dword [ecx], eax
mov eax, dword [esp + 0x84]
shl eax, 5
add eax, dword [esp + 0x10]
mov ecx, dword [esi + eax*4 + 0x121048]
mov eax, dword [esp + 0x74]
cmp eax, 2
jne 0x802a63
mov ax, word [edx + 2]
add ax, ax
mov word [edx + 2], ax
jmp 0x802a79
cmp eax, 1
jne 0x802a79
movsx eax, word [edx + 2]
cdq
sub eax, edx
mov edx, dword [esp + 0x24]
sar eax, 1
mov word [edx + 2], ax
movsx eax, word [edx]
imul eax, ecx
sub eax, 0xffffff80
sar eax, 8
mov word [esp + 0x28], ax
movsx eax, word [edx + 2]
imul eax, ecx
mov ecx, dword [esi + 0x7640]
sub eax, 0xffffff80
sar eax, 8
mov word [esp + 0x2a], ax
movd mm0, dword [esp + 0x28]
lea eax, [ebx*4]
lea edx, [ecx + eax*2]
add edx, eax
movq mm1, mm0
punpckldq mm1, mm0
movq mm0, mm1
movq qword [ecx], mm0
movq qword [ecx + 8], mm0
movq qword [ecx + eax], mm0
movq qword [ecx + eax + 8], mm0
movq qword [ecx + eax*2], mm0
movq qword [ecx + eax*2 + 8], mm0
movq qword [edx], mm0
movq qword [edx + 8], mm0
movq qword [ecx + eax*4], mm0
movq qword [ecx + eax*4 + 8], mm0
lea edx, [ecx + eax*4]
movq qword [edx + eax], mm0
movq qword [edx + eax + 8], mm0
add edx, eax
lea edx, [eax + eax*2]
movq qword [ecx + edx*2], mm0
movq qword [ecx + edx*2 + 8], mm0
lea edx, [ecx + edx*2]
lea edx, [eax*8]
sub edx, eax
movq qword [ecx + edx], mm0
movq qword [ecx + edx + 8], mm0
add ecx, edx
mov ecx, dword [esp + 0x24]
mov dx, word [ecx]
mov cx, word [ecx + 2]
sub word [esp + 0x28], dx
sub word [esp + 0x2a], cx
mov ecx, dword [esi + 0x7640]
movd mm0, dword [esp + 0x28]
add ecx, 0xd80
movq mm1, mm0
lea edx, [ecx + eax*2]
add edx, eax
punpckldq mm1, mm0
movq mm0, mm1
movq qword [ecx], mm0
movq qword [ecx + 8], mm0
movq qword [ecx + eax], mm0
movq qword [ecx + eax + 8], mm0
movq qword [ecx + eax*2], mm0
movq qword [ecx + eax*2 + 8], mm0
movq qword [edx], mm0
movq qword [edx + 8], mm0
movq qword [ecx + eax*4], mm0
movq qword [ecx + eax*4 + 8], mm0
lea edx, [ecx + eax*4]
add edx, eax
movq qword [edx], mm0
movq qword [edx + 8], mm0
lea edx, [eax + eax*2]
lea edx, [ecx + edx*2]
movq qword [edx], mm0
movq qword [edx + 8], mm0
lea edx, [eax*8]
sub edx, eax
mov eax, dword [esp + 0x10]
add ecx, edx
movq qword [ecx], mm0
movq qword [ecx + 8], mm0
mov ecx, dword [esp + 0x54]
add eax, esi
movzx eax, byte [eax + ecx + 0x145e99]
mov ecx, dword [esi + 0x763c]
imul eax, eax, 0x1010101
mov edx, dword [esp + 0x40]
mov dword [edx + ecx], eax
mov edx, dword [esp + 0x30]
mov dword [edx + ecx], eax
lea edx, [ebx + ebx*4]
mov dword [edx + ecx], eax
mov dword [ecx + ebx*4], eax
lea edx, [ebx + ebx*2]
mov dword [edx + ecx], eax
mov dword [ecx + ebx*2], eax
mov dword [ebx + ecx], eax
mov dword [ecx], eax
jmp 0x80308a
lea eax, [esi + 0xa4]
mov dword [esp + 0x18], eax
mov eax, dword [esp + 0x50]
mov ecx, 0x10369a48
sub eax, ecx
mov dword [esp + 0x34], ecx
mov dword [esp + 0x48], eax
jmp 0x802c14
mov eax, dword [esp + 0x48]
cmp dword [esp + 0x38], 0
mov eax, dword [ecx + eax]
mov ecx, dword [ecx]
mov dword [esp + 0x30], ecx
lea ecx, [esi + 0x7650]
mov dword [esp + 0x40], eax
mov dword [esp + 0x24], ecx
je 0x802c44
mov ecx, dword [esp + 0x18]
mov edx, 0x100
test word [ecx], dx
je 0x80306e
mov edx, dword [esi + 0x7638]
lea eax, [edx + eax + 0x360]
xor ecx, ecx
lea edx, [ebx + ebx*2]
mov word [edx + eax], cx
mov word [eax + ebx*2], cx
mov word [ebx + eax], cx
mov word [eax], cx
mov eax, dword [esp + 0x44]
mov ecx, eax
shl ecx, 5
add ecx, esi
add eax, ecx
mov ecx, dword [esi + 0x763c]
mov dword [esp + 0x2c], eax
movzx eax, byte [eax + 0x145eba]
mov dword [esp + 0x20], eax
mov eax, dword [esp + 0x40]
lea ecx, [ecx + eax + 0x360]
mov eax, dword [esp + 0x20]
imul eax, eax, 0x101
mov word [edx + ecx], ax
mov word [ecx + ebx*2], ax
mov word [ebx + ecx], ax
mov word [ecx], ax
mov cx, word [esp + 0x70]
mov eax, dword [esp + 0x18]
mov word [eax], cx
mov ecx, dword [esp + 0x30]
cmp byte [esi + ecx + 0x7710], 0
je 0x802da1
mov edx, dword [esi + 0x7640]
mov ecx, dword [esp + 0x40]
lea ecx, [edx + ecx*4]
lea eax, [ebx*4]
mov dword [esp + 0x14], ecx
lea ecx, [ecx + eax*2]
mov dword [esp + 0x20], ecx
xor edx, edx
mov dword [eax + ecx], edx
mov edx, dword [esp + 0x20]
xor ecx, ecx
mov dword [eax + edx + 4], ecx
mov ecx, dword [esp + 0x14]
xor edx, edx
mov dword [ecx + eax*2], edx
mov dword [ecx + eax*2 + 4], edx
mov dword [ecx + eax], edx
mov dword [ecx + eax + 4], edx
mov dword [ecx], edx
mov dword [ecx + 4], edx
mov ecx, dword [esi + 0x7640]
mov edx, dword [esp + 0x40]
lea ecx, [ecx + edx*4 + 0xd80]
mov dword [esp + 0x14], ecx
lea ecx, [ecx + eax*2]
xor edx, edx
mov dword [eax + ecx], edx
mov dword [esp + 0x20], ecx
mov edx, ecx
xor ecx, ecx
mov dword [eax + edx + 4], ecx
mov ecx, dword [esp + 0x14]
xor edx, edx
mov dword [ecx + eax*2], edx
mov dword [ecx + eax*2 + 4], edx
mov dword [ecx + eax], edx
mov dword [ecx + eax + 4], edx
xor eax, eax
mov dword [ecx], eax
mov dword [ecx + 4], edx
mov eax, dword [esi + 0x7638]
add eax, dword [esp + 0x40]
xor ecx, ecx
lea edx, [ebx + ebx*2]
mov word [eax + edx], cx
mov word [eax + ebx*2], cx
mov word [eax + ebx], cx
mov word [eax], cx
mov eax, dword [esp + 0x2c]
movzx ecx, byte [eax + 0x145e99]
mov eax, dword [esi + 0x763c]
add eax, dword [esp + 0x40]
imul ecx, ecx, 0x101
mov word [edx + eax], cx
mov word [eax + ebx*2], cx
mov word [ebx + eax], cx
mov word [eax], cx
jmp 0x80306e
cmp dword [esp + 0x10], 0
je 0x802db1
mov ecx, dword [esi + 0xbc]
inc ecx
jmp 0x802db3
xor ecx, ecx
mov eax, dword [esp + 0x74]
lea ecx, [ecx + eax*2]
add ecx, eax
mov eax, dword [esp + 0x88]
lea ecx, [eax + ecx*2]
mov eax, dword [esp + 0x30]
movsx eax, byte [esi + eax + 0x7720]
shl ecx, 7
add ecx, eax
imul ecx, ecx, 0x190
lea eax, [ecx + esi + 0x40048]
mov ecx, dword [esp + 0x30]
cmp byte [esi + ecx + 0x76d0], 0
jl 0x802e00
movsx ecx, byte [esi + ecx + 0x76f0]
movzx eax, byte [ecx + eax]
jmp 0x802e1a
movsx ecx, byte [esi + ecx + 0x7700]
movzx eax, byte [ecx + eax + 0xc8]
lea ecx, [esi + 0x7690]
mov dword [esp + 0x24], ecx
mov ecx, dword [esp + 0x84]
shl ecx, 5
add ecx, eax
mov ecx, dword [esi + ecx*4 + 0x121048]
mov dword [esp + 0x20], ecx
movzx ecx, al
imul ecx, ecx, 0x101
mov dword [esp + 0x14], eax
mov eax, dword [esi + 0x7638]
add eax, dword [esp + 0x40]
mov word [eax + edx], cx
mov word [eax + ebx*2], cx
mov word [eax + ebx], cx
mov word [eax], cx
mov eax, dword [esp + 0x2c]
mov ecx, dword [esp + 0x14]
movzx ecx, byte [eax + ecx + 0x145e99]
mov eax, dword [esi + 0x763c]
imul ecx, ecx, 0x101
add eax, dword [esp + 0x40]
mov word [eax + edx], cx
mov word [eax + ebx*2], cx
mov word [eax + ebx], cx
mov word [eax], cx
test byte [esp + 0x70], 8
je 0x802f9c
mov eax, dword [esp + 0x74]
mov ecx, dword [esp + 0x24]
cmp eax, 2
jne 0x802eb1
mov eax, dword [esp + 0x30]
mov dx, word [ecx + eax*4 + 2]
add dx, dx
mov word [ecx + eax*4 + 2], dx
jmp 0x802ecd
cmp eax, 1
jne 0x802ecd
mov eax, dword [esp + 0x30]
movsx eax, word [ecx + eax*4 + 2]
cdq
sub eax, edx
mov edx, dword [esp + 0x30]
sar eax, 1
mov word [ecx + edx*4 + 2], ax
mov eax, dword [esp + 0x30]
movsx eax, word [ecx + eax*4]
mov edx, dword [esp + 0x20]
imul eax, edx
sub eax, 0xffffff80
sar eax, 8
mov word [esp + 0x28], ax
mov eax, dword [esp + 0x30]
movsx eax, word [ecx + eax*4 + 2]
mov ecx, dword [esi + 0x7640]
imul eax, edx
mov edx, dword [esp + 0x40]
lea ecx, [ecx + edx*4]
sub eax, 0xffffff80
sar eax, 8
mov word [esp + 0x2a], ax
mov edx, dword [esp + 0x28]
lea eax, [ebx*4]
mov dword [esp + 0x2c], ecx
lea ecx, [ecx + eax*2]
mov dword [eax + ecx], edx
mov dword [eax + ecx + 4], edx
mov ecx, dword [esp + 0x2c]
mov dword [ecx + eax*2], edx
mov dword [ecx + eax*2 + 4], edx
mov dword [ecx + eax], edx
mov dword [ecx + eax + 4], edx
mov eax, dword [esp + 0x24]
mov dword [ecx], edx
mov dword [ecx + 4], edx
mov ecx, dword [esp + 0x30]
mov dx, word [eax + ecx*4]
mov ax, word [eax + ecx*4 + 2]
mov ecx, dword [esi + 0x7640]
sub word [esp + 0x28], dx
mov edx, dword [esp + 0x40]
sub word [esp + 0x2a], ax
lea eax, [ebx*4]
lea ecx, [ecx + edx*4 + 0xd80]
mov edx, dword [esp + 0x28]
mov dword [esp + 0x2c], ecx
lea ecx, [ecx + eax*2]
mov dword [eax + ecx], edx
mov dword [eax + ecx + 4], edx
mov ecx, dword [esp + 0x2c]
mov dword [ecx + eax*2], edx
mov dword [ecx + eax*2 + 4], edx
mov dword [eax + ecx], edx
mov dword [eax + ecx + 4], edx
mov dword [ecx], edx
mov dword [ecx + 4], edx
jmp 0x80306e
mov eax, dword [esp + 0x34]
mov dword [esp + 0x14], eax
mov dword [esp + 0x30], 4
mov ecx, dword [esp + 0x48]
mov edx, dword [eax + ecx]
mov eax, dword [eax]
mov ecx, dword [esp + 0x24]
lea ecx, [ecx + eax*4]
mov eax, dword [esp + 0x74]
mov dword [esp + 0x2c], edx
mov dword [esp + 0x40], ecx
cmp eax, 2
jne 0x802fda
mov dx, word [ecx + 2]
add dx, dx
mov word [ecx + 2], dx
jmp 0x802fec
cmp eax, 1
jne 0x802fec
movsx eax, word [ecx + 2]
cdq
sub eax, edx
sar eax, 1
mov word [ecx + 2], ax
movsx edx, word [ecx + 2]
movsx eax, word [ecx]
imul edx, dword [esp + 0x20]
imul eax, dword [esp + 0x20]
mov ecx, dword [esi + 0x7640]
sub edx, 0xffffff80
sub eax, 0xffffff80
sar edx, 8
sar eax, 8
mov word [esp + 0x28], ax
mov word [esp + 0x2a], dx
mov edx, dword [esp + 0x2c]
lea ecx, [ecx + edx*4]
mov edx, dword [esp + 0x28]
mov dword [ecx + ebx*4], edx
mov dword [ecx], edx
mov ecx, dword [esp + 0x40]
sub ax, word [ecx]
mov edx, dword [esp + 0x2c]
mov word [esp + 0x28], ax
mov ax, word [ecx + 2]
sub word [esp + 0x2a], ax
mov ecx, dword [esi + 0x7640]
lea eax, [ecx + edx*4 + 0xd80]
mov ecx, dword [esp + 0x28]
mov dword [eax + ebx*4], ecx
mov dword [eax], ecx
mov eax, dword [esp + 0x14]
add eax, 4
sub dword [esp + 0x30], 1
mov dword [esp + 0x14], eax
jne 0x802fac
mov ecx, dword [esp + 0x34]
add dword [esp + 0x18], 2
add ecx, 0x10
cmp ecx, 0x10369a88
mov dword [esp + 0x34], ecx
jl 0x802c10
cmp dword [esp + 0x38], 0
jne 0x80309c
mov eax, dword [esp + 0x6c]
mov ecx, dword [esp + 0x3c]
mov dword [ecx + 0xc], eax
mov edx, dword [esi + 0x10]
mov eax, dword [edx + 0x4b0]
and dword [esp + 0x4c], eax
jmp 0x803a02
test al, 8
je 0x803352
mov edx, dword [esp + 0x54]
xor ecx, ecx
cmp edx, ecx
mov dword [esp + 0x1c], ecx
jle 0x80322a
mov edx, dword [esp + 0x48]
mov eax, edx
shl eax, 5
add eax, esi
add eax, edx
lea edx, [esi + 0x4c]
mov dword [esp + 0x14], ecx
mov dword [esp + 0x10], ecx
mov dword [esp + 0x20], eax
mov dword [esp + 0x18], edx
mov eax, 0x1000
shl eax, cl
mov ecx, dword [esp + 0x3c]
test dword [ecx + 0xc], eax
je 0x803164
mov edx, dword [esp + 0x18]
mov eax, dword [edx]
cmp eax, 1
jle 0x803150
cmp eax, 2
jne 0x803145
mov ecx, dword [edi + 0xc]
test ecx, ecx
jl 0x80312b
mov eax, dword [edi + 4]
movzx edx, byte [eax + 1]
movzx eax, byte [eax]
shl eax, 8
or edx, eax
shl edx, cl
or dword [edi + 0x10], edx
add dword [edi + 4], 2
add dword [edi + 0xc], 0xfffffff0
mov eax, dword [edi + 0x10]
mov ecx, eax
lea edx, [eax + eax]
shr ecx, 0x1f
mov dword [edi + 0x10], edx
inc dword [edi + 0xc]
xor eax, eax
test ecx, ecx
sete al
jmp 0x803152
push edi
call fcn.0081b630
add esp, 4
jmp 0x803152
xor eax, eax
mov ecx, dword [esp + 0x18]
cmp eax, dword [ecx]
mov dword [esp + 0x28], eax
jge 0x803a1a
jmp 0x80316b
or eax, 0xffffffff
mov dword [esp + 0x28], eax
movzx ecx, al
mov eax, dword [esi + 0x7638]
imul ecx, ecx, 0x1010101
add eax, dword [esp + 0x14]
lea edx, [ebx*8]
sub edx, ebx
mov dword [eax + edx], ecx
mov dword [esp + 0x34], edx
lea edx, [ebx + ebx*2]
add edx, edx
mov dword [eax + edx], ecx
mov dword [esp + 0x24], edx
lea edx, [ebx + ebx*4]
mov dword [eax + edx], ecx
mov dword [eax + ebx*4], ecx
lea edx, [ebx + ebx*2]
mov dword [eax + edx], ecx
mov edx, dword [esp + 0x20]
mov dword [eax + ebx*2], ecx
mov dword [eax + ebx], ecx
mov dword [eax], ecx
mov eax, dword [esp + 0x28]
movzx ecx, byte [edx + eax + 0x145e99]
mov eax, dword [esi + 0x763c]
imul ecx, ecx, 0x1010101
add eax, dword [esp + 0x14]
mov edx, dword [esp + 0x34]
add dword [esp + 0x18], 4
add dword [esp + 0x20], 0x21
add dword [esp + 0x14], 0x360
mov dword [edx + eax], ecx
mov edx, dword [esp + 0x24]
mov dword [edx + eax], ecx
lea edx, [ebx + ebx*4]
mov dword [edx + eax], ecx
mov dword [eax + ebx*4], ecx
lea edx, [ebx + ebx*2]
mov dword [edx + eax], ecx
mov edx, dword [esp + 0x54]
mov dword [eax + ebx*2], ecx
mov dword [eax + ebx], ecx
mov dword [eax], ecx
mov eax, dword [esp + 0x1c]
mov ecx, dword [esp + 0x10]
inc eax
add ecx, 2
cmp eax, edx
mov dword [esp + 0x1c], eax
mov dword [esp + 0x10], ecx
jl 0x8030e8
xor ecx, ecx
cmp edx, ecx
mov dword [esp + 0x1c], ecx
jle 0x803a02
add ebx, ebx
add ebx, ebx
lea eax, [ebx + ebx*2]
add eax, eax
mov dword [esp + 0x10], eax
mov edx, eax
lea eax, [ebx*8]
sub eax, ebx
mov dword [esp + 0x2c], eax
mov dword [esp + 0x38], ecx
mov dword [esp + 0x34], ecx
mov dword [esp + 0x20], ecx
mov ecx, dword [esp + 0x20]
mov eax, 0x1000
shl eax, cl
mov ecx, dword [esp + 0x3c]
test dword [ecx + 0xc], eax
je 0x8032b5
mov eax, dword [esi + 0x7638]
mov ecx, dword [esp + 0x34]
lea edx, [esp + 0x28]
push edx
movsx edx, byte [eax + ecx]
mov eax, dword [esp + 0x20]
push edx
push eax
push 4
push 0
mov eax, esi
call fcn.007f6cb0
push edi
call fcn.0081b520
add word [esp + 0x2c], ax
push edi
call fcn.0081b520
mov edx, dword [esp + 0x18]
add esp, 8
add word [esp + 0x2a], ax
jmp 0x8032bd
mov dword [esp + 0x28], 0
mov eax, dword [esi + 0x7640]
add eax, dword [esp + 0x38]
movd mm0, dword [esp + 0x28]
add dword [esp + 0x20], 2
add dword [esp + 0x34], 0x360
add dword [esp + 0x38], 0xd80
movq mm1, mm0
punpckldq mm1, mm0
movq mm0, mm1
movq qword [eax], mm0
movq qword [eax + 8], mm0
movq qword [eax + ebx], mm0
movq qword [eax + ebx + 8], mm0
movq qword [eax + ebx*2], mm0
movq qword [eax + ebx*2 + 8], mm0
lea ecx, [ebx + ebx*2]
movq qword [ecx + eax], mm0
movq qword [ecx + eax + 8], mm0
movq qword [eax + ebx*4], mm0
movq qword [eax + ebx*4 + 8], mm0
lea ecx, [ebx + ebx*4]
movq qword [ecx + eax], mm0
movq qword [ecx + eax + 8], mm0
mov ecx, dword [esp + 0x2c]
movq qword [edx + eax], mm0
movq qword [edx + eax + 8], mm0
movq qword [ecx + eax], mm0
movq qword [ecx + eax + 8], mm0
mov eax, dword [esp + 0x1c]
inc eax
cmp eax, dword [esp + 0x54]
mov dword [esp + 0x1c], eax
jl 0x80325e
jmp 0x803a02
test al, 0x10
je 0x80364b
mov ecx, dword [esp + 0x54]
xor eax, eax
cmp ecx, eax
mov dword [esp + 0x1c], eax
jle 0x8034c8
lea ecx, [esi + 0x4c]
mov dword [esp + 0x18], ecx
mov ecx, dword [esp + 0x48]
mov edx, ecx
shl edx, 5
add edx, esi
lea ecx, [ecx + edx + 0x145e99]
mov dword [esp + 0x44], eax
mov dword [esp + 0x34], ecx
mov edx, dword [esp + 0x50]
lea ecx, [eax + eax]
mov dword [esp + 0x14], 0
mov dword [esp + 0x2c], ecx
mov dword [esp + 0x20], edx
mov eax, dword [esp + 0x20]
mov edx, dword [eax]
mov eax, 0x1000
shl eax, cl
mov ecx, dword [esp + 0x3c]
mov dword [esp + 0x10], edx
test dword [ecx + 0xc], eax
je 0x80342a
mov edx, dword [esp + 0x18]
mov eax, dword [edx]
cmp eax, 1
jle 0x803416
cmp eax, 2
jne 0x80340b
mov ecx, dword [edi + 0xc]
test ecx, ecx
jl 0x8033f1
mov eax, dword [edi + 4]
movzx edx, byte [eax]
movzx eax, byte [eax + 1]
shl edx, 8
or edx, eax
shl edx, cl
or dword [edi + 0x10], edx
add dword [edi + 4], 2
add dword [edi + 0xc], 0xfffffff0
mov eax, dword [edi + 0x10]
mov ecx, eax
lea edx, [eax + eax]
shr ecx, 0x1f
mov dword [edi + 0x10], edx
inc dword [edi + 0xc]
xor eax, eax
test ecx, ecx
sete al
jmp 0x803418
push edi
call fcn.0081b630
add esp, 4
jmp 0x803418
xor eax, eax
mov ecx, dword [esp + 0x18]
cmp eax, dword [ecx]
mov dword [esp + 0x28], eax
jge 0x803a1a
jmp 0x803431
or eax, 0xffffffff
mov dword [esp + 0x28], eax
movzx ecx, al
mov eax, dword [esi + 0x7638]
imul ecx, ecx, 0x1010101
add eax, dword [esp + 0x44]
add dword [esp + 0x20], 0x20
add eax, dword [esp + 0x10]
lea edx, [ebx + ebx*2]
mov dword [eax + edx], ecx
mov dword [eax + ebx*2], ecx
mov dword [eax + ebx], ecx
mov dword [eax], ecx
mov eax, dword [esp + 0x34]
mov ecx, dword [esp + 0x28]
movzx ecx, byte [eax + ecx]
mov eax, dword [esi + 0x763c]
imul ecx, ecx, 0x1010101
add eax, dword [esp + 0x44]
add eax, dword [esp + 0x10]
mov dword [eax + edx], ecx
mov dword [eax + ebx*2], ecx
mov dword [eax + ebx], ecx
mov dword [eax], ecx
mov eax, dword [esp + 0x14]
mov ecx, dword [esp + 0x2c]
inc eax
inc ecx
cmp eax, 2
mov dword [esp + 0x14], eax
mov dword [esp + 0x2c], ecx
jl 0x8033a4
mov eax, dword [esp + 0x1c]
mov ecx, dword [esp + 0x54]
add dword [esp + 0x18], 4
add dword [esp + 0x34], 0x21
add dword [esp + 0x44], 0x360
inc eax
cmp eax, ecx
mov dword [esp + 0x1c], eax
jl 0x80338d
xor eax, eax
cmp ecx, eax
mov dword [esp + 0x1c], eax
jle 0x803a02
add ebx, ebx
add ebx, ebx
mov dword [esp + 0x24], eax
mov eax, dword [esp + 0x1c]
lea ecx, [eax + eax]
mov eax, dword [esp + 0x50]
xor edx, edx
mov dword [esp + 0x38], edx
mov dword [esp + 0x34], ecx
mov dword [esp + 0x20], eax
mov ecx, dword [esp + 0x20]
mov eax, dword [ecx]
mov ecx, dword [esp + 0x34]
mov dword [esp + 0x10], eax
mov eax, 0x1000
shl eax, cl
mov ecx, dword [esp + 0x3c]
test dword [ecx + 0xc], eax
je 0x8035c4
mov eax, dword [esi + 0x7638]
mov ecx, dword [esp + 0x24]
add ecx, eax
mov eax, dword [esp + 0x10]
movsx eax, byte [ecx + eax]
test edx, edx
jne 0x803564
mov ecx, dword [esi + 0x90]
mov edx, dword [esp + 0x24]
sub edx, ecx
mov ecx, dword [esi + 0x7638]
movsx ecx, byte [edx + ecx]
cmp ecx, eax
jne 0x80358c
mov edx, dword [esp + 0x24]
sub edx, dword [esi + 0x90]
mov eax, dword [esi + 0x7640]
mov ecx, dword [eax + edx*4]
mov dword [esp + 0x28], ecx
jmp 0x8035a5
mov edx, dword [esi + 0x8c]
mov edx, dword [edx + 0x20]
movsx ecx, byte [ecx + edx - 1]
cmp ecx, eax
jne 0x80358c
mov eax, dword [esp + 0x24]
mov ecx, dword [esi + 0x7640]
add eax, edx
mov edx, dword [ecx + eax*4 - 4]
mov dword [esp + 0x28], edx
jmp 0x8035a5
mov edx, dword [esp + 0x1c]
lea ecx, [esp + 0x28]
push ecx
push eax
mov eax, dword [esp + 0x40]
push edx
push 4
push eax
mov eax, esi
call fcn.007f6cb0
push edi
call fcn.0081b520
add word [esp + 0x2c], ax
push edi
call fcn.0081b520
mov edx, dword [esp + 0x40]
add esp, 8
add word [esp + 0x2a], ax
jmp 0x8035cc
mov dword [esp + 0x28], 0
mov eax, dword [esp + 0x10]
mov ecx, dword [esp + 0x24]
movd mm0, dword [esp + 0x28]
add dword [esp + 0x20], 0x20
inc dword [esp + 0x34]
add ecx, eax
mov eax, dword [esi + 0x7640]
lea eax, [eax + ecx*4]
movq mm1, mm0
punpckldq mm1, mm0
movq mm0, mm1
movq qword [eax], mm0
movq qword [eax + 8], mm0
movq qword [eax + ebx], mm0
movq qword [eax + ebx + 8], mm0
movq qword [eax + ebx*2], mm0
lea ecx, [ebx + ebx*2]
add edx, 8
cmp edx, 0x10
movq qword [eax + ebx*2 + 8], mm0
movq qword [ecx + eax], mm0
movq qword [ecx + eax + 8], mm0
mov dword [esp + 0x38], edx
jl 0x8034f7
mov eax, dword [esp + 0x1c]
add dword [esp + 0x24], 0x360
inc eax
cmp eax, dword [esp + 0x54]
mov dword [esp + 0x1c], eax
jl 0x8034de
jmp 0x803a02
test al, 0x20
je 0x803a02
mov ecx, dword [esp + 0x54]
xor eax, eax
cmp ecx, eax
mov dword [esp + 0x1c], eax
jle 0x803810
lea ecx, [esi + 0x4c]
mov dword [esp + 0x18], ecx
mov ecx, dword [esp + 0x48]
mov edx, ecx
shl edx, 5
add edx, esi
lea ecx, [ecx + edx + 0x145e99]
mov dword [esp + 0x44], eax
mov dword [esp + 0x38], ecx
mov edx, dword [esp + 0x50]
lea ecx, [eax + eax]
mov dword [esp + 0x14], 0
mov dword [esp + 0x2c], ecx
mov dword [esp + 0x20], edx
mov eax, dword [esp + 0x20]
mov edx, dword [eax]
mov eax, 0x1000
shl eax, cl
mov ecx, dword [esp + 0x3c]
mov dword [esp + 0x10], edx
test dword [ecx + 0xc], eax
je 0x803723
mov edx, dword [esp + 0x18]
mov eax, dword [edx]
cmp eax, 1
jle 0x80370f
cmp eax, 2
jne 0x803704
mov ecx, dword [edi + 0xc]
test ecx, ecx
jl 0x8036ea
mov eax, dword [edi + 4]
movzx edx, byte [eax + 1]
movzx eax, byte [eax]
shl eax, 8
or edx, eax
shl edx, cl
or dword [edi + 0x10], edx
add dword [edi + 4], 2
add dword [edi + 0xc], 0xfffffff0
mov eax, dword [edi + 0x10]
mov ecx, eax
lea edx, [eax + eax]
shr ecx, 0x1f
mov dword [edi + 0x10], edx
inc dword [edi + 0xc]
xor eax, eax
test ecx, ecx
sete al
jmp 0x803711
push edi
call fcn.0081b630
add esp, 4
jmp 0x803711
xor eax, eax
mov ecx, dword [esp + 0x18]
cmp eax, dword [ecx]
mov dword [esp + 0x28], eax
jge 0x803a1a
jmp 0x80372a
or eax, 0xffffffff
mov dword [esp + 0x28], eax
movzx ecx, al
mov eax, dword [esi + 0x7638]
imul ecx, ecx, 0x101
add eax, dword [esp + 0x44]
lea edx, [ebx*8]
add eax, dword [esp + 0x10]
sub edx, ebx
mov word [eax + edx], cx
mov dword [esp + 0x34], edx
lea edx, [ebx + ebx*2]
add edx, edx
mov word [eax + edx], cx
mov dword [esp + 0x24], edx
lea edx, [ebx + ebx*4]
mov word [eax + edx], cx
mov word [eax + ebx*4], cx
lea edx, [ebx + ebx*2]
mov word [eax + edx], cx
mov edx, dword [esp + 0x38]
mov word [eax + ebx*2], cx
mov word [eax + ebx], cx
mov word [eax], cx
mov eax, dword [esp + 0x28]
movzx ecx, byte [edx + eax]
mov eax, dword [esi + 0x763c]
imul ecx, ecx, 0x101
add eax, dword [esp + 0x44]
mov edx, dword [esp + 0x34]
add eax, dword [esp + 0x10]
add dword [esp + 0x20], 0x10
mov word [eax + edx], cx
mov edx, dword [esp + 0x24]
mov word [eax + edx], cx
lea edx, [ebx + ebx*4]
mov word [eax + edx], cx
mov word [eax + ebx*4], cx
lea edx, [ebx + ebx*2]
mov word [eax + edx], cx
mov word [eax + ebx*2], cx
mov word [eax + ebx], cx
mov word [eax], cx
mov eax, dword [esp + 0x14]
mov ecx, dword [esp + 0x2c]
inc eax
inc ecx
cmp eax, 2
mov dword [esp + 0x14], eax
mov dword [esp + 0x2c], ecx
jl 0x80369d
mov eax, dword [esp + 0x1c]
mov ecx, dword [esp + 0x54]
add dword [esp + 0x18], 4
add dword [esp + 0x38], 0x21
add dword [esp + 0x44], 0x360
inc eax
cmp eax, ecx
mov dword [esp + 0x1c], eax
jl 0x803686
xor edx, edx
cmp ecx, edx
mov dword [esp + 0x1c], edx
jle 0x803a02
add ebx, ebx
add ebx, ebx
lea eax, [ebx + ebx*2]
add eax, eax
mov dword [esp + 0x24], eax
lea eax, [ebx*8]
sub eax, ebx
mov dword [esp + 0x30], eax
mov dword [esp + 0x38], edx
mov dword [esp + 0x48], edx
mov ecx, dword [esp + 0x1c]
mov eax, dword [esp + 0x50]
xor edx, edx
add ecx, ecx
mov dword [esp + 0x34], edx
mov dword [esp + 0x2c], ecx
mov dword [esp + 0x20], eax
jmp 0x803860
mov eax, dword [esp + 0x20]
mov eax, dword [eax]
mov dword [esp + 0x10], eax
mov eax, 0x1000
shl eax, cl
mov ecx, dword [esp + 0x3c]
test dword [ecx + 0xc], eax
je 0x80396b
mov ecx, dword [esp + 0x48]
mov eax, dword [esi + 0x7638]
add eax, ecx
mov ecx, dword [esp + 0x10]
movsx ecx, byte [eax + ecx]
mov dword [esp + 0x18], eax
mov dword [esp + 0x44], ecx
test edx, edx
jne 0x8038c1
movsx edx, byte [eax - 1]
cmp edx, ecx
jne 0x803933
mov eax, dword [esi + 0x7640]
mov ecx, dword [esp + 0x38]
mov edx, dword [ecx + eax - 4]
mov dword [esp + 0x28], edx
jmp 0x80394c
mov eax, dword [esi + 0x8c]
mov eax, dword [eax + 0x10]
mov ecx, dword [esi + 0x90]
mov edx, eax
sub edx, ecx
mov ecx, dword [esp + 0x18]
add ecx, edx
mov dword [esp + 0x14], ecx
movsx ecx, byte [ecx + 2]
cmp ecx, 0xfffffffc
mov dword [esp + 0x18], ecx
jle 0x803905
mov edx, dword [esp + 0x48]
sub edx, dword [esi + 0x90]
add edx, eax
mov eax, dword [esi + 0x7640]
lea edx, [eax + edx*4 + 8]
mov eax, ecx
jmp 0x803923
mov ecx, dword [esp + 0x48]
sub ecx, dword [esi + 0x90]
mov edx, dword [esi + 0x7640]
add ecx, eax
mov eax, dword [esp + 0x14]
movsx eax, byte [eax - 1]
lea edx, [edx + ecx*4 - 4]
mov ecx, dword [esp + 0x44]
cmp eax, ecx
jne 0x803933
mov ecx, dword [edx]
mov dword [esp + 0x28], ecx
jmp 0x80394c
mov eax, dword [esp + 0x1c]
lea edx, [esp + 0x28]
push edx
push ecx
mov ecx, dword [esp + 0x3c]
push eax
push 2
push ecx
mov eax, esi
call fcn.007f6cb0
push edi
call fcn.0081b520
add word [esp + 0x2c], ax
push edi
call fcn.0081b520
mov edx, dword [esp + 0x3c]
add esp, 8
add word [esp + 0x2a], ax
jmp 0x803973
mov dword [esp + 0x28], 0
mov ecx, dword [esp + 0x10]
mov eax, dword [esp + 0x48]
movd mm0, dword [esp + 0x28]
add dword [esp + 0x20], 0x10
add eax, ecx
mov ecx, dword [esi + 0x7640]
lea eax, [ecx + eax*4]
movq mm1, mm0
punpckldq mm1, mm0
movq mm0, mm1
movq qword [eax], mm0
movq qword [eax + ebx], mm0
movq qword [eax + ebx*2], mm0
lea ecx, [ebx + ebx*2]
movq qword [eax + ecx], mm0
movq qword [eax + ebx*4], mm0
lea ecx, [ebx + ebx*4]
movq qword [eax + ecx], mm0
mov ecx, dword [esp + 0x24]
movq qword [eax + ecx], mm0
mov ecx, dword [esp + 0x30]
movq qword [eax + ecx], mm0
mov ecx, dword [esp + 0x2c]
add edx, 4
inc ecx
cmp edx, 8
mov dword [esp + 0x2c], ecx
mov dword [esp + 0x34], edx
jl 0x803860
mov eax, dword [esp + 0x1c]
add dword [esp + 0x48], 0x360
add dword [esp + 0x38], 0xd80
inc eax
cmp eax, dword [esp + 0x54]
mov dword [esp + 0x1c], eax
jl 0x803840
mov edx, dword [esp + 0x3c]
test byte [edx + 0xc], 2
jne 0x803a71
push edi
call fcn.0081b630
add esp, 4
cmp eax, 0x2f
jle 0x803a31
xor eax, eax
pop edi
pop esi
pop ebx
mov ecx, dword [esp + 0x98]
xor ecx, esp
call fcn.008653fb
mov esp, ebp
pop ebp
ret
mov edx, dword [esp + 0x3c]
mov ecx, dword [esi + 0x10]
xor ebx, ebx
test byte [edx + 0xc], 1
je 0x803a58
cmp dword [ecx + 0x20], ebx
sete bl
mov ecx, ebx
lea ecx, [ecx + ecx*2]
shl ecx, 4
movzx eax, byte [ecx + eax + 0x1036a258]
jmp 0x803a6f
cmp dword [ecx + 0x20], 0
sete bl
mov ecx, ebx
lea ecx, [ecx + ecx*2]
shl ecx, 4
movzx eax, byte [ecx + eax + 0x1036a2b8]
mov dword [edx], eax
xor ebx, ebx
cmp dword [esp + 0x4c], ebx
je 0x803ac4
test byte [edx], 0xf
je 0x803ac4
test byte [edx + 0xc], 7
jne 0x803ac4
mov ecx, dword [edi + 0xc]
cmp ecx, ebx
jl 0x803aa9
mov eax, dword [edi + 4]
movzx ebx, byte [eax + 1]
movzx eax, byte [eax]
shl eax, 8
or ebx, eax
shl ebx, cl
or dword [edi + 0x10], ebx
add dword [edi + 4], 2
add dword [edi + 0xc], 0xfffffff0
xor ebx, ebx
mov ecx, dword [edi + 0x10]
mov eax, ecx
add ecx, ecx
shr eax, 0x1f
mov dword [edi + 0x10], ecx
inc dword [edi + 0xc]
cmp eax, ebx
je 0x803ac4
or dword [edx + 0xc], 0x1000000
mov eax, dword [edx + 0xc]
test al, 2
jne 0x803ad3
cmp dword [edx], ebx
je 0x8062d5
test al, al
js 0x803ae0
cmp dword [esi + 0x20], ebx
jne 0x803ae0
xor eax, eax
jmp 0x803ae5
mov eax, 1
push edi
mov dword [esi + 0xcc], eax
call fcn.0081b520
add esp, 4
cmp eax, ebx
je 0x803b03
push eax
mov ecx, esi
call fcn.007f35f0
add esp, 4
mov edx, dword [esi + 0x10]
mov eax, dword [esp + 0x3c]
mov eax, dword [eax + 0xc]
cmp dword [edx + 0x28], ebx
je 0x8044c4
test al, 2
je 0x803f85
mov eax, dword [esi + 0xcc]
shl eax, 6
lea ecx, [eax + 0x10369748]
lea edx, [eax + 0x103694cc]
mov eax, dword [esi + 0x5c]
imul eax, eax, 0x34
mov dword [esp + 0x18], edx
mov edx, dword [esi + 0x8c]
mov edx, dword [edx]
mov dword [esp + 0x38], ecx
lea ecx, [eax + esi + 0x145f60]
mov eax, edx
sub eax, dword [esi + 0x90]
mov dword [esp + 0x2c], ecx
mov ecx, dword [esi + 0x762c]
movsx eax, byte [eax + ecx]
movsx ecx, byte [edx + ecx - 1]
add eax, ecx
cmp eax, 0x40
jge 0x803b75
inc eax
sar eax, 1
and eax, 0x1f
mov eax, dword [eax*4 + 0x1036c0f0]
cmp byte [eax*8 + 0x1036bd10], 0
lea eax, [eax*8 + 0x1036bd10]
je 0x803c4e
movsx ecx, byte [eax + 2]
movsx edx, byte [eax + 1]
mov eax, dword [eax + 4]
mov dword [esp + 0x10], ecx
mov ecx, dword [edi + 0xc]
cmp ecx, ebx
mov dword [esp + 0x34], eax
jl 0x803bca
mov eax, dword [edi + 4]
movzx ebx, byte [eax + 1]
movzx eax, byte [eax]
shl eax, 8
or ebx, eax
shl ebx, cl
or dword [edi + 0x10], ebx
add dword [edi + 4], 2
add dword [edi + 0xc], 0xfffffff0
mov eax, dword [edi + 0x10]
mov ecx, 0x20
sub ecx, edx
mov ebx, 1
shl ebx, cl
cmp eax, ebx
jb 0x803beb
bsr ecx, eax
mov edx, ecx
mov dword [esp + 0x20], ecx
xor edx, 0x1f
mov ecx, edx
shl eax, cl
mov dword [edi + 0x10], eax
add dword [edi + 0xc], edx
mov ecx, dword [edi + 0xc]
js 0x803c16
mov eax, dword [edi + 4]
movzx ebx, byte [eax + 1]
movzx eax, byte [eax]
shl eax, 8
or ebx, eax
shl ebx, cl
or dword [edi + 0x10], ebx
add dword [edi + 4], 2
add dword [edi + 0xc], 0xfffffff0
mov eax, dword [edi + 0x10]
mov ecx, 0x20
sub ecx, dword [esp + 0x10]
mov ebx, eax
shr ebx, cl
mov ecx, dword [esp + 0x10]
shl edx, cl
mov ecx, dword [esp + 0x34]
add ebx, edx
movzx edx, word [ecx + ebx*2]
cmp edx, 0xffff
jne 0x803c42
xor edx, edx
jmp 0x803cac
mov ecx, edx
sar ecx, 8
shl eax, cl
mov dword [edi + 0x10], eax
jmp 0x803ca9
mov ecx, dword [edi + 0xc]
mov edx, dword [eax + 4]
movsx ebx, byte [eax + 2]
mov dword [esp + 0x10], edx
test ecx, ecx
jl 0x803c7c
mov edx, dword [edi + 4]
movzx eax, byte [edx + 1]
movzx edx, byte [edx]
shl edx, 8
or eax, edx
shl eax, cl
or dword [edi + 0x10], eax
add dword [edi + 4], 2
add dword [edi + 0xc], 0xfffffff0
mov edx, dword [edi + 0x10]
mov ecx, 0x20
sub ecx, ebx
mov eax, edx
shr eax, cl
mov ecx, dword [esp + 0x10]
movzx eax, word [ecx + eax*2]
cmp eax, 0xffff
jne 0x803c9d
xor edx, edx
jmp 0x803cac
mov ecx, eax
sar ecx, 8
shl edx, cl
mov dword [edi + 0x10], edx
mov edx, eax
add dword [edi + 0xc], ecx
mov eax, edx
and al, 0x1f
movsx eax, al
neg eax
sbb eax, eax
and eax, edx
je 0x803cf3
mov ecx, dword [esp + 0x38]
lea ebx, [esi + 0x3f780]
push ebx
push 0
push ecx
push 0x10
push 0
call fcn.007ffc00
mov edx, dword [esp + 0x40]
mov eax, dword [edx]
mov ecx, dword [eax]
mov edx, dword [esi + 0x58]
push ecx
push edx
push ebx
call fcn.008182b1
mov eax, dword [esp + 0x5c]
add esp, 0x20
mov dword [eax + 4], 1
mov eax, dword [esp + 0x3c]
test byte [eax], 0xf
je 0x803f1f
lea ecx, [esi + 0x3f780]
mov dword [esp + 0x1c], 0
mov dword [esp + 0x14], ecx
mov edx, dword [esi + 0x8c]
mov eax, dword [esp + 0x1c]
mov ecx, dword [edx + eax*4]
mov edx, dword [esi + 0x762c]
mov eax, ecx
sub eax, dword [esi + 0x90]
movsx ecx, byte [ecx + edx - 1]
movsx eax, byte [eax + edx]
add eax, ecx
cmp eax, 0x40
jge 0x803d40
inc eax
sar eax, 1
and eax, 0x1f
mov eax, dword [eax*4 + 0x1036c0f0]
cmp byte [eax*8 + 0x1036bd10], 0
lea eax, [eax*8 + 0x1036bd10]
je 0x803e19
movsx ecx, byte [eax + 2]
movsx edx, byte [eax + 1]
mov eax, dword [eax + 4]
mov dword [esp + 0x10], ecx
mov ecx, dword [edi + 0xc]
mov dword [esp + 0x34], eax
test ecx, ecx
jl 0x803d95
mov eax, dword [edi + 4]
movzx ebx, byte [eax + 1]
movzx eax, byte [eax]
shl eax, 8
or ebx, eax
shl ebx, cl
or dword [edi + 0x10], ebx
add dword [edi + 4], 2
add dword [edi + 0xc], 0xfffffff0
mov eax, dword [edi + 0x10]
mov ecx, 0x20
sub ecx, edx
mov ebx, 1
shl ebx, cl
cmp eax, ebx
jb 0x803db6
bsr ecx, eax
mov edx, ecx
mov dword [esp + 0x20], ecx
xor edx, 0x1f
mov ecx, edx
shl eax, cl
mov dword [edi + 0x10], eax
add dword [edi + 0xc], edx
mov ecx, dword [edi + 0xc]
js 0x803de1
mov eax, dword [edi + 4]
movzx ebx, byte [eax + 1]
movzx eax, byte [eax]
shl eax, 8
or ebx, eax
shl ebx, cl
or dword [edi + 0x10], ebx
add dword [edi + 4], 2
add dword [edi + 0xc], 0xfffffff0
mov eax, dword [edi + 0x10]
mov ecx, 0x20
sub ecx, dword [esp + 0x10]
mov ebx, eax
shr ebx, cl
mov ecx, dword [esp + 0x10]
shl edx, cl
mov ecx, dword [esp + 0x34]
add ebx, edx
movzx edx, word [ecx + ebx*2]
cmp edx, 0xffff
jne 0x803e0d
xor edx, edx
jmp 0x803e77
mov ecx, edx
sar ecx, 8
shl eax, cl
mov dword [edi + 0x10], eax
jmp 0x803e74
mov ecx, dword [edi + 0xc]
mov edx, dword [eax + 4]
movsx ebx, byte [eax + 2]
mov dword [esp + 0x10], edx
test ecx, ecx
jl 0x803e47
mov edx, dword [edi + 4]
movzx eax, byte [edx + 1]
movzx edx, byte [edx]
shl edx, 8
or eax, edx
shl eax, cl
or dword [edi + 0x10], eax
add dword [edi + 4], 2
add dword [edi + 0xc], 0xfffffff0
mov edx, dword [edi + 0x10]
mov ecx, 0x20
sub ecx, ebx
mov eax, edx
shr eax, cl
mov ecx, dword [esp + 0x10]
movzx eax, word [ecx + eax*2]
cmp eax, 0xffff
jne 0x803e68
xor edx, edx
jmp 0x803e77
mov ecx, eax
sar ecx, 8
shl edx, cl
mov dword [edi + 0x10], edx
mov edx, eax
add dword [edi + 0xc], ecx
mov eax, edx
and al, 0x1f
movsx eax, al
neg eax
sbb eax, eax
and eax, edx
je 0x803eee
mov ecx, dword [esp + 0x14]
mov edx, dword [esi + 0x58]
push ecx
mov ecx, dword [esp + 0x30]
mov edx, dword [ecx + edx*4]
mov ecx, dword [esp + 0x1c]
push edx
push ecx
push 0xf
push 1
call fcn.007ffc00
mov edx, dword [esp + 0x28]
mov ebx, eax
mov eax, dword [esi + 0x1211d8]
push edx
call eax
mov ecx, dword [esp + 0x34]
mov edx, dword [esp + 0x68]
mov eax, dword [edx + ecx*4]
add eax, dword [esp + 0x78]
mov edx, dword [esi + 0x762c]
mov byte [eax + edx], bl
mov eax, dword [esp + 0x68]
mov edx, dword [eax + ecx*4]
mov eax, dword [esi + 0x762c]
mov byte [edx + eax], bl
mov eax, dword [esp + 0x54]
mov edx, 2
shl edx, cl
add esp, 0x18
or dword [eax + 4], edx
jmp 0x803f03
mov eax, dword [esp + 0x14]
cmp dword [eax], 0
je 0x803f03
push eax
mov eax, dword [esi + 0x1211dc]
call eax
add esp, 4
mov eax, dword [esp + 0x1c]
add dword [esp + 0x14], 0x40
inc eax
cmp eax, 0x10
mov dword [esp + 0x1c], eax
jl 0x803d12
jmp 0x804e60
test byte [eax + 4], 1
je 0x804e60
lea ebx, [esi + 0x3f7c0]
mov dword [esp + 0x10], 4
jmp 0x803f40
mov edx, dword [esi + 0x1211dc]
lea ecx, [ebx - 0x40]
push ecx
call edx
mov eax, dword [esi + 0x1211dc]
push ebx
call eax
mov edx, dword [esi + 0x1211dc]
lea ecx, [ebx + 0x40]
push ecx
call edx
mov ecx, dword [esi + 0x1211dc]
lea eax, [ebx + 0x80]
push eax
call ecx
add esp, 0x10
add ebx, 0x100
sub dword [esp + 0x10], 1
jne 0x803f40
jmp 0x804e60
mov ecx, dword [esi + 0xcc]
test eax, 0x1000000
je 0x803fc5
shl ecx, 8
add ecx, 0x10369848
test al, 7
mov eax, 0
sete al
mov dword [esp + 0x30], ecx
lea edx, [eax + eax*2]
mov eax, dword [esi + 0x5c]
lea ecx, [eax + edx*2]
imul ecx, ecx, 0xd
add ecx, dword [esi + 0x58]
mov edx, dword [esi + ecx*4 + 0x1466b0]
mov dword [esp + 0x38], edx
jmp 0x803ffb
and al, 7
movzx eax, al
shl ecx, 6
add ecx, 0x103694c8
neg eax
sbb eax, eax
and eax, 0xfffffffd
add eax, 3
mov dword [esp + 0x30], ecx
mov ecx, dword [esi + 0x5c]
lea eax, [eax + eax*2]
lea edx, [ecx + eax*2]
imul edx, edx, 0xd
add edx, dword [esi + 0x58]
mov eax, dword [esi + edx*4 + 0x145f60]
mov dword [esp + 0x38], eax
lea eax, [esi + 0x3f780]
mov dword [esp + 0x1c], ebx
mov dword [esp + 0x48], ebx
mov dword [esp + 0x24], ebx
mov dword [esp + 0x44], eax
mov dword [esp + 0x40], eax
jmp 0x804020
mov ecx, dword [esp + 0x1c]
mov eax, dword [esp + 0x3c]
mov edx, 1
shl edx, cl
test dword [eax], edx
je 0x804495
mov ecx, eax
test dword [ecx + 0xc], 0x1000000
mov dword [esp + 0x4c], 0
je 0x80426e
mov ebx, dword [esp + 0x24]
mov edx, dword [esp + 0x30]
mov dword [esp + 0x34], ebx
mov dword [esp + 0x20], edx
mov edi, edi
mov eax, dword [esi + 0x8c]
mov ecx, dword [ebx + eax]
mov edx, dword [esi + 0x762c]
mov eax, edx
sub eax, dword [esi + 0x90]
movsx eax, byte [eax + ecx]
movsx ecx, byte [edx + ecx - 1]
add eax, ecx
cmp eax, 0x40
jge 0x80408a
inc eax
sar eax, 1
and eax, 0x1f
mov eax, dword [eax*4 + 0x1036c0f0]
cmp byte [eax*8 + 0x1036bd10], 0
lea eax, [eax*8 + 0x1036bd10]
je 0x80416a
movsx ecx, byte [eax + 2]
movsx edx, byte [eax + 1]
mov eax, dword [eax + 4]
mov dword [esp + 0x10], ecx
mov ecx, dword [edi + 0xc]
mov dword [esp + 0x18], eax
test ecx, ecx
jl 0x8040df
mov eax, dword [edi + 4]
movzx ebx, byte [eax + 1]
movzx eax, byte [eax]
shl eax, 8
or ebx, eax
shl ebx, cl
or dword [edi + 0x10], ebx
add dword [edi + 4], 2
add dword [edi + 0xc], 0xfffffff0
mov eax, dword [edi + 0x10]
mov ecx, 0x20
sub ecx, edx
mov ebx, 1
shl ebx, cl
cmp eax, ebx
jb 0x804100
bsr ecx, eax
mov edx, ecx
mov dword [esp + 0x2c], ecx
xor edx, 0x1f
mov ecx, edx
shl eax, cl
mov dword [edi + 0x10], eax
add dword [edi + 0xc], edx
mov ecx, dword [edi + 0xc]
js 0x80412b
mov eax, dword [edi + 4]
movzx ebx, byte [eax + 1]
movzx eax, byte [eax]
shl eax, 8
or ebx, eax
shl ebx, cl
or dword [edi + 0x10], ebx
add dword [edi + 4], 2
add dword [edi + 0xc], 0xfffffff0
mov eax, dword [edi + 0x10]
mov ecx, 0x20
sub ecx, dword [esp + 0x10]
mov ebx, eax
shr ebx, cl
mov ecx, dword [esp + 0x10]
shl edx, cl
mov ecx, dword [esp + 0x18]
add ebx, edx
movzx edx, word [ecx + ebx*2]
mov ebx, dword [esp + 0x34]
cmp edx, 0xffff
jne 0x80415b
xor edx, edx
jmp 0x8041d4
mov ecx, edx
sar ecx, 8
shl eax, cl
mov dword [edi + 0x10], eax
add dword [edi + 0xc], ecx
jmp 0x8041d4
movsx edx, byte [eax + 2]
mov ecx, dword [edi + 0xc]
mov eax, dword [eax + 4]
mov dword [esp + 0x10], edx
mov dword [esp + 0x2c], eax
test ecx, ecx
jl 0x80419c
mov eax, dword [edi + 4]
movzx edx, byte [eax + 1]
movzx eax, byte [eax]
shl eax, 8
or edx, eax
shl edx, cl
or dword [edi + 0x10], edx
add dword [edi + 4], 2
add dword [edi + 0xc], 0xfffffff0
mov edx, dword [edi + 0x10]
mov ecx, 0x20
sub ecx, dword [esp + 0x10]
mov eax, edx
shr eax, cl
mov ecx, dword [esp + 0x2c]
movzx eax, word [ecx + eax*2]
cmp eax, 0xffff
jne 0x8041bf
xor edx, edx
jmp 0x8041d4
mov ecx, eax
sar ecx, 8
shl edx, cl
mov dword [esp + 0x10], ecx
mov dword [edi + 0x10], edx
mov edx, ecx
add dword [edi + 0xc], edx
mov edx, eax
mov eax, edx
and al, 0x1f
movsx eax, al
neg eax
sbb eax, eax
and eax, edx
je 0x80423b
mov ecx, dword [esp + 0x44]
mov edx, dword [esp + 0x38]
push ecx
mov ecx, dword [esp + 0x24]
push edx
push ecx
push 0x10
push 5
call fcn.007ffc00
mov edx, dword [esp + 0x64]
mov ecx, dword [ebx + edx]
add ecx, dword [esp + 0x74]
mov edx, dword [esi + 0x762c]
mov byte [ecx + edx], al
mov ecx, dword [esp + 0x64]
mov edx, dword [ebx + ecx]
mov ecx, dword [esi + 0x762c]
mov byte [edx + ecx], al
mov edx, dword [esp + 0x5c]
mov eax, dword [esp + 0x60]
lea ecx, [edx + eax]
mov eax, dword [esp + 0x50]
mov edx, 2
shl edx, cl
add esp, 0x14
or dword [eax + 4], edx
mov eax, dword [esp + 0x4c]
add dword [esp + 0x20], 0x40
inc eax
add ebx, 4
cmp eax, 4
mov dword [esp + 0x4c], eax
mov dword [esp + 0x34], ebx
jl 0x804060
mov eax, dword [esp + 0x44]
mov ecx, dword [esi + 0x1211e0]
push eax
call ecx
add esp, 4
jmp 0x804495
mov edx, dword [esp + 0x24]
mov eax, dword [esp + 0x40]
mov dword [esp + 0x18], edx
mov dword [esp + 0x14], eax
mov edi, edi
mov edx, dword [esp + 0x18]
mov ecx, dword [esi + 0x8c]
mov ecx, dword [edx + ecx]
mov edx, dword [esi + 0x762c]
mov eax, edx
sub eax, dword [esi + 0x90]
movsx eax, byte [eax + ecx]
movsx ecx, byte [edx + ecx - 1]
add eax, ecx
cmp eax, 0x40
jge 0x8042ae
inc eax
sar eax, 1
and eax, 0x1f
mov eax, dword [eax*4 + 0x1036c0f0]
cmp byte [eax*8 + 0x1036bd10], 0
lea eax, [eax*8 + 0x1036bd10]
je 0x804387
movsx ecx, byte [eax + 2]
movsx edx, byte [eax + 1]
mov eax, dword [eax + 4]
mov dword [esp + 0x10], ecx
mov ecx, dword [edi + 0xc]
mov dword [esp + 0x20], eax
test ecx, ecx
jl 0x804303
mov eax, dword [edi + 4]
movzx ebx, byte [eax + 1]
movzx eax, byte [eax]
shl eax, 8
or ebx, eax
shl ebx, cl
or dword [edi + 0x10], ebx
add dword [edi + 4], 2
add dword [edi + 0xc], 0xfffffff0
mov eax, dword [edi + 0x10]
mov ecx, 0x20
sub ecx, edx
mov ebx, 1
shl ebx, cl
cmp eax, ebx
jb 0x804324
bsr ecx, eax
mov edx, ecx
mov dword [esp + 0x2c], ecx
xor edx, 0x1f
mov ecx, edx
shl eax, cl
mov dword [edi + 0x10], eax
add dword [edi + 0xc], edx
mov ecx, dword [edi + 0xc]
js 0x80434f
mov eax, dword [edi + 4]
movzx ebx, byte [eax + 1]
movzx eax, byte [eax]
shl eax, 8
or ebx, eax
shl ebx, cl
or dword [edi + 0x10], ebx
add dword [edi + 4], 2
add dword [edi + 0xc], 0xfffffff0
mov eax, dword [edi + 0x10]
mov ecx, 0x20
sub ecx, dword [esp + 0x10]
mov ebx, eax
shr ebx, cl
mov ecx, dword [esp + 0x10]
shl edx, cl
mov ecx, dword [esp + 0x20]
add ebx, edx
movzx edx, word [ecx + ebx*2]
cmp edx, 0xffff
jne 0x80437b
xor edx, edx
jmp 0x8043e5
mov ecx, edx
sar ecx, 8
shl eax, cl
mov dword [edi + 0x10], eax
jmp 0x8043e2
mov ecx, dword [edi + 0xc]
mov edx, dword [eax + 4]
movsx ebx, byte [eax + 2]
mov dword [esp + 0x10], edx
test ecx, ecx
jl 0x8043b5
mov edx, dword [edi + 4]
movzx eax, byte [edx]
movzx edx, byte [edx + 1]
shl eax, 8
or eax, edx
shl eax, cl
or dword [edi + 0x10], eax
add dword [edi + 4], 2
add dword [edi + 0xc], 0xfffffff0
mov edx, dword [edi + 0x10]
mov ecx, 0x20
sub ecx, ebx
mov eax, edx
shr eax, cl
mov ecx, dword [esp + 0x10]
movzx eax, word [ecx + eax*2]
cmp eax, 0xffff
jne 0x8043d6
xor edx, edx
jmp 0x8043e5
mov ecx, eax
sar ecx, 8
shl edx, cl
mov dword [edi + 0x10], edx
mov edx, eax
add dword [edi + 0xc], ecx
mov eax, edx
and al, 0x1f
movsx eax, al
neg eax
sbb eax, eax
and eax, edx
je 0x804479
mov ecx, dword [esp + 0x14]
mov edx, dword [esp + 0x38]
push ecx
mov ecx, dword [esp + 0x34]
push edx
push ecx
push 0x10
push 2
call fcn.007ffc00
mov ebx, eax
add esp, 0x14
cmp ebx, 1
jne 0x804425
mov edx, dword [esp + 0x14]
cmp dword [edx], 0
je 0x804425
jmp 0x804427
xor eax, eax
mov ecx, dword [esp + 0x14]
mov edx, dword [esi + eax*4 + 0x1211d8]
push ecx
call edx
mov eax, dword [esp + 0x1c]
mov ecx, dword [esp + 0x54]
mov edx, dword [eax + ecx]
add edx, dword [esp + 0x64]
mov ecx, dword [esi + 0x762c]
mov byte [edx + ecx], bl
mov edx, dword [esp + 0x54]
mov eax, dword [eax + edx]
mov ecx, dword [esi + 0x762c]
mov edx, dword [esp + 0x4c]
mov byte [eax + ecx], bl
mov eax, dword [esp + 0x50]
lea ecx, [edx + eax]
mov eax, dword [esp + 0x40]
mov edx, 2
shl edx, cl
add esp, 4
or dword [eax + 4], edx
mov eax, dword [esp + 0x4c]
add dword [esp + 0x14], 0x40
add dword [esp + 0x18], 4
inc eax
cmp eax, 4
mov dword [esp + 0x4c], eax
jl 0x804280
inc dword [esp + 0x1c]
add dword [esp + 0x48], 4
mov eax, 0x100
add dword [esp + 0x44], eax
add dword [esp + 0x40], eax
mov eax, dword [esp + 0x24]
add eax, 0x10
cmp eax, 0x40
mov dword [esp + 0x24], eax
jl 0x804020
jmp 0x804e60
test al, 2
je 0x804925
mov eax, dword [esi + 0xcc]
shl eax, 6
lea ecx, [eax + 0x10369748]
lea edx, [eax + 0x103694cc]
mov eax, dword [esi + 0x5c]
imul eax, eax, 0x34
mov dword [esp + 0x18], edx
mov edx, dword [esi + 0x8c]
mov edx, dword [edx]
mov dword [esp + 0x38], ecx
lea ecx, [eax + esi + 0x145f60]
mov eax, edx
sub eax, dword [esi + 0x90]
mov dword [esp + 0x2c], ecx
mov ecx, dword [esi + 0x762c]
movsx eax, byte [eax + ecx]
movsx ecx, byte [edx + ecx - 1]
add eax, ecx
cmp eax, 0x40
jge 0x804523
inc eax
sar eax, 1
and eax, 0x1f
mov eax, dword [eax*4 + 0x1036c0f0]
cmp byte [eax*8 + 0x1036bd10], 0
lea eax, [eax*8 + 0x1036bd10]
je 0x8045fc
movsx ecx, byte [eax + 2]
movsx edx, byte [eax + 1]
mov eax, dword [eax + 4]
mov dword [esp + 0x10], ecx
mov ecx, dword [edi + 0xc]
cmp ecx, ebx
mov dword [esp + 0x34], eax
jl 0x804578
mov eax, dword [edi + 4]
movzx ebx, byte [eax]
movzx eax, byte [eax + 1]
shl ebx, 8
or ebx, eax
shl ebx, cl
or dword [edi + 0x10], ebx
add dword [edi + 4], 2
add dword [edi + 0xc], 0xfffffff0
mov eax, dword [edi + 0x10]
mov ecx, 0x20
sub ecx, edx
mov ebx, 1
shl ebx, cl
cmp eax, ebx
jb 0x804599
bsr ecx, eax
mov edx, ecx
mov dword [esp + 0x20], ecx
xor edx, 0x1f
mov ecx, edx
shl eax, cl
mov dword [edi + 0x10], eax
add dword [edi + 0xc], edx
mov ecx, dword [edi + 0xc]
js 0x8045c4
mov eax, dword [edi + 4]
movzx ebx, byte [eax]
movzx eax, byte [eax + 1]
shl ebx, 8
or ebx, eax
shl ebx, cl
or dword [edi + 0x10], ebx
add dword [edi + 4], 2
add dword [edi + 0xc], 0xfffffff0
mov eax, dword [edi + 0x10]
mov ecx, 0x20
sub ecx, dword [esp + 0x10]
mov ebx, eax
shr ebx, cl
mov ecx, dword [esp + 0x10]
shl edx, cl
mov ecx, dword [esp + 0x34]
add ebx, edx
movzx edx, word [ecx + ebx*2]
cmp edx, 0xffff
jne 0x8045f0
xor edx, edx
jmp 0x80465a
mov ecx, edx
sar ecx, 8
shl eax, cl
mov dword [edi + 0x10], eax
jmp 0x804657
mov ecx, dword [edi + 0xc]
mov edx, dword [eax + 4]
movsx ebx, byte [eax + 2]
mov dword [esp + 0x10], edx
test ecx, ecx
jl 0x80462a
mov edx, dword [edi + 4]
movzx eax, byte [edx]
movzx edx, byte [edx + 1]
shl eax, 8
or eax, edx
shl eax, cl
or dword [edi + 0x10], eax
add dword [edi + 4], 2
add dword [edi + 0xc], 0xfffffff0
mov edx, dword [edi + 0x10]
mov ecx, 0x20
sub ecx, ebx
mov eax, edx
shr eax, cl
mov ecx, dword [esp + 0x10]
movzx eax, word [ecx + eax*2]
cmp eax, 0xffff
jne 0x80464b
xor edx, edx
jmp 0x80465a
mov ecx, eax
sar ecx, 8
shl edx, cl
mov dword [edi + 0x10], edx
mov edx, eax
add dword [edi + 0xc], ecx
mov eax, edx
and al, 0x1f
movsx eax, al
neg eax
sbb eax, eax
and eax, edx
je 0x8046a1
mov ecx, dword [esp + 0x38]
lea ebx, [esi + 0x3f780]
push ebx
push 0
push ecx
push 0x10
push 0
call fcn.007ff4c0
mov edx, dword [esp + 0x40]
mov eax, dword [edx]
mov ecx, dword [eax]
mov edx, dword [esi + 0x58]
push ecx
push edx
push ebx
call fcn.0081785d
mov eax, dword [esp + 0x5c]
add esp, 0x20
mov dword [eax + 4], 1
mov eax, dword [esp + 0x3c]
test byte [eax], 0xf
je 0x8048ce
lea ecx, [esi + 0x3f780]
mov dword [esp + 0x1c], 0
mov dword [esp + 0x14], ecx
mov edx, dword [esi + 0x8c]
mov eax, dword [esp + 0x1c]
mov ecx, dword [edx + eax*4]
mov edx, dword [esi + 0x762c]
mov eax, ecx
sub eax, dword [esi + 0x90]
movsx ecx, byte [ecx + edx - 1]
movsx eax, byte [eax + edx]
add eax, ecx
cmp eax, 0x40
jge 0x8046ee
inc eax
sar eax, 1
and eax, 0x1f
mov eax, dword [eax*4 + 0x1036c0f0]
cmp byte [eax*8 + 0x1036bd10], 0
lea eax, [eax*8 + 0x1036bd10]
je 0x8047c7
movsx ecx, byte [eax + 2]
movsx edx, byte [eax + 1]
mov eax, dword [eax + 4]
mov dword [esp + 0x10], ecx
mov ecx, dword [edi + 0xc]
mov dword [esp + 0x34], eax
test ecx, ecx
jl 0x804743
mov eax, dword [edi + 4]
movzx ebx, byte [eax + 1]
movzx eax, byte [eax]
shl eax, 8
or ebx, eax
shl ebx, cl
or dword [edi + 0x10], ebx
add dword [edi + 4], 2
add dword [edi + 0xc], 0xfffffff0
mov eax, dword [edi + 0x10]
mov ecx, 0x20
sub ecx, edx
mov ebx, 1
shl ebx, cl
cmp eax, ebx
jb 0x804764
bsr ecx, eax
mov edx, ecx
mov dword [esp + 0x20], ecx
xor edx, 0x1f
mov ecx, edx
shl eax, cl
mov dword [edi + 0x10], eax
add dword [edi + 0xc], edx
mov ecx, dword [edi + 0xc]
js 0x80478f
mov eax, dword [edi + 4]
movzx ebx, byte [eax + 1]
movzx eax, byte [eax]
shl eax, 8
or ebx, eax
shl ebx, cl
or dword [edi + 0x10], ebx
add dword [edi + 4], 2
add dword [edi + 0xc], 0xfffffff0
mov eax, dword [edi + 0x10]
mov ecx, 0x20
sub ecx, dword [esp + 0x10]
mov ebx, eax
shr ebx, cl
mov ecx, dword [esp + 0x10]
shl edx, cl
mov ecx, dword [esp + 0x34]
add ebx, edx
movzx edx, word [ecx + ebx*2]
cmp edx, 0xffff
jne 0x8047bb
xor edx, edx
jmp 0x804825
mov ecx, edx
sar ecx, 8
shl eax, cl
mov dword [edi + 0x10], eax
jmp 0x804822
mov ecx, dword [edi + 0xc]
mov edx, dword [eax + 4]
movsx ebx, byte [eax + 2]
mov dword [esp + 0x10], edx
test ecx, ecx
jl 0x8047f5
mov edx, dword [edi + 4]
movzx eax, byte [edx + 1]
movzx edx, byte [edx]
shl edx, 8
or eax, edx
shl eax, cl
or dword [edi + 0x10], eax
add dword [edi + 4], 2
add dword [edi + 0xc], 0xfffffff0
mov edx, dword [edi + 0x10]
mov ecx, 0x20
sub ecx, ebx
mov eax, edx
shr eax, cl
mov ecx, dword [esp + 0x10]
movzx eax, word [ecx + eax*2]
cmp eax, 0xffff
jne 0x804816
xor edx, edx
jmp 0x804825
mov ecx, eax
sar ecx, 8
shl edx, cl
mov dword [edi + 0x10], edx
mov edx, eax
add dword [edi + 0xc], ecx
mov eax, edx
and al, 0x1f
movsx eax, al
neg eax
sbb eax, eax
and eax, edx
je 0x80489c
mov ecx, dword [esp + 0x14]
mov edx, dword [esi + 0x58]
push ecx
mov ecx, dword [esp + 0x30]
mov edx, dword [ecx + edx*4]
mov ecx, dword [esp + 0x1c]
push edx
push ecx
push 0xf
push 1
call fcn.007ff4c0
mov edx, dword [esp + 0x28]
mov ebx, eax
mov eax, dword [esi + 0x1211d8]
push edx
call eax
mov ecx, dword [esp + 0x34]
mov edx, dword [esp + 0x68]
mov eax, dword [edx + ecx*4]
add eax, dword [esp + 0x78]
mov edx, dword [esi + 0x762c]
mov byte [eax + edx], bl
mov eax, dword [esp + 0x68]
mov edx, dword [eax + ecx*4]
mov eax, dword [esi + 0x762c]
mov byte [edx + eax], bl
mov eax, dword [esp + 0x54]
mov edx, 2
shl edx, cl
add esp, 0x18
or dword [eax + 4], edx
jmp 0x8048b2
mov eax, dword [esp + 0x14]
cmp word [eax], 0
je 0x8048b2
push eax
mov eax, dword [esi + 0x1211dc]
call eax
add esp, 4
mov eax, dword [esp + 0x1c]
add dword [esp + 0x14], 0x20
inc eax
cmp eax, 0x10
mov dword [esp + 0x1c], eax
jl 0x8046c0
jmp 0x804e60
test byte [eax + 4], 1
je 0x804e60
lea ebx, [esi + 0x3f7a0]
mov dword [esp + 0x10], 4
mov edx, dword [esi + 0x1211dc]
lea ecx, [ebx - 0x20]
push ecx
call edx
mov eax, dword [esi + 0x1211dc]
push ebx
call eax
mov edx, dword [esi + 0x1211dc]
lea ecx, [ebx + 0x20]
push ecx
call edx
mov ecx, dword [esi + 0x1211dc]
lea eax, [ebx + 0x40]
push eax
call ecx
add esp, 0x10
sub ebx, 0xffffff80
sub dword [esp + 0x10], 1
jne 0x8048e6
jmp 0x804e60
mov ecx, dword [esi + 0xcc]
test eax, 0x1000000
je 0x804965
shl ecx, 8
add ecx, 0x10369848
test al, 7
mov eax, 0
sete al
mov dword [esp + 0x30], ecx
lea edx, [eax + eax*2]
mov eax, dword [esi + 0x5c]
lea ecx, [eax + edx*2]
imul ecx, ecx, 0xd
add ecx, dword [esi + 0x58]
mov edx, dword [esi + ecx*4 + 0x1466b0]
mov dword [esp + 0x38], edx
jmp 0x80499b
and al, 7
movzx eax, al
shl ecx, 6
add ecx, 0x103694c8
neg eax
sbb eax, eax
and eax, 0xfffffffd
add eax, 3
mov dword [esp + 0x30], ecx
mov ecx, dword [esi + 0x5c]
lea eax, [eax + eax*2]
lea edx, [ecx + eax*2]
imul edx, edx, 0xd
add edx, dword [esi + 0x58]
mov eax, dword [esi + edx*4 + 0x145f60]
mov dword [esp + 0x38], eax
lea eax, [esi + 0x3f780]
mov dword [esp + 0x1c], ebx
mov dword [esp + 0x48], ebx
mov dword [esp + 0x24], ebx
mov dword [esp + 0x44], eax
mov dword [esp + 0x40], eax
jmp 0x8049c0
mov ecx, dword [esp + 0x1c]
mov eax, dword [esp + 0x3c]
mov edx, 1
shl edx, cl
test dword [eax], edx
je 0x804e36
mov ecx, eax
test dword [ecx + 0xc], 0x1000000
mov dword [esp + 0x4c], 0
je 0x804c0e
mov ebx, dword [esp + 0x24]
mov edx, dword [esp + 0x30]
mov dword [esp + 0x34], ebx
mov dword [esp + 0x20], edx
mov edi, edi
mov eax, dword [esi + 0x8c]
mov ecx, dword [ebx + eax]
mov edx, dword [esi + 0x762c]
mov eax, ecx
sub eax, dword [esi + 0x90]
movsx ecx, byte [ecx + edx - 1]
movsx eax, byte [eax + edx]
add eax, ecx
cmp eax, 0x40
jge 0x804a2a
inc eax
sar eax, 1
and eax, 0x1f
mov eax, dword [eax*4 + 0x1036c0f0]
cmp byte [eax*8 + 0x1036bd10], 0
lea eax, [eax*8 + 0x1036bd10]
je 0x804b0a
movsx ecx, byte [eax + 2]
movsx edx, byte [eax + 1]
mov eax, dword [eax + 4]
mov dword [esp + 0x10], ecx
mov ecx, dword [edi + 0xc]
mov dword [esp + 0x18], eax
test ecx, ecx
jl 0x804a7f
mov eax, dword [edi + 4]
movzx ebx, byte [eax]
movzx eax, byte [eax + 1]
shl ebx, 8
or ebx, eax
shl ebx, cl
or dword [edi + 0x10], ebx
add dword [edi + 4], 2
add dword [edi + 0xc], 0xfffffff0
mov eax, dword [edi + 0x10]
mov ecx, 0x20
sub ecx, edx
mov ebx, 1
shl ebx, cl
cmp eax, ebx
jb 0x804aa0
bsr ecx, eax
mov edx, ecx
mov dword [esp + 0x2c], ecx
xor edx, 0x1f
mov ecx, edx
shl eax, cl
mov dword [edi + 0x10], eax
add dword [edi + 0xc], edx
mov ecx, dword [edi + 0xc]
js 0x804acb
mov eax, dword [edi + 4]
movzx ebx, byte [eax]
movzx eax, byte [eax + 1]
shl ebx, 8
or ebx, eax
shl ebx, cl
or dword [edi + 0x10], ebx
add dword [edi + 4], 2
add dword [edi + 0xc], 0xfffffff0
mov eax, dword [edi + 0x10]
mov ecx, 0x20
sub ecx, dword [esp + 0x10]
mov ebx, eax
shr ebx, cl
mov ecx, dword [esp + 0x10]
shl edx, cl
mov ecx, dword [esp + 0x18]
add ebx, edx
movzx edx, word [ecx + ebx*2]
mov ebx, dword [esp + 0x34]
cmp edx, 0xffff
jne 0x804afb
xor edx, edx
jmp 0x804b74
mov ecx, edx
sar ecx, 8
shl eax, cl
mov dword [edi + 0x10], eax
add dword [edi + 0xc], ecx
jmp 0x804b74
movsx edx, byte [eax + 2]
mov ecx, dword [edi + 0xc]
mov eax, dword [eax + 4]
mov dword [esp + 0x10], edx
mov dword [esp + 0x2c], eax
test ecx, ecx
jl 0x804b3c
mov eax, dword [edi + 4]
movzx edx, byte [eax + 1]
movzx eax, byte [eax]
shl eax, 8
or edx, eax
shl edx, cl
or dword [edi + 0x10], edx
add dword [edi + 4], 2
add dword [edi + 0xc], 0xfffffff0
mov edx, dword [edi + 0x10]
mov ecx, 0x20
sub ecx, dword [esp + 0x10]
mov eax, edx
shr eax, cl
mov ecx, dword [esp + 0x2c]
movzx eax, word [ecx + eax*2]
cmp eax, 0xffff
jne 0x804b5f
xor edx, edx
jmp 0x804b74
mov ecx, eax
sar ecx, 8
shl edx, cl
mov dword [esp + 0x10], ecx
mov dword [edi + 0x10], edx
mov edx, ecx
add dword [edi + 0xc], edx
mov edx, eax
mov eax, edx
and al, 0x1f
movsx eax, al
neg eax
sbb eax, eax
and eax, edx
je 0x804bdb
mov ecx, dword [esp + 0x44]
mov edx, dword [esp + 0x38]
push ecx
mov ecx, dword [esp + 0x24]
push edx
push ecx
push 0x10
push 5
call fcn.007ff4c0
mov edx, dword [esp + 0x64]
mov ecx, dword [ebx + edx]
add ecx, dword [esp + 0x74]
mov edx, dword [esi + 0x762c]
mov byte [ecx + edx], al
mov ecx, dword [esp + 0x64]
mov edx, dword [ebx + ecx]
mov ecx, dword [esi + 0x762c]
mov byte [edx + ecx], al
mov edx, dword [esp + 0x5c]
mov eax, dword [esp + 0x60]
lea ecx, [edx + eax]
mov eax, dword [esp + 0x50]
mov edx, 2
shl edx, cl
add esp, 0x14
or dword [eax + 4], edx
mov eax, dword [esp + 0x4c]
add dword [esp + 0x20], 0x40
inc eax
add ebx, 4
cmp eax, 4
mov dword [esp + 0x4c], eax
mov dword [esp + 0x34], ebx
jl 0x804a00
mov eax, dword [esp + 0x44]
mov ecx, dword [esi + 0x1211e0]
push eax
call ecx
add esp, 4
jmp 0x804e36
mov edx, dword [esp + 0x24]
mov eax, dword [esp + 0x40]
mov dword [esp + 0x18], edx
mov dword [esp + 0x14], eax
mov edi, edi
mov edx, dword [esp + 0x18]
mov ecx, dword [esi + 0x8c]
mov ecx, dword [edx + ecx]
mov edx, dword [esi + 0x762c]
mov eax, ecx
sub eax, dword [esi + 0x90]
movsx ecx, byte [ecx + edx - 1]
movsx eax, byte [eax + edx]
add eax, ecx
cmp eax, 0x40
jge 0x804c4e
inc eax
sar eax, 1
and eax, 0x1f
mov eax, dword [eax*4 + 0x1036c0f0]
cmp byte [eax*8 + 0x1036bd10], 0
lea eax, [eax*8 + 0x1036bd10]
je 0x804d27
movsx ecx, byte [eax + 2]
movsx edx, byte [eax + 1]
mov eax, dword [eax + 4]
mov dword [esp + 0x10], ecx
mov ecx, dword [edi + 0xc]
mov dword [esp + 0x20], eax
test ecx, ecx
jl 0x804ca3
mov eax, dword [edi + 4]
movzx ebx, byte [eax + 1]
movzx eax, byte [eax]
shl eax, 8
or ebx, eax
shl ebx, cl
or dword [edi + 0x10], ebx
add dword [edi + 4], 2
add dword [edi + 0xc], 0xfffffff0
mov eax, dword [edi + 0x10]
mov ecx, 0x20
sub ecx, edx
mov ebx, 1
shl ebx, cl
cmp eax, ebx
jb 0x804cc4
bsr ecx, eax
mov edx, ecx
mov dword [esp + 0x2c], ecx
xor edx, 0x1f
mov ecx, edx
shl eax, cl
mov dword [edi + 0x10], eax
add dword [edi + 0xc], edx
mov ecx, dword [edi + 0xc]
js 0x804cef
mov eax, dword [edi + 4]
movzx ebx, byte [eax + 1]
movzx eax, byte [eax]
shl eax, 8
or ebx, eax
shl ebx, cl
or dword [edi + 0x10], ebx
add dword [edi + 4], 2
add dword [edi + 0xc], 0xfffffff0
mov eax, dword [edi + 0x10]
mov ecx, 0x20
sub ecx, dword [esp + 0x10]
mov ebx, eax
shr ebx, cl
mov ecx, dword [esp + 0x10]
shl edx, cl
mov ecx, dword [esp + 0x20]
add ebx, edx
movzx edx, word [ecx + ebx*2]
cmp edx, 0xffff
jne 0x804d1b
xor edx, edx
jmp 0x804d85
mov ecx, edx
sar ecx, 8
shl eax, cl
mov dword [edi + 0x10], eax
jmp 0x804d82
mov ecx, dword [edi + 0xc]
mov edx, dword [eax + 4]
movsx ebx, byte [eax + 2]
mov dword [esp + 0x10], edx
test ecx, ecx
jl 0x804d55
mov edx, dword [edi + 4]
movzx eax, byte [edx + 1]
movzx edx, byte [edx]
shl edx, 8
or eax, edx
shl eax, cl
or dword [edi + 0x10], eax
add dword [edi + 4], 2
add dword [edi + 0xc], 0xfffffff0
mov edx, dword [edi + 0x10]
mov ecx, 0x20
sub ecx, ebx
mov eax, edx
shr eax, cl
mov ecx, dword [esp + 0x10]
movzx eax, word [ecx + eax*2]
cmp eax, 0xffff
jne 0x804d76
xor edx, edx
jmp 0x804d85
mov ecx, eax
sar ecx, 8
shl edx, cl
mov dword [edi + 0x10], edx
mov edx, eax
add dword [edi + 0xc], ecx
mov eax, edx
and al, 0x1f
movsx eax, al
neg eax
sbb eax, eax
and eax, edx
je 0x804e1a
mov ecx, dword [esp + 0x14]
mov edx, dword [esp + 0x38]
push ecx
mov ecx, dword [esp + 0x34]
push edx
push ecx
push 0x10
push 2
call fcn.007ff4c0
mov ebx, eax
add esp, 0x14
cmp ebx, 1
jne 0x804dc6
mov edx, dword [esp + 0x14]
cmp word [edx], 0
je 0x804dc6
jmp 0x804dc8
xor eax, eax
mov ecx, dword [esp + 0x14]
mov edx, dword [esi + eax*4 + 0x1211d8]
push ecx
call edx
mov eax, dword [esp + 0x1c]
mov ecx, dword [esp + 0x54]
mov edx, dword [eax + ecx]
add edx, dword [esp + 0x64]
mov ecx, dword [esi + 0x762c]
mov byte [edx + ecx], bl
mov edx, dword [esp + 0x54]
mov eax, dword [eax + edx]
mov ecx, dword [esi + 0x762c]
mov edx, dword [esp + 0x4c]
mov byte [eax + ecx], bl
mov eax, dword [esp + 0x50]
lea ecx, [edx + eax]
mov eax, dword [esp + 0x40]
mov edx, 2
shl edx, cl
add esp, 4
or dword [eax + 4], edx
mov eax, dword [esp + 0x4c]
add dword [esp + 0x14], 0x20
add dword [esp + 0x18], 4
inc eax
cmp eax, 4
mov dword [esp + 0x4c], eax
jl 0x804c20
inc dword [esp + 0x1c]
add dword [esp + 0x48], 4
mov eax, 0x80
add dword [esp + 0x44], eax
add dword [esp + 0x40], eax
mov eax, dword [esp + 0x24]
add eax, 0x10
cmp eax, 0x40
mov dword [esp + 0x24], eax
jl 0x8049c0
mov eax, dword [esp + 0x3c]
cmp dword [eax], 0xf
jbe 0x8062d5
mov eax, dword [esi + 0x10]
xor ecx, ecx
cmp dword [eax + 0x2c], ecx
je 0x8058af
mov eax, dword [eax + 0x20]
cmp eax, 1
jne 0x805070
mov dword [esp + 0x1c], ecx
lea ecx, [esi + 0x68]
lea edx, [esi + 0x3fb80]
mov dword [esp + 0x18], ecx
mov dword [esp + 0x14], edx
mov eax, dword [esi + 0x10]
mov ecx, dword [eax + 0x20]
cmp byte [ecx*8 + 0x1036bd28], 0
movsx edx, byte [ecx*8 + 0x1036bd2a]
lea ecx, [ecx*8 + 0x1036bd28]
je 0x804f74
movsx eax, byte [ecx + 1]
mov ecx, dword [ecx + 4]
mov dword [esp + 0x20], ecx
mov ecx, dword [edi + 0xc]
mov dword [esp + 0x10], edx
test ecx, ecx
jl 0x804ef1
mov edx, dword [edi + 4]
movzx ebx, byte [edx + 1]
movzx edx, byte [edx]
shl edx, 8
or ebx, edx
shl ebx, cl
or dword [edi + 0x10], ebx
add dword [edi + 4], 2
add dword [edi + 0xc], 0xfffffff0
mov edx, dword [edi + 0x10]
mov ecx, 0x20
sub ecx, eax
mov ebx, 1
shl ebx, cl
cmp edx, ebx
jb 0x804f10
bsr eax, edx
mov dword [esp + 0x2c], eax
xor eax, 0x1f
mov ecx, eax
shl edx, cl
mov dword [edi + 0x10], edx
add dword [edi + 0xc], eax
mov ecx, dword [edi + 0xc]
js 0x804f3b
mov edx, dword [edi + 4]
movzx ebx, byte [edx + 1]
movzx edx, byte [edx]
shl edx, 8
or ebx, edx
shl ebx, cl
or dword [edi + 0x10], ebx
add dword [edi + 4], 2
add dword [edi + 0xc], 0xfffffff0
mov edx, dword [edi + 0x10]
mov ecx, 0x20
sub ecx, dword [esp + 0x10]
mov ebx, edx
shr ebx, cl
mov ecx, dword [esp + 0x10]
shl eax, cl
add ebx, eax
mov eax, dword [esp + 0x20]
movzx eax, word [eax + ebx*2]
cmp eax, 0xffff
jne 0x804f66
xor edx, edx
jmp 0x804fcd
mov ecx, eax
sar ecx, 8
shl edx, cl
mov dword [edi + 0x10], edx
mov edx, eax
jmp 0x804fca
mov ecx, dword [ecx + 4]
mov dword [esp + 0x10], ecx
mov ecx, dword [edi + 0xc]
test ecx, ecx
jl 0x804f9e
mov eax, dword [edi + 4]
movzx ebx, byte [eax]
movzx eax, byte [eax + 1]
shl ebx, 8
or ebx, eax
shl ebx, cl
or dword [edi + 0x10], ebx
add dword [edi + 4], 2
add dword [edi + 0xc], 0xfffffff0
mov eax, dword [edi + 0x10]
mov ecx, 0x20
sub ecx, edx
mov edx, eax
shr edx, cl
mov ecx, dword [esp + 0x10]
movzx edx, word [ecx + edx*2]
cmp edx, 0xffff
jne 0x804fc0
xor edx, edx
jmp 0x804fcd
mov ecx, edx
sar ecx, 8
shl eax, cl
mov dword [edi + 0x10], eax
add dword [edi + 0xc], ecx
mov eax, edx
and al, 0x1f
movsx eax, al
neg eax
sbb eax, eax
and eax, edx
je 0x80504c
mov ecx, dword [esp + 0x3c]
mov edx, dword [ecx + 0xc]
and dl, 7
movzx ecx, dl
mov edx, dword [esp + 0x18]
mov edx, dword [edx + 0x10]
neg ecx
sbb ecx, ecx
and ecx, 0xfffffffd
add ecx, 3
add ecx, dword [esp + 0x1c]
lea ecx, [ecx + ecx*2]
lea ecx, [edx + ecx*2]
imul ecx, ecx, 0x34
mov edx, dword [ecx + esi + 0x146098]
mov ecx, dword [esp + 0x14]
mov ebx, dword [edx]
push ecx
push 0
push 0x103697c8
push 4
push 3
call fcn.007ffc00
mov edx, dword [esp + 0x2c]
mov eax, dword [edx]
mov ecx, dword [esp + 0x28]
push ebx
push eax
push ecx
call fcn.00818402
mov ecx, dword [esp + 0x3c]
mov eax, dword [esp + 0x5c]
mov edx, 0x20000
shl edx, cl
add esp, 0x20
or dword [eax + 4], edx
mov eax, dword [esp + 0x1c]
add dword [esp + 0x18], 4
add dword [esp + 0x14], 0x100
inc eax
cmp eax, 2
mov dword [esp + 0x1c], eax
jl 0x804e9c
jmp 0x80525d
cmp eax, 2
jne 0x80525d
mov dword [esp + 0x1c], ecx
lea eax, [esi + 0x70]
lea ecx, [esi + 0x3fb80]
mov dword [esp + 0x18], eax
mov dword [esp + 0x14], ecx
mov edx, dword [esi + 0x10]
mov ecx, dword [edx + 0x20]
cmp byte [ecx*8 + 0x1036bd28], 0
movsx edx, byte [ecx*8 + 0x1036bd2a]
lea ecx, [ecx*8 + 0x1036bd28]
je 0x805166
movsx eax, byte [ecx + 1]
mov ecx, dword [ecx + 4]
mov dword [esp + 0x20], ecx
mov ecx, dword [edi + 0xc]
mov dword [esp + 0x10], edx
test ecx, ecx
jl 0x8050e3
mov edx, dword [edi + 4]
movzx ebx, byte [edx + 1]
movzx edx, byte [edx]
shl edx, 8
or ebx, edx
shl ebx, cl
or dword [edi + 0x10], ebx
add dword [edi + 4], 2
add dword [edi + 0xc], 0xfffffff0
mov edx, dword [edi + 0x10]
mov ecx, 0x20
sub ecx, eax
mov ebx, 1
shl ebx, cl
cmp edx, ebx
jb 0x805102
bsr eax, edx
mov dword [esp + 0x2c], eax
xor eax, 0x1f
mov ecx, eax
shl edx, cl
mov dword [edi + 0x10], edx
add dword [edi + 0xc], eax
mov ecx, dword [edi + 0xc]
js 0x80512d
mov edx, dword [edi + 4]
movzx ebx, byte [edx + 1]
movzx edx, byte [edx]
shl edx, 8
or ebx, edx
shl ebx, cl
or dword [edi + 0x10], ebx
add dword [edi + 4], 2
add dword [edi + 0xc], 0xfffffff0
mov edx, dword [edi + 0x10]
mov ecx, 0x20
sub ecx, dword [esp + 0x10]
mov ebx, edx
shr ebx, cl
mov ecx, dword [esp + 0x10]
shl eax, cl
add ebx, eax
mov eax, dword [esp + 0x20]
movzx eax, word [eax + ebx*2]
cmp eax, 0xffff
jne 0x805158
xor edx, edx
jmp 0x8051bf
mov ecx, eax
sar ecx, 8
shl edx, cl
mov dword [edi + 0x10], edx
mov edx, eax
jmp 0x8051bc
mov ecx, dword [ecx + 4]
mov dword [esp + 0x10], ecx
mov ecx, dword [edi + 0xc]
test ecx, ecx
jl 0x805190
mov eax, dword [edi + 4]
movzx ebx, byte [eax + 1]
movzx eax, byte [eax]
shl eax, 8
or ebx, eax
shl ebx, cl
or dword [edi + 0x10], ebx
add dword [edi + 4], 2
add dword [edi + 0xc], 0xfffffff0
mov eax, dword [edi + 0x10]
mov ecx, 0x20
sub ecx, edx
mov edx, eax
shr edx, cl
mov ecx, dword [esp + 0x10]
movzx edx, word [ecx + edx*2]
cmp edx, 0xffff
jne 0x8051b2
xor edx, edx
jmp 0x8051bf
mov ecx, edx
sar ecx, 8
shl eax, cl
mov dword [edi + 0x10], eax
add dword [edi + 0xc], ecx
mov eax, edx
and al, 0x1f
movsx eax, al
neg eax
sbb eax, eax
and eax, edx
je 0x80523e
mov ecx, dword [esp + 0x3c]
mov edx, dword [ecx + 0xc]
and dl, 7
movzx ecx, dl
mov edx, dword [esp + 0x18]
mov edx, dword [edx + 0x10]
neg ecx
sbb ecx, ecx
and ecx, 0xfffffffd
add ecx, 3
add ecx, dword [esp + 0x1c]
lea ecx, [ecx + ecx*2]
lea ecx, [edx + ecx*2]
imul ecx, ecx, 0x34
mov edx, dword [ecx + esi + 0x146098]
mov ecx, dword [esp + 0x14]
mov ebx, dword [edx]
push ecx
push 0
push 0x10369808
push 8
push 3
call fcn.007ffc00
mov edx, dword [esp + 0x2c]
mov eax, dword [edx]
mov ecx, dword [esp + 0x28]
push ebx
push eax
push ecx
call fcn.008184a5
mov ecx, dword [esp + 0x3c]
mov eax, dword [esp + 0x5c]
mov edx, 0x20000
shl edx, cl
add esp, 0x20
or dword [eax + 4], edx
mov eax, dword [esp + 0x1c]
add dword [esp + 0x18], 4
add dword [esp + 0x14], 0x200
inc eax
cmp eax, 2
mov dword [esp + 0x1c], eax
jl 0x80508e
mov eax, dword [esp + 0x3c]
cmp dword [eax], 0x1f
jbe 0x8057dc
mov eax, dword [esi + 0xcc]
shl eax, 6
add eax, 0x103694cc
mov dword [esp + 0x48], eax
xor eax, eax
lea edx, [esi + 0x3fb80]
lea ecx, [esi + 0x68]
mov dword [esp + 0x1c], eax
mov dword [esp + 0x24], eax
mov dword [esp + 0x18], 1
mov dword [esp + 0x40], edx
mov dword [esp + 0x34], edx
mov dword [esp + 0x30], ecx
mov eax, dword [esp + 0x3c]
mov eax, dword [eax + 0xc]
mov ebx, dword [ecx + 0x10]
and al, 7
movzx eax, al
neg eax
sbb eax, eax
and eax, 0xfffffffd
add eax, 3
add eax, dword [esp + 0x1c]
lea eax, [eax + eax*2]
lea eax, [ebx + eax*2]
imul eax, eax, 0xd
add eax, dword [ecx]
mov ecx, dword [esi + eax*4 + 0x146098]
mov eax, dword [esi + 0x10]
mov eax, dword [eax + 0x20]
mov dword [esp + 0x44], ecx
cmp eax, 1
jne 0x805558
mov ecx, dword [esp + 0x50]
mov ebx, dword [esp + 0x34]
xor eax, eax
mov dword [esp + 0x4c], eax
mov dword [esp + 0x20], ecx
mov dword [esp + 0x14], eax
mov dword [esp + 0x38], ebx
nop
mov edx, dword [esi + 0x8c]
mov eax, dword [eax + edx]
mov edx, dword [esp + 0x24]
sub edx, dword [esi + 0x90]
mov ecx, dword [esi + 0x762c]
add edx, ecx
mov dword [esp + 0x10], eax
movsx eax, byte [edx + eax + 0x360]
mov edx, dword [esp + 0x24]
add edx, ecx
mov ecx, dword [esp + 0x10]
movsx edx, byte [edx + ecx + 0x35f]
add eax, edx
cmp eax, 0x40
jge 0x805343
inc eax
sar eax, 1
and eax, 0x1f
mov eax, dword [eax*4 + 0x1036c0f0]
cmp byte [eax*8 + 0x1036bd10], 0
movsx edx, byte [eax*8 + 0x1036bd12]
lea eax, [eax*8 + 0x1036bd10]
je 0x805437
movsx ecx, byte [eax + 1]
mov eax, dword [eax + 4]
mov dword [esp + 0x10], ecx
mov ecx, dword [edi + 0xc]
mov dword [esp + 0x2c], edx
mov dword [esp + 0x54], eax
test ecx, ecx
jl 0x8053a0
mov eax, dword [edi + 4]
movzx edx, byte [eax + 1]
movzx eax, byte [eax]
shl eax, 8
or edx, eax
shl edx, cl
or dword [edi + 0x10], edx
add dword [edi + 4], 2
add dword [edi + 0xc], 0xfffffff0
mov edx, dword [edi + 0x10]
mov ecx, 0x20
sub ecx, dword [esp + 0x10]
mov eax, 1
shl eax, cl
cmp edx, eax
jae 0x8053bd
mov eax, dword [esp + 0x10]
jmp 0x8053c9
bsr ecx, edx
mov eax, ecx
mov dword [esp + 0x10], ecx
xor eax, 0x1f
mov ecx, eax
shl edx, cl
mov dword [edi + 0x10], edx
add dword [edi + 0xc], eax
js 0x8053f4
mov ecx, dword [edi + 4]
movzx edx, byte [ecx + 1]
movzx ecx, byte [ecx]
shl ecx, 8
or edx, ecx
mov ecx, dword [edi + 0xc]
shl edx, cl
or dword [edi + 0x10], edx
add dword [edi + 4], 2
add dword [edi + 0xc], 0xfffffff0
mov edx, dword [edi + 0x10]
mov ecx, 0x20
sub ecx, dword [esp + 0x2c]
shr edx, cl
mov ecx, dword [esp + 0x2c]
shl eax, cl
add edx, eax
mov eax, dword [esp + 0x54]
movzx edx, word [eax + edx*2]
cmp edx, 0xffff
jne 0x805421
xor edx, edx
jmp 0x80549c
mov eax, dword [edi + 0x10]
mov ecx, edx
sar ecx, 8
shl eax, cl
mov dword [esp + 0x2c], ecx
mov dword [edi + 0x10], eax
add dword [edi + 0xc], ecx
jmp 0x80549c
mov ecx, dword [edi + 0xc]
mov eax, dword [eax + 4]
mov dword [esp + 0x10], edx
mov dword [esp + 0x2c], eax
test ecx, ecx
jl 0x805465
mov eax, dword [edi + 4]
movzx edx, byte [eax + 1]
movzx eax, byte [eax]
shl eax, 8
or edx, eax
shl edx, cl
or dword [edi + 0x10], edx
add dword [edi + 4], 2
add dword [edi + 0xc], 0xfffffff0
mov eax, dword [edi + 0x10]
mov ecx, 0x20
sub ecx, dword [esp + 0x10]
mov edx, eax
shr edx, cl
mov ecx, dword [esp + 0x2c]
movzx edx, word [ecx + edx*2]
cmp edx, 0xffff
jne 0x805489
xor edx, edx
jmp 0x80549c
mov ecx, edx
sar ecx, 8
shl eax, cl
mov dword [esp + 0x10], ecx
mov dword [edi + 0x10], eax
mov eax, ecx
add dword [edi + 0xc], eax
mov ecx, edx
and cl, 0x1f
movsx eax, cl
neg eax
sbb eax, eax
and eax, edx
je 0x80551e
mov edx, dword [esp + 0x44]
mov ecx, dword [esp + 0x48]
push ebx
push edx
push ecx
push 0xf
push 4
call fcn.007ffc00
mov edx, dword [esi + 0x1211e8]
push ebx
mov dword [esp + 0x28], eax
call edx
mov eax, dword [esp + 0x38]
mov ecx, dword [eax]
mov edx, dword [esi + 0x762c]
mov eax, dword [esp + 0x28]
add ecx, dword [esp + 0x3c]
imul eax, eax, 0x101
lea ecx, [ecx + edx + 0x360]
mov edx, dword [esp + 0x78]
lea ebx, [ecx + edx*2]
mov word [edx + ebx], ax
mov ebx, dword [esp + 0x50]
mov word [ecx + edx*2], ax
mov word [ecx + edx], ax
mov edx, dword [esp + 0x30]
mov word [ecx], ax
mov ecx, dword [esp + 0x64]
mov eax, dword [esp + 0x54]
shl edx, cl
add esp, 0x18
or dword [eax + 8], edx
jmp 0x80552f
cmp dword [ebx], 0
je 0x80552f
mov eax, dword [esi + 0x1211ec]
push ebx
call eax
add esp, 4
mov eax, dword [esp + 0x14]
inc dword [esp + 0x4c]
add dword [esp + 0x20], 0x10
add eax, 0x10
add ebx, 0x40
cmp eax, 0x40
mov dword [esp + 0x38], ebx
mov dword [esp + 0x14], eax
jl 0x805300
jmp 0x805792
cmp eax, 2
jne 0x805792
xor eax, eax
mov dword [esp + 0x4c], eax
mov dword [esp + 0x14], edx
jmp 0x805570
mov eax, dword [eax*4 + 0x1036c170]
mov ecx, dword [esi + 0x8c]
mov ecx, dword [ecx + eax*4]
mov ebx, dword [esp + 0x24]
mov edx, dword [esi + 0x762c]
mov dword [esp + 0x38], eax
mov eax, ebx
sub eax, dword [esi + 0x90]
add ebx, edx
add eax, edx
movsx eax, byte [eax + ecx + 0x360]
movsx ecx, byte [ebx + ecx + 0x35f]
add eax, ecx
cmp eax, 0x40
jge 0x8055b4
inc eax
sar eax, 1
and eax, 0x1f
mov eax, dword [eax*4 + 0x1036c0f0]
cmp byte [eax*8 + 0x1036bd10], 0
lea eax, [eax*8 + 0x1036bd10]
je 0x80568d
movsx ecx, byte [eax + 2]
movsx edx, byte [eax + 1]
mov eax, dword [eax + 4]
mov dword [esp + 0x10], ecx
mov ecx, dword [edi + 0xc]
mov dword [esp + 0x20], eax
test ecx, ecx
jl 0x805609
mov eax, dword [edi + 4]
movzx ebx, byte [eax]
movzx eax, byte [eax + 1]
shl ebx, 8
or ebx, eax
shl ebx, cl
or dword [edi + 0x10], ebx
add dword [edi + 4], 2
add dword [edi + 0xc], 0xfffffff0
mov eax, dword [edi + 0x10]
mov ecx, 0x20
sub ecx, edx
mov ebx, 1
shl ebx, cl
cmp eax, ebx
jb 0x80562a
bsr ecx, eax
mov edx, ecx
mov dword [esp + 0x2c], ecx
xor edx, 0x1f
mov ecx, edx
shl eax, cl
mov dword [edi + 0x10], eax
add dword [edi + 0xc], edx
mov ecx, dword [edi + 0xc]
js 0x805655
mov eax, dword [edi + 4]
movzx ebx, byte [eax]
movzx eax, byte [eax + 1]
shl ebx, 8
or ebx, eax
shl ebx, cl
or dword [edi + 0x10], ebx
add dword [edi + 4], 2
add dword [edi + 0xc], 0xfffffff0
mov eax, dword [edi + 0x10]
mov ecx, 0x20
sub ecx, dword [esp + 0x10]
mov ebx, eax
shr ebx, cl
mov ecx, dword [esp + 0x10]
shl edx, cl
mov ecx, dword [esp + 0x20]
add ebx, edx
movzx edx, word [ecx + ebx*2]
cmp edx, 0xffff
jne 0x805681
xor edx, edx
jmp 0x8056eb
mov ecx, edx
sar ecx, 8
shl eax, cl
mov dword [edi + 0x10], eax
jmp 0x8056e8
mov ecx, dword [edi + 0xc]
mov edx, dword [eax + 4]
movsx ebx, byte [eax + 2]
mov dword [esp + 0x10], edx
test ecx, ecx
jl 0x8056bb
mov edx, dword [edi + 4]
movzx eax, byte [edx]
movzx edx, byte [edx + 1]
shl eax, 8
or eax, edx
shl eax, cl
or dword [edi + 0x10], eax
add dword [edi + 4], 2
add dword [edi + 0xc], 0xfffffff0
mov edx, dword [edi + 0x10]
mov ecx, 0x20
sub ecx, ebx
mov eax, edx
shr eax, cl
mov ecx, dword [esp + 0x10]
movzx eax, word [ecx + eax*2]
cmp eax, 0xffff
jne 0x8056dc
xor edx, edx
jmp 0x8056eb
mov ecx, eax
sar ecx, 8
shl edx, cl
mov dword [edi + 0x10], edx
mov edx, eax
add dword [edi + 0xc], ecx
mov eax, edx
and al, 0x1f
movsx eax, al
neg eax
sbb eax, eax
and eax, edx
je 0x805766
mov ecx, dword [esp + 0x14]
mov edx, dword [esp + 0x44]
push ecx
mov ecx, dword [esp + 0x4c]
push edx
push ecx
push 0xf
push 4
call fcn.007ffc00
mov edx, dword [esp + 0x28]
mov ebx, eax
mov eax, dword [esi + 0x1211e8]
push edx
call eax
mov ecx, dword [esp + 0x68]
mov edx, dword [esp + 0x50]
mov eax, dword [ecx + edx*4]
add eax, dword [esp + 0x3c]
mov ecx, dword [esi + 0x762c]
mov edx, dword [esp + 0x78]
lea ecx, [eax + ecx + 0x360]
mov eax, ebx
imul eax, eax, 0x101
mov word [ecx + edx], ax
mov edx, dword [esp + 0x30]
mov word [ecx], ax
mov ecx, dword [esp + 0x64]
mov eax, dword [esp + 0x54]
shl edx, cl
add esp, 0x18
or dword [eax + 8], edx
jmp 0x80577b
mov eax, dword [esp + 0x14]
cmp dword [eax], 0
je 0x80577b
push eax
mov eax, dword [esi + 0x1211ec]
call eax
add esp, 4
mov eax, dword [esp + 0x4c]
add dword [esp + 0x14], 0x40
inc eax
cmp eax, 8
mov dword [esp + 0x4c], eax
jl 0x805570
mov eax, dword [esp + 0x18]
mov ecx, dword [esp + 0x30]
mov edx, dword [esp + 0x40]
inc dword [esp + 0x1c]
add dword [esp + 0x34], 0x100
add dword [esp + 0x24], 0x360
add eax, 0xffff
add ecx, 4
add edx, 0x200
cmp eax, 0x1ffff
mov dword [esp + 0x30], ecx
mov dword [esp + 0x40], edx
mov dword [esp + 0x18], eax
jl 0x8052a3
jmp 0x8062d5
mov ecx, dword [esi + 0x10]
mov eax, dword [ecx + 0x20]
cmp eax, 1
jne 0x805846
xor edi, edi
lea ebx, [esi + 0x3fbc0]
nop
mov eax, dword [esp + 0x3c]
mov edx, 0x20000
mov ecx, edi
shl edx, cl
test dword [eax + 4], edx
je 0x805835
mov edx, dword [esi + 0x1211ec]
lea ecx, [ebx - 0x40]
push ecx
call edx
mov eax, dword [esi + 0x1211ec]
push ebx
call eax
mov edx, dword [esi + 0x1211ec]
lea ecx, [ebx + 0x40]
push ecx
call edx
mov ecx, dword [esi + 0x1211ec]
lea eax, [ebx + 0x80]
push eax
call ecx
add esp, 0x10
inc edi
add ebx, 0x100
cmp edi, 2
jl 0x8057f0
jmp 0x8062d5
cmp eax, 2
jne 0x8062d5
lea edx, [esi + 0x3fb80]
mov dword [esp + 0x1c], 0
mov dword [esp + 0x20], edx
mov ecx, dword [esp + 0x1c]
mov eax, 0x20000
shl eax, cl
mov ecx, dword [esp + 0x3c]
test dword [ecx + 4], eax
je 0x805894
mov edi, dword [esp + 0x20]
mov ebx, 8
mov edi, edi
mov edx, dword [esi + 0x1211ec]
push edi
call edx
add esp, 4
add edi, 0x40
sub ebx, 1
jne 0x805880
mov eax, dword [esp + 0x1c]
add dword [esp + 0x20], 0x200
inc eax
cmp eax, 2
mov dword [esp + 0x1c], eax
jl 0x805861
jmp 0x8062d5
cmp dword [eax + 0x20], 2
jne 0x805aa2
lea eax, [esi + 0x70]
mov dword [esp + 0x18], eax
lea eax, [esi + 0x3fb80]
mov dword [esp + 0x1c], ecx
mov dword [esp + 0x14], eax
mov ecx, dword [esi + 0x10]
mov ecx, dword [ecx + 0x20]
cmp byte [ecx*8 + 0x1036bd28], 0
movsx edx, byte [ecx*8 + 0x1036bd2a]
lea ecx, [ecx*8 + 0x1036bd28]
je 0x8059a6
movsx eax, byte [ecx + 1]
mov ecx, dword [ecx + 4]
mov dword [esp + 0x20], ecx
mov ecx, dword [edi + 0xc]
mov dword [esp + 0x10], edx
test ecx, ecx
jl 0x805923
mov edx, dword [edi + 4]
movzx ebx, byte [edx]
movzx edx, byte [edx + 1]
shl ebx, 8
or ebx, edx
shl ebx, cl
or dword [edi + 0x10], ebx
add dword [edi + 4], 2
add dword [edi + 0xc], 0xfffffff0
mov edx, dword [edi + 0x10]
mov ecx, 0x20
sub ecx, eax
mov ebx, 1
shl ebx, cl
cmp edx, ebx
jb 0x805942
bsr eax, edx
mov dword [esp + 0x2c], eax
xor eax, 0x1f
mov ecx, eax
shl edx, cl
mov dword [edi + 0x10], edx
add dword [edi + 0xc], eax
mov ecx, dword [edi + 0xc]
js 0x80596d
mov edx, dword [edi + 4]
movzx ebx, byte [edx]
movzx edx, byte [edx + 1]
shl ebx, 8
or ebx, edx
shl ebx, cl
or dword [edi + 0x10], ebx
add dword [edi + 4], 2
add dword [edi + 0xc], 0xfffffff0
mov edx, dword [edi + 0x10]
mov ecx, 0x20
sub ecx, dword [esp + 0x10]
mov ebx, edx
shr ebx, cl
mov ecx, dword [esp + 0x10]
shl eax, cl
add ebx, eax
mov eax, dword [esp + 0x20]
movzx eax, word [eax + ebx*2]
cmp eax, 0xffff
jne 0x805998
xor edx, edx
jmp 0x8059ff
mov ecx, eax
sar ecx, 8
shl edx, cl
mov dword [edi + 0x10], edx
mov edx, eax
jmp 0x8059fc
mov ecx, dword [ecx + 4]
mov dword [esp + 0x10], ecx
mov ecx, dword [edi + 0xc]
test ecx, ecx
jl 0x8059d0
mov eax, dword [edi + 4]
movzx ebx, byte [eax]
movzx eax, byte [eax + 1]
shl ebx, 8
or ebx, eax
shl ebx, cl
or dword [edi + 0x10], ebx
add dword [edi + 4], 2
add dword [edi + 0xc], 0xfffffff0
mov eax, dword [edi + 0x10]
mov ecx, 0x20
sub ecx, edx
mov edx, eax
shr edx, cl
mov ecx, dword [esp + 0x10]
movzx edx, word [ecx + edx*2]
cmp edx, 0xffff
jne 0x8059f2
xor edx, edx
jmp 0x8059ff
mov ecx, edx
sar ecx, 8
shl eax, cl
mov dword [edi + 0x10], eax
add dword [edi + 0xc], ecx
mov eax, edx
and al, 0x1f
movsx eax, al
neg eax
sbb eax, eax
and eax, edx
je 0x805a7e
mov ecx, dword [esp + 0x3c]
mov edx, dword [ecx + 0xc]
and dl, 7
movzx ecx, dl
mov edx, dword [esp + 0x18]
mov edx, dword [edx + 0x10]
neg ecx
sbb ecx, ecx
and ecx, 0xfffffffd
add ecx, 3
add ecx, dword [esp + 0x1c]
lea ecx, [ecx + ecx*2]
lea ecx, [edx + ecx*2]
imul ecx, ecx, 0x34
mov edx, dword [ecx + esi + 0x146098]
mov ecx, dword [esp + 0x14]
mov ebx, dword [edx]
push ecx
push 0
push 0x10369808
push 8
push 3
call fcn.007ff4c0
mov edx, dword [esp + 0x2c]
mov eax, dword [edx]
mov ecx, dword [esp + 0x28]
push ebx
push eax
push ecx
call fcn.00817a5e
mov ecx, dword [esp + 0x3c]
mov eax, dword [esp + 0x5c]
mov edx, 0x20000
shl edx, cl
add esp, 0x20
or dword [eax + 4], edx
mov eax, dword [esp + 0x1c]
add dword [esp + 0x18], 4
add dword [esp + 0x14], 0x100
inc eax
cmp eax, 2
mov dword [esp + 0x1c], eax
jl 0x8058ce
jmp 0x805c98
lea eax, [esi + 0x68]
mov dword [esp + 0x14], eax
xor ebx, ebx
lea eax, [esi + 0x3fb80]
mov dword [esp + 0x1c], ebx
mov dword [esp + 0x18], eax
lea esp, [esp]
mov ecx, dword [esi + 0x10]
mov ecx, dword [ecx + 0x20]
cmp byte [ecx*8 + 0x1036bd28], 0
movsx edx, byte [ecx*8 + 0x1036bd2a]
lea ecx, [ecx*8 + 0x1036bd28]
mov dword [esp + 0x10], edx
je 0x805b9f
movsx eax, byte [ecx + 1]
mov ecx, dword [ecx + 4]
mov dword [esp + 0x20], ecx
mov ecx, dword [edi + 0xc]
test ecx, ecx
jl 0x805b15
mov edx, dword [edi + 4]
movzx ebx, byte [edx + 1]
movzx edx, byte [edx]
shl edx, 8
or ebx, edx
shl ebx, cl
or dword [edi + 0x10], ebx
add dword [edi + 4], 2
add dword [edi + 0xc], 0xfffffff0
mov edx, dword [edi + 0x10]
mov ecx, 0x20
sub ecx, eax
mov ebx, 1
shl ebx, cl
cmp edx, ebx
jb 0x805b34
bsr eax, edx
mov dword [esp + 0x2c], eax
xor eax, 0x1f
mov ecx, eax
shl edx, cl
mov dword [edi + 0x10], edx
add dword [edi + 0xc], eax
mov ecx, dword [edi + 0xc]
js 0x805b5f
mov edx, dword [edi + 4]
movzx ebx, byte [edx + 1]
movzx edx, byte [edx]
shl edx, 8
or ebx, edx
shl ebx, cl
or dword [edi + 0x10], ebx
add dword [edi + 4], 2
add dword [edi + 0xc], 0xfffffff0
mov edx, dword [edi + 0x10]
mov ecx, 0x20
sub ecx, dword [esp + 0x10]
mov ebx, edx
shr ebx, cl
mov ecx, dword [esp + 0x10]
shl eax, cl
add ebx, eax
mov eax, dword [esp + 0x20]
movzx eax, word [eax + ebx*2]
mov ebx, dword [esp + 0x1c]
cmp eax, 0xffff
jne 0x805b8e
xor edx, edx
jmp 0x805bfc
mov ecx, eax
sar ecx, 8
shl edx, cl
mov dword [edi + 0x10], edx
add dword [edi + 0xc], ecx
mov edx, eax
jmp 0x805bfc
mov eax, dword [ecx + 4]
mov ecx, dword [edi + 0xc]
mov dword [esp + 0x2c], eax
test ecx, ecx
jl 0x805bc9
mov eax, dword [edi + 4]
movzx edx, byte [eax]
movzx eax, byte [eax + 1]
shl edx, 8
or edx, eax
shl edx, cl
or dword [edi + 0x10], edx
add dword [edi + 4], 2
add dword [edi + 0xc], 0xfffffff0
mov eax, dword [edi + 0x10]
mov ecx, 0x20
sub ecx, dword [esp + 0x10]
mov edx, eax
shr edx, cl
mov ecx, dword [esp + 0x2c]
movzx edx, word [ecx + edx*2]
cmp edx, 0xffff
jne 0x805bed
xor edx, edx
jmp 0x805bfc
mov ecx, edx
sar ecx, 8
shl eax, cl
mov dword [edi + 0x10], eax
mov eax, ecx
add dword [edi + 0xc], eax
mov ecx, edx
and cl, 0x1f
movsx eax, cl
neg eax
sbb eax, eax
and eax, edx
je 0x805c80
mov edx, dword [esp + 0x3c]
mov ecx, dword [edx + 0xc]
and cl, 7
movzx ecx, cl
neg ecx
sbb ecx, ecx
and ecx, 0xfffffffd
add ecx, 3
add ecx, ebx
lea edx, [ecx + ecx*2]
mov ecx, dword [esp + 0x14]
mov ecx, dword [ecx + 0x10]
lea edx, [ecx + edx*2]
imul edx, edx, 0x34
mov ecx, dword [edx + esi + 0x146098]
mov edx, dword [ecx]
mov ecx, dword [esp + 0x18]
push ecx
push 0
push 0x103697c8
push 4
push 3
mov dword [esp + 0x24], edx
call fcn.007ff4c0
mov edx, dword [esp + 0x24]
mov eax, dword [esp + 0x28]
mov ecx, dword [eax]
push edx
mov edx, dword [esp + 0x30]
push ecx
push edx
call fcn.008179b8
mov eax, dword [esp + 0x5c]
mov edx, 0x20000
mov ecx, ebx
shl edx, cl
add esp, 0x20
or dword [eax + 4], edx
sub dword [esp + 0x18], 0xffffff80
add dword [esp + 0x14], 4
inc ebx
cmp ebx, 2
mov dword [esp + 0x1c], ebx
jl 0x805ac0
mov eax, dword [esp + 0x3c]
cmp dword [eax], 0x1f
jbe 0x80621f
mov eax, dword [esi + 0xcc]
shl eax, 6
add eax, 0x103694cc
mov dword [esp + 0x4c], eax
xor eax, eax
mov dword [esp + 0x1c], eax
mov dword [esp + 0x30], eax
lea eax, [esi + 0x3fb80]
lea ecx, [esi + 0x68]
mov dword [esp + 0x18], 1
mov dword [esp + 0x38], eax
mov dword [esp + 0x44], eax
mov dword [esp + 0x34], ecx
jmp 0x805ce4
mov ecx, dword [esp + 0x34]
mov edx, dword [esp + 0x3c]
mov eax, dword [edx + 0xc]
and al, 7
movzx eax, al
neg eax
sbb eax, eax
mov ebx, dword [esp + 0x30]
and eax, 0xfffffffd
add eax, 3
add eax, dword [esp + 0x1c]
lea edx, [eax + eax*2]
mov eax, dword [ecx + 0x10]
lea edx, [eax + edx*2]
imul edx, edx, 0xd
add edx, dword [ecx]
mov ecx, dword [esi + 0x10]
cmp dword [ecx + 0x20], 2
mov eax, dword [esi + edx*4 + 0x146098]
mov dword [esp + 0x48], eax
jne 0x805f6c
mov edx, dword [esp + 0x44]
mov dword [esp + 0x40], 0
mov dword [esp + 0x14], edx
jmp 0x805d44
mov ebx, dword [esp + 0x30]
mov eax, dword [esp + 0x40]
mov eax, dword [eax*4 + 0x1036c170]
mov ecx, dword [esi + 0x8c]
mov ecx, dword [ecx + eax*4]
mov edx, dword [esi + 0x762c]
mov dword [esp + 0x24], eax
mov eax, ecx
sub eax, dword [esi + 0x90]
add ecx, edx
movsx ecx, byte [ecx + ebx + 0x35f]
add eax, edx
movsx eax, byte [eax + ebx + 0x360]
add eax, ecx
cmp eax, 0x40
jge 0x805d88
inc eax
sar eax, 1
and eax, 0x1f
mov eax, dword [eax*4 + 0x1036c0f0]
cmp byte [eax*8 + 0x1036bd10], 0
lea eax, [eax*8 + 0x1036bd10]
je 0x805e61
movsx ecx, byte [eax + 2]
movsx edx, byte [eax + 1]
mov eax, dword [eax + 4]
mov dword [esp + 0x10], ecx
mov ecx, dword [edi + 0xc]
mov dword [esp + 0x20], eax
test ecx, ecx
jl 0x805ddd
mov eax, dword [edi + 4]
movzx ebx, byte [eax + 1]
movzx eax, byte [eax]
shl eax, 8
or ebx, eax
shl ebx, cl
or dword [edi + 0x10], ebx
add dword [edi + 4], 2
add dword [edi + 0xc], 0xfffffff0
mov eax, dword [edi + 0x10]
mov ecx, 0x20
sub ecx, edx
mov ebx, 1
shl ebx, cl
cmp eax, ebx
jb 0x805dfe
bsr ecx, eax
mov edx, ecx
mov dword [esp + 0x2c], ecx
xor edx, 0x1f
mov ecx, edx
shl eax, cl
mov dword [edi + 0x10], eax
add dword [edi + 0xc], edx
mov ecx, dword [edi + 0xc]
js 0x805e29
mov eax, dword [edi + 4]
movzx ebx, byte [eax + 1]
movzx eax, byte [eax]
shl eax, 8
or ebx, eax
shl ebx, cl
or dword [edi + 0x10], ebx
add dword [edi + 4], 2
add dword [edi + 0xc], 0xfffffff0
mov eax, dword [edi + 0x10]
mov ecx, 0x20
sub ecx, dword [esp + 0x10]
mov ebx, eax
shr ebx, cl
mov ecx, dword [esp + 0x10]
shl edx, cl
mov ecx, dword [esp + 0x20]
add ebx, edx
movzx edx, word [ecx + ebx*2]
cmp edx, 0xffff
jne 0x805e55
xor edx, edx
jmp 0x805ebf
mov ecx, edx
sar ecx, 8
shl eax, cl
mov dword [edi + 0x10], eax
jmp 0x805ebc
mov ecx, dword [edi + 0xc]
mov edx, dword [eax + 4]
movsx ebx, byte [eax + 2]
mov dword [esp + 0x10], edx
test ecx, ecx
jl 0x805e8f
mov edx, dword [edi + 4]
movzx eax, byte [edx + 1]
movzx edx, byte [edx]
shl edx, 8
or eax, edx
shl eax, cl
or dword [edi + 0x10], eax
add dword [edi + 4], 2
add dword [edi + 0xc], 0xfffffff0
mov edx, dword [edi + 0x10]
mov ecx, 0x20
sub ecx, ebx
mov eax, edx
shr eax, cl
mov ecx, dword [esp + 0x10]
movzx eax, word [ecx + eax*2]
cmp eax, 0xffff
jne 0x805eb0
xor edx, edx
jmp 0x805ebf
mov ecx, eax
sar ecx, 8
shl edx, cl
mov dword [edi + 0x10], edx
mov edx, eax
add dword [edi + 0xc], ecx
mov eax, edx
and al, 0x1f
movsx eax, al
neg eax
sbb eax, eax
and eax, edx
je 0x805f3a
mov ecx, dword [esp + 0x14]
mov edx, dword [esp + 0x48]
push ecx
mov ecx, dword [esp + 0x50]
push edx
push ecx
push 0xf
push 4
call fcn.007ff4c0
mov edx, dword [esp + 0x28]
mov ebx, eax
mov eax, dword [esi + 0x1211e8]
push edx
call eax
mov ecx, dword [esp + 0x68]
mov edx, dword [esp + 0x3c]
mov eax, dword [ecx + edx*4]
add eax, dword [esp + 0x48]
mov ecx, dword [esi + 0x762c]
mov edx, dword [esp + 0x78]
lea ecx, [eax + ecx + 0x360]
mov eax, ebx
imul eax, eax, 0x101
mov word [ecx + edx], ax
mov edx, dword [esp + 0x30]
mov word [ecx], ax
mov ecx, dword [esp + 0x58]
mov eax, dword [esp + 0x54]
shl edx, cl
add esp, 0x18
or dword [eax + 8], edx
jmp 0x805f50
mov eax, dword [esp + 0x14]
cmp word [eax], 0
je 0x805f50
push eax
mov eax, dword [esi + 0x1211ec]
call eax
add esp, 4
mov eax, dword [esp + 0x40]
add dword [esp + 0x14], 0x20
inc eax
cmp eax, 8
mov dword [esp + 0x40], eax
jl 0x805d40
jmp 0x8061e4
mov ecx, dword [esp + 0x50]
mov ebx, dword [esp + 0x38]
xor eax, eax
mov dword [esp + 0x40], eax
mov dword [esp + 0x20], ecx
mov dword [esp + 0x24], eax
mov dword [esp + 0x14], ebx
jmp 0x805f90
mov edx, dword [esi + 0x8c]
mov eax, dword [eax + edx]
mov ecx, dword [esi + 0x762c]
mov edx, ecx
sub edx, dword [esi + 0x90]
mov dword [esp + 0x10], eax
add edx, dword [esp + 0x30]
movsx eax, byte [edx + eax + 0x360]
mov edx, dword [esp + 0x30]
add ecx, edx
mov edx, dword [esp + 0x10]
movsx ecx, byte [ecx + edx + 0x35f]
add eax, ecx
cmp eax, 0x40
jge 0x805fd3
inc eax
sar eax, 1
and eax, 0x1f
mov eax, dword [eax*4 + 0x1036c0f0]
cmp byte [eax*8 + 0x1036bd10], 0
lea eax, [eax*8 + 0x1036bd10]
je 0x8060c3
movsx ecx, byte [eax + 2]
movsx edx, byte [eax + 1]
mov dword [esp + 0x2c], ecx
mov ecx, dword [edi + 0xc]
mov dword [esp + 0x10], edx
mov edx, dword [eax + 4]
mov dword [esp + 0x54], edx
test ecx, ecx
jl 0x80602c
mov eax, dword [edi + 4]
movzx edx, byte [eax + 1]
movzx eax, byte [eax]
shl eax, 8
or edx, eax
shl edx, cl
or dword [edi + 0x10], edx
add dword [edi + 4], 2
add dword [edi + 0xc], 0xfffffff0
mov edx, dword [edi + 0x10]
mov ecx, 0x20
sub ecx, dword [esp + 0x10]
mov eax, 1
shl eax, cl
cmp edx, eax
jae 0x806049
mov eax, dword [esp + 0x10]
jmp 0x806055
bsr ecx, edx
mov eax, ecx
mov dword [esp + 0x10], ecx
xor eax, 0x1f
mov ecx, eax
shl edx, cl
mov dword [edi + 0x10], edx
add dword [edi + 0xc], eax
js 0x806080
mov ecx, dword [edi + 4]
movzx edx, byte [ecx + 1]
movzx ecx, byte [ecx]
shl ecx, 8
or edx, ecx
mov ecx, dword [edi + 0xc]
shl edx, cl
or dword [edi + 0x10], edx
add dword [edi + 4], 2
add dword [edi + 0xc], 0xfffffff0
mov edx, dword [edi + 0x10]
mov ecx, 0x20
sub ecx, dword [esp + 0x2c]
shr edx, cl
mov ecx, dword [esp + 0x2c]
shl eax, cl
add edx, eax
mov eax, dword [esp + 0x54]
movzx edx, word [eax + edx*2]
cmp edx, 0xffff
jne 0x8060ad
xor edx, edx
jmp 0x80612c
mov eax, dword [edi + 0x10]
mov ecx, edx
sar ecx, 8
shl eax, cl
mov dword [esp + 0x2c], ecx
mov dword [edi + 0x10], eax
add dword [edi + 0xc], ecx
jmp 0x80612c
movsx edx, byte [eax + 2]
mov ecx, dword [edi + 0xc]
mov eax, dword [eax + 4]
mov dword [esp + 0x10], edx
mov dword [esp + 0x2c], eax
test ecx, ecx
jl 0x8060f5
mov eax, dword [edi + 4]
movzx edx, byte [eax + 1]
movzx eax, byte [eax]
shl eax, 8
or edx, eax
shl edx, cl
or dword [edi + 0x10], edx
add dword [edi + 4], 2
add dword [edi + 0xc], 0xfffffff0
mov eax, dword [edi + 0x10]
mov ecx, 0x20
sub ecx, dword [esp + 0x10]
mov edx, eax
shr edx, cl
mov ecx, dword [esp + 0x2c]
movzx edx, word [ecx + edx*2]
cmp edx, 0xffff
jne 0x806119
xor edx, edx
jmp 0x80612c
mov ecx, edx
sar ecx, 8
shl eax, cl
mov dword [esp + 0x10], ecx
mov dword [edi + 0x10], eax
mov eax, ecx
add dword [edi + 0xc], eax
mov ecx, edx
and cl, 0x1f
movsx eax, cl
neg eax
sbb eax, eax
and eax, edx
je 0x8061ae
mov edx, dword [esp + 0x48]
mov ecx, dword [esp + 0x4c]
push ebx
push edx
push ecx
push 0xf
push 4
call fcn.007ff4c0
mov edx, dword [esi + 0x1211e8]
push ebx
mov dword [esp + 0x28], eax
call edx
mov eax, dword [esp + 0x38]
mov ecx, dword [eax]
mov edx, dword [esi + 0x762c]
mov eax, dword [esp + 0x28]
add ecx, dword [esp + 0x48]
imul eax, eax, 0x101
lea ecx, [ecx + edx + 0x360]
mov edx, dword [esp + 0x78]
lea ebx, [ecx + edx*2]
mov word [edx + ebx], ax
mov ebx, dword [esp + 0x2c]
mov word [ecx + edx*2], ax
mov word [ecx + edx], ax
mov edx, dword [esp + 0x30]
mov word [ecx], ax
mov ecx, dword [esp + 0x58]
mov eax, dword [esp + 0x54]
shl edx, cl
add esp, 0x18
or dword [eax + 8], edx
jmp 0x8061c0
cmp word [ebx], 0
je 0x8061c0
mov eax, dword [esi + 0x1211ec]
push ebx
call eax
add esp, 4
mov eax, dword [esp + 0x24]
inc dword [esp + 0x40]
add dword [esp + 0x20], 0x10
add eax, 0x10
add ebx, 0x20
cmp eax, 0x40
mov dword [esp + 0x14], ebx
mov dword [esp + 0x24], eax
jl 0x805f90
mov eax, dword [esp + 0x18]
inc dword [esp + 0x1c]
add dword [esp + 0x34], 4
sub dword [esp + 0x38], 0xffffff80
add dword [esp + 0x44], 0x100
add dword [esp + 0x30], 0x360
add eax, 0xffff
cmp eax, 0x1ffff
mov dword [esp + 0x18], eax
jl 0x805ce0
jmp 0x8062d5
mov ecx, dword [esi + 0x10]
cmp dword [ecx + 0x20], 2
jne 0x806282
lea eax, [esi + 0x3fb80]
xor ecx, ecx
mov dword [esp + 0x1c], ecx
mov edi, eax
mov dword [esp + 0x10], eax
mov eax, dword [esp + 0x3c]
mov edx, 0x20000
shl edx, cl
test dword [eax + 4], edx
je 0x806268
mov ebx, 8
nop
mov ecx, dword [esi + 0x1211ec]
push edi
call ecx
add esp, 4
add edi, 0x20
sub ebx, 1
jne 0x806250
mov ecx, dword [esp + 0x1c]
mov edi, dword [esp + 0x10]
inc ecx
add edi, 0x100
cmp ecx, 2
mov dword [esp + 0x1c], ecx
mov dword [esp + 0x10], edi
jl 0x80623a
jmp 0x8062d5
xor edi, edi
lea ebx, [esi + 0x3fba0]
mov eax, dword [esp + 0x3c]
mov edx, 0x20000
mov ecx, edi
shl edx, cl
test dword [eax + 4], edx
je 0x8062cc
mov edx, dword [esi + 0x1211ec]
lea ecx, [ebx - 0x20]
push ecx
call edx
mov eax, dword [esi + 0x1211ec]
push ebx
call eax
mov edx, dword [esi + 0x1211ec]
lea ecx, [ebx + 0x20]
push ecx
call edx
mov ecx, dword [esi + 0x1211ec]
lea eax, [ebx + 0x40]
push eax
call ecx
add esp, 0x10
inc edi
sub ebx, 0xffffff80
cmp edi, 2
jl 0x80628a
mov edi, dword [esp + 0x3c]
mov edx, dword [esi + 0x1211cc]
push edi
push esi
call edx
add esp, 8
test byte [edi + 0xc], 0x80
je 0x8062f2
sar dword [esi + 0x4c], 1
sar dword [esi + 0x50], 1
mov ecx, dword [esp + 0xa4]
pop edi
pop esi
pop ebx
xor ecx, esp
mov eax, 1
call fcn.008653fb
mov esp, ebp
pop ebp
ret