Function at 0x7c4630
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.007b1aa0
add esp, 4
cmp dword [esi + 0x1c], edi
je 0x7c478d
mov edi, dword [esi + 0x94]
and edi, 1
mov dword [esp + 0x34], edi
mov dword [esi + 0xbc], edi
jne 0x7c475d
mov byte [esi + 0xe8], 0
cmp dword [esi + 0xac], 0
je 0x7c46d7
mov edx, dword [esi + 0xac]
test byte [edx + 0xc], 0x80
je 0x7c46d7
mov byte [esi + 0xe8], 2
cmp dword [esi + 0xb0], 0
je 0x7c46f3
mov eax, dword [esi + 0xb0]
test byte [eax + 0xc], 0x80
je 0x7c46f3
or byte [esi + 0xe8], 8
cmp dword [esi + 0xb4], 0
je 0x7c470f
mov ecx, dword [esi + 0xb4]
test byte [ecx + 0xc], 0x80
je 0x7c470f
or byte [esi + 0xe8], 0x20
cmp dword [esi + 0xb8], 0
je 0x7c472b
mov edx, dword [esi + 0xb8]
test byte [edx + 0xc], 0x80
je 0x7c472b
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 0x7c478d
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 0x7c47f0
cmp eax, 4
je 0x7c47f0
cmp dword [esi + 0x86c], 0xffffffff
jne 0x7c47bb
lea eax, [esi + 0x874]
push eax
call fcn.007df920
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 0x7c47f0
mov ecx, ebx
mov edx, esi
mov dword [ebx + 0xc], 0x800
call fcn.007bc040
mov edx, dword [esi + 0x1211cc]
push ebx
push esi
call edx
add esp, 8
jmp 0x7ca5e2
cmp dword [esi + 0x1c], 0
je 0x7c4859
test edi, edi
jne 0x7c4859
mov ecx, dword [esi + 0x880]
test ecx, ecx
jl 0x7c482c
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 0x7c4852
or byte [esi + 0xe8], 0x55
jmp 0x7c4859
and byte [esi + 0xe8], 0xaa
lea edi, [esi + 0x874]
push edi
mov dword [esi + 0x870], 0
call fcn.007df920
add esp, 4
cmp dword [esp + 0x20], 1
mov dword [ebx + 0xc], eax
jne 0x7c489e
cmp eax, 0x17
jae 0x7c4899
movzx edx, byte [eax*8 + 0x10369c64]
mov eax, dword [eax*8 + 0x10369c60]
mov dword [esp + 0x18], edx
mov dword [ebx + 0xc], eax
jmp 0x7c48fc
add eax, 0xffffffe9
jmp 0x7c48c5
cmp dword [esp + 0x20], 0
jne 0x7c48c8
cmp eax, 5
jae 0x7c48c2
movzx ecx, byte [eax*8 + 0x10369c1c]
mov edx, dword [eax*8 + 0x10369c18]
mov dword [esp + 0x18], ecx
mov dword [ebx + 0xc], edx
jmp 0x7c48fc
add eax, 0xfffffffb
mov dword [ebx + 0xc], eax
mov eax, dword [ebx + 0xc]
cmp eax, 0x19
ja 0x7c7d0a
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 0x7c4928
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 0x7c4a3f
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.007b7ad0
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 0x7c49d4
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 0x7c49d0
mov eax, dword [esp + 0x3c]
or ecx, 0xffffffff
mov dword [eax], 0x2f
mov dword [eax + 8], ecx
mov dword [eax + 4], ecx
jmp 0x7ca5c5
test al, 7
je 0x7c4b8c
test al, 1
je 0x7c4b6a
cmp dword [esp + 0x4c], 0
je 0x7c4a98
mov ecx, dword [edi + 0xc]
test ecx, ecx
jl 0x7c4a79
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 0x7c4a98
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 0x7c4ac2
mov ecx, edx
and ecx, 0x7f
mov dword [esp + 0x14], ecx
mov ecx, dword [edi + 0xc]
test ecx, ecx
jl 0x7c4aef
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 0x7c4b21
push 3
push edi
call fcn.007df770
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 0x7c4b53
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 0x7c4b5c
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 0x7c4aa0
mov eax, dword [esi + 0x10]
cmp dword [eax + 0x20], 0
je 0x7c7cf2
push edi
call fcn.007df920
mov ecx, dword [esp + 0x40]
add esp, 4
mov byte [ecx + 0x15], al
jmp 0x7c7cf2
cmp dword [esp + 0x18], 4
jne 0x7c6261
mov edx, dword [esi + 0xc]
xor eax, eax
cmp dword [edx + 8], 1
mov dword [esp + 0x44], eax
jne 0x7c5d4d
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.007df920
add esp, 4
cmp eax, 0xd
jge 0x7c7d0a
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 0x7c4c24
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 0x7c4bc0
cmp dword [esp + 0x44], 0
je 0x7c5d96
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 0x7c4ca1
mov ecx, dword [esi + 0xbc]
lea ecx, [ecx + ecx + 2]
mov dword [esp + 0x44], ecx
jmp 0x7c4ca5
mov dword [esp + 0x44], edx
mov dword [esp + 0x7c], edx
mov ecx, dword [esi + 0xc]
cmp dword [ecx + 0x240], edx
je 0x7c4cf4
mov eax, dword [esi + 0x40040]
cmp eax, edx
je 0x7c4ce4
cmp eax, 4
je 0x7c4ce4
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.007bb1b0
jmp 0x7c4d18
lea edx, [esp + 0x68]
push edx
lea ecx, [esp + 0x68]
call fcn.007bbb10
jmp 0x7c4d18
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 0x7c543a
mov eax, dword [esi + 0x7638]
xor ecx, ecx
sub eax, ebx
dec eax
mov dword [esp + 0x14], ecx
mov dword [esp + 0x34], eax
jmp 0x7c4d40
movsx edx, byte [eax + 5]
mov dword [esp + 0x18], edx
cmp edx, 0xfffffff8
jne 0x7c4d54
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 0x7c4d71
mov dword [ecx], edx
movsx edx, byte [eax + 1]
mov edx, dword [edx*4 + 0x1036bf50]
cmp edx, dword [ecx]
jge 0x7c4d86
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 0x7c4d9b
mov edx, dword [esp + 0x18]
mov dword [ecx], edx
mov edx, dword [ecx]
cmp edx, 0x7fffffff
je 0x7c4dc8
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.007bafa0
mov eax, dword [esp + 0x34]
mov ecx, dword [esp + 0x14]
jmp 0x7c4de4
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 0x7c4d40
mov eax, dword [esp + 0x58]
test eax, eax
jge 0x7c4e1a
cmp dword [esp + 0x5c], 0
jge 0x7c4e28
xor eax, eax
mov dword [esp + 0x5c], 0
mov dword [esp + 0x58], eax
jmp 0x7c4e39
cmp dword [esp + 0x5c], 0
jge 0x7c4e28
mov ecx, 0xffff3fff
jmp 0x7c4e31
test eax, eax
jge 0x7c4e39
mov ecx, 0xffffcfff
and dword [esp + 0x68], ecx
and dword [esp + 0x64], ecx
test byte [esp + 0x68], 8
je 0x7c50e1
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 0x7c4fe8
mov al, byte [esi + 0x76d0]
test al, al
jne 0x7c4fa7
movsx ecx, word [esi + 0x7650]
inc ecx
cmp ecx, 2
ja 0x7c4fa5
movsx edx, word [esi + 0x7652]
inc edx
cmp edx, 2
jbe 0x7c4fcc
test al, al
jge 0x7c4fe8
cmp byte [esi + 0x76e0], 0
jne 0x7c4fe8
movsx eax, word [esi + 0x7690]
inc eax
cmp eax, 2
ja 0x7c4fe8
movsx ecx, word [esi + 0x7692]
inc ecx
cmp ecx, 2
ja 0x7c4fe8
xor eax, eax
cmp dword [esp + 0x58], eax
jg 0x7c4fdb
mov dword [esp + 0x9c], eax
cmp dword [esp + 0x5c], eax
jg 0x7c4fe8
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 0x7c5d39
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 0x7c5124
mov edx, 0x100
test word [eax], dx
je 0x7c5413
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 0x7c5413
mov cl, byte [eax + esi + 0x76d0]
test cl, cl
je 0x7c52b6
jge 0x7c5413
cmp byte [eax + esi + 0x76e0], 0
jne 0x7c5413
test cl, cl
jne 0x7c52be
lea edx, [esi + 0x7650]
jmp 0x7c52c4
lea edx, [esi + 0x7690]
test byte [esp + 0x64], 8
mov dword [esp + 0x34], edx
je 0x7c5385
movsx ecx, word [edx + eax*4]
inc ecx
cmp ecx, 2
ja 0x7c5413
movsx edx, word [edx + eax*4 + 2]
inc edx
cmp edx, 2
ja 0x7c5413
cmp dword [esp + 0x58], 0
jne 0x7c5331
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 0x7c5413
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 0x7c5413
mov eax, dword [esp + 0x18]
mov dword [esp + 0x38], eax
mov dword [esp + 0x24], 4
jmp 0x7c53a4
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 0x7c5401
movsx eax, word [eax + 2]
inc eax
cmp eax, 2
ja 0x7c5401
cmp dword [esp + 0x58], 0
jne 0x7c53e0
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 0x7c5401
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 0x7c53a0
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 0x7c50fe
jmp 0x7c5d39
test byte [esp + 0x68], 8
je 0x7c58a3
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 0x7c5643
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 0x7c586d
cmp dword [esp + 0x2c], 0
je 0x7c5653
mov ecx, dword [esi + 0xbc]
inc ecx
jmp 0x7c5655
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 0x7c5694
movsx edx, byte [esi + 0x76f0]
mov cl, byte [edx + ecx]
jmp 0x7c56a2
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 0x7c56b9
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 0x7c5720
mov ax, word [edx + 2]
add ax, ax
mov word [edx + 2], ax
jmp 0x7c5736
cmp eax, 1
jne 0x7c5736
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 0x7c5d39
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 0x7c58c6
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 0x7c58f6
mov ecx, dword [esp + 0x18]
mov edx, 0x100
test word [ecx], dx
je 0x7c5d1d
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 0x7c5a53
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 0x7c5d1d
cmp dword [esp + 0x2c], 0
je 0x7c5a63
mov ecx, dword [esi + 0xbc]
inc ecx
jmp 0x7c5a65
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 0x7c5aaf
movsx ecx, byte [esi + ecx + 0x76f0]
movzx eax, byte [ecx + eax]
jmp 0x7c5ac9
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 0x7c5c4b
mov eax, dword [esp + 0x78]
mov ecx, dword [esp + 0x24]
cmp eax, 2
jne 0x7c5b60
mov eax, dword [esp + 0x1c]
mov dx, word [ecx + eax*4 + 2]
add dx, dx
mov word [ecx + eax*4 + 2], dx
jmp 0x7c5b7c
cmp eax, 1
jne 0x7c5b7c
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 0x7c5d1d
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 0x7c5c89
mov dx, word [ecx + 2]
add dx, dx
mov word [ecx + 2], dx
jmp 0x7c5c9b
cmp eax, 1
jne 0x7c5c9b
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 0x7c5c5b
mov ecx, dword [esp + 0x34]
add dword [esp + 0x18], 2
add ecx, 0x10
cmp ecx, 0x10369a88
mov dword [esp + 0x34], ecx
jl 0x7c58c2
cmp dword [esp + 0x20], 0
jne 0x7c5d96
mov eax, dword [esp + 0x68]
mov ecx, dword [esp + 0x3c]
mov dword [ecx + 0xc], eax
jmp 0x7c5d96
lea eax, [esi + 0xa4]
xor ebx, ebx
mov dword [esp + 0x10], eax
push edi
call fcn.007df920
add esp, 4
cmp eax, 4
jge 0x7c7d0a
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 0x7c5d59
cmp dword [esp + 0x4c], 0
je 0x7c5ddf
xor ecx, ecx
lea edx, [esi + 0xa4]
movzx eax, word [edx]
test al, 8
jne 0x7c5db7
test eax, 0x100
je 0x7c5ebb
mov ebx, dword [esi + 0x10]
cmp dword [ebx + 0x4b0], 0
jne 0x7c5dce
test eax, 0x100
jne 0x7c5ebb
inc ecx
add edx, 2
cmp ecx, 4
jl 0x7c5da5
mov dword [esp + 0x4c], 1
mov edx, dword [esp + 0x3c]
test dword [edx + 0xc], 0x40000
jne 0x7c5fa8
cmp dword [esp + 0x54], 0
mov dword [esp + 0x1c], 0
jle 0x7c6041
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 0x7c5f78
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 0x7c5f5b
mov ecx, dword [esp + 0x34]
mov edx, 0x1000
shl edx, cl
movzx eax, ax
test eax, edx
je 0x7c5ee3
mov eax, dword [ebx]
cmp eax, 1
jle 0x7c5ed3
cmp eax, 2
jne 0x7c5ec8
mov ecx, dword [edi + 0xc]
test ecx, ecx
jl 0x7c5ea1
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 0x7c5ed5
mov dword [esp + 0x4c], 0
jmp 0x7c5ddf
push edi
call fcn.007df920
add esp, 4
jmp 0x7c5ed5
xor eax, eax
cmp eax, dword [ebx]
mov dword [esp + 0x18], eax
jge 0x7c7d0a
jmp 0x7c5eea
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 0x7c5e4e
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 0x7c5e30
jmp 0x7c6041
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 0x7c7cf2
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 0x7c6080
mov ecx, dword [esp + 0x38]
movzx eax, word [ecx]
test eax, 0x100
jne 0x7c621f
mov ecx, dword [esp + 0x48]
movzx ebx, ax
mov eax, 0x1000
shl eax, cl
mov dword [esp + 0x40], ebx
test ebx, eax
je 0x7c61d8
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 0x7c621f
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.007bafa0
push edi
call fcn.007df810
add word [esp + 0x34], ax
push edi
call fcn.007df810
add word [esp + 0x3a], ax
add esp, 8
cmp dword [esp + 0x24], 0
je 0x7c616b
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 0x7c61b8
mov al, byte [esp + 0x40]
test al, 0x10
je 0x7c6187
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 0x7c61b6
test al, 0x20
je 0x7c61a7
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 0x7c61b8
test al, 0x40
je 0x7c61b8
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 0x7c60e2
jmp 0x7c621b
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 0x7c6080
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 0x7c605e
jmp 0x7c7cf2
test eax, 0x100
je 0x7c739e
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 0x7c62b6
mov ecx, dword [esi + 0xbc]
lea ecx, [ecx + ecx + 2]
mov dword [esp + 0x44], ecx
jmp 0x7c62ba
mov dword [esp + 0x44], edx
mov dword [esp + 0x88], edx
mov ecx, dword [esi + 0xc]
cmp dword [ecx + 0x240], edx
je 0x7c630f
mov eax, dword [esi + 0x40040]
cmp eax, edx
je 0x7c62ff
cmp eax, 4
je 0x7c62ff
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.007bb1b0
jmp 0x7c6333
lea edx, [esp + 0x6c]
push edx
lea ecx, [esp + 0x74]
call fcn.007bbb10
jmp 0x7c6333
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 0x7c6a3a
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 0x7c6367
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 0x7c6384
mov dword [ecx], edx
movsx edx, byte [eax + 1]
mov edx, dword [edx*4 + 0x1036bf50]
cmp edx, dword [ecx]
jge 0x7c6399
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 0x7c63ae
mov edx, dword [esp + 0x20]
mov dword [ecx], edx
mov edx, dword [ecx]
cmp edx, 0x7fffffff
je 0x7c63db
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.007bafa0
mov ecx, dword [esp + 0x18]
mov eax, dword [esp + 0x10]
jmp 0x7c63f7
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 0x7c6353
mov eax, dword [esp + 0x58]
test eax, eax
jge 0x7c642d
cmp dword [esp + 0x5c], 0
jge 0x7c643b
xor eax, eax
mov dword [esp + 0x5c], 0
mov dword [esp + 0x58], eax
jmp 0x7c644c
cmp dword [esp + 0x5c], 0
jge 0x7c643b
mov ecx, 0xffff3fff
jmp 0x7c6444
test eax, eax
jge 0x7c644c
mov ecx, 0xffffcfff
and dword [esp + 0x6c], ecx
and dword [esp + 0x70], ecx
test byte [esp + 0x6c], 8
je 0x7c66f2
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 0x7c65f9
mov al, byte [esi + 0x76d0]
test al, al
jne 0x7c65b8
movsx ecx, word [esi + 0x7650]
inc ecx
cmp ecx, 2
ja 0x7c65b6
movsx edx, word [esi + 0x7652]
inc edx
cmp edx, 2
jbe 0x7c65dd
test al, al
jge 0x7c65f9
cmp byte [esi + 0x76e0], 0
jne 0x7c65f9
movsx eax, word [esi + 0x7690]
inc eax
cmp eax, 2
ja 0x7c65f9
movsx ecx, word [esi + 0x7692]
inc ecx
cmp ecx, 2
ja 0x7c65f9
xor eax, eax
cmp dword [esp + 0x58], eax
jg 0x7c65ec
mov dword [esp + 0x9c], eax
cmp dword [esp + 0x5c], eax
jg 0x7c65f9
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 0x7c737a
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 0x7c6735
mov edx, 0x100
test word [eax], dx
je 0x7c6a13
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 0x7c6a13
mov cl, byte [eax + esi + 0x76d0]
test cl, cl
je 0x7c68c9
jge 0x7c6a13
cmp byte [eax + esi + 0x76e0], 0
jne 0x7c6a13
test cl, cl
jne 0x7c68d1
lea edx, [esi + 0x7650]
jmp 0x7c68d7
lea edx, [esi + 0x7690]
test byte [esp + 0x70], 8
mov dword [esp + 0x10], edx
je 0x7c698e
movsx ecx, word [edx + eax*4]
inc ecx
cmp ecx, 2
ja 0x7c6a13
movsx edx, word [edx + eax*4 + 2]
inc edx
cmp edx, 2
ja 0x7c6a13
cmp dword [esp + 0x58], 0
jne 0x7c6944
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 0x7c6a13
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 0x7c6a13
mov eax, dword [esp + 0x20]
mov dword [esp + 0x2c], eax
mov dword [esp + 0x34], 4
jmp 0x7c69a4
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 0x7c6a01
movsx eax, word [eax + 2]
inc eax
cmp eax, 2
ja 0x7c6a01
cmp dword [esp + 0x58], 0
jne 0x7c69e0
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 0x7c6a01
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 0x7c69a0
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 0x7c670f
jmp 0x7c737a
test byte [esp + 0x6c], 8
je 0x7c6ed6
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 0x7c6c73
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 0x7c737a
cmp dword [esp + 0x10], 0
je 0x7c6c83
mov ecx, dword [esi + 0xbc]
inc ecx
jmp 0x7c6c85
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 0x7c6cc7
movsx edx, byte [esi + 0x76f0]
mov cl, byte [edx + ecx]
jmp 0x7c6cd5
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 0x7c6cec
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 0x7c6d53
mov ax, word [edx + 2]
add ax, ax
mov word [edx + 2], ax
jmp 0x7c6d69
cmp eax, 1
jne 0x7c6d69
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 0x7c737a
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 0x7c6f04
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 0x7c6f34
mov ecx, dword [esp + 0x18]
mov edx, 0x100
test word [ecx], dx
je 0x7c735e
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 0x7c7091
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 0x7c735e
cmp dword [esp + 0x10], 0
je 0x7c70a1
mov ecx, dword [esi + 0xbc]
inc ecx
jmp 0x7c70a3
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 0x7c70f0
movsx ecx, byte [esi + ecx + 0x76f0]
movzx eax, byte [ecx + eax]
jmp 0x7c710a
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 0x7c728c
mov eax, dword [esp + 0x74]
mov ecx, dword [esp + 0x24]
cmp eax, 2
jne 0x7c71a1
mov eax, dword [esp + 0x30]
mov dx, word [ecx + eax*4 + 2]
add dx, dx
mov word [ecx + eax*4 + 2], dx
jmp 0x7c71bd
cmp eax, 1
jne 0x7c71bd
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 0x7c735e
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 0x7c72ca
mov dx, word [ecx + 2]
add dx, dx
mov word [ecx + 2], dx
jmp 0x7c72dc
cmp eax, 1
jne 0x7c72dc
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 0x7c729c
mov ecx, dword [esp + 0x34]
add dword [esp + 0x18], 2
add ecx, 0x10
cmp ecx, 0x10369a88
mov dword [esp + 0x34], ecx
jl 0x7c6f00
cmp dword [esp + 0x38], 0
jne 0x7c738c
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 0x7c7cf2
test al, 8
je 0x7c7642
mov edx, dword [esp + 0x54]
xor ecx, ecx
cmp edx, ecx
mov dword [esp + 0x1c], ecx
jle 0x7c751a
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 0x7c7454
mov edx, dword [esp + 0x18]
mov eax, dword [edx]
cmp eax, 1
jle 0x7c7440
cmp eax, 2
jne 0x7c7435
mov ecx, dword [edi + 0xc]
test ecx, ecx
jl 0x7c741b
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 0x7c7442
push edi
call fcn.007df920
add esp, 4
jmp 0x7c7442
xor eax, eax
mov ecx, dword [esp + 0x18]
cmp eax, dword [ecx]
mov dword [esp + 0x28], eax
jge 0x7c7d0a
jmp 0x7c745b
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 0x7c73d8
xor ecx, ecx
cmp edx, ecx
mov dword [esp + 0x1c], ecx
jle 0x7c7cf2
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 0x7c75a5
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.007bafa0
push edi
call fcn.007df810
add word [esp + 0x2c], ax
push edi
call fcn.007df810
mov edx, dword [esp + 0x18]
add esp, 8
add word [esp + 0x2a], ax
jmp 0x7c75ad
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 0x7c754e
jmp 0x7c7cf2
test al, 0x10
je 0x7c793b
mov ecx, dword [esp + 0x54]
xor eax, eax
cmp ecx, eax
mov dword [esp + 0x1c], eax
jle 0x7c77b8
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 0x7c771a
mov edx, dword [esp + 0x18]
mov eax, dword [edx]
cmp eax, 1
jle 0x7c7706
cmp eax, 2
jne 0x7c76fb
mov ecx, dword [edi + 0xc]
test ecx, ecx
jl 0x7c76e1
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 0x7c7708
push edi
call fcn.007df920
add esp, 4
jmp 0x7c7708
xor eax, eax
mov ecx, dword [esp + 0x18]
cmp eax, dword [ecx]
mov dword [esp + 0x28], eax
jge 0x7c7d0a
jmp 0x7c7721
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 0x7c7694
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 0x7c767d
xor eax, eax
cmp ecx, eax
mov dword [esp + 0x1c], eax
jle 0x7c7cf2
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 0x7c78b4
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 0x7c7854
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 0x7c787c
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 0x7c7895
mov edx, dword [esi + 0x8c]
mov edx, dword [edx + 0x20]
movsx ecx, byte [ecx + edx - 1]
cmp ecx, eax
jne 0x7c787c
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 0x7c7895
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.007bafa0
push edi
call fcn.007df810
add word [esp + 0x2c], ax
push edi
call fcn.007df810
mov edx, dword [esp + 0x40]
add esp, 8
add word [esp + 0x2a], ax
jmp 0x7c78bc
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 0x7c77e7
mov eax, dword [esp + 0x1c]
add dword [esp + 0x24], 0x360
inc eax
cmp eax, dword [esp + 0x54]
mov dword [esp + 0x1c], eax
jl 0x7c77ce
jmp 0x7c7cf2
test al, 0x20
je 0x7c7cf2
mov ecx, dword [esp + 0x54]
xor eax, eax
cmp ecx, eax
mov dword [esp + 0x1c], eax
jle 0x7c7b00
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 0x7c7a13
mov edx, dword [esp + 0x18]
mov eax, dword [edx]
cmp eax, 1
jle 0x7c79ff
cmp eax, 2
jne 0x7c79f4
mov ecx, dword [edi + 0xc]
test ecx, ecx
jl 0x7c79da
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 0x7c7a01
push edi
call fcn.007df920
add esp, 4
jmp 0x7c7a01
xor eax, eax
mov ecx, dword [esp + 0x18]
cmp eax, dword [ecx]
mov dword [esp + 0x28], eax
jge 0x7c7d0a
jmp 0x7c7a1a
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 0x7c798d
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 0x7c7976
xor edx, edx
cmp ecx, edx
mov dword [esp + 0x1c], edx
jle 0x7c7cf2
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 0x7c7b50
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 0x7c7c5b
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 0x7c7bb1
movsx edx, byte [eax - 1]
cmp edx, ecx
jne 0x7c7c23
mov eax, dword [esi + 0x7640]
mov ecx, dword [esp + 0x38]
mov edx, dword [ecx + eax - 4]
mov dword [esp + 0x28], edx
jmp 0x7c7c3c
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 0x7c7bf5
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 0x7c7c13
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 0x7c7c23
mov ecx, dword [edx]
mov dword [esp + 0x28], ecx
jmp 0x7c7c3c
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.007bafa0
push edi
call fcn.007df810
add word [esp + 0x2c], ax
push edi
call fcn.007df810
mov edx, dword [esp + 0x3c]
add esp, 8
add word [esp + 0x2a], ax
jmp 0x7c7c63
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 0x7c7b50
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 0x7c7b30
mov edx, dword [esp + 0x3c]
test byte [edx + 0xc], 2
jne 0x7c7d61
push edi
call fcn.007df920
add esp, 4
cmp eax, 0x2f
jle 0x7c7d21
xor eax, eax
pop edi
pop esi
pop ebx
mov ecx, dword [esp + 0x98]
xor ecx, esp
call fcn.008296eb
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 0x7c7d48
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 0x7c7d5f
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 0x7c7db4
test byte [edx], 0xf
je 0x7c7db4
test byte [edx + 0xc], 7
jne 0x7c7db4
mov ecx, dword [edi + 0xc]
cmp ecx, ebx
jl 0x7c7d99
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 0x7c7db4
or dword [edx + 0xc], 0x1000000
mov eax, dword [edx + 0xc]
test al, 2
jne 0x7c7dc3
cmp dword [edx], ebx
je 0x7ca5c5
test al, al
js 0x7c7dd0
cmp dword [esi + 0x20], ebx
jne 0x7c7dd0
xor eax, eax
jmp 0x7c7dd5
mov eax, 1
push edi
mov dword [esi + 0xcc], eax
call fcn.007df810
add esp, 4
cmp eax, ebx
je 0x7c7df3
push eax
mov ecx, esi
call fcn.007b78e0
add esp, 4
mov edx, dword [esi + 0x10]
mov eax, dword [esp + 0x3c]
mov eax, dword [eax + 0xc]
cmp dword [edx + 0x28], ebx
je 0x7c87b4
test al, 2
je 0x7c8275
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 0x7c7e65
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 0x7c7f3e
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 0x7c7eba
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 0x7c7edb
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 0x7c7f06
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 0x7c7f32
xor edx, edx
jmp 0x7c7f9c
mov ecx, edx
sar ecx, 8
shl eax, cl
mov dword [edi + 0x10], eax
jmp 0x7c7f99
mov ecx, dword [edi + 0xc]
mov edx, dword [eax + 4]
movsx ebx, byte [eax + 2]
mov dword [esp + 0x10], edx
test ecx, ecx
jl 0x7c7f6c
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 0x7c7f8d
xor edx, edx
jmp 0x7c7f9c
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 0x7c7fe3
mov ecx, dword [esp + 0x38]
lea ebx, [esi + 0x3f780]
push ebx
push 0
push ecx
push 0x10
push 0
call fcn.007c3ef0
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.007dc5a1
mov eax, dword [esp + 0x5c]
add esp, 0x20
mov dword [eax + 4], 1
mov eax, dword [esp + 0x3c]
test byte [eax], 0xf
je 0x7c820f
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 0x7c8030
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 0x7c8109
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 0x7c8085
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 0x7c80a6
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 0x7c80d1
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 0x7c80fd
xor edx, edx
jmp 0x7c8167
mov ecx, edx
sar ecx, 8
shl eax, cl
mov dword [edi + 0x10], eax
jmp 0x7c8164
mov ecx, dword [edi + 0xc]
mov edx, dword [eax + 4]
movsx ebx, byte [eax + 2]
mov dword [esp + 0x10], edx
test ecx, ecx
jl 0x7c8137
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 0x7c8158
xor edx, edx
jmp 0x7c8167
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 0x7c81de
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.007c3ef0
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 0x7c81f3
mov eax, dword [esp + 0x14]
cmp dword [eax], 0
je 0x7c81f3
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 0x7c8002
jmp 0x7c9150
test byte [eax + 4], 1
je 0x7c9150
lea ebx, [esi + 0x3f7c0]
mov dword [esp + 0x10], 4
jmp 0x7c8230
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 0x7c8230
jmp 0x7c9150
mov ecx, dword [esi + 0xcc]
test eax, 0x1000000
je 0x7c82b5
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 0x7c82eb
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 0x7c8310
mov ecx, dword [esp + 0x1c]
mov eax, dword [esp + 0x3c]
mov edx, 1
shl edx, cl
test dword [eax], edx
je 0x7c8785
mov ecx, eax
test dword [ecx + 0xc], 0x1000000
mov dword [esp + 0x4c], 0
je 0x7c855e
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 0x7c837a
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 0x7c845a
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 0x7c83cf
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 0x7c83f0
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 0x7c841b
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 0x7c844b
xor edx, edx
jmp 0x7c84c4
mov ecx, edx
sar ecx, 8
shl eax, cl
mov dword [edi + 0x10], eax
add dword [edi + 0xc], ecx
jmp 0x7c84c4
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 0x7c848c
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 0x7c84af
xor edx, edx
jmp 0x7c84c4
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 0x7c852b
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.007c3ef0
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 0x7c8350
mov eax, dword [esp + 0x44]
mov ecx, dword [esi + 0x1211e0]
push eax
call ecx
add esp, 4
jmp 0x7c8785
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 0x7c859e
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 0x7c8677
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 0x7c85f3
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 0x7c8614
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 0x7c863f
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 0x7c866b
xor edx, edx
jmp 0x7c86d5
mov ecx, edx
sar ecx, 8
shl eax, cl
mov dword [edi + 0x10], eax
jmp 0x7c86d2
mov ecx, dword [edi + 0xc]
mov edx, dword [eax + 4]
movsx ebx, byte [eax + 2]
mov dword [esp + 0x10], edx
test ecx, ecx
jl 0x7c86a5
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 0x7c86c6
xor edx, edx
jmp 0x7c86d5
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 0x7c8769
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.007c3ef0
mov ebx, eax
add esp, 0x14
cmp ebx, 1
jne 0x7c8715
mov edx, dword [esp + 0x14]
cmp dword [edx], 0
je 0x7c8715
jmp 0x7c8717
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 0x7c8570
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 0x7c8310
jmp 0x7c9150
test al, 2
je 0x7c8c15
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 0x7c8813
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 0x7c88ec
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 0x7c8868
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 0x7c8889
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 0x7c88b4
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 0x7c88e0
xor edx, edx
jmp 0x7c894a
mov ecx, edx
sar ecx, 8
shl eax, cl
mov dword [edi + 0x10], eax
jmp 0x7c8947
mov ecx, dword [edi + 0xc]
mov edx, dword [eax + 4]
movsx ebx, byte [eax + 2]
mov dword [esp + 0x10], edx
test ecx, ecx
jl 0x7c891a
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 0x7c893b
xor edx, edx
jmp 0x7c894a
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 0x7c8991
mov ecx, dword [esp + 0x38]
lea ebx, [esi + 0x3f780]
push ebx
push 0
push ecx
push 0x10
push 0
call fcn.007c37b0
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.007dbb4d
mov eax, dword [esp + 0x5c]
add esp, 0x20
mov dword [eax + 4], 1
mov eax, dword [esp + 0x3c]
test byte [eax], 0xf
je 0x7c8bbe
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 0x7c89de
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 0x7c8ab7
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 0x7c8a33
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 0x7c8a54
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 0x7c8a7f
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 0x7c8aab
xor edx, edx
jmp 0x7c8b15
mov ecx, edx
sar ecx, 8
shl eax, cl
mov dword [edi + 0x10], eax
jmp 0x7c8b12
mov ecx, dword [edi + 0xc]
mov edx, dword [eax + 4]
movsx ebx, byte [eax + 2]
mov dword [esp + 0x10], edx
test ecx, ecx
jl 0x7c8ae5
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 0x7c8b06
xor edx, edx
jmp 0x7c8b15
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 0x7c8b8c
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.007c37b0
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 0x7c8ba2
mov eax, dword [esp + 0x14]
cmp word [eax], 0
je 0x7c8ba2
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 0x7c89b0
jmp 0x7c9150
test byte [eax + 4], 1
je 0x7c9150
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 0x7c8bd6
jmp 0x7c9150
mov ecx, dword [esi + 0xcc]
test eax, 0x1000000
je 0x7c8c55
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 0x7c8c8b
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 0x7c8cb0
mov ecx, dword [esp + 0x1c]
mov eax, dword [esp + 0x3c]
mov edx, 1
shl edx, cl
test dword [eax], edx
je 0x7c9126
mov ecx, eax
test dword [ecx + 0xc], 0x1000000
mov dword [esp + 0x4c], 0
je 0x7c8efe
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 0x7c8d1a
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 0x7c8dfa
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 0x7c8d6f
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 0x7c8d90
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 0x7c8dbb
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 0x7c8deb
xor edx, edx
jmp 0x7c8e64
mov ecx, edx
sar ecx, 8
shl eax, cl
mov dword [edi + 0x10], eax
add dword [edi + 0xc], ecx
jmp 0x7c8e64
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 0x7c8e2c
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 0x7c8e4f
xor edx, edx
jmp 0x7c8e64
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 0x7c8ecb
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.007c37b0
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 0x7c8cf0
mov eax, dword [esp + 0x44]
mov ecx, dword [esi + 0x1211e0]
push eax
call ecx
add esp, 4
jmp 0x7c9126
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 0x7c8f3e
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 0x7c9017
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 0x7c8f93
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 0x7c8fb4
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 0x7c8fdf
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 0x7c900b
xor edx, edx
jmp 0x7c9075
mov ecx, edx
sar ecx, 8
shl eax, cl
mov dword [edi + 0x10], eax
jmp 0x7c9072
mov ecx, dword [edi + 0xc]
mov edx, dword [eax + 4]
movsx ebx, byte [eax + 2]
mov dword [esp + 0x10], edx
test ecx, ecx
jl 0x7c9045
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 0x7c9066
xor edx, edx
jmp 0x7c9075
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 0x7c910a
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.007c37b0
mov ebx, eax
add esp, 0x14
cmp ebx, 1
jne 0x7c90b6
mov edx, dword [esp + 0x14]
cmp word [edx], 0
je 0x7c90b6
jmp 0x7c90b8
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 0x7c8f10
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 0x7c8cb0
mov eax, dword [esp + 0x3c]
cmp dword [eax], 0xf
jbe 0x7ca5c5
mov eax, dword [esi + 0x10]
xor ecx, ecx
cmp dword [eax + 0x2c], ecx
je 0x7c9b9f
mov eax, dword [eax + 0x20]
cmp eax, 1
jne 0x7c9360
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 0x7c9264
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 0x7c91e1
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 0x7c9200
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 0x7c922b
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 0x7c9256
xor edx, edx
jmp 0x7c92bd
mov ecx, eax
sar ecx, 8
shl edx, cl
mov dword [edi + 0x10], edx
mov edx, eax
jmp 0x7c92ba
mov ecx, dword [ecx + 4]
mov dword [esp + 0x10], ecx
mov ecx, dword [edi + 0xc]
test ecx, ecx
jl 0x7c928e
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 0x7c92b0
xor edx, edx
jmp 0x7c92bd
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 0x7c933c
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.007c3ef0
mov edx, dword [esp + 0x2c]
mov eax, dword [edx]
mov ecx, dword [esp + 0x28]
push ebx
push eax
push ecx
call fcn.007dc6f2
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 0x7c918c
jmp 0x7c954d
cmp eax, 2
jne 0x7c954d
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 0x7c9456
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 0x7c93d3
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 0x7c93f2
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 0x7c941d
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 0x7c9448
xor edx, edx
jmp 0x7c94af
mov ecx, eax
sar ecx, 8
shl edx, cl
mov dword [edi + 0x10], edx
mov edx, eax
jmp 0x7c94ac
mov ecx, dword [ecx + 4]
mov dword [esp + 0x10], ecx
mov ecx, dword [edi + 0xc]
test ecx, ecx
jl 0x7c9480
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 0x7c94a2
xor edx, edx
jmp 0x7c94af
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 0x7c952e
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.007c3ef0
mov edx, dword [esp + 0x2c]
mov eax, dword [edx]
mov ecx, dword [esp + 0x28]
push ebx
push eax
push ecx
call fcn.007dc795
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 0x7c937e
mov eax, dword [esp + 0x3c]
cmp dword [eax], 0x1f
jbe 0x7c9acc
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 0x7c9848
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 0x7c9633
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 0x7c9727
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 0x7c9690
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 0x7c96ad
mov eax, dword [esp + 0x10]
jmp 0x7c96b9
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 0x7c96e4
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 0x7c9711
xor edx, edx
jmp 0x7c978c
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 0x7c978c
mov ecx, dword [edi + 0xc]
mov eax, dword [eax + 4]
mov dword [esp + 0x10], edx
mov dword [esp + 0x2c], eax
test ecx, ecx
jl 0x7c9755
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 0x7c9779
xor edx, edx
jmp 0x7c978c
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 0x7c980e
mov edx, dword [esp + 0x44]
mov ecx, dword [esp + 0x48]
push ebx
push edx
push ecx
push 0xf
push 4
call fcn.007c3ef0
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 0x7c981f
cmp dword [ebx], 0
je 0x7c981f
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 0x7c95f0
jmp 0x7c9a82
cmp eax, 2
jne 0x7c9a82
xor eax, eax
mov dword [esp + 0x4c], eax
mov dword [esp + 0x14], edx
jmp 0x7c9860
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 0x7c98a4
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 0x7c997d
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 0x7c98f9
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 0x7c991a
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 0x7c9945
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 0x7c9971
xor edx, edx
jmp 0x7c99db
mov ecx, edx
sar ecx, 8
shl eax, cl
mov dword [edi + 0x10], eax
jmp 0x7c99d8
mov ecx, dword [edi + 0xc]
mov edx, dword [eax + 4]
movsx ebx, byte [eax + 2]
mov dword [esp + 0x10], edx
test ecx, ecx
jl 0x7c99ab
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 0x7c99cc
xor edx, edx
jmp 0x7c99db
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 0x7c9a56
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.007c3ef0
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 0x7c9a6b
mov eax, dword [esp + 0x14]
cmp dword [eax], 0
je 0x7c9a6b
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 0x7c9860
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 0x7c9593
jmp 0x7ca5c5
mov ecx, dword [esi + 0x10]
mov eax, dword [ecx + 0x20]
cmp eax, 1
jne 0x7c9b36
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 0x7c9b25
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 0x7c9ae0
jmp 0x7ca5c5
cmp eax, 2
jne 0x7ca5c5
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 0x7c9b84
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 0x7c9b70
mov eax, dword [esp + 0x1c]
add dword [esp + 0x20], 0x200
inc eax
cmp eax, 2
mov dword [esp + 0x1c], eax
jl 0x7c9b51
jmp 0x7ca5c5
cmp dword [eax + 0x20], 2
jne 0x7c9d92
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 0x7c9c96
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 0x7c9c13
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 0x7c9c32
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 0x7c9c5d
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 0x7c9c88
xor edx, edx
jmp 0x7c9cef
mov ecx, eax
sar ecx, 8
shl edx, cl
mov dword [edi + 0x10], edx
mov edx, eax
jmp 0x7c9cec
mov ecx, dword [ecx + 4]
mov dword [esp + 0x10], ecx
mov ecx, dword [edi + 0xc]
test ecx, ecx
jl 0x7c9cc0
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 0x7c9ce2
xor edx, edx
jmp 0x7c9cef
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 0x7c9d6e
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.007c37b0
mov edx, dword [esp + 0x2c]
mov eax, dword [edx]
mov ecx, dword [esp + 0x28]
push ebx
push eax
push ecx
call fcn.007dbd4e
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 0x7c9bbe
jmp 0x7c9f88
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 0x7c9e8f
movsx eax, byte [ecx + 1]
mov ecx, dword [ecx + 4]
mov dword [esp + 0x20], ecx
mov ecx, dword [edi + 0xc]
test ecx, ecx
jl 0x7c9e05
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 0x7c9e24
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 0x7c9e4f
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 0x7c9e7e
xor edx, edx
jmp 0x7c9eec
mov ecx, eax
sar ecx, 8
shl edx, cl
mov dword [edi + 0x10], edx
add dword [edi + 0xc], ecx
mov edx, eax
jmp 0x7c9eec
mov eax, dword [ecx + 4]
mov ecx, dword [edi + 0xc]
mov dword [esp + 0x2c], eax
test ecx, ecx
jl 0x7c9eb9
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 0x7c9edd
xor edx, edx
jmp 0x7c9eec
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 0x7c9f70
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.007c37b0
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.007dbca8
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 0x7c9db0
mov eax, dword [esp + 0x3c]
cmp dword [eax], 0x1f
jbe 0x7ca50f
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 0x7c9fd4
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 0x7ca25c
mov edx, dword [esp + 0x44]
mov dword [esp + 0x40], 0
mov dword [esp + 0x14], edx
jmp 0x7ca034
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 0x7ca078
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 0x7ca151
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 0x7ca0cd
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 0x7ca0ee
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 0x7ca119
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 0x7ca145
xor edx, edx
jmp 0x7ca1af
mov ecx, edx
sar ecx, 8
shl eax, cl
mov dword [edi + 0x10], eax
jmp 0x7ca1ac
mov ecx, dword [edi + 0xc]
mov edx, dword [eax + 4]
movsx ebx, byte [eax + 2]
mov dword [esp + 0x10], edx
test ecx, ecx
jl 0x7ca17f
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 0x7ca1a0
xor edx, edx
jmp 0x7ca1af
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 0x7ca22a
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.007c37b0
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 0x7ca240
mov eax, dword [esp + 0x14]
cmp word [eax], 0
je 0x7ca240
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 0x7ca030
jmp 0x7ca4d4
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 0x7ca280
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 0x7ca2c3
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 0x7ca3b3
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 0x7ca31c
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 0x7ca339
mov eax, dword [esp + 0x10]
jmp 0x7ca345
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 0x7ca370
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 0x7ca39d
xor edx, edx
jmp 0x7ca41c
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 0x7ca41c
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 0x7ca3e5
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 0x7ca409
xor edx, edx
jmp 0x7ca41c
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 0x7ca49e
mov edx, dword [esp + 0x48]
mov ecx, dword [esp + 0x4c]
push ebx
push edx
push ecx
push 0xf
push 4
call fcn.007c37b0
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 0x7ca4b0
cmp word [ebx], 0
je 0x7ca4b0
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 0x7ca280
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 0x7c9fd0
jmp 0x7ca5c5
mov ecx, dword [esi + 0x10]
cmp dword [ecx + 0x20], 2
jne 0x7ca572
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 0x7ca558
mov ebx, 8
nop
mov ecx, dword [esi + 0x1211ec]
push edi
call ecx
add esp, 4
add edi, 0x20
sub ebx, 1
jne 0x7ca540
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 0x7ca52a
jmp 0x7ca5c5
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 0x7ca5bc
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 0x7ca57a
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 0x7ca5e2
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.008296eb
mov esp, ebp
pop ebp
ret