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

Disassembly:
push ebp
mov ebp, esp
sub esp, 0x88
push ebx
mov ebx, dword [ecx + 0x8c]
push esi
mov esi, dword [ecx + 0x1a4]
mov dword [ebp - 0x48], ecx
mov ecx, ebx
shr ecx, 8
mov dword [ebp - 0x24], edx
inc ecx
movsx eax, word [esi + 0xe]
xor edx, edx
mov dword [ebp - 0x28], eax
movsx eax, word [esi + 0xc]
mov dword [ebp - 0x30], eax
mov eax, dword [esi + 0x8a4]
mov dword [ebp - 0x2c], eax
push edi
mov edi, dword [esi + 0x7c]
mov eax, edi
div ecx
mov ecx, dword [ebp - 0x30]
mov edx, 0x800000
mov dword [ebp - 0x68], eax
mov eax, dword [esi + 0x8b0]
mov dword [ebp - 0x10], eax
mov eax, ecx
and eax, 0x20
mov dword [ebp - 0x4c], esi
mov dword [ebp - 0x64], eax
mov eax, 0x8000
cmovne eax, edx
mov dword [ebp - 0x20], 0
cmp word [esi + 0xa], 0
mov dword [ebp - 0x1c], eax
mov dword [ebp - 8], 0
je 0x1007e1b8
test cl, cl
js 0x1007e1b8
cmp word [esi + 8], 3
jge 0x1007e1b3
shl eax, 2
jmp 0x1007e1b5
add eax, eax
mov dword [ebp - 0x1c], eax
mov ecx, dword [ebp + 8]
mov dword [ebp - 0xc], ecx
lea eax, [edi + ecx]
cmp eax, ebx
jbe 0x1007e1cc
mov ecx, ebx
sub ecx, edi
mov dword [ebp - 0xc], ecx
test ecx, ecx
jne 0x1007e1d9
xor eax, eax
pop edi
pop esi
pop ebx
mov esp, ebp
pop ebp
ret
test edi, edi
jne 0x1007e211
mov ecx, esi
call fcn.1007dc70
mov ebx, dword [ebp - 0x48]
lea ecx, [esi + 0x24]
push dword [ebx + 0x74]
mov edx, dword [ebx + 0x70]
call fcn.1007dbf0
add esp, 4
cmp dword [ebx + 0x98], edi
je 0x1007e211
push dword [ebx + 0x78]
mov edx, dword [ebx + 0x70]
lea ecx, [esi + 0x50]
call fcn.1007dbf0
add esp, 4
mov ebx, dword [ebp - 0x68]
cmp byte [esi + ebx*8 + 0x84], 0
jne 0x1007e26e
cmp dword [esi + 0x884], 0
jne 0x1007e246
mov ecx, esi
call fcn.1007de10
mov dword [esi + 0x888], eax
shl eax, 8
push eax
call fcn.1009ff8c
add esp, 4
mov dword [esi + 0x884], eax
mov eax, dword [esi + 0x7c]
mov ecx, esi
mov dword [esi + ebx*8 + 0x88], eax
mov edx, dword [esi + 0x888]
imul edx, ebx
add edx, dword [esi + 0x884]
call fcn.1007ded0
mov byte [esi + ebx*8 + 0x84], 1
mov eax, dword [esi + 0x8c4]
movups xmm0, xmmword [esi + 0x8b4]
movzx edx, word [esi + 0xa]
mov dword [ebp - 0x14], eax
mov eax, dword [esi + 0x8c8]
mov dword [ebp - 0x34], eax
mov eax, dword [ebp - 0x30]
movups xmmword [ebp - 0x84], xmm0
test dx, dx
je 0x1007e2aa
and eax, 0xa000
neg eax
sbb eax, eax
and eax, 0xffffff00
jmp 0x1007e2c0
test eax, 0x2000
je 0x1007e2c3
shr eax, 7
not eax
and eax, 0xffffff00
or eax, 0xfffffe00
mov dword [ebp - 0x20], eax
cmp dword [ebp - 0x64], 0
mov ecx, dword [ebp - 0x28]
je 0x1007e2ec
mov edi, 0xff800000
mov ebx, 0x7fffff
sar edi, cl
sar ebx, cl
mov dword [ebp - 0x3c], edi
shl edi, cl
mov dword [ebp - 0x38], ebx
shl ebx, cl
mov dword [ebp - 0x44], edi
mov dword [ebp - 0x40], ebx
jmp 0x1007e30a
mov eax, 0xffff8000
sar eax, cl
mov dword [ebp - 0x3c], eax
shl eax, cl
mov dword [ebp - 0x44], eax
mov eax, 0x7fff
sar eax, cl
mov dword [ebp - 0x38], eax
shl eax, cl
mov dword [ebp - 0x40], eax
mov ebx, dword [ebp - 0x30]
mov ecx, ebx
movzx eax, word [esi + 8]
and ecx, 1
mov dword [ebp - 0x18], ecx
cmp ax, 3
jne 0x1007fef8
test dx, dx
jne 0x1007f536
mov eax, ebx
and eax, 2
test ecx, ecx
je 0x1007e8ba
test eax, eax
mov eax, dword [ebp - 0x24]
je 0x1007e493
mov dword [ebp + 8], 0
mov dword [ebp - 0x60], eax
test bl, 0x40
je 0x1007e431
cmp dword [ebp - 0xc], 0
jbe 0x1007f5ed
mov ebx, dword [ebp - 0x80]
mov edi, dword [ebp - 0x84]
nop word [eax + eax]
xor edx, edx
mov ecx, esi
call fcn.10080cb0
cmp eax, 0x80000000
je 0x1007f5ed
mov ecx, dword [esi + 0x48]
add ebx, eax
add edi, ebx
mov dword [ebp - 0x68], ebx
mov dword [ebp - 0x80], ebx
mov dword [ebp - 0x84], edi
cmp ecx, 4
jge 0x1007e3d2
mov eax, dword [esi + 0x30]
nop
inc eax
mov dword [esi + 0x30], eax
cmp eax, dword [esi + 0x2c]
jne 0x1007e3b7
lea eax, [esi + 0x24]
push eax
mov eax, dword [eax]
call eax
mov eax, dword [esi + 0x30]
add esp, 4
movzx edx, byte [eax]
mov ecx, dword [esi + 0x48]
shl edx, cl
add ecx, 8
or edx, dword [esi + 0x3c]
mov dword [esi + 0x3c], edx
mov dword [esi + 0x48], ecx
cmp ecx, 4
jl 0x1007e3a0
jmp 0x1007e3d5
mov edx, dword [esi + 0x3c]
lea ebx, [ecx - 4]
mov dword [esi + 0x48], ebx
cmp ecx, 0x20
jle 0x1007e3f1
mov eax, dword [esi + 0x30]
mov ecx, 8
sub cl, bl
movzx eax, byte [eax]
shr eax, cl
jmp 0x1007e3f6
mov eax, edx
shr eax, 4
mov dword [esi + 0x3c], eax
and edx, 0xf
mov ebx, dword [ebp - 0x68]
mov eax, edi
shl eax, 4
add edx, eax
mov eax, dword [ebp - 0x10]
lea ecx, [edx + eax*2]
add ecx, eax
mov eax, dword [ebp - 0x60]
mov dword [ebp - 0x10], ecx
mov ecx, dword [ebp + 8]
inc ecx
mov dword [eax], edx
add eax, 4
mov dword [ebp - 0x60], eax
mov dword [ebp + 8], ecx
cmp ecx, dword [ebp - 0xc]
jb 0x1007e370
jmp 0x1007f5ed
cmp dword [ebp - 0xc], 0
jbe 0x1007f5ed
mov ebx, dword [ebp - 0x80]
mov edi, dword [ebp - 0x84]
xor edx, edx
mov ecx, esi
call fcn.10080cb0
cmp eax, 0x80000000
je 0x1007f5ed
mov ecx, dword [ebp - 0x28]
add ebx, eax
mov eax, dword [ebp - 0x10]
add edi, ebx
mov dword [ebp - 0x80], ebx
mov dword [ebp - 0x84], edi
lea edx, [edi + eax*2]
add edx, eax
mov eax, edi
shl eax, cl
mov ecx, dword [ebp - 0x60]
mov dword [ebp - 0x10], edx
mov dword [ecx], eax
add ecx, 4
mov dword [ebp - 0x60], ecx
mov ecx, dword [ebp + 8]
inc ecx
mov dword [ebp + 8], ecx
cmp ecx, dword [ebp - 0xc]
jb 0x1007e444
jmp 0x1007f5ed
mov dword [ebp - 0x5c], eax
test bl, 0x10
je 0x1007e6f8
cmp dword [ebp - 0xc], 0
mov dword [ebp + 8], 0
jbe 0x1007f5ed
mov eax, ebx
and eax, 0x400
mov dword [ebp - 0x68], eax
nop word [eax + eax]
xor edx, edx
mov ecx, esi
test eax, eax
je 0x1007e4cf
call fcn.10080280
jmp 0x1007e4d4
call fcn.10080810
mov edi, eax
cmp edi, 0x80000000
je 0x1007f5ed
mov eax, dword [esi + 0x80]
lea ecx, [esi + 0x8cc]
mov dword [ebp - 0x60], eax
test ebx, 0x8000
je 0x1007e55a
test eax, eax
je 0x1007e5b9
mov esi, eax
mov eax, dword [ebp - 0x2c]
dec esi
mov ebx, dword [ecx + 8]
mov edx, ebx
mov eax, dword [ecx + eax*4 + 0x10]
imul edx, eax
add edx, 0x100
sar edx, 9
add edx, edi
test eax, eax
je 0x1007e543
test edi, edi
je 0x1007e543
xor eax, edi
jl 0x1007e535
lea eax, [ebx + 1]
cmp ebx, 0x200
jmp 0x1007e53b
cmp ebx, dword [ebp - 0x20]
lea eax, [ebx - 1]
mov dword [ecx + 8], eax
jne 0x1007e543
mov dword [ecx + 8], ebx
mov eax, dword [ecx]
mov edi, edx
add eax, dword [ebp - 0x2c]
and eax, 7
mov dword [ecx + eax*4 + 0x10], edx
add ecx, 0x60
test esi, esi
jne 0x1007e503
jmp 0x1007e5b3
test eax, eax
je 0x1007e5b9
mov esi, dword [ebp - 0x60]
mov eax, dword [ebp - 0x2c]
dec esi
mov ebx, dword [ecx + 8]
mov edx, ebx
mov eax, dword [ecx + eax*4 + 0x10]
imul edx, eax
sub edx, 0xffffff80
sar edx, 8
add edx, edi
test eax, eax
je 0x1007e59e
test edi, edi
je 0x1007e59e
xor eax, edi
jl 0x1007e590
lea eax, [ebx + 1]
cmp ebx, 0x100
jmp 0x1007e596
cmp ebx, dword [ebp - 0x20]
lea eax, [ebx - 1]
mov dword [ecx + 8], eax
jne 0x1007e59e
mov dword [ecx + 8], ebx
mov eax, dword [ecx]
mov edi, edx
add eax, dword [ebp - 0x2c]
and eax, 7
mov dword [ecx + eax*4 + 0x10], edx
add ecx, 0x60
test esi, esi
jne 0x1007e561
mov ebx, dword [ebp - 0x30]
mov esi, dword [ebp - 0x4c]
mov eax, dword [ebp - 0x2c]
inc eax
and eax, 7
mov dword [ebp - 0x2c], eax
test bl, 0x40
je 0x1007e6c5
cmp dword [esi + 0x8a0], 8
jl 0x1007e623
mov eax, dword [esi + 0x48]
test eax, eax
je 0x1007e5e5
mov ecx, dword [esi + 0x3c]
dec eax
mov dword [esi + 0x48], eax
jmp 0x1007e60c
mov eax, dword [esi + 0x30]
inc eax
mov dword [esi + 0x30], eax
cmp eax, dword [esi + 0x2c]
jne 0x1007e5ff
lea eax, [esi + 0x24]
push eax
mov eax, dword [eax]
call eax
mov eax, dword [esi + 0x30]
add esp, 4
mov dword [esi + 0x48], 7
movzx ecx, byte [eax]
mov dword [esi + 0x3c], ecx
mov eax, ecx
shr ecx, 1
mov dword [esi + 0x3c], ecx
and eax, 1
je 0x1007e623
mov edx, dword [esi + 0x89c]
jmp 0x1007e6b3
mov ecx, dword [esi + 0x48]
cmp ecx, 4
jge 0x1007e662
mov eax, dword [esi + 0x30]
nop
inc eax
mov dword [esi + 0x30], eax
cmp eax, dword [esi + 0x2c]
jne 0x1007e647
lea eax, [esi + 0x24]
push eax
mov eax, dword [eax]
call eax
mov eax, dword [esi + 0x30]
add esp, 4
movzx edx, byte [eax]
mov ecx, dword [esi + 0x48]
shl edx, cl
add ecx, 8
or edx, dword [esi + 0x3c]
mov dword [esi + 0x3c], edx
mov dword [esi + 0x48], ecx
cmp ecx, 4
jl 0x1007e630
jmp 0x1007e665
mov edx, dword [esi + 0x3c]
lea ebx, [ecx - 4]
mov dword [esi + 0x48], ebx
cmp ecx, 0x20
jle 0x1007e681
mov eax, dword [esi + 0x30]
mov ecx, 8
sub cl, bl
movzx eax, byte [eax]
shr eax, cl
jmp 0x1007e686
mov eax, edx
shr eax, 4
mov ebx, dword [ebp - 0x30]
and edx, 0xf
mov dword [esi + 0x3c], eax
mov eax, dword [esi + 0x89c]
cmp edx, eax
je 0x1007e6ab
mov dword [esi + 0x89c], edx
mov dword [esi + 0x8a0], 0
jmp 0x1007e6b3
inc dword [esi + 0x8a0]
mov edx, eax
mov eax, dword [ebp - 0x10]
shl edi, 4
add edi, edx
lea edx, [edi + eax*2]
add edx, eax
mov dword [ebp - 0x10], edx
jmp 0x1007e6d5
mov eax, dword [ebp - 0x10]
lea ecx, [edi + eax*2]
add ecx, eax
mov dword [ebp - 0x10], ecx
mov ecx, dword [ebp - 0x28]
shl edi, cl
mov ecx, dword [ebp - 0x5c]
lea eax, [ecx + 4]
mov dword [ecx], edi
mov ecx, dword [ebp + 8]
inc ecx
mov dword [ebp - 0x5c], eax
mov eax, dword [ebp - 0x68]
mov dword [ebp + 8], ecx
cmp ecx, dword [ebp - 0xc]
jb 0x1007e4c0
jmp 0x1007f5ed
xor eax, eax
mov dword [ebp + 8], eax
cmp dword [ebp - 0xc], eax
jbe 0x1007f5ed
mov eax, dword [ebp - 0x80]
mov ebx, dword [ebp - 0x84]
mov dword [ebp - 0x60], eax
xor edx, edx
mov ecx, esi
call fcn.10080cb0
mov edi, eax
cmp edi, 0x80000000
je 0x1007f5ed
mov eax, dword [ebp - 0x60]
xor ecx, ecx
mov edx, dword [ebp - 0x14]
imul edx, eax
sub edx, 0xffffff80
sar edx, 8
add edx, ebx
add edx, edi
test eax, eax
setns cl
xor eax, eax
test edi, edi
setg al
cmp ecx, eax
mov ecx, dword [ebp - 0x14]
mov eax, ecx
jne 0x1007e761
inc ecx
mov dword [ebp - 0x14], ecx
cmp eax, 0x100
jne 0x1007e76d
dec ecx
jmp 0x1007e76a
dec ecx
mov dword [ebp - 0x14], ecx
test eax, eax
jne 0x1007e76d
inc ecx
mov dword [ebp - 0x14], ecx
mov eax, edx
sub eax, ebx
add ebx, eax
mov dword [ebp - 0x60], eax
test byte [ebp - 0x30], 0x40
mov dword [ebp - 0x80], eax
mov dword [ebp - 0x84], ebx
je 0x1007e888
cmp dword [esi + 0x8a0], 8
jl 0x1007e7e0
mov eax, dword [esi + 0x48]
test eax, eax
je 0x1007e7a2
mov ecx, dword [esi + 0x3c]
dec eax
mov dword [esi + 0x48], eax
jmp 0x1007e7c9
mov eax, dword [esi + 0x30]
inc eax
mov dword [esi + 0x30], eax
cmp eax, dword [esi + 0x2c]
jne 0x1007e7bc
lea eax, [esi + 0x24]
push eax
mov eax, dword [eax]
call eax
mov eax, dword [esi + 0x30]
add esp, 4
mov dword [esi + 0x48], 7
movzx ecx, byte [eax]
mov dword [esi + 0x3c], ecx
mov eax, ecx
shr ecx, 1
mov dword [esi + 0x3c], ecx
and eax, 1
je 0x1007e7e0
mov edx, dword [esi + 0x89c]
jmp 0x1007e874
mov ecx, dword [esi + 0x48]
cmp ecx, 4
jge 0x1007e822
mov eax, dword [esi + 0x30]
nop dword [eax + eax]
inc eax
mov dword [esi + 0x30], eax
cmp eax, dword [esi + 0x2c]
jne 0x1007e807
lea eax, [esi + 0x24]
push eax
mov eax, dword [eax]
call eax
mov eax, dword [esi + 0x30]
add esp, 4
movzx edx, byte [eax]
mov ecx, dword [esi + 0x48]
shl edx, cl
add ecx, 8
or edx, dword [esi + 0x3c]
mov dword [esi + 0x3c], edx
mov dword [esi + 0x48], ecx
cmp ecx, 4
jl 0x1007e7f0
jmp 0x1007e825
mov edx, dword [esi + 0x3c]
lea eax, [ecx - 4]
mov dword [ebp - 0x68], eax
mov dword [esi + 0x48], eax
cmp ecx, 0x20
jle 0x1007e845
mov eax, dword [esi + 0x30]
mov ecx, 8
sub cl, byte [ebp - 0x68]
movzx eax, byte [eax]
shr eax, cl
jmp 0x1007e84a
mov eax, edx
shr eax, 4
mov dword [esi + 0x3c], eax
and edx, 0xf
mov eax, dword [esi + 0x89c]
cmp edx, eax
je 0x1007e86c
mov dword [esi + 0x89c], edx
mov dword [esi + 0x8a0], 0
jmp 0x1007e874
inc dword [esi + 0x8a0]
mov edx, eax
mov eax, dword [ebp - 0x10]
mov edi, ebx
shl edi, 4
add edi, edx
lea edx, [edi + eax*2]
add edx, eax
mov dword [ebp - 0x10], edx
jmp 0x1007e89a
mov eax, dword [ebp - 0x10]
mov edi, ebx
lea ecx, [ebx + eax*2]
add ecx, eax
mov dword [ebp - 0x10], ecx
mov ecx, dword [ebp - 0x28]
shl edi, cl
mov ecx, dword [ebp - 0x5c]
lea eax, [ecx + 4]
mov dword [ecx], edi
mov ecx, dword [ebp + 8]
inc ecx
mov dword [ebp - 0x5c], eax
mov dword [ebp + 8], ecx
cmp ecx, dword [ebp - 0xc]
jb 0x1007e712
jmp 0x1007f5ed
mov ecx, dword [esi + 0x890]
mov dword [ebp - 0x40], ecx
mov ecx, dword [esi + 0x894]
mov dword [ebp - 0x38], ecx
mov ecx, dword [esi + 0x88c]
mov dword [ebp - 0x3c], ecx
mov ecx, dword [esi + 0x898]
mov dword [ebp - 0x50], ecx
test eax, eax
je 0x1007ead4
test bl, 0x40
mov dword [ebp + 8], 0
mov ebx, dword [ebp - 0x24]
je 0x1007ea31
cmp dword [ebp - 0xc], 0
jbe 0x1007f501
mov eax, dword [ebp - 0x78]
mov dword [ebp - 0x5c], eax
mov eax, dword [ebp - 0x7c]
mov dword [ebp - 0x44], eax
mov eax, dword [ebp - 0x80]
mov dword [ebp - 0x60], eax
mov eax, dword [ebp - 0x84]
mov dword [ebp - 0x54], eax
nop
xor edx, edx
mov ecx, esi
call fcn.10080cb0
mov edi, eax
cmp edi, 0x80000000
je 0x1007f501
mov edx, 1
mov ecx, esi
call fcn.10080cb0
mov edx, eax
lea ecx, [edi + edi]
mov edi, dword [ebp - 0x60]
and edx, 1
or edx, ecx
lea ecx, [eax + edx]
sub edx, eax
mov eax, dword [ebp - 0x44]
sar ecx, 1
add edi, ecx
sar edx, 1
mov ecx, dword [ebp - 0x54]
add ecx, edi
mov dword [ebp - 0x60], edi
mov dword [ebp - 0x54], ecx
mov dword [ebp - 0x84], ecx
mov ecx, dword [ebp - 0x5c]
add ecx, edx
mov dword [ebp - 0x80], edi
add eax, ecx
mov dword [ebp - 0x5c], ecx
mov dword [ebp - 0x78], ecx
mov ecx, dword [esi + 0x48]
mov dword [ebp - 0x44], eax
mov dword [ebp - 0x7c], eax
cmp ecx, 8
jge 0x1007e9c2
mov eax, dword [esi + 0x30]
inc eax
mov dword [esi + 0x30], eax
cmp eax, dword [esi + 0x2c]
jne 0x1007e9a7
lea eax, [esi + 0x24]
push eax
mov eax, dword [eax]
call eax
mov eax, dword [esi + 0x30]
add esp, 4
movzx edi, byte [eax]
mov ecx, dword [esi + 0x48]
shl edi, cl
add ecx, 8
or edi, dword [esi + 0x3c]
mov dword [esi + 0x3c], edi
mov dword [esi + 0x48], ecx
cmp ecx, 8
jl 0x1007e990
jmp 0x1007e9c5
mov edi, dword [esi + 0x3c]
lea edx, [ecx - 8]
mov dword [esi + 0x48], edx
cmp ecx, 0x20
jle 0x1007e9e1
mov eax, dword [esi + 0x30]
mov ecx, 8
sub cl, dl
movzx eax, byte [eax]
shr eax, cl
jmp 0x1007e9e6
mov eax, edi
shr eax, 8
mov dword [esi + 0x3c], eax
mov edx, edi
mov ecx, dword [ebp - 0x44]
and edi, 0xf
mov eax, dword [ebp - 0x54]
sar edx, 4
shl ecx, 4
and edx, 0xf
add ecx, edi
shl eax, 4
mov edi, dword [ebp - 0x10]
add edx, eax
mov dword [ebx], edx
mov dword [ebx + 4], ecx
add ebx, 8
lea eax, [edx + edi*2]
add eax, edi
lea edi, [ecx + eax*2]
mov ecx, dword [ebp + 8]
inc ecx
add edi, eax
mov dword [ebp - 0x10], edi
mov dword [ebp + 8], ecx
cmp ecx, dword [ebp - 0xc]
jb 0x1007e920
jmp 0x1007f501
cmp dword [ebp - 0xc], 0
jbe 0x1007f501
nop dword [eax + eax]
xor edx, edx
mov ecx, esi
call fcn.10080cb0
mov edi, eax
cmp edi, 0x80000000
je 0x1007f501
mov edx, 1
mov ecx, esi
call fcn.10080cb0
mov edx, eax
lea ecx, [edi + edi]
mov edi, dword [ebp - 0x80]
and edx, 1
or edx, ecx
lea ecx, [eax + edx]
sub edx, eax
mov eax, dword [ebp - 0x78]
sar ecx, 1
add edi, ecx
sar edx, 1
mov ecx, dword [ebp - 0x84]
add eax, edx
mov edx, dword [ebp - 0x7c]
add ecx, edi
add edx, eax
mov dword [ebp - 0x80], edi
mov edi, dword [ebp - 0x10]
mov dword [ebp - 0x78], eax
mov dword [ebp - 0x84], ecx
mov dword [ebp - 0x7c], edx
lea eax, [ecx + edi*2]
add eax, edi
lea edi, [edx + eax*2]
add edi, eax
mov eax, ecx
mov ecx, dword [ebp - 0x28]
shl eax, cl
mov dword [ebx], eax
mov eax, edx
shl eax, cl
mov ecx, dword [ebp + 8]
inc ecx
mov dword [ebx + 4], eax
add ebx, 8
mov dword [ebp - 0x10], edi
mov dword [ebp + 8], ecx
cmp ecx, dword [ebp - 0xc]
jb 0x1007ea40
jmp 0x1007f501
mov eax, dword [ebp - 0x24]
test bl, 0x10
je 0x1007f215
cmp dword [ebp - 0xc], 0
mov dword [ebp - 0x58], eax
mov dword [ebp + 8], 0
jbe 0x1007f501
mov eax, ebx
mov ebx, 1
and eax, 0x1000
mov dword [ebp - 0x6c], eax
xor edx, edx
mov ecx, esi
test eax, eax
je 0x1007eb2e
call fcn.10080280
mov edi, eax
cmp edi, 0x80000000
je 0x1007f501
mov edx, ebx
mov ecx, esi
call fcn.10080280
mov ebx, eax
jmp 0x1007ecb8
test dword [ebp - 0x30], 0x400
je 0x1007ebe8
call fcn.10080280
mov edi, eax
mov dword [ebp - 0x54], edi
cmp edi, 0x80000000
je 0x1007f501
mov edx, ebx
mov ecx, esi
call fcn.10080280
mov ebx, dword [ebp - 0x40]
mov edx, eax
mov eax, dword [ebp - 0x3c]
mov ecx, dword [ebp - 0x38]
add eax, dword [ebp - 0x50]
add ecx, ebx
cmp dword [ebp - 0x38], ebx
jle 0x1007ebbf
cmp ecx, eax
jge 0x1007eb8e
mov eax, dword [ebp - 0x50]
cmp dword [ebp - 0x38], eax
jge 0x1007eb8e
mov ebx, edi
mov edi, edx
mov eax, ebx
lea ecx, [edx + eax]
sub edx, eax
mov dword [ebp - 0x44], edx
jmp 0x1007ec4b
mov dword [ebp - 0x44], edi
cmp dword [ebp - 0x3c], ebx
jge 0x1007ebb0
mov eax, edi
lea ecx, [edx + edx]
and eax, 1
or ecx, eax
add edi, ecx
mov ebx, ecx
sub ebx, dword [ebp - 0x54]
sar edi, 1
sar ebx, 1
jmp 0x1007ec4b
mov ebx, edx
mov edi, edx
sub ebx, dword [ebp - 0x54]
lea ecx, [edx + ebx]
jmp 0x1007ec4b
cmp ecx, eax
jge 0x1007ebd4
cmp ebx, dword [ebp - 0x50]
jge 0x1007ebd4
mov eax, dword [ebp - 0x54]
mov ebx, edx
lea ecx, [edx + eax]
sub eax, edx
jmp 0x1007ec48
mov eax, dword [ebp - 0x3c]
mov dword [ebp - 0x44], edi
cmp eax, dword [ebp - 0x38]
jl 0x1007eb96
add edi, edx
mov ebx, edx
lea ecx, [edx + edi]
jmp 0x1007ec4b
call fcn.10080810
mov edi, eax
mov dword [ebp - 0x60], edi
cmp edi, 0x80000000
je 0x1007f501
mov edx, ebx
mov ecx, esi
call fcn.10080810
mov edx, dword [ebp - 0x38]
mov ebx, dword [ebp - 0x3c]
mov ecx, dword [ebp - 0x40]
cmp ebx, edx
jg 0x1007ec2f
cmp ebx, ecx
jg 0x1007ec2f
lea ecx, [eax + eax]
mov eax, edi
and eax, 1
or ecx, eax
add edi, ecx
mov ebx, ecx
sub ebx, dword [ebp - 0x60]
sar edi, 1
sar ebx, 1
jmp 0x1007ec44
mov ebx, eax
cmp ecx, edx
jg 0x1007ec3f
sub ebx, dword [ebp - 0x60]
mov edi, eax
lea ecx, [eax + ebx]
jmp 0x1007ec44
add edi, eax
lea ecx, [eax + edi]
mov eax, edi
sub eax, ebx
mov dword [ebp - 0x44], eax
sar ecx, 1
mov eax, ecx
mov dword [ebp - 0x68], ecx
cdq
xor eax, edx
sub eax, edx
mov edx, dword [ebp - 0x3c]
mov ecx, edx
sar ecx, 8
sub eax, ecx
add edx, eax
mov eax, edi
mov dword [ebp - 0x3c], edx
cdq
xor eax, edx
sub eax, edx
mov edx, dword [ebp - 0x40]
mov ecx, edx
sar ecx, 8
sub eax, ecx
add edx, eax
mov eax, ebx
mov dword [ebp - 0x40], edx
cdq
xor eax, edx
sub eax, edx
mov edx, dword [ebp - 0x38]
mov ecx, edx
sar ecx, 8
sub eax, ecx
add edx, eax
mov eax, dword [ebp - 0x44]
mov dword [ebp - 0x38], edx
cdq
xor eax, edx
sub eax, edx
mov edx, dword [ebp - 0x50]
mov ecx, edx
sar ecx, 8
sub eax, ecx
add edx, eax
test dword [ebp - 0x30], 0x4000
mov dword [ebp - 0x50], edx
je 0x1007ecb8
mov edi, dword [ebp - 0x44]
mov ebx, dword [ebp - 0x68]
test dword [ebp - 0x30], 0x8000
lea eax, [esi + 0x8cc]
mov ecx, dword [esi + 0x80]
je 0x1007eecf
test ecx, ecx
je 0x1007f092
nop dword [eax]
dec ecx
mov dword [ebp - 0x54], ecx
mov ecx, dword [eax]
test ecx, ecx
jle 0x1007edbc
mov esi, dword [ebp - 0x2c]
add ecx, esi
and ecx, 7
mov dword [ebp - 0x64], ecx
mov edx, dword [eax + esi*4 + 0x30]
mov ecx, dword [eax + esi*4 + 0x10]
mov dword [ebp - 0x60], edx
mov edx, dword [eax + 8]
imul ecx, edx
add ecx, 0x100
sar ecx, 9
add ecx, edi
mov dword [ebp - 0x68], ecx
mov ecx, dword [eax + 0xc]
mov esi, ecx
imul esi, dword [ebp - 0x60]
mov dword [ebp - 0x44], ecx
mov ecx, dword [ebp - 0x2c]
add esi, 0x100
sar esi, 9
add esi, ebx
mov dword [ebp - 0x5c], esi
mov esi, dword [eax + ecx*4 + 0x10]
mov ecx, dword [ebp - 0x44]
test esi, esi
je 0x1007ed73
test edi, edi
je 0x1007ed73
xor esi, edi
mov esi, dword [ebp - 0x20]
jl 0x1007ed61
lea ecx, [edx + 1]
mov dword [eax + 8], ecx
mov ecx, dword [ebp - 0x44]
cmp edx, 0x200
jne 0x1007ed76
mov dword [eax + 8], edx
jmp 0x1007ed76
lea ecx, [edx - 1]
mov dword [eax + 8], ecx
mov ecx, dword [ebp - 0x44]
cmp edx, esi
jne 0x1007ed76
mov dword [eax + 8], edx
jmp 0x1007ed76
mov esi, dword [ebp - 0x20]
mov edx, dword [ebp - 0x60]
test edx, edx
je 0x1007eda2
test ebx, ebx
je 0x1007eda2
xor edx, ebx
jl 0x1007ed94
inc ecx
mov dword [eax + 0xc], ecx
mov ecx, dword [ebp - 0x44]
cmp ecx, 0x200
jmp 0x1007ed9d
dec ecx
mov dword [eax + 0xc], ecx
mov ecx, dword [ebp - 0x44]
cmp ecx, esi
jne 0x1007eda2
mov dword [eax + 0xc], ecx
mov edx, dword [ebp - 0x64]
mov ecx, dword [ebp - 0x68]
mov edi, ecx
mov dword [eax + edx*4 + 0x10], ecx
mov ecx, dword [ebp - 0x5c]
mov ebx, ecx
mov dword [eax + edx*4 + 0x30], ecx
jmp 0x1007eebc
mov esi, dword [eax + 0x10]
mov ecx, esi
mov edx, dword [eax + 8]
imul ecx, edx
add ecx, 0x100
sar ecx, 9
cmp dword [eax], 0xffffffff
jne 0x1007ee48
add ecx, edi
mov dword [ebp - 0x68], ecx
test esi, esi
je 0x1007edff
test edi, edi
je 0x1007edff
xor edi, esi
jl 0x1007edf1
lea ecx, [edx + 1]
cmp edx, 0x200
jmp 0x1007edf7
cmp edx, dword [ebp - 0x20]
lea ecx, [edx - 1]
mov dword [eax + 8], ecx
jne 0x1007edff
mov dword [eax + 8], edx
mov ecx, dword [eax + 0xc]
mov edx, ecx
mov esi, dword [ebp - 0x68]
mov edi, esi
imul edx, esi
mov dword [ebp - 0x60], ecx
add edx, 0x100
sar edx, 9
add edx, ebx
test esi, esi
je 0x1007ee44
test ebx, ebx
je 0x1007ee44
xor esi, ebx
jl 0x1007ee35
inc ecx
mov dword [eax + 0xc], ecx
mov ecx, dword [ebp - 0x60]
cmp ecx, 0x200
jmp 0x1007ee3f
dec ecx
mov dword [eax + 0xc], ecx
mov ecx, dword [ebp - 0x60]
cmp ecx, dword [ebp - 0x20]
jne 0x1007ee44
mov dword [eax + 0xc], ecx
mov ebx, edx
jmp 0x1007eeb9
add ecx, ebx
mov dword [ebp - 0x68], ecx
test esi, esi
je 0x1007ee72
test ebx, ebx
je 0x1007ee72
xor ebx, esi
jl 0x1007ee64
lea ecx, [edx + 1]
cmp edx, 0x200
jmp 0x1007ee6a
cmp edx, dword [ebp - 0x20]
lea ecx, [edx - 1]
mov dword [eax + 8], ecx
jne 0x1007ee72
mov dword [eax + 8], edx
mov ecx, dword [eax + 0xc]
mov edx, ecx
mov esi, dword [ebp - 0x68]
mov ebx, esi
imul edx, esi
mov dword [ebp - 0x60], ecx
add edx, 0x100
sar edx, 9
add edx, edi
test esi, esi
je 0x1007eeb7
test edi, edi
je 0x1007eeb7
xor esi, edi
jl 0x1007eea8
inc ecx
mov dword [eax + 0xc], ecx
mov ecx, dword [ebp - 0x60]
cmp ecx, 0x200
jmp 0x1007eeb2
dec ecx
mov dword [eax + 0xc], ecx
mov ecx, dword [ebp - 0x60]
cmp ecx, dword [ebp - 0x20]
jne 0x1007eeb7
mov dword [eax + 0xc], ecx
mov edi, edx
mov dword [eax + 0x10], edx
mov ecx, dword [ebp - 0x54]
add eax, 0x60
test ecx, ecx
jne 0x1007ece0
jmp 0x1007f08f
test ecx, ecx
je 0x1007f092
dec ecx
mov dword [ebp - 0x54], ecx
mov ecx, dword [eax]
test ecx, ecx
jle 0x1007ef9a
mov esi, dword [ebp - 0x2c]
add ecx, esi
and ecx, 7
mov dword [ebp - 0x5c], ecx
mov edx, dword [eax + esi*4 + 0x30]
mov dword [ebp - 0x60], edx
mov edx, dword [eax + 8]
mov ecx, edx
imul ecx, dword [eax + esi*4 + 0x10]
sub ecx, 0xffffff80
sar ecx, 8
add ecx, edi
mov dword [ebp - 0x64], ecx
mov ecx, dword [eax + 0xc]
imul ecx, dword [ebp - 0x60]
sub ecx, 0xffffff80
sar ecx, 8
add ecx, ebx
mov dword [ebp - 0x44], ecx
mov ecx, dword [eax + esi*4 + 0x10]
mov esi, dword [eax + 0xc]
test ecx, ecx
je 0x1007ef56
test edi, edi
je 0x1007ef56
xor ecx, edi
mov edi, dword [ebp - 0x20]
jl 0x1007ef47
lea ecx, [edx + 1]
mov dword [eax + 8], ecx
cmp edx, 0x100
jne 0x1007ef59
mov dword [eax + 8], edx
jmp 0x1007ef59
lea ecx, [edx - 1]
mov dword [eax + 8], ecx
cmp edx, edi
jne 0x1007ef59
mov dword [eax + 8], edx
jmp 0x1007ef59
mov edi, dword [ebp - 0x20]
mov ecx, dword [ebp - 0x60]
test ecx, ecx
je 0x1007ef80
test ebx, ebx
je 0x1007ef80
xor ecx, ebx
jl 0x1007ef73
lea ecx, [esi + 1]
cmp esi, 0x100
jmp 0x1007ef78
lea ecx, [esi - 1]
cmp esi, edi
mov dword [eax + 0xc], ecx
jne 0x1007ef80
mov dword [eax + 0xc], esi
mov edx, dword [ebp - 0x5c]
mov ecx, dword [ebp - 0x64]
mov edi, ecx
mov dword [eax + edx*4 + 0x10], ecx
mov ecx, dword [ebp - 0x44]
mov ebx, ecx
mov dword [eax + edx*4 + 0x30], ecx
jmp 0x1007f081
mov ecx, dword [eax + 0x10]
mov esi, ecx
mov edx, dword [eax + 8]
imul esi, edx
sub esi, 0xffffff80
sar esi, 8
cmp dword [eax], 0xffffffff
jne 0x1007f018
add esi, edi
mov dword [ebp - 0x68], esi
test ecx, ecx
je 0x1007efda
test edi, edi
je 0x1007efda
xor ecx, edi
jl 0x1007efcc
lea ecx, [edx + 1]
cmp edx, 0x100
jmp 0x1007efd2
cmp edx, dword [ebp - 0x20]
lea ecx, [edx - 1]
mov dword [eax + 8], ecx
jne 0x1007efda
mov dword [eax + 8], edx
mov ecx, dword [ebp - 0x68]
mov edi, ecx
mov esi, dword [eax + 0xc]
mov edx, esi
imul edx, ecx
sub edx, 0xffffff80
sar edx, 8
add edx, ebx
test ecx, ecx
je 0x1007f014
test ebx, ebx
je 0x1007f014
xor ecx, ebx
jl 0x1007f006
lea ecx, [esi + 1]
cmp esi, 0x100
jmp 0x1007f00c
cmp esi, dword [ebp - 0x20]
lea ecx, [esi - 1]
mov dword [eax + 0xc], ecx
jne 0x1007f014
mov dword [eax + 0xc], esi
mov ebx, edx
jmp 0x1007f07e
add esi, ebx
mov dword [ebp - 0x68], esi
test ecx, ecx
je 0x1007f042
test ebx, ebx
je 0x1007f042
xor ecx, ebx
jl 0x1007f034
lea ecx, [edx + 1]
cmp edx, 0x100
jmp 0x1007f03a
cmp edx, dword [ebp - 0x20]
lea ecx, [edx - 1]
mov dword [eax + 8], ecx
jne 0x1007f042
mov dword [eax + 8], edx
mov ecx, dword [ebp - 0x68]
mov ebx, ecx
mov esi, dword [eax + 0xc]
mov edx, esi
imul edx, ecx
sub edx, 0xffffff80
sar edx, 8
add edx, edi
test ecx, ecx
je 0x1007f07c
test edi, edi
je 0x1007f07c
xor ecx, edi
jl 0x1007f06e
lea ecx, [esi + 1]
cmp esi, 0x100
jmp 0x1007f074
cmp esi, dword [ebp - 0x20]
lea ecx, [esi - 1]
mov dword [eax + 0xc], ecx
jne 0x1007f07c
mov dword [eax + 0xc], esi
mov edi, edx
mov dword [eax + 0x10], edx
mov ecx, dword [ebp - 0x54]
add eax, 0x60
test ecx, ecx
jne 0x1007eed7
mov esi, dword [ebp - 0x4c]
mov eax, dword [ebp - 0x2c]
inc eax
and eax, 7
mov dword [ebp - 0x2c], eax
mov eax, dword [ebp - 0x30]
test eax, 0x4000
je 0x1007f0bd
mov eax, edi
lea ecx, [ebx + ebx]
and eax, 1
or ecx, eax
mov eax, dword [ebp - 0x30]
mov ebx, ecx
sub ebx, edi
add edi, ecx
sar ebx, 1
sar edi, 1
test al, 0x40
je 0x1007f1d3
cmp dword [esi + 0x8a0], 8
jl 0x1007f115
mov eax, dword [esi + 0x48]
test eax, eax
je 0x1007f0de
mov ecx, dword [esi + 0x3c]
dec eax
mov dword [esi + 0x48], eax
jmp 0x1007f105
mov eax, dword [esi + 0x30]
inc eax
mov dword [esi + 0x30], eax
cmp eax, dword [esi + 0x2c]
jne 0x1007f0f8
lea eax, [esi + 0x24]
push eax
mov eax, dword [eax]
call eax
mov eax, dword [esi + 0x30]
add esp, 4
mov dword [esi + 0x48], 7
movzx ecx, byte [eax]
mov dword [esi + 0x3c], ecx
mov eax, ecx
shr eax, 1
mov dword [esi + 0x3c], eax
test cl, 1
jne 0x1007f1a0
mov ecx, dword [esi + 0x48]
cmp ecx, 8
jge 0x1007f152
mov eax, dword [esi + 0x30]
inc eax
mov dword [esi + 0x30], eax
cmp eax, dword [esi + 0x2c]
jne 0x1007f137
lea eax, [esi + 0x24]
push eax
mov eax, dword [eax]
call eax
mov eax, dword [esi + 0x30]
add esp, 4
movzx edx, byte [eax]
mov ecx, dword [esi + 0x48]
shl edx, cl
add ecx, 8
or edx, dword [esi + 0x3c]
mov dword [esi + 0x3c], edx
mov dword [esi + 0x48], ecx
cmp ecx, 8
jl 0x1007f120
jmp 0x1007f155
mov edx, dword [esi + 0x3c]
lea eax, [ecx - 8]
mov dword [ebp - 0x68], eax
mov dword [esi + 0x48], eax
cmp ecx, 0x20
jle 0x1007f175
mov eax, dword [esi + 0x30]
mov ecx, 8
sub cl, byte [ebp - 0x68]
movzx eax, byte [eax]
shr eax, cl
jmp 0x1007f17a
mov eax, edx
shr eax, 8
mov dword [esi + 0x3c], eax
movzx eax, dl
cmp eax, dword [esi + 0x89c]
je 0x1007f19a
mov dword [esi + 0x89c], eax
mov dword [esi + 0x8a0], 0
jmp 0x1007f1a0
inc dword [esi + 0x8a0]
mov eax, dword [esi + 0x89c]
mov edx, dword [ebp - 0x58]
mov ecx, dword [ebp - 0x10]
sar eax, 4
shl edi, 4
add edi, eax
shl ebx, 4
mov dword [edx], edi
mov eax, dword [esi + 0x89c]
and eax, 0xf
add ebx, eax
lea eax, [edi + ecx*2]
add eax, ecx
lea ecx, [ebx + eax*2]
add ecx, eax
mov dword [ebp - 0x10], ecx
jmp 0x1007f1ef
mov ecx, dword [ebp - 0x10]
mov edx, dword [ebp - 0x58]
lea eax, [edi + ecx*2]
add eax, ecx
lea ecx, [ebx + eax*2]
add ecx, eax
mov dword [ebp - 0x10], ecx
mov ecx, dword [ebp - 0x28]
shl edi, cl
mov dword [edx], edi
shl ebx, cl
mov eax, dword [ebp - 0x6c]
lea ecx, [edx + 8]
mov dword [ebp - 0x58], ecx
mov ecx, dword [ebp + 8]
inc ecx
mov dword [edx + 4], ebx
mov ebx, 1
mov dword [ebp + 8], ecx
cmp ecx, dword [ebp - 0xc]
jb 0x1007eb03
jmp 0x1007f501
mov dword [ebp - 0x60], eax
xor eax, eax
mov dword [ebp + 8], eax
cmp dword [ebp - 0xc], eax
jbe 0x1007f501
lea edi, [eax + 1]
mov eax, dword [ebp - 0x78]
mov dword [ebp - 0x5c], eax
mov eax, dword [ebp - 0x7c]
mov dword [ebp - 0x44], eax
mov eax, dword [ebp - 0x80]
mov dword [ebp - 0x20], eax
mov eax, dword [ebp - 0x84]
mov dword [ebp - 0x54], eax
xor edx, edx
mov ecx, esi
call fcn.10080cb0
mov ebx, eax
mov dword [ebp - 0x58], ebx
cmp ebx, 0x80000000
je 0x1007f501
mov eax, dword [ebp - 0x3c]
cmp eax, dword [ebp - 0x38]
jg 0x1007f28a
cmp eax, dword [ebp - 0x40]
jg 0x1007f28a
mov edx, edi
mov ecx, esi
call fcn.10080cb0
mov ecx, ebx
add eax, eax
and ecx, 1
or eax, ecx
add ebx, eax
mov edi, eax
sub edi, dword [ebp - 0x58]
sar ebx, 1
sar edi, 1
jmp 0x1007f2ac
mov edx, edi
mov ecx, esi
call fcn.10080cb0
mov ebx, eax
mov eax, dword [ebp - 0x38]
mov edi, ebx
cmp dword [ebp - 0x40], eax
jg 0x1007f2a4
sub edi, dword [ebp - 0x58]
jmp 0x1007f2a9
mov ebx, dword [ebp - 0x58]
add ebx, edi
lea eax, [edi + ebx]
sar eax, 1
cdq
xor eax, edx
sub eax, edx
mov edx, dword [ebp - 0x3c]
mov ecx, edx
sar ecx, 8
sub eax, ecx
add edx, eax
mov eax, ebx
mov dword [ebp - 0x3c], edx
cdq
xor eax, edx
sub eax, edx
mov edx, dword [ebp - 0x40]
mov ecx, edx
sar ecx, 8
sub eax, ecx
add edx, eax
mov eax, edi
mov dword [ebp - 0x40], edx
cdq
xor eax, edx
sub eax, edx
mov edx, dword [ebp - 0x38]
mov ecx, edx
sar ecx, 8
sub eax, ecx
xor ecx, ecx
add edx, eax
mov eax, dword [ebp - 0x34]
imul eax, dword [ebp - 0x5c]
mov dword [ebp - 0x38], edx
mov edx, dword [ebp - 0x14]
imul edx, dword [ebp - 0x20]
sub eax, 0xffffff80
sar eax, 8
add eax, dword [ebp - 0x44]
sub edx, 0xffffff80
add eax, edi
sar edx, 8
add edx, ebx
mov dword [ebp - 0x6c], eax
add edx, dword [ebp - 0x54]
test ebx, ebx
mov ebx, dword [ebp - 0x14]
setg cl
xor eax, eax
cmp dword [ebp - 0x20], eax
setge al
cmp eax, ecx
mov eax, ebx
jne 0x1007f33b
inc ebx
mov dword [ebp - 0x14], ebx
cmp eax, 0x100
jne 0x1007f347
dec ebx
jmp 0x1007f344
dec ebx
mov dword [ebp - 0x14], ebx
test eax, eax
jne 0x1007f347
inc ebx
mov dword [ebp - 0x14], ebx
mov ebx, dword [ebp - 0x34]
xor ecx, ecx
cmp dword [ebp - 0x5c], ecx
setge cl
xor eax, eax
test edi, edi
setg al
cmp ecx, eax
mov eax, ebx
jne 0x1007f36d
inc ebx
mov dword [ebp - 0x34], ebx
cmp eax, 0x100
jne 0x1007f379
dec ebx
jmp 0x1007f376
dec ebx
mov dword [ebp - 0x34], ebx
test eax, eax
jne 0x1007f379
inc ebx
mov dword [ebp - 0x34], ebx
mov ecx, dword [ebp - 0x54]
mov eax, edx
mov edx, dword [ebp - 0x44]
sub eax, ecx
mov edi, dword [ebp - 0x6c]
add ecx, eax
sub edi, edx
mov dword [ebp - 0x20], eax
add edx, edi
mov dword [ebp - 0x80], eax
test byte [ebp - 0x30], 0x40
mov dword [ebp - 0x54], ecx
mov dword [ebp - 0x84], ecx
mov dword [ebp - 0x5c], edi
mov dword [ebp - 0x78], edi
mov dword [ebp - 0x44], edx
mov dword [ebp - 0x7c], edx
je 0x1007f4c3
cmp dword [esi + 0x8a0], 8
jl 0x1007f408
mov eax, dword [esi + 0x48]
test eax, eax
je 0x1007f3ca
mov ecx, dword [esi + 0x3c]
dec eax
mov dword [esi + 0x48], eax
jmp 0x1007f3f1
mov eax, dword [esi + 0x30]
inc eax
mov dword [esi + 0x30], eax
cmp eax, dword [esi + 0x2c]
jne 0x1007f3e4
lea eax, [esi + 0x24]
push eax
mov eax, dword [eax]
call eax
mov eax, dword [esi + 0x30]
add esp, 4
mov dword [esi + 0x48], 7
movzx ecx, byte [eax]
mov dword [esi + 0x3c], ecx
mov eax, ecx
shr ecx, 1
mov dword [esi + 0x3c], ecx
and eax, 1
je 0x1007f408
mov ecx, dword [esi + 0x89c]
jmp 0x1007f493
mov ecx, dword [esi + 0x48]
cmp ecx, 8
jge 0x1007f445
mov eax, dword [esi + 0x30]
inc eax
mov dword [esi + 0x30], eax
cmp eax, dword [esi + 0x2c]
jne 0x1007f42a
lea eax, [esi + 0x24]
push eax
mov eax, dword [eax]
call eax
mov eax, dword [esi + 0x30]
add esp, 4
movzx edx, byte [eax]
mov ecx, dword [esi + 0x48]
shl edx, cl
add ecx, 8
or edx, dword [esi + 0x3c]
mov dword [esi + 0x3c], edx
mov dword [esi + 0x48], ecx
cmp ecx, 8
jl 0x1007f413
jmp 0x1007f448
mov edx, dword [esi + 0x3c]
lea ebx, [ecx - 8]
mov dword [esi + 0x48], ebx
cmp ecx, 0x20
jle 0x1007f464
mov eax, dword [esi + 0x30]
mov ecx, 8
sub cl, bl
movzx eax, byte [eax]
shr eax, cl
jmp 0x1007f469
mov eax, edx
shr eax, 8
mov dword [esi + 0x3c], eax
mov eax, dword [esi + 0x89c]
movzx ecx, dl
cmp ecx, eax
je 0x1007f48b
mov dword [esi + 0x89c], ecx
mov dword [esi + 0x8a0], 0
jmp 0x1007f493
inc dword [esi + 0x8a0]
mov ecx, eax
mov eax, dword [ebp - 0x54]
mov edi, dword [ebp - 0x60]
mov ebx, dword [ebp - 0x10]
shl eax, 4
sar ecx, 4
add ecx, eax
mov eax, dword [ebp - 0x44]
mov dword [edi], ecx
mov edx, dword [esi + 0x89c]
shl eax, 4
and edx, 0xf
add edx, eax
lea eax, [ecx + ebx*2]
add eax, ebx
lea ebx, [edx + eax*2]
add ebx, eax
jmp 0x1007f4de
mov ebx, dword [ebp - 0x10]
mov edi, dword [ebp - 0x60]
lea eax, [ecx + ebx*2]
add eax, ebx
lea ebx, [edx + eax*2]
add ebx, eax
mov eax, ecx
mov ecx, dword [ebp - 0x28]
shl eax, cl
mov dword [edi], eax
shl edx, cl
mov ecx, dword [ebp + 8]
lea eax, [edi + 4]
lea edi, [eax + 4]
mov dword [ebp - 0x10], ebx
inc ecx
mov dword [ebp - 0x60], edi
mov edi, 1
mov dword [eax], edx
mov dword [ebp + 8], ecx
cmp ecx, dword [ebp - 0xc]
jb 0x1007f244
mov eax, dword [ebp - 0x40]
mov ebx, dword [ebp - 0xc]
mov edx, dword [ebp - 0x24]
mov dword [esi + 0x890], eax
mov eax, dword [ebp - 0x38]
mov dword [esi + 0x894], eax
mov eax, dword [ebp - 0x3c]
mov dword [esi + 0x88c], eax
mov eax, dword [ebp - 0x50]
mov dword [esi + 0x898], eax
mov eax, dword [ebp - 0x18]
mov dword [ebp - 0x18], eax
jmp 0x1007f5f6
mov eax, dword [ebp - 0x24]
test ecx, ecx
je 0x1007f926
test bl, 2
je 0x1007f68b
cmp dword [ebp - 0xc], 0
mov dword [ebp - 0x60], eax
mov dword [ebp + 8], 0
jbe 0x1007f5ea
mov ebx, dword [ebp - 0x80]
mov edi, dword [ebp - 0x84]
xor edx, edx
mov ecx, esi
call fcn.10080cb0
cmp eax, 0x80000000
je 0x1007f5e7
add ebx, eax
mov eax, dword [ebp - 0x10]
add edi, ebx
mov dword [ebp - 0x80], ebx
mov dword [ebp - 0x84], edi
lea ecx, [edi + eax*2]
add ecx, eax
mov dword [ebp - 0x10], ecx
cmp edi, dword [ebp - 0x3c]
jge 0x1007f5ae
mov eax, dword [ebp - 0x1c]
mov ecx, dword [ebp - 8]
neg eax
mov edx, dword [ebp - 0x44]
cmp edi, eax
mov eax, 1
cmovl ecx, eax
mov dword [ebp - 8], ecx
jmp 0x1007f5d0
cmp edi, dword [ebp - 0x38]
jle 0x1007f5c9
mov eax, dword [ebp - 8]
mov ecx, 1
cmp edi, dword [ebp - 0x1c]
mov edx, dword [ebp - 0x40]
cmovg eax, ecx
mov dword [ebp - 8], eax
jmp 0x1007f5d0
mov ecx, dword [ebp - 0x28]
mov edx, edi
shl edx, cl
mov ecx, dword [ebp - 0x60]
lea eax, [ecx + 4]
mov dword [ecx], edx
mov ecx, dword [ebp + 8]
inc ecx
mov dword [ebp - 0x60], eax
mov dword [ebp + 8], ecx
cmp ecx, dword [ebp - 0xc]
jb 0x1007f567
mov ecx, dword [ebp - 0x18]
mov dword [ebp - 0x18], ecx
mov edx, dword [ebp - 0x24]
mov ebx, dword [ebp - 0xc]
mov eax, dword [ebp - 0x18]
cmp word [esi + 0xa], 0
je 0x1007f603
test byte [ebp - 0x30], 0x80
je 0x1007f629
xor eax, 1
mov ecx, edx
inc eax
imul eax, ebx
lea edi, [edx + eax*4]
cmp edx, edi
jae 0x1007f629
mov edx, dword [ecx]
mov eax, dword [ebp - 0x1c]
cmp edx, eax
jg 0x1007f62f
neg eax
cmp edx, eax
jl 0x1007f62f
add ecx, 0xc
cmp ecx, edi
jb 0x1007f613
cmp dword [ebp - 8], 0
je 0x1007f64b
mov eax, dword [ebp - 0x18]
xor eax, 1
inc eax
imul eax, ebx
shl eax, 2
push eax
mov eax, dword [ebp - 0x24]
push 0
push eax
call fcn.1009e470
add esp, 0xc
mov eax, dword [ebp + 8]
test eax, eax
je 0x10080244
mov ecx, dword [ebp - 0x48]
add dword [esi + 0x7c], eax
mov eax, dword [esi + 0x7c]
cmp eax, dword [ecx + 0x8c]
jne 0x10080244
cmp word [esi + 8], 3
jne 0x10080109
cmp dword [ecx + 0x98], 0
je 0x100800fb
mov eax, dword [esi + 0x18]
jmp 0x100800fe
test ebx, 0x410
je 0x1007f82f
cmp dword [ebp - 0xc], 0
mov dword [ebp - 0x58], eax
mov dword [ebp + 8], 0
jbe 0x1007f5ea
mov eax, ebx
and eax, 0x400
mov dword [ebp - 0x6c], eax
xor edx, edx
mov ecx, esi
test eax, eax
je 0x1007f6c8
lea eax, [ebp - 0x74]
push eax
call fcn.10080f60
jmp 0x1007f6cd
call fcn.10080cb0
mov ebx, eax
cmp ebx, 0x80000000
je 0x1007f5e7
mov eax, dword [esi + 0x80]
lea edx, [esi + 0x8cc]
mov dword [ebp - 0x60], eax
test eax, eax
je 0x1007f773
mov eax, dword [ebp - 0x2c]
mov esi, dword [ebp - 0x60]
lea eax, [eax*4 + 0x10]
mov dword [ebp - 0x5c], eax
mov eax, dword [eax + edx]
dec esi
mov edi, dword [edx + 8]
mov ecx, eax
sar ecx, 7
movzx eax, ax
and ecx, 0xfffffe00
imul eax, edi
imul ecx, edi
mov dword [ebp - 0x60], esi
mov esi, dword [ebp - 0x5c]
sar eax, 7
inc eax
add ecx, eax
mov eax, dword [esi + edx]
mov esi, dword [ebp - 0x60]
sar ecx, 1
add ecx, ebx
test eax, eax
je 0x1007f758
test ebx, ebx
je 0x1007f758
xor eax, ebx
jl 0x1007f74a
lea eax, [edi + 1]
cmp edi, 0x100
jmp 0x1007f750
cmp edi, dword [ebp - 0x20]
lea eax, [edi - 1]
mov dword [edx + 8], eax
jne 0x1007f758
mov dword [edx + 8], edi
mov eax, dword [edx]
mov ebx, ecx
add eax, dword [ebp - 0x2c]
and eax, 7
mov dword [edx + eax*4 + 0x10], ecx
add edx, 0x60
mov eax, dword [ebp - 0x5c]
test esi, esi
jne 0x1007f702
mov esi, dword [ebp - 0x4c]
mov eax, dword [ebp - 0x2c]
inc eax
and eax, 7
mov dword [ebp - 0x2c], eax
mov eax, dword [ebp - 0x10]
lea edi, [eax + eax*2]
mov eax, dword [ebp - 0x30]
test al, al
jns 0x1007f7c5
test eax, 0x100
je 0x1007f7b4
mov eax, dword [esi + 0x8a8]
mov ecx, dword [ebp - 0x74]
add eax, ecx
neg ecx
add ebx, eax
mov dword [esi + 0x8a8], ecx
mov edx, ebx
mov ecx, dword [ebp - 0x28]
shl edx, cl
add edi, ebx
mov dword [ebp - 0x10], edi
jmp 0x1007f80c
add ebx, dword [ebp - 0x74]
mov ecx, dword [ebp - 0x28]
mov edx, ebx
shl edx, cl
add edi, ebx
mov dword [ebp - 0x10], edi
jmp 0x1007f80c
lea eax, [edi + ebx]
mov dword [ebp - 0x10], eax
cmp ebx, dword [ebp - 0x3c]
jge 0x1007f7ea
mov eax, dword [ebp - 0x1c]
mov edi, dword [ebp - 8]
neg eax
mov edx, dword [ebp - 0x44]
cmp ebx, eax
mov eax, 1
cmovl edi, eax
mov dword [ebp - 8], edi
jmp 0x1007f80c
cmp ebx, dword [ebp - 0x38]
jle 0x1007f805
mov eax, dword [ebp - 8]
mov ecx, 1
cmp ebx, dword [ebp - 0x1c]
mov edx, dword [ebp - 0x40]
cmovg eax, ecx
mov dword [ebp - 8], eax
jmp 0x1007f80c
mov ecx, dword [ebp - 0x28]
mov edx, ebx
shl edx, cl
mov ecx, dword [ebp - 0x58]
lea eax, [ecx + 4]
mov dword [ecx], edx
mov ecx, dword [ebp + 8]
inc ecx
mov dword [ebp - 0x58], eax
mov eax, dword [ebp - 0x6c]
mov dword [ebp + 8], ecx
cmp ecx, dword [ebp - 0xc]
jb 0x1007f6b5
jmp 0x1007f5e7
mov dword [ebp - 0x5c], eax
xor eax, eax
mov dword [ebp + 8], eax
cmp dword [ebp - 0xc], eax
jbe 0x1007f5ea
mov eax, dword [ebp - 0x84]
mov edi, dword [ebp - 0x80]
mov dword [ebp - 0x60], eax
nop dword [eax]
xor edx, edx
mov ecx, esi
call fcn.10080cb0
mov ebx, eax
cmp ebx, 0x80000000
je 0x1007f5e7
mov edx, dword [ebp - 0x14]
xor ecx, ecx
imul edx, edi
sub edx, 0xffffff80
sar edx, 8
add edx, dword [ebp - 0x60]
add edx, ebx
test edi, edi
setns cl
xor eax, eax
test ebx, ebx
mov ebx, dword [ebp - 0x14]
setg al
cmp ecx, eax
mov eax, ebx
jne 0x1007f89d
inc ebx
mov dword [ebp - 0x14], ebx
cmp eax, 0x100
jne 0x1007f8a9
dec ebx
jmp 0x1007f8a6
dec ebx
mov dword [ebp - 0x14], ebx
test eax, eax
jne 0x1007f8a9
inc ebx
mov dword [ebp - 0x14], ebx
mov eax, edx
mov edi, edx
sub edi, dword [ebp - 0x60]
mov dword [ebp - 0x60], eax
mov dword [ebp - 0x84], eax
mov eax, dword [ebp - 0x10]
mov dword [ebp - 0x80], edi
lea ecx, [edx + eax*2]
add ecx, eax
mov dword [ebp - 0x10], ecx
cmp edx, dword [ebp - 0x3c]
jge 0x1007f8e6
mov eax, dword [ebp - 0x1c]
mov ebx, dword [ebp - 8]
neg eax
cmp edx, eax
mov edx, dword [ebp - 0x44]
mov eax, 1
cmovl ebx, eax
mov dword [ebp - 8], ebx
jmp 0x1007f906
cmp edx, dword [ebp - 0x38]
jle 0x1007f901
cmp edx, dword [ebp - 0x1c]
mov ecx, 1
mov eax, dword [ebp - 8]
mov edx, dword [ebp - 0x40]
cmovg eax, ecx
mov dword [ebp - 8], eax
jmp 0x1007f906
mov ecx, dword [ebp - 0x28]
shl edx, cl
mov ecx, dword [ebp - 0x5c]
lea eax, [ecx + 4]
mov dword [ecx], edx
mov ecx, dword [ebp + 8]
inc ecx
mov dword [ebp - 0x5c], eax
mov dword [ebp + 8], ecx
cmp ecx, dword [ebp - 0xc]
jb 0x1007f850
jmp 0x1007f5e7
test bl, 2
je 0x1007fa66
cmp dword [ebp - 0xc], 0
mov dword [ebp - 0x58], eax
mov dword [ebp + 8], 0
jbe 0x1007f5ea
mov eax, dword [ebp - 0x78]
mov ebx, dword [ebp - 0x7c]
mov edi, dword [ebp - 0x84]
mov dword [ebp - 0x5c], eax
mov eax, dword [ebp - 0x80]
mov dword [ebp - 0x60], eax
nop dword [eax + eax]
xor edx, edx
mov ecx, esi
call fcn.10080cb0
cmp eax, 0x80000000
je 0x1007f5e7
mov ecx, dword [ebp - 0x60]
add ecx, eax
add edi, ecx
mov dword [ebp - 0x60], ecx
mov dword [ebp - 0x80], ecx
mov ecx, dword [ebp - 0x10]
mov dword [ebp - 0x84], edi
lea eax, [edi + ecx*2]
add eax, ecx
mov dword [ebp - 0x6c], eax
cmp edi, dword [ebp - 0x3c]
jge 0x1007f9b1
mov eax, dword [ebp - 0x1c]
mov ecx, dword [ebp - 8]
neg eax
cmp edi, eax
mov eax, 1
cmovl ecx, eax
mov eax, dword [ebp - 0x44]
mov dword [ebp - 8], ecx
jmp 0x1007f9d3
cmp edi, dword [ebp - 0x38]
jle 0x1007f9cc
mov eax, dword [ebp - 8]
mov ecx, 1
cmp edi, dword [ebp - 0x1c]
cmovg eax, ecx
mov dword [ebp - 8], eax
mov eax, dword [ebp - 0x40]
jmp 0x1007f9d3
mov ecx, dword [ebp - 0x28]
mov eax, edi
shl eax, cl
mov edx, dword [ebp - 0x58]
lea ecx, [edx + 4]
mov dword [ebp - 0x68], ecx
mov ecx, esi
mov dword [edx], eax
mov edx, 1
call fcn.10080cb0
mov ecx, dword [ebp - 0x5c]
add ecx, eax
mov eax, dword [ebp - 0x6c]
add ebx, ecx
mov dword [ebp - 0x5c], ecx
mov dword [ebp - 0x78], ecx
mov dword [ebp - 0x7c], ebx
lea ecx, [ebx + eax*2]
add ecx, eax
mov dword [ebp - 0x10], ecx
cmp ebx, dword [ebp - 0x3c]
jge 0x1007fa24
mov eax, dword [ebp - 0x1c]
mov ecx, dword [ebp - 8]
neg eax
cmp ebx, eax
mov eax, 1
cmovl ecx, eax
mov eax, dword [ebp - 0x44]
mov dword [ebp - 8], ecx
jmp 0x1007fa46
cmp ebx, dword [ebp - 0x38]
jle 0x1007fa3f
mov eax, dword [ebp - 8]
mov ecx, 1
cmp ebx, dword [ebp - 0x1c]
cmovg eax, ecx
mov dword [ebp - 8], eax
mov eax, dword [ebp - 0x40]
jmp 0x1007fa46
mov ecx, dword [ebp - 0x28]
mov eax, ebx
shl eax, cl
mov ecx, dword [ebp - 0x68]
lea edx, [ecx + 4]
mov dword [ebp - 0x58], edx
mov dword [ecx], eax
mov ecx, dword [ebp + 8]
inc ecx
mov dword [ebp + 8], ecx
cmp ecx, dword [ebp - 0xc]
jb 0x1007f960
jmp 0x1007f5e7
test ebx, 0x410
je 0x1007fd38
cmp dword [ebp - 0xc], 0
mov dword [ebp - 0x50], eax
mov dword [ebp + 8], 0
jbe 0x1007f5ea
mov eax, ebx
mov ebx, 1
and eax, 0x400
mov dword [ebp - 0x6c], eax
xor edx, edx
mov ecx, esi
test eax, eax
je 0x1007fab7
lea eax, [ebp - 0x74]
push eax
call fcn.10080f60
mov edi, eax
mov edx, ebx
lea eax, [ebp - 0x70]
mov ecx, esi
push eax
call fcn.10080f60
jmp 0x1007fac7
call fcn.10080cb0
mov edx, ebx
mov ecx, esi
mov edi, eax
call fcn.10080cb0
mov ebx, eax
cmp edi, 0x80000000
je 0x1007f5e7
mov eax, dword [esi + 0x80]
lea edx, [esi + 0x8cc]
mov dword [ebp - 0x60], eax
test eax, eax
je 0x1007fbf5
mov eax, dword [ebp - 0x2c]
mov esi, dword [ebp - 0x60]
lea eax, [eax*4 + 0x30]
mov dword [ebp - 0x68], eax
nop dword [eax]
mov ecx, dword [eax + edx - 0x20]
dec esi
mov eax, dword [eax + edx]
mov dword [ebp - 0x58], eax
mov eax, dword [edx]
add eax, dword [ebp - 0x2c]
and eax, 7
sar ecx, 7
mov dword [ebp - 0x64], eax
and ecx, 0xfffffe00
mov eax, dword [edx + 8]
imul ecx, eax
mov dword [ebp - 0x60], esi
mov esi, dword [ebp - 0x68]
mov dword [ebp - 0x5c], eax
inc ecx
mov eax, dword [esi + edx - 0x20]
movzx eax, ax
imul eax, dword [ebp - 0x5c]
sar eax, 7
add eax, ecx
mov ecx, dword [esi + edx - 0x20]
mov esi, dword [ebp - 0x60]
sar eax, 1
add eax, edi
mov dword [ebp - 0x54], eax
test ecx, ecx
je 0x1007fb78
test edi, edi
je 0x1007fb78
xor edi, ecx
mov ecx, dword [ebp - 0x5c]
jl 0x1007fb67
lea eax, [ecx + 1]
cmp ecx, 0x100
jmp 0x1007fb6d
cmp ecx, dword [ebp - 0x20]
lea eax, [ecx - 1]
mov dword [edx + 8], eax
mov eax, dword [ebp - 0x54]
jne 0x1007fb78
mov dword [edx + 8], ecx
mov ecx, dword [ebp - 0x64]
mov edi, eax
mov dword [edx + ecx*4 + 0x10], eax
mov ecx, dword [ebp - 0x58]
mov eax, dword [edx + 0xc]
mov dword [ebp - 0x60], eax
sar ecx, 7
and ecx, 0xfffffe00
imul ecx, eax
mov eax, dword [ebp - 0x58]
movzx eax, ax
imul eax, dword [ebp - 0x60]
sar eax, 7
inc eax
add eax, ecx
mov ecx, dword [ebp - 0x58]
sar eax, 1
add eax, ebx
mov dword [ebp - 0x54], eax
test ecx, ecx
je 0x1007fbdb
test ebx, ebx
je 0x1007fbdb
xor ecx, ebx
mov ecx, dword [ebp - 0x60]
jl 0x1007fbca
lea eax, [ecx + 1]
cmp ecx, 0x100
jmp 0x1007fbd0
cmp ecx, dword [ebp - 0x20]
lea eax, [ecx - 1]
mov dword [edx + 0xc], eax
mov eax, dword [ebp - 0x54]
jne 0x1007fbdb
mov dword [edx + 0xc], ecx
mov ecx, dword [ebp - 0x64]
mov ebx, eax
mov dword [edx + ecx*4 + 0x30], eax
add edx, 0x60
mov eax, dword [ebp - 0x68]
test esi, esi
jne 0x1007fb00
mov esi, dword [ebp - 0x4c]
mov eax, dword [ebp - 0x2c]
inc eax
and eax, 7
mov dword [ebp - 0x2c], eax
mov eax, dword [ebp - 0x30]
mov edx, eax
and edx, 0x80
je 0x1007fc49
test eax, 0x100
je 0x1007fc43
mov ecx, dword [ebp - 0x74]
mov eax, dword [esi + 0x8a8]
add eax, ecx
neg ecx
add edi, eax
mov eax, dword [esi + 0x8ac]
add eax, dword [ebp - 0x70]
add ebx, eax
mov dword [esi + 0x8a8], ecx
mov eax, dword [ebp - 0x70]
neg eax
mov dword [esi + 0x8ac], eax
mov eax, dword [ebp - 0x30]
jmp 0x1007fc49
add edi, dword [ebp - 0x74]
add ebx, dword [ebp - 0x70]
test eax, 0x4000
je 0x1007fc64
mov ecx, edi
lea eax, [ebx + ebx]
and ecx, 1
or ecx, eax
mov ebx, ecx
sub ebx, edi
add edi, ecx
sar ebx, 1
sar edi, 1
mov ecx, dword [ebp - 0x10]
lea eax, [edi + ecx*2]
add eax, ecx
lea ecx, [ebx + eax*2]
add ecx, eax
mov dword [ebp - 0x10], ecx
test edx, edx
je 0x1007fc87
mov edx, dword [ebp - 0x50]
mov ecx, dword [ebp - 0x28]
shl edi, cl
mov dword [edx], edi
jmp 0x1007fd10
cmp edi, dword [ebp - 0x3c]
jge 0x1007fca9
mov eax, dword [ebp - 0x1c]
mov ecx, dword [ebp - 8]
neg eax
cmp edi, eax
mov edi, dword [ebp - 0x44]
mov eax, 1
cmovl ecx, eax
mov eax, dword [ebp - 0x38]
mov dword [ebp - 8], ecx
jmp 0x1007fccd
mov eax, dword [ebp - 0x38]
cmp edi, eax
jle 0x1007fcc8
cmp edi, dword [ebp - 0x1c]
mov edx, 1
mov ecx, dword [ebp - 8]
cmovg ecx, edx
mov dword [ebp - 8], ecx
mov ecx, dword [ebp - 0x40]
mov edi, ecx
jmp 0x1007fcd0
mov ecx, dword [ebp - 0x28]
shl edi, cl
mov ecx, dword [ebp - 0x40]
mov edx, dword [ebp - 0x50]
mov dword [edx], edi
cmp ebx, dword [ebp - 0x3c]
jge 0x1007fcf4
mov eax, dword [ebp - 0x1c]
mov edi, dword [ebp - 8]
neg eax
cmp ebx, eax
mov ebx, dword [ebp - 0x44]
mov eax, 1
cmovl edi, eax
mov dword [ebp - 8], edi
jmp 0x1007fd12
cmp ebx, eax
jle 0x1007fd0d
cmp ebx, dword [ebp - 0x1c]
mov ebx, 1
mov eax, dword [ebp - 8]
cmovg eax, ebx
mov ebx, ecx
mov dword [ebp - 8], eax
jmp 0x1007fd12
mov ecx, dword [ebp - 0x28]
shl ebx, cl
mov eax, dword [ebp - 0x6c]
lea ecx, [edx + 8]
mov dword [ebp - 0x50], ecx
mov ecx, dword [ebp + 8]
inc ecx
mov dword [edx + 4], ebx
mov ebx, 1
mov dword [ebp + 8], ecx
cmp ecx, dword [ebp - 0xc]
jb 0x1007fa95
jmp 0x1007f5e7
mov dword [ebp - 0x64], eax
xor eax, eax
mov dword [ebp + 8], eax
cmp dword [ebp - 0xc], eax
jbe 0x1007f5ea
mov eax, dword [ebp - 0x78]
mov edi, dword [ebp - 0x84]
mov ebx, dword [ebp - 0x80]
mov dword [ebp - 0x68], eax
mov eax, dword [ebp - 0x7c]
mov dword [ebp - 0x60], eax
mov dword [ebp - 0x5c], edi
xor edx, edx
mov ecx, esi
call fcn.10080cb0
mov edx, eax
cmp edx, 0x80000000
je 0x1007f5e7
mov ecx, dword [ebp - 0x14]
imul ecx, ebx
sub ecx, 0xffffff80
sar ecx, 8
add edi, ecx
xor ecx, ecx
add edi, edx
test ebx, ebx
setns cl
xor eax, eax
test edx, edx
setg al
cmp ecx, eax
mov ecx, dword [ebp - 0x14]
mov eax, ecx
jne 0x1007fdad
inc ecx
mov dword [ebp - 0x14], ecx
cmp eax, 0x100
jne 0x1007fdb9
dec ecx
jmp 0x1007fdb6
dec ecx
mov dword [ebp - 0x14], ecx
test eax, eax
jne 0x1007fdb9
inc ecx
mov dword [ebp - 0x14], ecx
mov ecx, dword [ebp - 0x10]
mov eax, edi
sub eax, dword [ebp - 0x5c]
mov edx, 1
mov dword [ebp - 0x58], eax
mov dword [ebp - 0x80], eax
mov eax, edi
mov dword [ebp - 0x5c], eax
mov dword [ebp - 0x84], eax
lea eax, [edi + ecx*2]
add eax, ecx
mov ecx, esi
mov dword [ebp - 0x6c], eax
call fcn.10080cb0
mov ebx, dword [ebp - 0x34]
mov edx, eax
mov eax, dword [ebp - 0x68]
xor ecx, ecx
imul ebx, eax
sub ebx, 0xffffff80
sar ebx, 8
add ebx, dword [ebp - 0x60]
add ebx, edx
test eax, eax
setns cl
xor eax, eax
test edx, edx
setg al
cmp ecx, eax
mov ecx, dword [ebp - 0x34]
mov eax, ecx
jne 0x1007fe21
inc ecx
mov dword [ebp - 0x34], ecx
cmp eax, 0x100
jne 0x1007fe2d
dec ecx
jmp 0x1007fe2a
dec ecx
mov dword [ebp - 0x34], ecx
test eax, eax
jne 0x1007fe2d
inc ecx
mov dword [ebp - 0x34], ecx
mov eax, ebx
mov edx, ebx
sub eax, dword [ebp - 0x60]
mov dword [ebp - 0x68], eax
mov dword [ebp - 0x78], eax
mov eax, dword [ebp - 0x6c]
mov dword [ebp - 0x60], edx
mov dword [ebp - 0x7c], edx
lea ecx, [ebx + eax*2]
add ecx, eax
mov dword [ebp - 0x10], ecx
cmp edi, dword [ebp - 0x3c]
jge 0x1007fe6a
mov eax, dword [ebp - 0x1c]
mov ecx, dword [ebp - 8]
neg eax
cmp edi, eax
mov edi, dword [ebp - 0x44]
mov eax, 1
cmovl ecx, eax
mov dword [ebp - 8], ecx
jmp 0x1007fe8c
mov ecx, dword [ebp - 0x38]
cmp edi, ecx
jle 0x1007fe87
cmp edi, dword [ebp - 0x1c]
mov ebx, 1
mov eax, dword [ebp - 8]
mov edi, dword [ebp - 0x40]
cmovg eax, ebx
mov dword [ebp - 8], eax
jmp 0x1007fe8f
mov ecx, dword [ebp - 0x28]
shl edi, cl
mov ecx, dword [ebp - 0x38]
mov eax, dword [ebp - 0x64]
lea ebx, [eax + 4]
mov dword [eax], edi
cmp edx, dword [ebp - 0x3c]
jge 0x1007feb6
mov eax, dword [ebp - 0x1c]
mov ecx, dword [ebp - 8]
neg eax
cmp edx, eax
mov edx, dword [ebp - 0x44]
mov eax, 1
cmovl ecx, eax
mov dword [ebp - 8], ecx
jmp 0x1007fed5
cmp edx, ecx
jle 0x1007fed0
cmp edx, dword [ebp - 0x1c]
mov ecx, 1
mov eax, dword [ebp - 8]
mov edx, dword [ebp - 0x40]
cmovg eax, ecx
mov dword [ebp - 8], eax
jmp 0x1007fed5
mov ecx, dword [ebp - 0x28]
shl edx, cl
mov eax, dword [ebp + 8]
lea edi, [ebx + 4]
inc eax
mov dword [ebx], edx
mov ebx, dword [ebp - 0x58]
mov dword [ebp - 0x64], edi
mov edi, dword [ebp - 0x5c]
mov dword [ebp + 8], eax
cmp eax, dword [ebp - 0xc]
jb 0x1007fd61
jmp 0x1007f5e7
mov dword [ebp - 0x18], ecx
cmp ax, 2
jne 0x1007ffb7
test ecx, ecx
je 0x1007ffcc
mov eax, dword [ebp - 0x24]
mov dword [ebp - 0x68], eax
xor eax, eax
mov dword [ebp + 8], eax
cmp dword [ebp - 0xc], eax
jbe 0x1007f5ea
mov ebx, dword [ebp - 0x80]
mov edi, dword [ebp - 0x84]
nop word [eax + eax]
xor edx, edx
mov ecx, esi
call fcn.10080a60
cmp eax, 0x80000000
je 0x1007ffaf
add ebx, eax
add edi, ebx
cmp word [esi + 0xa], 0
mov dword [ebp - 0x84], edi
je 0x1007ff91
mov ecx, dword [ebp - 0x3c]
cmp edi, ecx
jge 0x1007ff71
mov eax, dword [ebp - 0x1c]
mov edx, dword [ebp - 8]
neg eax
cmp edi, eax
mov eax, 1
mov edi, ecx
cmovl edx, eax
mov dword [ebp - 8], edx
jmp 0x1007ff8b
mov eax, dword [ebp - 0x38]
cmp edi, eax
jle 0x1007ff91
cmp edi, dword [ebp - 0x1c]
mov edx, 1
mov ecx, dword [ebp - 8]
mov edi, eax
cmovg ecx, edx
mov dword [ebp - 8], ecx
mov dword [ebp - 0x84], edi
mov ecx, dword [ebp - 0x28]
mov eax, edi
shl eax, cl
mov ecx, dword [ebp - 0x68]
mov dword [ecx], eax
add ecx, 4
mov eax, dword [ebp + 8]
inc eax
mov dword [ebp - 0x68], ecx
mov dword [ebp + 8], eax
cmp eax, dword [ebp - 0xc]
jb 0x1007ff30
mov dword [ebp - 0x80], ebx
jmp 0x1007f5e7
mov dword [ebp - 0x18], ecx
cmp ax, 3
jge 0x100800e6
test ecx, ecx
jne 0x100800e6
mov ebx, dword [ebp - 0xc]
mov edx, dword [ebp - 0x24]
mov dword [ebp - 0x68], edx
mov dword [ebp + 8], 0
test ebx, ebx
je 0x1007f5f3
mov edi, dword [ebp - 0x7c]
mov ebx, dword [ebp - 0x84]
nop dword [eax]
xor edx, edx
mov ecx, esi
call fcn.10080a60
mov dword [ebp - 0x6c], eax
cmp eax, 0x80000000
je 0x1007f5ed
mov edx, 1
mov ecx, esi
call fcn.10080a60
mov ecx, dword [ebp - 0x6c]
mov edx, eax
add ecx, ecx
and edx, 1
or edx, ecx
lea ecx, [eax + edx]
sub edx, eax
mov eax, dword [ebp - 0x78]
sar ecx, 1
add dword [ebp - 0x80], ecx
mov ecx, dword [ebp - 0x80]
add ebx, ecx
sar edx, 1
add eax, edx
mov dword [ebp - 0x80], ecx
add edi, eax
mov dword [ebp - 0x84], ebx
cmp word [esi + 0xa], 0
mov dword [ebp - 0x78], eax
mov dword [ebp - 0x7c], edi
je 0x100800b8
mov ecx, dword [ebp - 0x3c]
mov edx, dword [ebp - 8]
cmp ebx, ecx
jge 0x1008006d
mov eax, dword [ebp - 0x1c]
neg eax
cmp ebx, eax
mov eax, 1
mov ebx, ecx
cmovl edx, eax
mov eax, dword [ebp - 0x38]
jmp 0x10080081
mov eax, dword [ebp - 0x38]
cmp ebx, eax
jle 0x1008008a
cmp ebx, dword [ebp - 0x1c]
mov ebx, 1
cmovg edx, ebx
mov ebx, eax
mov dword [ebp - 0x84], ebx
mov dword [ebp - 8], edx
cmp edi, ecx
jge 0x100800a1
mov eax, dword [ebp - 0x1c]
neg eax
cmp edi, eax
mov eax, 1
mov edi, ecx
cmovl edx, eax
jmp 0x100800b2
cmp edi, eax
jle 0x100800b8
cmp edi, dword [ebp - 0x1c]
mov ecx, 1
mov edi, eax
cmovg edx, ecx
mov dword [ebp - 0x7c], edi
mov dword [ebp - 8], edx
mov edx, dword [ebp - 0x68]
mov eax, ebx
mov ecx, dword [ebp - 0x28]
shl eax, cl
mov dword [edx], eax
mov eax, edi
shl eax, cl
mov dword [edx + 4], eax
add edx, 8
mov eax, dword [ebp + 8]
inc eax
mov dword [ebp - 0x68], edx
mov dword [ebp + 8], eax
cmp eax, dword [ebp - 0xc]
jb 0x1007fff0
jmp 0x1007f5ed
mov ebx, dword [ebp - 0xc]
xor eax, eax
mov edx, dword [ebp - 0x24]
mov dword [ebp + 8], eax
mov eax, ecx
mov dword [ebp - 0x18], ecx
jmp 0x1007f5f6
mov eax, dword [esi + 0x14]
cmp dword [ebp - 0x10], eax
je 0x10080109
inc dword [ecx + 0x90]
test byte [ecx + 0x9c], 4
je 0x10080244
push 0x400
call fcn.1009ff8c
add esp, 4
lea ecx, [esi + 0x24]
mov ebx, eax
call fcn.1007dc50
test eax, eax
je 0x10080196
lea ecx, [esi + 0x24]
call fcn.1007dc50
mov ecx, dword [ebp - 0x48]
add eax, dword [ecx + 0x60]
push eax
push dword [ecx + 0x5c]
call fcn.100a2226
mov ecx, dword [ebp - 0x48]
add esp, 8
mov dword [ecx + 0x5c], eax
mov eax, dword [esi + 0x48]
cmp eax, 8
jge 0x10080162
add eax, 8
inc dword [esi + 0x30]
mov dword [esi + 0x48], eax
mov eax, dword [esi + 0x30]
lea ecx, [esi + 0x24]
mov dword [ebp - 0x68], eax
call fcn.1007dc50
mov ecx, dword [ebp - 0x48]
push eax
push dword [ebp - 0x68]
mov eax, dword [ecx + 0x60]
add eax, dword [ecx + 0x5c]
push eax
call fcn.1009d910
add esp, 0xc
lea ecx, [esi + 0x24]
call fcn.1007dc50
mov ecx, dword [ebp - 0x48]
add dword [ecx + 0x60], eax
jmp 0x10080199
mov ecx, dword [ebp - 0x48]
mov eax, dword [ecx + 0x70]
push 4
push ebx
push dword [ecx + 0x74]
mov eax, dword [eax]
call eax
mov edi, eax
add esp, 0xc
test edi, edi
je 0x100801ec
mov esi, dword [ebp - 0x48]
mov ecx, dword [esi + 0x60]
add ecx, edi
push ecx
push dword [esi + 0x5c]
call fcn.100a2226
mov ecx, dword [esi + 0x60]
push edi
add ecx, eax
mov dword [esi + 0x5c], eax
push ebx
push ecx
call fcn.1009d910
add dword [esi + 0x60], edi
mov eax, dword [esi + 0x70]
push 4
push ebx
push dword [esi + 0x74]
mov eax, dword [eax]
call eax
mov edi, eax
add esp, 0x20
test edi, edi
jne 0x100801b2
mov esi, dword [ebp - 0x4c]
push ebx
call fcn.1009ff87
mov ebx, dword [ebp - 0x48]
add esp, 4
mov edx, dword [ebx + 0x60]
cmp edx, 0x10
jbe 0x10080244
mov ecx, dword [ebx + 0x5c]
xor eax, eax
cmp byte [ecx + eax], 0xff
jne 0x10080211
inc eax
cmp eax, 0x10
jl 0x10080205
cmp eax, 0x10
jne 0x1008022d
lea eax, [edx - 0x10]
push eax
lea eax, [ecx + 0x10]
push eax
push ecx
call fcn.1009d910
add esp, 0xc
sub dword [ebx + 0x60], 0x10
jmp 0x10080244
push ecx
call fcn.1009ff87
add esp, 4
mov dword [ebx + 0x5c], 0
mov dword [ebx + 0x60], 0
mov eax, dword [ebp - 0x14]
movups xmm0, xmmword [ebp - 0x84]
mov dword [esi + 0x8c4], eax
mov eax, dword [ebp - 0x34]
mov dword [esi + 0x8c8], eax
mov eax, dword [ebp - 0x10]
mov dword [esi + 0x8b0], eax
mov eax, dword [ebp - 0x2c]
pop edi
mov dword [esi + 0x8a4], eax
mov eax, dword [ebp + 8]
movups xmmword [esi + 0x8b4], xmm0
pop esi
pop ebx
mov esp, ebp
pop ebp
ret