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

Disassembly:
push ebp
mov ebp, esp
push edi
push esi
push ebx
sub esp, 0x9c
mov eax, dword [ebp + 8]
mov esi, dword [eax + 0x194]
mov edi, dword [esi + 0x8a4]
movzx eax, word [esi + 0xe]
mov ebx, dword [esi + 0x7c]
mov dword [ebp - 0x3c], edi
mov edi, dword [ebp + 8]
mov word [ebp - 0x5c], ax
movzx eax, word [esi + 0xc]
mov edi, dword [edi + 0x8c]
mov word [ebp - 0x4e], ax
and eax, 0x20
cmp ax, 1
mov word [ebp - 0x64], ax
sbb eax, eax
mov dword [ebp - 0x54], eax
mov dword [ebp - 0x40], edi
mov edi, dword [esi + 0x8b0]
and dword [ebp - 0x54], 0xff808000
add dword [ebp - 0x54], 0x800000
cmp word [esi + 0xa], 0
mov dword [ebp - 0x48], edi
je 0x700379d5
test byte [ebp - 0x4e], 0x80
je 0x70037d57
mov edi, dword [ebp - 0x40]
mov edx, dword [ebp + 0x10]
mov eax, edi
add edx, ebx
sub eax, ebx
cmp edi, edx
cmovae eax, dword [ebp + 0x10]
xor edi, edi
test eax, eax
mov dword [ebp + 0x10], eax
je 0x70037b82
test ebx, ebx
je 0x70037ef0
mov eax, dword [ebp - 0x40]
xor edx, edx
shr eax, 8
lea ecx, [eax + 1]
mov eax, ebx
div ecx
mov ebx, eax
lea eax, [esi + eax*8]
cmp byte [eax + 0x84], 0
mov dword [ebp - 0x68], eax
je 0x70037b90
lea eax, [esi + 0x8b4]
mov dword [ebp - 0x80], eax
lea eax, [esi + 0x8c4]
mov dword [ebp - 0x7c], eax
mov edi, dword [ebp - 0x80]
movsx eax, word [ebp - 0x4e]
mov dword [ebp - 0x8c], eax
mov eax, dword [edi]
mov dword [ebp - 0x28], eax
mov eax, dword [edi + 4]
mov dword [ebp - 0x24], eax
mov eax, dword [edi + 8]
mov dword [ebp - 0x20], eax
mov eax, dword [edi + 0xc]
mov edi, dword [ebp - 0x7c]
mov dword [ebp - 0x1c], eax
mov eax, dword [edi]
mov dword [ebp - 0x30], eax
mov eax, dword [edi + 4]
mov dword [ebp - 0x2c], eax
movzx eax, word [esi + 0xa]
test ax, ax
je 0x70037eb6
mov edx, dword [ebp - 0x8c]
and edx, 0xa000
cmp edx, 1
sbb ebx, ebx
mov dword [ebp - 0x60], ebx
not dword [ebp - 0x60]
and dword [ebp - 0x60], 0xffffff00
movsx ebx, word [ebp - 0x5c]
cmp word [ebp - 0x64], 0
mov dword [ebp - 0x4c], ebx
je 0x70037d72
mov ecx, ebx
mov dword [ebp - 0x44], 0xff800000
sar dword [ebp - 0x44], cl
mov ebx, dword [ebp - 0x44]
mov dword [ebp - 0x64], 0x7fffff
sar dword [ebp - 0x64], cl
shl ebx, cl
mov dword [ebp - 0x84], ebx
mov ebx, dword [ebp - 0x64]
shl ebx, cl
cmp dword [esi + 8], 3
mov dword [ebp - 0x88], ebx
je 0x70037dab
movzx edx, word [esi + 8]
cmp dx, 3
je 0x70038315
cmp dx, 2
je 0x70037fd9
jg 0x70037afb
test byte [ebp - 0x4e], 1
je 0x70038651
xor edi, edi
mov dword [ebp - 0x58], 0
mov dword [ebp - 0x40], 0
test ax, ax
je 0x700380a2
test byte [ebp - 0x4e], 0x80
jne 0x700380a2
mov ebx, dword [ebp - 0x58]
test ebx, ebx
jne 0x7003a6c6
mov ecx, dword [ebp - 0x40]
test ecx, ecx
je 0x70037b48
mov ebx, dword [ebp + 8]
mov eax, dword [ebp - 0x40]
add eax, dword [esi + 0x7c]
cmp eax, dword [ebx + 0x8c]
mov dword [esi + 0x7c], eax
je 0x700384d7
mov ebx, dword [ebp - 0x80]
mov eax, dword [ebp - 0x28]
mov dword [ebx], eax
mov eax, dword [ebp - 0x24]
mov dword [ebx + 4], eax
mov eax, dword [ebp - 0x20]
mov dword [ebx + 8], eax
mov eax, dword [ebp - 0x1c]
mov dword [ebx + 0xc], eax
mov eax, dword [ebp - 0x30]
mov ebx, dword [ebp - 0x7c]
mov dword [ebx], eax
mov eax, dword [ebp - 0x2c]
mov dword [ebx + 4], eax
mov eax, dword [ebp - 0x48]
mov dword [esi + 0x8b0], eax
mov eax, dword [ebp - 0x3c]
mov dword [esi + 0x8a4], eax
lea esp, [ebp - 0xc]
mov eax, edi
pop ebx
pop esi
pop edi
pop ebp
ret
mov eax, dword [esi + 0x884]
test eax, eax
je 0x700398d5
movzx edi, word [esi + 0xc]
mov edx, dword [esi + 0x888]
mov ecx, edi
and cx, 0x80
mov word [ebp - 0x60], di
mov word [ebp - 0x44], cx
mov ecx, edi
and edi, 0x40
mov word [ebp - 0x4c], di
mov edi, ecx
mov ecx, edi
and di, 0x410
and ecx, 0x8000
mov dword [ebp - 0x58], ecx
mov word [ebp - 0x40], di
mov edi, dword [esi + 0x7c]
imul ebx, edx
mov ecx, dword [ebp - 0x68]
add ebx, eax
mov dword [ecx + 0x88], edi
mov edx, dword [esi + 0x24]
cmp word [ebp - 0x44], 0
mov dword [ebx], edx
mov edx, dword [esi + 0x28]
mov dword [ebx + 4], edx
mov edx, dword [esi + 0x2c]
mov dword [ebx + 8], edx
mov edx, dword [esi + 0x30]
mov dword [ebx + 0xc], edx
mov edx, dword [esi + 0x34]
mov dword [ebx + 0x10], edx
mov edx, dword [esi + 0x38]
mov dword [ebx + 0x14], edx
mov edx, dword [esi + 0x3c]
mov dword [ebx + 0x18], edx
mov edx, dword [esi + 0x40]
mov dword [ebx + 0x1c], edx
mov edx, dword [esi + 0x44]
mov dword [ebx + 0x20], edx
mov edx, dword [esi + 0x48]
mov dword [ebx + 0x24], edx
mov eax, dword [esi + 0x4c]
mov dword [ebx + 0x28], eax
lea eax, [ebx + 0x2c]
jne 0x70038473
cmp word [esi + 8], 3
je 0x70037f30
mov ecx, dword [esi + 0xfc0]
lea edi, [eax + 0x14]
mov dword [eax], ecx
mov ecx, dword [esi + 0xfc4]
mov dword [eax + 4], ecx
mov ecx, dword [esi + 0xfc8]
mov dword [eax + 8], ecx
mov ecx, dword [esi + 0xfcc]
mov dword [eax + 0xc], ecx
mov edx, dword [esi + 0xfd0]
mov dword [eax + 0x10], edx
cmp word [esi + 0xa], 0
je 0x70037fae
mov eax, dword [esi + 0x8a8]
lea ecx, [edi + 8]
mov dword [edi], eax
mov eax, dword [esi + 0x8ac]
mov dword [edi + 4], eax
cmp word [ebp - 0x4c], 0
jne 0x700384bd
mov edx, dword [ebp - 0x58]
lea eax, [esi + 0x8b4]
test edx, edx
je 0x70038431
mov dword [ebp - 0x80], eax
lea eax, [esi + 0x8c4]
mov dword [ebp - 0x7c], eax
cmp word [ebp - 0x40], 0
je 0x70037d48
mov eax, dword [esi + 0x80]
test eax, eax
je 0x70037d48
mov dword [ebp - 0x58], eax
movzx eax, word [ebp - 0x60]
lea edi, [esi + 0x8d4]
mov dword [ebp - 0x4c], esi
and eax, 1
mov word [ebp - 0x60], ax
mov esi, dword [edi - 8]
lea ebx, [edi - 8]
test esi, esi
jle 0x70038073
mov edx, dword [edi]
mov eax, dword [ebp - 0x4c]
mov dword [ebp - 0x44], esi
mov eax, dword [eax + 0x8a4]
mov dword [ecx], edx
lea edx, [ecx + 4]
mov dword [ebp - 0x40], edx
lea ecx, [esi - 1]
lea esi, [esi]
mov esi, dword [ebx + eax*4 + 0x10]
sub ecx, 1
add eax, 1
add edx, 4
and eax, 7
mov dword [edx - 4], esi
cmp ecx, 0xffffffff
jne 0x70037d10
mov esi, dword [ebp - 0x44]
mov eax, dword [ebp - 0x40]
cmp word [ebp - 0x60], 0
lea ecx, [eax + esi*4]
je 0x70038110
add edi, 0x60
sub dword [ebp - 0x58], 1
jne 0x70037ce3
mov esi, dword [ebp - 0x4c]
mov eax, dword [ebp - 0x68]
mov byte [eax + 0x84], 1
jmp 0x70037a32
mov edi, dword [ebp - 0x54]
mov eax, edi
shl eax, 2
cmp word [esi + 8], 2
lea edx, [edi + edi]
cmovg eax, edx
mov dword [ebp - 0x54], eax
jmp 0x700379d5
mov edi, dword [ebp - 0x4c]
mov dword [ebp - 0x44], 0xffff8000
mov dword [ebp - 0x64], 0x7fff
mov ecx, edi
sar dword [ebp - 0x44], cl
mov ebx, dword [ebp - 0x44]
sar dword [ebp - 0x64], cl
shl ebx, cl
mov dword [ebp - 0x84], ebx
mov ebx, dword [ebp - 0x64]
shl ebx, cl
cmp dword [esi + 8], 3
mov dword [ebp - 0x88], ebx
jne 0x70037ad7
test byte [ebp - 0x4e], 1
je 0x7003818f
test byte [ebp - 0x4e], 2
jne 0x700387eb
test byte [ebp - 0x4e], 0x10
je 0x7003967d
movzx edi, word [ebp - 0x4e]
mov dword [ebp - 0x40], 0
mov eax, edi
and ax, 0x400
mov word [ebp - 0x58], ax
mov eax, dword [ebp + 0xc]
add eax, 4
mov dword [ebp - 0x44], eax
mov eax, dword [ebp - 0x8c]
and eax, 0x8000
mov dword [ebp - 0x5c], eax
mov eax, edi
mov edi, esi
and eax, 0x40
mov word [ebp - 0x64], ax
xor edx, edx
mov ecx, edi
cmp word [ebp - 0x58], 0
je 0x70038a82
call fcn.700355a0
cmp eax, 0x80000000
je 0x70038a6d
mov ecx, dword [edi + 0x80]
lea edx, [edi + 0x8cc]
lea ebx, [ecx - 1]
mov esi, ebx
mov ebx, eax
mov eax, dword [ebp - 0x5c]
test eax, eax
je 0x70038a94
test ecx, ecx
je 0x700389f6
mov dword [ebp - 0x68], edi
mov edi, esi
jmp 0x70037e80
lea ebx, [eax + 1]
cmp eax, 0x200
mov eax, 0x200
cmove ebx, eax
mov dword [edx + 8], ebx
mov eax, dword [ebp - 0x3c]
sub edi, 1
add eax, dword [edx]
and eax, 7
mov dword [edx + eax*4 + 0x10], ecx
add edx, 0x60
cmp edi, 0xffffffff
je 0x700389f1
mov ebx, ecx
mov eax, dword [ebp - 0x3c]
mov esi, dword [edx + eax*4 + 0x10]
mov eax, dword [edx + 8]
mov ecx, eax
imul ecx, esi
add ecx, 0x100
sar ecx, 9
add ecx, ebx
test esi, esi
je 0x70037e63
test ebx, ebx
je 0x70037e63
xor esi, ebx
jns 0x70037e50
mov esi, dword [ebp - 0x60]
lea ebx, [eax - 1]
cmp esi, eax
cmove ebx, esi
mov dword [edx + 8], ebx
jmp 0x70037e63
test word [ebp - 0x4e], 0x2000
mov dword [ebp - 0x60], 0
je 0x70037a8f
mov edx, dword [ebp - 0x8c]
and edx, 0x8000
cmp edx, 1
sbb edi, edi
mov dword [ebp - 0x60], edi
and dword [ebp - 0x60], 0x100
sub dword [ebp - 0x60], 0x200
jmp 0x70037a8f
mov eax, esi
call fcn.70036dc0
mov eax, dword [ebp + 8]
mov ecx, dword [eax + 0x74]
mov edx, dword [eax + 0x70]
lea eax, [esi + 0x24]
call fcn.700371a0
mov eax, dword [ebp + 8]
mov ecx, dword [eax + 0x98]
test ecx, ecx
je 0x700379fc
mov ecx, dword [eax + 0x78]
mov edx, dword [eax + 0x70]
lea eax, [esi + 0x50]
call fcn.700371a0
jmp 0x700379fc
cmp word [esi + 0xa], 0
je 0x7003876e
mov ecx, dword [esi + 0xfe0]
add eax, 0x1c
mov dword [eax - 0x1c], ecx
mov ecx, dword [esi + 0xfe4]
mov dword [eax - 0x18], ecx
mov ecx, dword [esi + 0xfe8]
mov dword [eax - 0x14], ecx
mov ecx, dword [esi + 0xfec]
mov dword [eax - 0x10], ecx
mov ecx, dword [esi + 0xff0]
mov dword [eax - 0xc], ecx
mov ecx, dword [esi + 0xff4]
mov dword [eax - 8], ecx
mov edx, dword [esi + 0xff8]
mov dword [eax - 4], edx
mov ecx, dword [esi + 0xfd4]
lea edi, [eax + 0x10]
mov dword [eax], ecx
mov ecx, dword [esi + 0xfd8]
mov dword [eax + 4], ecx
mov edx, dword [esi + 0xfdc]
mov dword [eax + 8], edx
mov edx, dword [esi + 0x8b0]
mov dword [eax + 0xc], edx
cmp word [esi + 0xa], 0
jne 0x70037c7b
mov eax, dword [esi + 0x88c]
lea ecx, [edi + 0x10]
mov dword [edi], eax
mov eax, dword [esi + 0x890]
mov dword [edi + 4], eax
mov eax, dword [esi + 0x894]
mov dword [edi + 8], eax
mov eax, dword [esi + 0x898]
mov dword [edi + 0xc], eax
jmp 0x70037c8f
test byte [ebp - 0x4e], 1
je 0x70038651
mov eax, dword [ebp - 0x54]
xor edx, edx
mov ebx, 1
mov dword [ebp - 0x58], 0
mov edi, edx
neg eax
mov dword [ebp - 0x40], eax
jmp 0x7003802a
cmp edx, dword [ebp - 0x40]
mov edx, dword [ebp - 0x58]
cmovl edx, ebx
mov dword [ebp - 0x58], edx
mov edx, dword [ebp - 0x44]
mov dword [ebp - 0x28], edx
movzx ecx, byte [ebp - 0x4c]
shl edx, cl
mov ecx, dword [ebp + 0xc]
mov dword [ecx + edi*4], edx
add edi, 1
cmp edi, dword [ebp + 0x10]
je 0x7003963f
xor edx, edx
mov ecx, esi
call fcn.70035f20
cmp eax, 0x80000000
je 0x7003960d
add eax, dword [ebp - 0x24]
mov edx, eax
mov dword [ebp - 0x24], eax
movzx eax, word [esi + 0xa]
add edx, dword [ebp - 0x28]
test ax, ax
mov dword [ebp - 0x28], edx
je 0x70038012
cmp dword [ebp - 0x44], edx
jg 0x70038000
cmp dword [ebp - 0x64], edx
jge 0x70038012
cmp dword [ebp - 0x54], edx
mov edx, dword [ebp - 0x58]
cmovl edx, ebx
mov dword [ebp - 0x58], edx
mov edx, dword [ebp - 0x64]
mov dword [ebp - 0x28], edx
jmp 0x70038012
mov eax, dword [edi]
add ecx, 0x10
mov dword [ecx - 0x10], eax
mov eax, dword [edi + 4]
mov dword [ecx - 0xc], eax
mov eax, dword [edi + 8]
mov dword [ecx - 8], eax
mov eax, dword [edi + 0x28]
mov dword [ecx - 4], eax
jmp 0x70037d3c
xor edi, edi
mov dword [ebp - 0x58], 0
mov dword [ebp - 0x40], 0
movzx eax, word [ebp - 0x4e]
and eax, 1
mov ecx, eax
mov word [ebp - 0x4c], ax
mov eax, dword [ebp + 0x10]
shl ecx, 0x1f
sar ecx, 0x1f
add ecx, 2
shl eax, 2
imul ecx, eax
add ecx, dword [ebp + 0xc]
cmp dword [ebp + 0xc], ecx
mov dword [ebp - 0x5c], eax
jae 0x70037b1e
mov eax, dword [ebp + 0xc]
mov edx, dword [ebp - 0x54]
mov eax, dword [eax]
cmp edx, eax
jl 0x70038163
mov ebx, edx
neg ebx
cmp eax, ebx
jl 0x70038163
mov dword [ebp - 0x44], edi
mov eax, dword [ebp + 0xc]
mov edi, edx
jmp 0x700380fc
mov edx, dword [eax]
cmp edi, edx
jl 0x70038160
cmp edx, ebx
jl 0x70038160
add eax, 0xc
cmp ecx, eax
ja 0x700380f2
mov edi, dword [ebp - 0x44]
jmp 0x70037b1e
mov eax, dword [edi - 8]
add ecx, 4
mov edx, dword [edi + 4]
mov esi, eax
mov dword [ebp - 0x40], eax
mov eax, dword [ebp - 0x4c]
mov eax, dword [eax + 0x8a4]
mov dword [ecx - 4], edx
test esi, esi
je 0x70037d3c
mov edx, ecx
mov dword [ebp - 0x44], ecx
mov ecx, dword [ebx + eax*4 + 0x30]
add eax, 1
add edx, 4
and eax, 7
mov dword [edx - 4], ecx
sub esi, 1
jne 0x70038137
mov ecx, dword [ebp - 0x44]
mov eax, dword [ebp - 0x40]
lea ecx, [ecx + eax*4]
jmp 0x70037d3c
mov edi, dword [ebp - 0x44]
mov eax, dword [ebp - 0x4c]
mov dword [esp + 4], 0
shl eax, 0x1f
sar eax, 0x1f
add eax, 2
imul eax, dword [ebp - 0x5c]
mov dword [esp + 8], eax
mov eax, dword [ebp + 0xc]
mov dword [esp], eax
call fcn.6fef7ef0
jmp 0x70037b29
mov eax, dword [esi + 0x890]
test byte [ebp - 0x4e], 2
mov dword [ebp - 0x78], eax
mov eax, dword [esi + 0x894]
mov dword [ebp - 0x88], eax
mov eax, dword [esi + 0x88c]
mov dword [ebp - 0x84], eax
mov eax, dword [esi + 0x898]
mov dword [ebp - 0x90], eax
je 0x70038cb1
test byte [ebp - 0x4e], 0x40
je 0x70038960
mov eax, dword [ebp + 0xc]
mov dword [ebp - 0x40], 0
mov dword [ebp - 0x44], eax
lea eax, [esi + 0x24]
mov dword [ebp - 0x58], eax
xor edx, edx
mov ecx, esi
call fcn.70036210
cmp eax, 0x80000000
mov ebx, eax
je 0x700382d5
mov edx, 1
mov ecx, esi
call fcn.70036210
add ebx, ebx
mov edi, dword [esi + 0x48]
mov ecx, edi
mov edx, eax
and edx, 1
or edx, ebx
lea ebx, [edx + eax]
sub edx, eax
mov eax, edx
sar ebx, 1
sar eax, 1
add ebx, dword [ebp - 0x24]
add eax, dword [ebp - 0x1c]
mov dword [ebp - 0x24], ebx
mov dword [ebp - 0x1c], eax
add ebx, dword [ebp - 0x28]
add eax, dword [ebp - 0x20]
cmp edi, 7
mov dword [ebp - 0x28], ebx
mov dword [ebp - 0x4c], eax
mov dword [ebp - 0x20], eax
jg 0x70039d45
mov edx, dword [esi + 0x30]
add edx, 1
cmp edx, dword [esi + 0x2c]
mov dword [esi + 0x30], edx
je 0x70038b36
movzx eax, byte [edx]
lea edi, [ecx + 8]
mov dword [esi + 0x48], edi
shl eax, cl
mov ecx, edi
or eax, dword [esi + 0x3c]
cmp edi, 7
mov dword [esi + 0x3c], eax
jle 0x70038245
cmp edi, 0x20
jle 0x70038be4
mov edx, dword [esi + 0x30]
sub edi, 8
mov ecx, 8
mov dword [esi + 0x48], edi
sub ecx, edi
movzx edx, byte [edx]
sar edx, cl
mov dword [esi + 0x3c], edx
mov edi, dword [ebp - 0x48]
mov edx, eax
and eax, 0xf
sar edx, 4
shl ebx, 4
and edx, 0xf
add edx, ebx
mov ebx, dword [ebp - 0x4c]
lea ecx, [edi + edi*2]
mov edi, dword [ebp - 0x44]
add dword [ebp - 0x40], 1
shl ebx, 4
mov dword [edi], edx
add edx, ecx
add eax, ebx
lea ecx, [edi + 8]
lea edx, [edx + edx*2]
mov edi, ecx
mov dword [edi - 4], eax
add eax, edx
mov dword [ebp - 0x48], eax
mov eax, dword [ebp - 0x40]
cmp eax, dword [ebp + 0x10]
mov dword [ebp - 0x44], ecx
jne 0x700381e3
mov eax, dword [ebp - 0x78]
mov dword [esi + 0x890], eax
mov eax, dword [ebp - 0x88]
mov dword [esi + 0x894], eax
mov eax, dword [ebp - 0x84]
mov dword [esi + 0x88c], eax
mov eax, dword [ebp - 0x90]
mov dword [esi + 0x898], eax
movzx eax, word [esi + 0xa]
mov edi, dword [ebp - 0x40]
mov dword [ebp - 0x58], 0
jmp 0x70037b0b
test ax, ax
je 0x70038092
test byte [ebp - 0x4e], 1
jne 0x700388ba
test byte [ebp - 0x4e], 2
je 0x70039d5f
mov eax, dword [ebp + 0xc]
mov ebx, dword [ebp - 0x48]
mov dword [ebp - 0x58], 0
mov dword [ebp - 0x40], 0
lea edi, [eax + 8]
mov eax, dword [ebp - 0x54]
mov dword [ebp - 0x5c], esi
mov dword [ebp - 0x48], edi
neg eax
mov dword [ebp - 0x68], eax
jmp 0x700383d3
cmp eax, dword [ebp - 0x68]
mov eax, 1
cmovge eax, dword [ebp - 0x58]
mov dword [ebp - 0x58], eax
mov eax, dword [ebp - 0x48]
lea edi, [eax - 4]
mov dword [ebp - 0x60], edi
mov edi, dword [ebp - 0x84]
mov dword [eax - 8], edi
mov ecx, dword [ebp - 0x5c]
lea ebx, [edx + edx*2]
mov edx, 1
mov esi, dword [ebp - 0x20]
mov edi, dword [ebp - 0x1c]
call fcn.70036210
add edi, eax
add esi, edi
add ebx, esi
cmp dword [ebp - 0x44], esi
mov dword [ebp - 0x1c], edi
mov dword [ebp - 0x20], esi
jle 0x70038c0b
cmp esi, dword [ebp - 0x68]
mov eax, 1
cmovge eax, dword [ebp - 0x58]
mov edi, dword [ebp - 0x84]
mov dword [ebp - 0x58], eax
mov eax, dword [ebp - 0x60]
mov dword [eax], edi
add dword [ebp - 0x40], 1
mov eax, dword [ebp - 0x40]
add dword [ebp - 0x48], 8
cmp eax, dword [ebp + 0x10]
je 0x70039d4d
mov ecx, dword [ebp - 0x5c]
xor edx, edx
call fcn.70036210
cmp eax, 0x80000000
je 0x70039d4d
add eax, dword [ebp - 0x24]
lea edx, [ebx + ebx*2]
mov dword [ebp - 0x24], eax
add eax, dword [ebp - 0x28]
add edx, eax
cmp dword [ebp - 0x44], eax
mov dword [ebp - 0x28], eax
jg 0x70038359
cmp dword [ebp - 0x64], eax
jge 0x70038c8a
cmp dword [ebp - 0x54], eax
mov eax, 1
cmovge eax, dword [ebp - 0x58]
mov dword [ebp - 0x58], eax
mov eax, dword [ebp - 0x48]
lea edi, [eax - 4]
mov dword [ebp - 0x60], edi
mov edi, dword [ebp - 0x88]
mov dword [eax - 8], edi
jmp 0x7003837a
mov edi, eax
add ecx, 0x18
mov dword [ebp - 0x80], eax
mov eax, dword [esi + 0x8b4]
mov dword [ecx - 0x18], eax
mov eax, dword [edi + 4]
mov dword [ecx - 0x14], eax
mov eax, dword [edi + 8]
mov dword [ecx - 0x10], eax
mov eax, dword [edi + 0xc]
mov dword [ecx - 0xc], eax
lea eax, [esi + 0x8c4]
mov edi, eax
mov dword [ebp - 0x7c], eax
mov eax, dword [esi + 0x8c4]
mov dword [ecx - 8], eax
mov eax, dword [edi + 4]
mov dword [ecx - 4], eax
jmp 0x70037cb7
mov ecx, dword [esi + 0x50]
mov dword [ebx + 0x2c], ecx
mov ecx, dword [esi + 0x54]
mov dword [eax + 4], ecx
mov ecx, dword [esi + 0x58]
mov dword [eax + 8], ecx
mov ecx, dword [esi + 0x5c]
mov dword [eax + 0xc], ecx
mov ecx, dword [esi + 0x60]
mov dword [eax + 0x10], ecx
mov ecx, dword [esi + 0x64]
mov dword [eax + 0x14], ecx
mov ecx, dword [esi + 0x68]
mov dword [eax + 0x18], ecx
mov ecx, dword [esi + 0x6c]
mov dword [eax + 0x1c], ecx
mov ecx, dword [esi + 0x70]
mov dword [eax + 0x20], ecx
mov ecx, dword [esi + 0x74]
mov dword [eax + 0x24], ecx
mov edx, dword [esi + 0x78]
mov dword [eax + 0x28], edx
lea eax, [ebx + 0x58]
jmp 0x70037c36
mov eax, dword [esi + 0x89c]
add ecx, 8
mov dword [ecx - 8], eax
mov eax, dword [esi + 0x8a0]
mov dword [ecx - 4], eax
jmp 0x70037c9a
cmp word [esi + 8], 3
je 0x70039647
mov eax, dword [ebp + 8]
test byte [eax + 0x9c], 4
je 0x70037b48
mov dword [esp], 0x400
call sub.msvcrt.dll_malloc
mov dword [ebp - 0x40], eax
mov eax, dword [esi + 0x48]
cmp eax, 7
jle 0x7003a2b1
mov eax, dword [esi + 0x30]
mov ecx, dword [esi + 0x2c]
cmp ecx, eax
je 0x7003a697
mov edx, dword [esi + 0x48]
mov ebx, dword [ebp + 8]
cmp edx, 7
mov ebx, dword [ebx + 0x60]
jg 0x70038535
add edx, 8
add eax, 1
mov dword [esi + 0x48], edx
mov dword [esi + 0x30], eax
sub ecx, eax
lea eax, [ecx + ebx]
mov dword [esp + 4], eax
mov eax, dword [ebp + 8]
mov eax, dword [eax + 0x5c]
mov dword [esp], eax
call sub.msvcrt.dll_realloc
mov edx, dword [esi + 0x48]
mov ebx, dword [ebp + 8]
cmp edx, 7
mov dword [ebx + 0x5c], eax
jle 0x7003a307
mov eax, dword [esi + 0x30]
mov ecx, dword [esi + 0x2c]
sub ecx, eax
mov ebx, dword [ebp + 8]
mov edx, dword [ebx + 0x5c]
add edx, dword [ebx + 0x60]
mov dword [esp + 8], ecx
mov dword [esp + 4], eax
mov dword [esp], edx
call sub.msvcrt.dll_memcpy
mov eax, dword [ebp + 8]
mov ecx, dword [eax + 0x60]
mov eax, dword [esi + 0x48]
cmp eax, 7
jle 0x7003a2f3
mov edx, dword [esi + 0x30]
mov eax, dword [esi + 0x2c]
mov ebx, dword [ebp + 8]
mov dword [ebp - 0x4c], esi
mov esi, dword [ebp + 8]
mov dword [ebp - 0x44], edi
sub eax, edx
add eax, ecx
mov dword [ebx + 0x60], eax
mov ebx, dword [ebp - 0x40]
jmp 0x700385dd
mov eax, dword [esi + 0x60]
add eax, edi
mov dword [esp + 4], eax
mov eax, dword [esi + 0x5c]
mov dword [esp], eax
call sub.msvcrt.dll_realloc
mov dword [esi + 0x5c], eax
add eax, dword [esi + 0x60]
mov dword [esp + 8], edi
mov dword [esp + 4], ebx
mov dword [esp], eax
call sub.msvcrt.dll_memcpy
add dword [esi + 0x60], edi
mov eax, dword [esi + 0x70]
mov dword [esp + 8], 4
mov dword [esp + 4], ebx
mov ecx, dword [esi + 0x74]
mov dword [esp], ecx
call dword [eax]
test eax, eax
mov edi, eax
jne 0x700385b0
mov eax, dword [ebp - 0x40]
mov edi, dword [ebp - 0x44]
mov esi, dword [ebp - 0x4c]
mov dword [esp], eax
call sub.msvcrt.dll_free
mov eax, dword [ebp + 8]
mov ebx, dword [eax + 0x60]
cmp ebx, 0x10
jbe 0x70037b48
mov ecx, dword [eax + 0x5c]
mov eax, ecx
lea edx, [ecx + 0x10]
cmp byte [eax], 0xff
jne 0x7003a6a8
add eax, 1
cmp eax, edx
jne 0x70038622
lea edx, [ebx - 0x10]
mov dword [esp + 8], edx
mov dword [esp + 4], eax
mov dword [esp], ecx
call sub.msvcrt.dll_memcpy
mov eax, dword [ebp + 8]
sub dword [eax + 0x60], 0x10
jmp 0x70037b48
mov eax, dword [ebp - 0x54]
mov ebx, dword [ebp + 0xc]
mov dword [ebp - 0x58], 0
mov dword [ebp - 0x40], 0
neg eax
mov dword [ebp - 0x5c], eax
jmp 0x700386c4
cmp edx, dword [ebp - 0x5c]
mov edx, 1
cmovge edx, dword [ebp - 0x58]
mov dword [ebp - 0x58], edx
mov edx, dword [ebp - 0x44]
mov dword [ebp - 0x28], edx
cmp dword [ebp - 0x44], edi
jle 0x7003874b
cmp edi, dword [ebp - 0x5c]
mov ecx, 1
mov edi, dword [ebp - 0x44]
cmovge ecx, dword [ebp - 0x58]
mov dword [ebp - 0x20], edi
mov dword [ebp - 0x58], ecx
movzx ecx, byte [ebp - 0x4c]
add ebx, 8
add dword [ebp - 0x40], 1
shl edx, cl
mov dword [ebx - 8], edx
shl edi, cl
mov dword [ebx - 4], edi
mov edi, dword [ebp - 0x40]
cmp edi, dword [ebp + 0x10]
je 0x70037b0b
xor edx, edx
mov ecx, esi
call fcn.70035f20
cmp eax, 0x80000000
mov edi, eax
je 0x70038c7e
mov edx, 1
mov ecx, esi
call fcn.70035f20
add edi, edi
mov ecx, eax
and ecx, 1
or ecx, edi
mov edi, ecx
sub edi, eax
lea edx, [ecx + eax]
movzx eax, word [esi + 0xa]
sar edx, 1
sar edi, 1
add edx, dword [ebp - 0x24]
add edi, dword [ebp - 0x1c]
mov dword [ebp - 0x24], edx
mov dword [ebp - 0x1c], edi
add edx, dword [ebp - 0x28]
add edi, dword [ebp - 0x20]
test ax, ax
mov dword [ebp - 0x28], edx
mov dword [ebp - 0x20], edi
je 0x700386a3
cmp dword [ebp - 0x44], edx
jg 0x70038670
cmp dword [ebp - 0x64], edx
jge 0x70038685
cmp dword [ebp - 0x54], edx
mov edx, 1
cmovge edx, dword [ebp - 0x58]
cmp dword [ebp - 0x44], edi
mov dword [ebp - 0x58], edx
mov edx, dword [ebp - 0x64]
mov dword [ebp - 0x28], edx
jg 0x7003868e
cmp dword [ebp - 0x64], edi
jge 0x700386a3
cmp dword [ebp - 0x54], edi
mov ecx, 1
mov edi, dword [ebp - 0x64]
cmovge ecx, dword [ebp - 0x58]
mov dword [ebp - 0x20], edi
mov dword [ebp - 0x58], ecx
jmp 0x700386a3
mov ecx, dword [esi + 0xf8c]
add eax, 0x34
mov dword [eax - 0x34], ecx
mov ecx, dword [esi + 0xf90]
mov dword [eax - 0x30], ecx
mov ecx, dword [esi + 0xf94]
mov dword [eax - 0x2c], ecx
mov ecx, dword [esi + 0xf98]
mov dword [eax - 0x28], ecx
mov ecx, dword [esi + 0xf9c]
mov dword [eax - 0x24], ecx
mov ecx, dword [esi + 0xfa0]
mov dword [eax - 0x20], ecx
mov ecx, dword [esi + 0xfa4]
mov dword [eax - 0x1c], ecx
mov ecx, dword [esi + 0xfa8]
mov dword [eax - 0x18], ecx
mov ecx, dword [esi + 0xfac]
mov dword [eax - 0x14], ecx
mov ecx, dword [esi + 0xfb0]
mov dword [eax - 0x10], ecx
mov ecx, dword [esi + 0xfb4]
mov dword [eax - 0xc], ecx
mov ecx, dword [esi + 0xfb8]
mov dword [eax - 8], ecx
mov edx, dword [esi + 0xfbc]
mov dword [eax - 4], edx
jmp 0x70037f7d
xor ebx, ebx
test byte [ebp - 0x4e], 0x40
je 0x7003986d
lea eax, [esi + 0x24]
mov dword [ebp - 0x44], eax
lea esi, [esi]
xor edx, edx
mov ecx, esi
call fcn.70036210
cmp eax, 0x80000000
je 0x700388a5
add eax, dword [ebp - 0x24]
mov edi, dword [esi + 0x48]
mov dword [ebp - 0x24], eax
add eax, dword [ebp - 0x28]
cmp edi, 3
mov ecx, edi
mov dword [ebp - 0x40], eax
mov dword [ebp - 0x28], eax
jg 0x700399bc
mov edx, dword [esi + 0x30]
add edx, 1
cmp edx, dword [esi + 0x2c]
mov dword [esi + 0x30], edx
je 0x70038b22
movzx eax, byte [edx]
lea edi, [ecx + 8]
mov dword [esi + 0x48], edi
shl eax, cl
mov ecx, edi
or eax, dword [esi + 0x3c]
cmp edi, 3
mov dword [esi + 0x3c], eax
jle 0x70038834
cmp edi, 0x20
jle 0x70038bd1
mov edx, dword [esi + 0x30]
sub edi, 4
mov ecx, 8
mov dword [esi + 0x48], edi
sub ecx, edi
movzx edx, byte [edx]
sar edx, cl
mov dword [esi + 0x3c], edx
mov ecx, dword [ebp - 0x40]
and eax, 0xf
mov edi, dword [ebp - 0x48]
shl ecx, 4
add eax, ecx
lea edx, [edi + edi*2]
lea edi, [edx + eax]
mov dword [ebp - 0x48], edi
mov edi, dword [ebp + 0xc]
mov dword [edi + ebx*4], eax
add ebx, 1
cmp ebx, dword [ebp + 0x10]
jne 0x70038800
mov edi, ebx
movzx eax, word [esi + 0xa]
mov dword [ebp - 0x40], ebx
mov dword [ebp - 0x58], 0
jmp 0x70037b0b
test byte [ebp - 0x4e], 2
je 0x7003a0db
mov eax, dword [ebp + 0xc]
mov edi, 1
mov dword [ebp - 0x5c], esi
mov esi, dword [ebp - 0x48]
mov dword [ebp - 0x58], 0
mov dword [ebp - 0x40], 0
lea ebx, [eax + 4]
mov eax, dword [ebp - 0x54]
neg eax
mov dword [ebp - 0x60], eax
jmp 0x70038915
cmp eax, dword [ebp - 0x60]
mov eax, dword [ebp - 0x58]
cmovl eax, edi
mov dword [ebp - 0x58], eax
mov eax, dword [ebp - 0x84]
mov dword [ebx - 4], eax
add dword [ebp - 0x40], 1
add ebx, 4
mov eax, dword [ebp - 0x40]
cmp eax, dword [ebp + 0x10]
je 0x7003966b
mov ecx, dword [ebp - 0x5c]
xor edx, edx
call fcn.70036210
cmp eax, 0x80000000
je 0x7003966b
add eax, dword [ebp - 0x24]
lea esi, [esi + esi*2]
mov dword [ebp - 0x24], eax
add eax, dword [ebp - 0x28]
add esi, eax
cmp dword [ebp - 0x44], eax
mov dword [ebp - 0x28], eax
jg 0x700388ed
cmp dword [ebp - 0x64], eax
jge 0x70038c70
cmp dword [ebp - 0x54], eax
mov eax, dword [ebp - 0x58]
cmovl eax, edi
mov dword [ebp - 0x58], eax
mov eax, dword [ebp - 0x88]
mov dword [ebx - 4], eax
jmp 0x70038902
mov ebx, dword [ebp + 0xc]
mov dword [ebp - 0x40], 0
mov edi, dword [ebp - 0x48]
mov dword [ebp - 0x44], esi
jmp 0x700389d3
mov ecx, dword [ebp - 0x44]
mov edx, 1
add esi, esi
add ebx, 8
call fcn.70036210
add dword [ebp - 0x40], 1
mov ecx, eax
and ecx, 1
or ecx, esi
mov esi, dword [ebp - 0x4c]
lea edx, [ecx + eax]
sub ecx, eax
sar edx, 1
mov eax, ecx
add edx, dword [ebp - 0x24]
sar eax, 1
add eax, dword [ebp - 0x1c]
mov dword [ebp - 0x24], edx
lea ecx, [edi + edi*2]
add edx, dword [ebp - 0x28]
mov dword [ebp - 0x1c], eax
add eax, dword [ebp - 0x20]
add ecx, edx
lea edi, [ecx + ecx*2]
mov ecx, esi
mov dword [ebp - 0x28], edx
shl edx, cl
add edi, eax
mov dword [ebx - 8], edx
mov dword [ebp - 0x20], eax
shl eax, cl
mov dword [ebx - 4], eax
mov eax, dword [ebp - 0x40]
cmp eax, dword [ebp + 0x10]
je 0x700389e6
mov ecx, dword [ebp - 0x44]
xor edx, edx
call fcn.70036210
cmp eax, 0x80000000
mov esi, eax
jne 0x70038972
mov dword [ebp - 0x48], edi
mov esi, dword [ebp - 0x44]
jmp 0x700382d5
mov edi, dword [ebp - 0x68]
mov ebx, ecx
add dword [ebp - 0x3c], 1
and dword [ebp - 0x3c], 7
cmp word [ebp - 0x64], 0
je 0x70038b06
cmp dword [edi + 0x8a0], 7
jle 0x70038b4a
mov eax, dword [edi + 0x48]
test eax, eax
je 0x70038c46
mov edx, dword [edi + 0x3c]
sub eax, 1
mov dword [edi + 0x48], eax
mov eax, edx
and eax, 1
shr edx, 1
test al, al
mov dword [edi + 0x3c], edx
je 0x70038b4a
mov eax, dword [edi + 0x89c]
mov esi, dword [ebp - 0x48]
shl ebx, 4
add eax, ebx
lea ecx, [esi + esi*2]
lea ebx, [ecx + eax]
mov dword [ebp - 0x48], ebx
mov ebx, dword [ebp - 0x44]
mov dword [ebx - 4], eax
add dword [ebp - 0x40], 1
mov eax, dword [ebp - 0x40]
add dword [ebp - 0x44], 4
cmp eax, dword [ebp + 0x10]
jne 0x70037e00
mov esi, edi
movzx eax, word [edi + 0xa]
mov dword [ebp - 0x58], 0
mov edi, dword [ebp - 0x40]
jmp 0x70037b0b
call fcn.70035c50
cmp eax, 0x80000000
jne 0x70037e1f
jmp 0x70038a6d
test ecx, ecx
je 0x700389f6
mov dword [ebp - 0x68], edi
mov edi, esi
jmp 0x70038ad3
lea ebx, [eax + 1]
cmp eax, 0x100
mov eax, 0x100
cmove ebx, eax
mov dword [edx + 8], ebx
mov eax, dword [ebp - 0x3c]
sub edi, 1
add eax, dword [edx]
and eax, 7
mov dword [edx + eax*4 + 0x10], ecx
add edx, 0x60
cmp edi, 0xffffffff
je 0x700389f1
mov ebx, ecx
mov eax, dword [ebp - 0x3c]
mov esi, dword [edx + eax*4 + 0x10]
mov eax, dword [edx + 8]
mov ecx, eax
imul ecx, esi
sub ecx, 0xffffff80
sar ecx, 8
add ecx, ebx
test esi, esi
je 0x70038ab6
test ebx, ebx
je 0x70038ab6
xor esi, ebx
jns 0x70038aa3
mov esi, dword [ebp - 0x60]
lea ebx, [eax - 1]
cmp esi, eax
cmove ebx, esi
mov dword [edx + 8], ebx
jmp 0x70038ab6
mov eax, dword [ebp - 0x48]
movzx ecx, byte [ebp - 0x4c]
lea eax, [eax + eax*2]
add eax, ebx
mov dword [ebp - 0x48], eax
mov eax, dword [ebp - 0x44]
shl ebx, cl
mov dword [eax - 4], ebx
jmp 0x70038a59
mov eax, dword [ebp - 0x44]
mov dword [esp], eax
call dword [esi + 0x24]
mov edx, dword [esi + 0x30]
mov ecx, dword [esi + 0x48]
jmp 0x70038843
mov eax, dword [ebp - 0x58]
mov dword [esp], eax
call dword [esi + 0x24]
mov edx, dword [esi + 0x30]
mov ecx, dword [esi + 0x48]
jmp 0x70038254
mov esi, dword [edi + 0x48]
cmp esi, 3
mov ecx, esi
jg 0x7003a2d8
mov edx, dword [edi + 0x30]
lea eax, [edi + 0x24]
mov dword [ebp - 0x68], eax
add edx, 1
cmp edx, dword [edi + 0x2c]
mov dword [edi + 0x30], edx
je 0x70038bf7
movzx eax, byte [edx]
lea esi, [ecx + 8]
mov dword [edi + 0x48], esi
shl eax, cl
mov ecx, esi
or eax, dword [edi + 0x3c]
cmp esi, 3
mov dword [edi + 0x3c], eax
jle 0x70038b61
mov edx, eax
cmp esi, 0x20
jle 0x70038c33
mov eax, dword [edi + 0x30]
sub esi, 4
mov ecx, 8
mov dword [edi + 0x48], esi
sub ecx, esi
movzx eax, byte [eax]
sar eax, cl
mov dword [edi + 0x3c], eax
mov eax, edx
and eax, 0xf
cmp eax, dword [edi + 0x89c]
je 0x70039601
mov dword [edi + 0x89c], eax
mov dword [edi + 0x8a0], 0
jmp 0x70038a42
mov edx, eax
sub edi, 4
shr edx, 4
mov dword [esi + 0x48], edi
mov dword [esi + 0x3c], edx
jmp 0x7003887c
mov edx, eax
sub edi, 8
shr edx, 8
mov dword [esi + 0x48], edi
mov dword [esi + 0x3c], edx
jmp 0x7003828d
mov eax, dword [ebp - 0x68]
mov dword [esp], eax
call dword [edi + 0x24]
mov edx, dword [edi + 0x30]
mov ecx, dword [edi + 0x48]
jmp 0x70038b70
cmp dword [ebp - 0x64], esi
jge 0x70038ca1
cmp dword [ebp - 0x54], esi
mov eax, 1
cmovge eax, dword [ebp - 0x58]
mov edi, dword [ebp - 0x88]
mov dword [ebp - 0x58], eax
mov eax, dword [ebp - 0x60]
mov dword [eax], edi
jmp 0x700383bf
mov eax, edx
sub esi, 4
shr eax, 4
mov dword [edi + 0x48], esi
mov dword [edi + 0x3c], eax
jmp 0x70038bab
mov eax, dword [edi + 0x30]
add eax, 1
cmp eax, dword [edi + 0x2c]
mov dword [edi + 0x30], eax
je 0x7003a6df
mov dword [edi + 0x48], 7
movzx eax, byte [eax]
movzx edx, al
and eax, 1
mov dword [edi + 0x3c], edx
jmp 0x70038a2f
movzx ecx, byte [ebp - 0x4c]
shl eax, cl
mov dword [ebx - 4], eax
jmp 0x70038902
movzx eax, word [esi + 0xa]
mov edi, dword [ebp - 0x40]
jmp 0x70037b0b
mov edi, dword [ebp - 0x48]
movzx ecx, byte [ebp - 0x4c]
lea ebx, [edi - 4]
shl eax, cl
mov dword [ebp - 0x60], ebx
mov dword [edi - 8], eax
jmp 0x7003837a
movzx ecx, byte [ebp - 0x4c]
mov eax, dword [ebp - 0x60]
shl esi, cl
mov dword [eax], esi
jmp 0x700383bf
test byte [ebp - 0x4e], 0x10
je 0x700399c4
movzx edi, word [ebp - 0x4e]
mov dword [ebp - 0x40], 0
mov dword [ebp - 0x6c], esi
mov eax, edi
and ax, 0x1000
mov word [ebp - 0x96], ax
mov eax, dword [ebp + 0xc]
add eax, 8
mov dword [ebp - 0x94], eax
mov eax, edi
and ax, 0x400
mov word [ebp - 0x98], ax
mov eax, edi
and ax, 0x4000
mov word [ebp - 0x50], ax
lea esi, [esi]
mov ebx, dword [ebp - 0x6c]
xor edx, edx
cmp word [ebp - 0x96], 0
mov ecx, ebx
jne 0x70039494
cmp word [ebp - 0x98], 0
je 0x70039430
call fcn.700355a0
cmp eax, 0x80000000
mov edi, eax
je 0x70039080
mov edx, 1
mov ecx, ebx
call fcn.700355a0
mov edx, dword [ebp - 0x78]
mov ebx, eax
mov eax, dword [ebp - 0x88]
cmp dword [ebp - 0x78], eax
jge 0x700394e3
add edx, eax
mov eax, dword [ebp - 0x84]
add eax, dword [ebp - 0x90]
cmp edx, eax
jge 0x70039535
mov eax, dword [ebp - 0x90]
cmp dword [ebp - 0x88], eax
jge 0x70039535
mov eax, ebx
sub eax, edi
lea edx, [edi + ebx]
mov dword [ebp - 0x44], edi
mov edi, eax
lea esi, [esi]
mov ecx, dword [ebp - 0x84]
mov esi, edx
sar edx, 0x1f
sar esi, 1
mov eax, ecx
sar eax, 8
sub ecx, eax
mov eax, edx
xor eax, esi
sub eax, edx
mov edx, ebx
add eax, ecx
mov ecx, dword [ebp - 0x78]
mov dword [ebp - 0x84], eax
sar edx, 0x1f
mov eax, ecx
sar eax, 8
sub ecx, eax
mov eax, edx
xor eax, ebx
sub eax, edx
add eax, ecx
mov ecx, dword [ebp - 0x88]
mov dword [ebp - 0x78], eax
mov eax, ecx
sar eax, 8
sub ecx, eax
mov eax, dword [ebp - 0x44]
mov edx, eax
sar edx, 0x1f
xor eax, edx
sub eax, edx
mov edx, dword [ebp - 0x90]
add ecx, eax
mov dword [ebp - 0x88], ecx
mov ecx, edx
sar ecx, 8
mov eax, ecx
mov ecx, edx
mov edx, edi
sub ecx, eax
sar edx, 0x1f
mov eax, edx
xor eax, edi
sub eax, edx
add ecx, eax
mov dword [ebp - 0x90], ecx
movzx ecx, word [ebp - 0x50]
test cx, cx
cmove esi, dword [ebp - 0x44]
cmove edi, ebx
mov ebx, dword [ebp - 0x6c]
mov eax, dword [ebx + 0x80]
add ebx, 0x8cc
test dword [ebp - 0x8c], 0x8000
lea edx, [eax - 1]
mov dword [ebp - 0x5c], edx
je 0x700390d0
test eax, eax
je 0x70038fc5
mov eax, dword [ebp - 0x3c]
mov dword [ebp - 0x44], edi
lea eax, [ebx + eax*4 + 0x10]
mov edi, eax
jmp 0x70038f1c
add eax, dword [ebp - 0x3c]
mov ecx, dword [edi]
mov edx, dword [edi + 0x20]
mov dword [ebp - 0x58], eax
mov eax, dword [ebx + 8]
and dword [ebp - 0x58], 7
mov dword [ebp - 0x70], eax
imul eax, ecx
add eax, 0x100
sar eax, 9
add eax, dword [ebp - 0x44]
mov dword [ebp - 0x64], eax
mov eax, dword [ebx + 0xc]
mov dword [ebp - 0x74], eax
imul eax, edx
add eax, 0x100
sar eax, 9
add eax, esi
test ecx, ecx
mov dword [ebp - 0x68], eax
je 0x70038eca
mov eax, dword [ebp - 0x44]
test eax, eax
je 0x70038eca
mov eax, dword [ebp - 0x44]
xor eax, ecx
mov eax, dword [ebp - 0x70]
js 0x70039256
mov ecx, eax
add ecx, 1
cmp eax, 0x200
mov eax, 0x200
cmove ecx, eax
mov dword [ebx + 8], ecx
test edx, edx
je 0x70038ef1
test esi, esi
je 0x70038ef1
xor edx, esi
js 0x70039088
mov esi, dword [ebp - 0x74]
mov eax, 0x200
lea edx, [esi + 1]
cmp esi, 0x200
cmove edx, eax
mov dword [ebx + 0xc], edx
mov esi, dword [ebp - 0x58]
mov ecx, dword [ebp - 0x64]
mov eax, dword [ebp - 0x68]
lea edx, [ebx + esi*4]
mov dword [edx + 0x10], ecx
mov dword [edx + 0x30], eax
mov esi, eax
mov dword [ebp - 0x44], ecx
sub dword [ebp - 0x5c], 1
add ebx, 0x60
add edi, 0x60
cmp dword [ebp - 0x5c], 0xffffffff
je 0x70038fc2
mov eax, dword [ebx]
test eax, eax
jg 0x70038e60
mov ecx, dword [ebx + 8]
cmp eax, 0xffffffff
mov edx, dword [ebx + 0x10]
mov eax, ecx
je 0x70039307
imul eax, edx
add eax, 0x100
sar eax, 9
add eax, esi
test edx, edx
je 0x70038f68
test esi, esi
je 0x70038f68
xor edx, esi
js 0x70039619
lea edx, [ecx + 1]
cmp ecx, 0x200
mov esi, 0x200
cmove edx, esi
mov dword [ebx + 8], edx
mov ecx, dword [ebx + 0xc]
mov edx, eax
imul edx, ecx
add edx, 0x100
sar edx, 9
add edx, dword [ebp - 0x44]
test eax, eax
je 0x70038fa6
mov esi, dword [ebp - 0x44]
test esi, esi
je 0x70038fa6
mov esi, dword [ebp - 0x44]
xor esi, eax
js 0x7003954f
lea esi, [ecx + 1]
cmp ecx, 0x200
mov ecx, 0x200
cmove esi, ecx
mov dword [ebx + 0xc], esi
sub dword [ebp - 0x5c], 1
add ebx, 0x60
add edi, 0x60
mov esi, eax
mov dword [ebx - 0x50], edx
cmp dword [ebp - 0x5c], 0xffffffff
mov dword [ebp - 0x44], edx
jne 0x70038f1c
mov edi, dword [ebp - 0x44]
add dword [ebp - 0x3c], 1
and dword [ebp - 0x3c], 7
cmp word [ebp - 0x50], 0
je 0x70038fe8
mov eax, edi
lea edx, [esi + esi]
and eax, 1
or eax, edx
mov esi, eax
sub esi, edi
add edi, eax
sar esi, 1
sar edi, 1
test byte [ebp - 0x4e], 0x40
je 0x700390a0
mov eax, dword [ebp - 0x6c]
cmp dword [eax + 0x8a0], 7
jle 0x70039390
mov eax, dword [eax + 0x48]
test eax, eax
je 0x700395af
mov ebx, dword [ebp - 0x6c]
sub eax, 1
mov dword [ebx + 0x48], eax
mov eax, dword [ebx + 0x3c]
mov edx, eax
and edx, 1
mov ebx, dword [ebp - 0x6c]
shr eax, 1
test dl, dl
mov dword [ebx + 0x3c], eax
je 0x70039390
mov edx, dword [ebx + 0x89c]
mov eax, dword [ebp - 0x48]
shl edi, 4
sar edx, 4
add edx, edi
mov edi, dword [ebp - 0x94]
shl esi, 4
lea eax, [eax + eax*2]
add eax, edx
mov dword [edi - 8], edx
lea edx, [eax + eax*2]
mov eax, dword [ebp - 0x6c]
mov eax, dword [eax + 0x89c]
and eax, 0xf
add eax, esi
mov dword [edi - 4], eax
add eax, edx
mov dword [ebp - 0x48], eax
add dword [ebp - 0x40], 1
mov eax, dword [ebp - 0x40]
add dword [ebp - 0x94], 8
cmp eax, dword [ebp + 0x10]
jne 0x70038d00
mov esi, dword [ebp - 0x6c]
jmp 0x700382d5
mov eax, dword [ebp - 0x74]
mov esi, dword [ebp - 0x60]
lea edx, [eax - 1]
cmp esi, eax
cmove edx, esi
mov dword [ebx + 0xc], edx
jmp 0x70038ef1
mov eax, dword [ebp - 0x48]
mov ebx, dword [ebp - 0x94]
lea edx, [eax + eax*8]
lea eax, [edi + edi*2]
add eax, edx
add eax, esi
mov dword [ebp - 0x48], eax
mov eax, edi
mov edi, dword [ebp - 0x4c]
mov ecx, edi
shl eax, cl
mov dword [ebx - 8], eax
mov eax, esi
shl eax, cl
mov dword [ebx - 4], eax
jmp 0x70039069
test eax, eax
je 0x70038fc5
mov eax, dword [ebp - 0x3c]
mov dword [ebp - 0x44], edi
lea eax, [ebx + eax*4 + 0x10]
mov edi, eax
jmp 0x700391a8
add eax, dword [ebp - 0x3c]
mov ecx, dword [edi]
mov edx, dword [edi + 0x20]
mov dword [ebp - 0x58], eax
mov eax, dword [ebx + 8]
and dword [ebp - 0x58], 7
mov dword [ebp - 0x70], eax
imul eax, ecx
sub eax, 0xffffff80
sar eax, 8
add eax, dword [ebp - 0x44]
mov dword [ebp - 0x64], eax
mov eax, dword [ebx + 0xc]
mov dword [ebp - 0x74], eax
imul eax, edx
sub eax, 0xffffff80
sar eax, 8
add eax, esi
test ecx, ecx
mov dword [ebp - 0x68], eax
je 0x70039156
mov eax, dword [ebp - 0x44]
test eax, eax
je 0x70039156
mov eax, dword [ebp - 0x44]
xor eax, ecx
mov eax, dword [ebp - 0x70]
js 0x70039268
mov ecx, eax
add ecx, 1
cmp eax, 0x100
mov eax, 0x100
cmove ecx, eax
mov dword [ebx + 8], ecx
test edx, edx
je 0x7003917d
test esi, esi
je 0x7003917d
xor edx, esi
js 0x70039240
mov esi, dword [ebp - 0x74]
mov eax, 0x100
lea edx, [esi + 1]
cmp esi, 0x100
cmove edx, eax
mov dword [ebx + 0xc], edx
mov esi, dword [ebp - 0x58]
mov ecx, dword [ebp - 0x64]
mov eax, dword [ebp - 0x68]
lea edx, [ebx + esi*4]
mov dword [edx + 0x10], ecx
mov dword [edx + 0x30], eax
mov esi, eax
mov dword [ebp - 0x44], ecx
sub dword [ebp - 0x5c], 1
add ebx, 0x60
add edi, 0x60
cmp dword [ebp - 0x5c], 0xffffffff
je 0x70038fc2
mov eax, dword [ebx]
test eax, eax
jg 0x700390f0
mov ecx, dword [ebx + 8]
cmp eax, 0xffffffff
mov edx, dword [ebx + 0x10]
mov eax, ecx
je 0x70039280
imul eax, edx
sub eax, 0xffffff80
sar eax, 8
add eax, esi
test edx, edx
je 0x700391f2
test esi, esi
je 0x700391f2
xor edx, esi
js 0x7003962c
lea edx, [ecx + 1]
cmp ecx, 0x100
mov esi, 0x100
cmove edx, esi
mov dword [ebx + 8], edx
mov ecx, dword [ebx + 0xc]
mov edx, eax
imul edx, ecx
sub edx, 0xffffff80
sar edx, 8
add edx, dword [ebp - 0x44]
test eax, eax
je 0x7003922d
mov esi, dword [ebp - 0x44]
test esi, esi
je 0x7003922d
mov esi, dword [ebp - 0x44]
xor esi, eax
js 0x7003957f
lea esi, [ecx + 1]
cmp ecx, 0x100
mov ecx, 0x100
cmove esi, ecx
mov dword [ebx + 0xc], esi
mov dword [ebx + 0x10], edx
mov esi, eax
mov dword [ebp - 0x44], edx
jmp 0x70039194
mov eax, dword [ebp - 0x74]
mov esi, dword [ebp - 0x60]
lea edx, [eax - 1]
cmp esi, eax
cmove edx, esi
mov dword [ebx + 0xc], edx
jmp 0x7003917d
lea ecx, [eax - 1]
cmp dword [ebp - 0x60], eax
cmove ecx, dword [ebp - 0x60]
mov dword [ebx + 8], ecx
jmp 0x70038eca
lea ecx, [eax - 1]
cmp dword [ebp - 0x60], eax
cmove ecx, dword [ebp - 0x60]
mov dword [ebx + 8], ecx
jmp 0x70039156
imul eax, edx
sub eax, 0xffffff80
sar eax, 8
add eax, dword [ebp - 0x44]
test edx, edx
mov dword [ebp - 0x58], eax
je 0x700392c0
mov eax, dword [ebp - 0x44]
test eax, eax
je 0x700392c0
mov eax, dword [ebp - 0x44]
xor eax, edx
js 0x7003a2c5
lea eax, [ecx + 1]
cmp ecx, 0x100
mov edx, 0x100
cmove eax, edx
mov dword [ebx + 8], eax
lea esi, [esi]
mov ecx, dword [ebp - 0x58]
mov edx, dword [ebx + 0xc]
mov eax, ecx
imul eax, edx
sub eax, 0xffffff80
sar eax, 8
add eax, esi
test ecx, ecx
je 0x700392f7
test esi, esi
je 0x700392f7
xor esi, ecx
js 0x700398af
lea ecx, [edx + 1]
cmp edx, 0x100
mov esi, 0x100
cmove ecx, esi
mov dword [ebx + 0xc], ecx
mov dword [ebx + 0x10], eax
mov esi, eax
mov eax, dword [ebp - 0x58]
mov dword [ebp - 0x44], eax
jmp 0x70039194
imul eax, edx
add eax, 0x100
sar eax, 9
add eax, dword [ebp - 0x44]
test edx, edx
mov dword [ebp - 0x58], eax
je 0x70039342
mov eax, dword [ebp - 0x44]
test eax, eax
je 0x70039342
mov eax, dword [ebp - 0x44]
xor eax, edx
js 0x7003a2e0
lea eax, [ecx + 1]
cmp ecx, 0x200
mov edx, 0x200
cmove eax, edx
mov dword [ebx + 8], eax
mov ecx, dword [ebp - 0x58]
mov edx, dword [ebx + 0xc]
mov eax, ecx
imul eax, edx
add eax, 0x100
sar eax, 9
add eax, esi
test ecx, ecx
je 0x7003937b
test esi, esi
je 0x7003937b
xor esi, ecx
js 0x700398c2
lea ecx, [edx + 1]
cmp edx, 0x200
mov esi, 0x200
cmove ecx, esi
mov dword [ebx + 0xc], ecx
mov dword [ebx + 0x10], eax
mov esi, eax
mov eax, dword [ebp - 0x58]
mov dword [ebp - 0x44], eax
jmp 0x70038f08
mov eax, dword [ebp - 0x6c]
mov ebx, dword [eax + 0x48]
cmp ebx, 7
mov ecx, ebx
jg 0x7003a2a9
mov eax, dword [ebp - 0x6c]
mov dword [ebp - 0x44], edi
mov edx, dword [eax + 0x30]
lea ebx, [eax + 0x24]
mov edi, eax
mov dword [ebp - 0x58], ebx
add edx, 1
cmp edx, dword [edi + 0x2c]
mov dword [edi + 0x30], edx
je 0x700394b9
movzx eax, byte [edx]
lea ebx, [ecx + 8]
mov dword [edi + 0x48], ebx
shl eax, cl
mov ecx, ebx
or eax, dword [edi + 0x3c]
cmp ebx, 7
mov dword [edi + 0x3c], eax
jle 0x700393b2
mov edi, dword [ebp - 0x44]
mov edx, eax
cmp ebx, 0x20
jle 0x700394cd
mov eax, dword [ebp - 0x6c]
sub ebx, 8
mov ecx, 8
sub ecx, ebx
mov dword [eax + 0x48], ebx
mov eax, dword [eax + 0x30]
mov ebx, dword [ebp - 0x6c]
movzx eax, byte [eax]
sar eax, cl
mov dword [ebx + 0x3c], eax
mov eax, dword [ebp - 0x6c]
movzx edx, dl
cmp edx, dword [eax + 0x89c]
je 0x700395e2
mov dword [eax + 0x89c], edx
mov dword [eax + 0x8a0], 0
jmp 0x70039034
call fcn.70035c50
cmp eax, 0x80000000
mov esi, eax
je 0x70039080
mov ecx, ebx
mov edx, 1
call fcn.70035c50
mov ebx, eax
mov eax, dword [ebp - 0x78]
cmp dword [ebp - 0x84], eax
jg 0x70039517
mov eax, dword [ebp - 0x88]
cmp dword [ebp - 0x84], eax
jg 0x70039517
mov eax, esi
lea edx, [ebx + ebx]
and eax, 1
or edx, eax
mov eax, edx
sub eax, esi
mov dword [ebp - 0x44], eax
lea ebx, [edx + esi]
sar dword [ebp - 0x44], 1
sar ebx, 1
mov edi, ebx
sub edi, dword [ebp - 0x44]
jmp 0x70038d90
call fcn.700355a0
cmp eax, 0x80000000
mov edi, eax
je 0x70039080
mov edx, 1
mov ecx, ebx
call fcn.700355a0
mov esi, eax
jmp 0x70038e1f
mov eax, dword [ebp - 0x58]
mov dword [esp], eax
call dword [edi + 0x24]
mov edx, dword [edi + 0x30]
mov ecx, dword [edi + 0x48]
jmp 0x700393c1
mov ecx, dword [ebp - 0x6c]
mov eax, edx
sub ebx, 8
shr eax, 8
mov dword [ecx + 0x48], ebx
mov dword [ecx + 0x3c], eax
jmp 0x70039405
mov eax, dword [ebp - 0x84]
add edx, dword [ebp - 0x88]
add eax, dword [ebp - 0x90]
cmp edx, eax
jge 0x70039561
mov eax, dword [ebp - 0x90]
cmp dword [ebp - 0x78], eax
jge 0x70039561
mov eax, edi
sub eax, ebx
lea edx, [edi + ebx]
mov dword [ebp - 0x44], ebx
mov ebx, edi
mov edi, eax
jmp 0x70038d90
mov eax, dword [ebp - 0x88]
cmp dword [ebp - 0x78], eax
jg 0x700395f1
mov eax, ebx
sub eax, esi
mov dword [ebp - 0x44], eax
lea edx, [eax + ebx]
jmp 0x7003948a
mov eax, dword [ebp - 0x84]
cmp dword [ebp - 0x78], eax
jg 0x70039591
mov eax, ebx
sub eax, edi
mov dword [ebp - 0x44], eax
lea edx, [eax + ebx]
jmp 0x70038d90
lea esi, [ecx - 1]
cmp dword [ebp - 0x60], ecx
cmove esi, dword [ebp - 0x60]
mov dword [ebx + 0xc], esi
jmp 0x70038fa6
mov eax, dword [ebp - 0x84]
cmp dword [ebp - 0x88], eax
jg 0x70039591
lea eax, [edi + ebx]
lea edx, [eax + ebx]
mov dword [ebp - 0x44], ebx
mov ebx, eax
jmp 0x70038d90
lea esi, [ecx - 1]
cmp dword [ebp - 0x60], ecx
cmove esi, dword [ebp - 0x60]
mov dword [ebx + 0xc], esi
jmp 0x7003922d
mov eax, edi
lea edx, [ebx + ebx]
and eax, 1
or edx, eax
mov eax, edx
lea ebx, [edi + edx]
sub eax, edi
mov dword [ebp - 0x44], eax
sar ebx, 1
sar dword [ebp - 0x44], 1
jmp 0x70038d90
mov ebx, dword [ebp - 0x6c]
mov eax, dword [ebx + 0x30]
mov dword [ebp - 0x44], eax
add eax, 1
cmp eax, dword [ebx + 0x2c]
mov dword [ebx + 0x30], eax
je 0x7003a6f0
mov ebx, dword [ebp - 0x6c]
mov dword [ebx + 0x48], 7
movzx edx, byte [eax]
movzx eax, dl
and edx, 1
mov dword [ebx + 0x3c], eax
jmp 0x7003901e
mov eax, dword [ebp - 0x6c]
add dword [eax + 0x8a0], 1
jmp 0x70039034
lea eax, [esi + ebx]
lea edx, [eax + ebx]
mov dword [ebp - 0x44], ebx
mov ebx, eax
jmp 0x7003948a
add dword [edi + 0x8a0], 1
jmp 0x70038a42
mov dword [ebp - 0x40], edi
movzx eax, word [esi + 0xa]
jmp 0x70037b0b
mov esi, dword [ebp - 0x60]
lea edx, [ecx - 1]
cmp esi, ecx
cmove edx, esi
mov dword [ebx + 8], edx
jmp 0x70038f68
mov esi, dword [ebp - 0x60]
lea edx, [ecx - 1]
cmp esi, ecx
cmove edx, esi
mov dword [ebx + 8], edx
jmp 0x700391f2
mov dword [ebp - 0x40], edi
jmp 0x70037b0b
mov edx, dword [ebx + 0x98]
mov eax, dword [esi + 0x18]
test edx, edx
cmove eax, dword [esi + 0x14]
cmp eax, dword [ebp - 0x48]
je 0x700384e2
add dword [ebx + 0x90], 1
jmp 0x700384e2
mov dword [ebp - 0x48], esi
mov esi, dword [ebp - 0x5c]
mov edi, dword [ebp - 0x40]
movzx eax, word [esi + 0xa]
jmp 0x70037b0b
mov eax, dword [ebp + 0xc]
mov dword [ebp - 0x40], 0
lea edi, [eax + 4]
movzx eax, word [ebp - 0x4e]
mov dword [ebp - 0x44], edi
and eax, 0x40
mov word [ebp - 0x5c], ax
lea eax, [esi + 0x24]
mov dword [ebp - 0x60], eax
jmp 0x70039734
lea edi, [ecx + 1]
mov eax, 0x100
cmp ecx, 0x100
cmovne eax, edi
mov dword [ebp - 0x30], eax
mov eax, edx
sub eax, dword [ebp - 0x58]
cmp word [ebp - 0x5c], 0
mov dword [ebp - 0x28], edx
mov dword [ebp - 0x24], eax
je 0x70039789
cmp dword [esi + 0x8a0], 7
jle 0x700397a5
mov eax, dword [esi + 0x48]
test eax, eax
je 0x70039837
mov edx, dword [esi + 0x3c]
sub eax, 1
mov dword [esi + 0x48], eax
mov eax, edx
and eax, 1
shr edx, 1
test al, al
mov dword [esi + 0x3c], edx
je 0x700397a5
mov eax, dword [esi + 0x89c]
mov edx, dword [ebp - 0x28]
mov edi, dword [ebp - 0x48]
shl edx, 4
add edx, eax
mov eax, dword [ebp - 0x44]
lea ecx, [edi + edi*2]
mov dword [eax - 4], edx
lea eax, [ecx + edx]
mov dword [ebp - 0x48], eax
add dword [ebp - 0x40], 1
mov eax, dword [ebp - 0x40]
add dword [ebp - 0x44], 4
cmp eax, dword [ebp + 0x10]
je 0x70038302
xor edx, edx
mov ecx, esi
call fcn.70036210
cmp eax, 0x80000000
je 0x70038302
mov edi, dword [ebp - 0x28]
mov ecx, dword [ebp - 0x30]
mov ebx, edi
mov dword [ebp - 0x58], edi
mov edi, dword [ebp - 0x24]
mov edx, edi
imul edx, ecx
sub edx, 0xffffff80
sar edx, 8
add edx, ebx
add edx, eax
test eax, eax
setg al
shr edi, 0x1f
mov ebx, edi
cmp al, bl
jne 0x700396a3
xor eax, eax
test ecx, ecx
lea edi, [ecx - 1]
cmovne eax, edi
mov dword [ebp - 0x30], eax
jmp 0x700396b7
mov eax, dword [ebp - 0x48]
movzx ecx, byte [ebp - 0x4c]
lea eax, [eax + eax*2]
add eax, edx
mov dword [ebp - 0x48], eax
mov eax, dword [ebp - 0x44]
shl edx, cl
mov dword [eax - 4], edx
jmp 0x70039720
mov ebx, dword [esi + 0x48]
cmp ebx, 3
mov ecx, ebx
jg 0x7003a362
mov edx, dword [esi + 0x30]
add edx, 1
cmp edx, dword [esi + 0x2c]
mov dword [esi + 0x30], edx
je 0x70039816
movzx eax, byte [edx]
lea ebx, [ecx + 8]
mov dword [esi + 0x48], ebx
shl eax, cl
mov ecx, ebx
or eax, dword [esi + 0x3c]
cmp ebx, 3
mov dword [esi + 0x3c], eax
jle 0x700397b6
cmp ebx, 0x20
jle 0x70039827
mov edx, dword [esi + 0x30]
sub ebx, 4
mov ecx, 8
mov dword [esi + 0x48], ebx
sub ecx, ebx
movzx edx, byte [edx]
sar edx, cl
mov dword [esi + 0x3c], edx
and eax, 0xf
cmp eax, dword [esi + 0x89c]
je 0x70039861
mov dword [esi + 0x89c], eax
mov dword [esi + 0x8a0], 0
jmp 0x70039706
mov eax, dword [ebp - 0x60]
mov dword [esp], eax
call dword [esi + 0x24]
mov edx, dword [esi + 0x30]
mov ecx, dword [esi + 0x48]
jmp 0x700397c1
mov edx, eax
sub ebx, 4
shr edx, 4
mov dword [esi + 0x48], ebx
mov dword [esi + 0x3c], edx
jmp 0x700397f6
mov eax, dword [esi + 0x30]
add eax, 1
cmp eax, dword [esi + 0x2c]
mov dword [esi + 0x30], eax
je 0x7003a703
mov dword [esi + 0x48], 7
movzx eax, byte [eax]
movzx edx, al
and eax, 1
mov dword [esi + 0x3c], edx
jmp 0x700396f3
add dword [esi + 0x8a0], 1
jmp 0x70039706
mov edi, dword [ebp - 0x48]
jmp 0x70039897
add eax, dword [ebp - 0x24]
movzx ecx, byte [ebp - 0x4c]
lea edi, [edi + edi*2]
mov edx, dword [ebp + 0xc]
mov dword [ebp - 0x24], eax
add eax, dword [ebp - 0x28]
add edi, eax
mov dword [ebp - 0x28], eax
shl eax, cl
mov dword [edx + ebx*4], eax
add ebx, 1
cmp ebx, dword [ebp + 0x10]
je 0x700398a7
xor edx, edx
mov ecx, esi
call fcn.70036210
cmp eax, 0x80000000
jne 0x70039872
mov dword [ebp - 0x48], edi
jmp 0x700388a5
mov esi, dword [ebp - 0x60]
lea ecx, [edx - 1]
cmp esi, edx
cmove ecx, esi
mov dword [ebx + 0xc], ecx
jmp 0x700392f7
mov esi, dword [ebp - 0x60]
lea ecx, [edx - 1]
cmp esi, edx
cmove ecx, esi
mov dword [ebx + 0xc], ecx
jmp 0x7003937b
movzx eax, word [esi + 0xc]
movsx edi, ax
mov word [ebp - 0x60], ax
and ax, 0x80
mov ecx, edi
cmp ax, 1
mov word [ebp - 0x44], ax
sbb eax, eax
and eax, 0xffffffd4
add eax, 0x58
cmp word [esi + 8], 3
je 0x7003a677
movzx edx, word [esi + 0xa]
add eax, 0x14
lea edi, [eax + 8]
add eax, 0x10
test dx, dx
cmove edi, eax
movzx eax, word [ebp - 0x60]
and ax, 0x40
mov word [ebp - 0x4c], ax
je 0x70039925
add edi, 8
mov eax, ecx
and eax, 0x8000
mov dword [ebp - 0x58], eax
jne 0x70039934
add edi, 0x18
movzx ecx, word [ebp - 0x60]
mov eax, ecx
and ax, 0x410
mov word [ebp - 0x40], ax
je 0x7003999c
mov eax, dword [esi + 0x80]
lea edx, [esi + 0x8cc]
mov dword [ebp - 0x6c], edx
test eax, eax
lea edx, [eax - 1]
mov dword [ebp - 0x70], edx
je 0x7003999c
mov eax, ecx
mov edx, dword [ebp - 0x6c]
and eax, 1
mov ecx, dword [ebp - 0x70]
mov dword [ebp - 0x6c], ebx
mov ebx, eax
mov dword [ebp - 0x74], esi
jmp 0x7003998b
lea esi, [edi + eax*4 + 4]
test bx, bx
lea edi, [edi + eax*8 + 8]
cmovne edi, esi
sub ecx, 1
add edx, 0x60
cmp ecx, 0xffffffff
je 0x70039996
mov eax, dword [edx]
test eax, eax
jg 0x70039972
add edi, 0x10
jmp 0x70039980
mov esi, dword [ebp - 0x74]
mov ebx, dword [ebp - 0x6c]
mov eax, edi
shl eax, 8
mov dword [esi + 0x888], edi
mov dword [esp], eax
call sub.msvcrt.dll_malloc
mov edx, edi
mov dword [esi + 0x884], eax
jmp 0x70037bd6
mov eax, dword [esi + 0x3c]
jmp 0x7003885b
mov eax, dword [ebp + 0xc]
mov dword [ebp - 0x40], 0
add eax, 8
mov dword [ebp - 0x5c], eax
movzx eax, word [ebp - 0x4e]
and eax, 0x40
mov word [ebp - 0x6c], ax
lea eax, [esi + 0x24]
mov dword [ebp - 0x70], eax
jmp 0x70039acd
add eax, 1
mov dword [ebp - 0x68], eax
mov eax, 0x100
cmp dword [ebp - 0x44], 0x100
cmovne eax, dword [ebp - 0x68]
mov dword [ebp - 0x30], eax
test edx, edx
mov edx, dword [ebp - 0x64]
setg al
shr edx, 0x1f
cmp al, dl
je 0x70039c07
lea edx, [ecx + 1]
mov eax, 0x100
cmp ecx, 0x100
cmovne eax, edx
mov dword [ebp - 0x2c], eax
mov eax, ebx
sub eax, dword [ebp - 0x60]
mov dword [ebp - 0x28], ebx
mov dword [ebp - 0x20], edi
mov dword [ebp - 0x24], eax
mov eax, edi
sub eax, dword [ebp - 0x58]
cmp word [ebp - 0x6c], 0
mov dword [ebp - 0x1c], eax
je 0x70039bdc
cmp dword [esi + 0x8a0], 7
jle 0x70039c19
mov eax, dword [esi + 0x48]
test eax, eax
je 0x70039d0f
mov edx, dword [esi + 0x3c]
sub eax, 1
mov dword [esi + 0x48], eax
mov eax, edx
and eax, 1
shr edx, 1
test al, al
mov dword [esi + 0x3c], edx
je 0x70039c19
mov edx, dword [esi + 0x89c]
mov eax, dword [ebp - 0x48]
sar edx, 4
mov edi, dword [ebp - 0x5c]
lea ecx, [eax + eax*2]
mov eax, dword [ebp - 0x28]
shl eax, 4
add eax, edx
mov edx, dword [ebp - 0x20]
mov dword [edi - 8], eax
add eax, ecx
lea ecx, [eax + eax*2]
mov eax, dword [esi + 0x89c]
shl edx, 4
and eax, 0xf
add eax, edx
mov dword [edi - 4], eax
add eax, ecx
mov dword [ebp - 0x48], eax
add dword [ebp - 0x40], 1
mov eax, dword [ebp - 0x40]
add dword [ebp - 0x5c], 8
cmp eax, dword [ebp + 0x10]
je 0x700382d5
xor edx, edx
mov ecx, esi
call fcn.70036210
cmp eax, 0x80000000
mov ebx, eax
je 0x700382d5
mov eax, dword [ebp - 0x78]
cmp dword [ebp - 0x84], eax
jle 0x70039cb0
mov eax, dword [ebp - 0x88]
mov edx, 1
mov ecx, esi
cmp dword [ebp - 0x78], eax
jg 0x70039c9e
call fcn.70036210
mov edx, eax
sub edx, ebx
lea edi, [eax + edx]
mov ebx, dword [ebp - 0x84]
mov ecx, ebx
sar ecx, 8
sub ebx, ecx
mov ecx, edi
sar ecx, 1
sar edi, 0x1f
xor ecx, edi
sub ecx, edi
mov edi, dword [ebp - 0x78]
add ebx, ecx
mov dword [ebp - 0x84], ebx
mov ebx, eax
sar ebx, 0x1f
mov ecx, edi
sar ecx, 8
sub edi, ecx
mov ecx, ebx
xor ecx, eax
sub ecx, ebx
lea ebx, [edi + ecx]
mov edi, dword [ebp - 0x88]
mov dword [ebp - 0x78], ebx
mov ebx, edx
sar ebx, 0x1f
mov ecx, edi
sar ecx, 8
sub edi, ecx
mov ecx, ebx
xor ecx, edx
sub ecx, ebx
lea ebx, [edi + ecx]
mov edi, dword [ebp - 0x28]
mov dword [ebp - 0x88], ebx
mov ecx, dword [ebp - 0x24]
mov ebx, edi
mov dword [ebp - 0x60], edi
mov edi, dword [ebp - 0x30]
imul ecx, edi
mov dword [ebp - 0x44], edi
mov edi, dword [ebp - 0x20]
sub ecx, 0xffffff80
sar ecx, 8
add ecx, ebx
lea ebx, [ecx + eax]
mov ecx, dword [ebp - 0x2c]
mov dword [ebp - 0x58], edi
mov edi, dword [ebp - 0x1c]
mov dword [ebp - 0x64], edi
imul edi, ecx
sub edi, 0xffffff80
sar edi, 8
add edi, dword [ebp - 0x58]
add edi, edx
test eax, eax
mov eax, dword [ebp - 0x24]
setg byte [ebp - 0x68]
shr eax, 0x1f
cmp byte [ebp - 0x68], al
mov eax, dword [ebp - 0x44]
jne 0x700399ea
sub eax, 1
mov dword [ebp - 0x68], eax
xor eax, eax
cmp dword [ebp - 0x44], 0
cmovne eax, dword [ebp - 0x68]
mov dword [ebp - 0x30], eax
jmp 0x70039a03
mov eax, dword [ebp - 0x48]
lea edx, [eax + eax*8]
lea eax, [ebx + ebx*2]
add eax, edx
mov edx, dword [ebp - 0x4c]
add eax, edi
mov dword [ebp - 0x48], eax
mov eax, ebx
mov ebx, dword [ebp - 0x5c]
mov ecx, edx
shl eax, cl
mov dword [ebx - 8], eax
mov eax, edi
shl eax, cl
mov dword [ebx - 4], eax
jmp 0x70039ab9
xor eax, eax
test ecx, ecx
lea edx, [ecx - 1]
cmovne eax, edx
mov dword [ebp - 0x2c], eax
jmp 0x70039a2a
mov ebx, dword [esi + 0x48]
cmp ebx, 7
mov ecx, ebx
jg 0x7003a68f
mov edx, dword [esi + 0x30]
lea esi, [esi]
add edx, 1
cmp edx, dword [esi + 0x2c]
mov dword [esi + 0x30], edx
je 0x70039ce8
movzx eax, byte [edx]
lea ebx, [ecx + 8]
mov dword [esi + 0x48], ebx
shl eax, cl
mov ecx, ebx
or eax, dword [esi + 0x3c]
cmp ebx, 7
mov dword [esi + 0x3c], eax
jle 0x70039c30
mov edx, eax
cmp ebx, 0x20
jle 0x70039cfc
mov eax, dword [esi + 0x30]
sub ebx, 8
mov ecx, 8
mov dword [esi + 0x48], ebx
sub ecx, ebx
movzx eax, byte [eax]
sar eax, cl
mov dword [esi + 0x3c], eax
movzx edx, dl
cmp edx, dword [esi + 0x89c]
je 0x70039d39
mov dword [esi + 0x89c], edx
mov dword [esi + 0x8a0], 0
jmp 0x70039a84
call fcn.70036210
mov edx, eax
lea eax, [eax + ebx]
lea edi, [edx + eax]
jmp 0x70039b14
mov eax, dword [ebp - 0x88]
cmp dword [ebp - 0x84], eax
jg 0x70039af2
mov edx, 1
mov ecx, esi
call fcn.70036210
lea edi, [eax + eax]
mov eax, ebx
and eax, 1
or edi, eax
mov edx, edi
lea eax, [edi + ebx]
sub edx, ebx
sar eax, 1
sar edx, 1
jmp 0x70039b14
mov eax, dword [ebp - 0x70]
mov dword [esp], eax
call dword [esi + 0x24]
mov edx, dword [esi + 0x30]
mov ecx, dword [esi + 0x48]
jmp 0x70039c3f
mov eax, edx
sub ebx, 8
shr eax, 8
mov dword [esi + 0x48], ebx
mov dword [esi + 0x3c], eax
jmp 0x70039c7a
mov eax, dword [esi + 0x30]
add eax, 1
cmp eax, dword [esi + 0x2c]
mov dword [esi + 0x30], eax
je 0x7003a714
mov dword [esi + 0x48], 7
movzx eax, byte [eax]
movzx edx, al
and eax, 1
mov dword [esi + 0x3c], edx
jmp 0x70039a71
add dword [esi + 0x8a0], 1
jmp 0x70039a84
mov eax, dword [esi + 0x3c]
jmp 0x7003826c
mov esi, dword [ebp - 0x5c]
mov dword [ebp - 0x48], ebx
mov edi, dword [ebp - 0x40]
movzx eax, word [esi + 0xa]
jmp 0x70037b0b
test word [ebp - 0x4e], 0x410
je 0x7003a481
movzx eax, word [ebp - 0x4e]
mov dword [ebp - 0x58], 0
mov dword [ebp - 0x40], 0
mov dword [ebp - 0x8c], esi
and ax, 0x400
mov word [ebp - 0x94], ax
mov eax, dword [ebp + 0xc]
add eax, 8
mov dword [ebp - 0x90], eax
cmp word [ebp - 0x94], 0
je 0x70039ff6
mov edi, dword [ebp - 0x8c]
lea eax, [ebp - 0x38]
xor edx, edx
mov dword [esp], eax
mov ecx, edi
call fcn.700365f0
mov edx, 1
mov ecx, edi
sub esp, 4
mov dword [ebp - 0x68], eax
lea eax, [ebp - 0x34]
mov dword [esp], eax
call fcn.700365f0
sub esp, 4
mov dword [ebp - 0x6c], eax
cmp dword [ebp - 0x68], 0x80000000
je 0x70039fe4
mov edi, dword [ebp - 0x8c]
mov eax, dword [edi + 0x80]
lea edx, [edi + 0x8cc]
test eax, eax
lea edi, [eax - 1]
mov dword [ebp - 0x74], edi
je 0x7003a473
mov eax, dword [ebp - 0x3c]
lea eax, [edx + eax*4 + 0x10]
mov dword [ebp - 0x78], eax
jmp 0x70039e9f
add eax, 1
cmp ebx, 0x100
mov ebx, 0x100
cmove eax, ebx
mov dword [edx + 8], eax
mov eax, dword [ebp - 0x70]
lea esi, [edx + esi*4]
mov ecx, edi
xor cx, cx
sar ecx, 7
mov dword [esi + 0x10], eax
mov ebx, dword [edx + 0xc]
movzx eax, di
imul eax, ebx
imul ecx, ebx
sar eax, 7
lea eax, [eax + ecx + 1]
sar eax, 1
add eax, dword [ebp - 0x6c]
test edi, edi
je 0x70039e7e
mov ecx, dword [ebp - 0x6c]
test ecx, ecx
je 0x70039e7e
mov ecx, dword [ebp - 0x6c]
xor ecx, edi
js 0x70039f0e
lea ecx, [ebx + 1]
cmp ebx, 0x100
mov edi, 0x100
cmove ecx, edi
mov dword [edx + 0xc], ecx
sub dword [ebp - 0x74], 1
add edx, 0x60
add dword [ebp - 0x78], 0x60
cmp dword [ebp - 0x74], 0xffffffff
mov dword [esi + 0x30], eax
je 0x70039f21
mov dword [ebp - 0x6c], eax
mov eax, dword [ebp - 0x70]
mov dword [ebp - 0x68], eax
mov eax, dword [ebp - 0x78]
mov esi, dword [ebp - 0x3c]
add esi, dword [edx]
mov ecx, dword [eax]
mov edi, dword [eax + 0x20]
and esi, 7
mov eax, dword [edx + 8]
mov ebx, eax
movzx eax, cx
imul eax, ebx
mov dword [ebp - 0x5c], ebx
mov ebx, ecx
xor bx, bx
sar ebx, 7
imul ebx, dword [ebp - 0x5c]
sar eax, 7
lea eax, [eax + ebx + 1]
sar eax, 1
add eax, dword [ebp - 0x68]
test ecx, ecx
mov dword [ebp - 0x70], eax
je 0x70039e2b
mov ebx, dword [ebp - 0x68]
test ebx, ebx
je 0x70039e2b
mov eax, dword [ebp - 0x68]
mov ebx, dword [ebp - 0x5c]
xor eax, ecx
mov eax, ebx
jns 0x70039e17
mov ecx, dword [ebp - 0x60]
sub eax, 1
cmp ecx, ebx
cmove eax, ecx
mov dword [edx + 8], eax
jmp 0x70039e2b
mov edi, dword [ebp - 0x60]
lea ecx, [ebx - 1]
cmp edi, ebx
cmove ecx, edi
mov dword [edx + 0xc], ecx
jmp 0x70039e7e
mov esi, dword [ebp - 0x70]
mov dword [ebp - 0x5c], eax
movzx ecx, word [ebp - 0x4e]
add dword [ebp - 0x3c], 1
and dword [ebp - 0x3c], 7
and cx, 0x80
je 0x70039f7b
test word [ebp - 0x4e], 0x100
je 0x7003a074
mov edi, dword [ebp - 0x8c]
mov edx, dword [ebp - 0x38]
mov ebx, dword [ebp - 0x34]
mov eax, dword [edi + 0x8a8]
add eax, edx
add esi, eax
mov eax, dword [edi + 0x8ac]
add eax, ebx
add dword [ebp - 0x5c], eax
mov eax, edx
neg eax
mov dword [edi + 0x8a8], eax
mov eax, ebx
neg eax
mov dword [edi + 0x8ac], eax
test word [ebp - 0x4e], 0x4000
je 0x70039f9d
mov edi, dword [ebp - 0x5c]
mov eax, esi
and eax, 1
add edi, edi
or eax, edi
mov edi, eax
sub edi, esi
add esi, eax
mov dword [ebp - 0x5c], edi
sar esi, 1
sar dword [ebp - 0x5c], 1
mov eax, dword [ebp - 0x48]
lea edx, [eax + eax*8]
lea eax, [esi + esi*2]
add eax, edx
add eax, dword [ebp - 0x5c]
test cx, cx
mov dword [ebp - 0x48], eax
je 0x7003a01c
mov eax, esi
mov esi, dword [ebp - 0x4c]
mov edi, dword [ebp - 0x5c]
mov ebx, dword [ebp - 0x90]
mov ecx, esi
shl eax, cl
shl edi, cl
mov dword [ebx - 8], eax
mov dword [ebx - 4], edi
add dword [ebp - 0x40], 1
mov eax, dword [ebp - 0x40]
add dword [ebp - 0x90], 8
cmp eax, dword [ebp + 0x10]
jne 0x70039d9a
mov esi, dword [ebp - 0x8c]
mov edi, dword [ebp - 0x40]
movzx eax, word [esi + 0xa]
jmp 0x70037b0b
mov edi, dword [ebp - 0x8c]
xor edx, edx
mov ecx, edi
call fcn.70036210
mov edx, 1
mov ecx, edi
mov dword [ebp - 0x68], eax
call fcn.70036210
mov dword [ebp - 0x6c], eax
jmp 0x70039ddb
cmp dword [ebp - 0x44], esi
jle 0x7003a0aa
mov eax, dword [ebp - 0x54]
mov edi, dword [ebp - 0x90]
mov ebx, dword [ebp - 0x84]
neg eax
cmp esi, eax
mov eax, 1
cmovge eax, dword [ebp - 0x58]
mov dword [ebp - 0x58], eax
mov eax, edi
sub eax, 4
mov dword [edi - 8], ebx
mov edi, dword [ebp - 0x5c]
cmp dword [ebp - 0x44], edi
jle 0x7003a082
mov edx, dword [ebp - 0x54]
neg edx
cmp edi, edx
mov edi, dword [ebp - 0x84]
mov edx, 1
cmovge edx, dword [ebp - 0x58]
mov dword [eax], edi
mov dword [ebp - 0x58], edx
jmp 0x70039fcd
mov eax, dword [ebp - 0x34]
add esi, dword [ebp - 0x38]
add dword [ebp - 0x5c], eax
jmp 0x70039f7b
mov edi, dword [ebp - 0x5c]
cmp dword [ebp - 0x64], edi
jge 0x7003a352
cmp dword [ebp - 0x54], edi
mov edx, 1
mov edi, dword [ebp - 0x88]
cmovge edx, dword [ebp - 0x58]
mov dword [eax], edi
mov dword [ebp - 0x58], edx
jmp 0x70039fcd
cmp dword [ebp - 0x64], esi
jge 0x7003a339
mov edi, dword [ebp - 0x90]
mov eax, 1
cmp dword [ebp - 0x54], esi
mov ebx, dword [ebp - 0x88]
cmovge eax, dword [ebp - 0x58]
mov dword [ebp - 0x58], eax
mov eax, edi
sub eax, 4
mov dword [edi - 8], ebx
jmp 0x7003a04c
test word [ebp - 0x4e], 0x410
je 0x7003a371
movzx edi, word [ebp - 0x4e]
mov dword [ebp - 0x58], 0
mov dword [ebp - 0x40], 0
mov dword [ebp - 0x68], esi
mov eax, edi
and ax, 0x400
mov word [ebp - 0x70], ax
mov eax, dword [ebp + 0xc]
add eax, 4
mov dword [ebp - 0x6c], eax
mov eax, edi
and ax, 0x80
mov word [ebp - 0x74], ax
cmp word [ebp - 0x70], 0
je 0x7003a240
mov ecx, dword [ebp - 0x68]
lea eax, [ebp - 0x38]
xor edx, edx
mov dword [esp], eax
call fcn.700365f0
sub esp, 4
cmp eax, 0x80000000
je 0x7003a231
mov edi, dword [ebp - 0x68]
mov ecx, dword [edi + 0x80]
lea edx, [edi + 0x8cc]
test ecx, ecx
lea edi, [ecx - 1]
mov dword [ebp - 0x5c], edi
jne 0x7003a18f
jmp 0x7003a36a
lea eax, [edi + 1]
cmp edi, 0x100
mov ebx, 0x100
cmove eax, ebx
mov dword [edx + 8], eax
mov eax, dword [ebp - 0x3c]
add eax, dword [edx]
sub dword [ebp - 0x5c], 1
and eax, 7
mov dword [edx + eax*4 + 0x10], ecx
add edx, 0x60
cmp dword [ebp - 0x5c], 0xffffffff
je 0x7003a1d1
mov eax, ecx
mov edi, dword [ebp - 0x3c]
mov ebx, dword [edx + edi*4 + 0x10]
mov edi, dword [edx + 8]
mov esi, ebx
movzx ecx, bx
xor si, si
imul ecx, edi
sar esi, 7
imul esi, edi
sar ecx, 7
lea ecx, [ecx + esi + 1]
sar ecx, 1
add ecx, eax
test ebx, ebx
je 0x7003a174
test eax, eax
je 0x7003a174
xor ebx, eax
jns 0x7003a160
mov ebx, dword [ebp - 0x60]
lea eax, [edi - 1]
cmp ebx, edi
cmove eax, ebx
mov dword [edx + 8], eax
jmp 0x7003a174
mov esi, ecx
add dword [ebp - 0x3c], 1
mov eax, dword [ebp - 0x48]
and dword [ebp - 0x3c], 7
cmp word [ebp - 0x74], 0
lea eax, [eax + eax*2]
je 0x7003a24f
test word [ebp - 0x4e], 0x100
je 0x7003a27a
mov edi, dword [ebp - 0x68]
mov ecx, dword [ebp - 0x38]
mov edx, dword [edi + 0x8a8]
add edx, ecx
neg ecx
add esi, edx
add eax, esi
mov dword [ebp - 0x48], eax
mov dword [edi + 0x8a8], ecx
movzx ecx, byte [ebp - 0x4c]
mov eax, dword [ebp - 0x6c]
shl esi, cl
mov dword [eax - 4], esi
add dword [ebp - 0x40], 1
mov eax, dword [ebp - 0x40]
add dword [ebp - 0x6c], 4
cmp eax, dword [ebp + 0x10]
jne 0x7003a119
mov esi, dword [ebp - 0x68]
mov edi, dword [ebp - 0x40]
movzx eax, word [esi + 0xa]
jmp 0x70037b0b
mov ecx, dword [ebp - 0x68]
xor edx, edx
call fcn.70036210
jmp 0x7003a137
add eax, esi
cmp dword [ebp - 0x44], esi
mov dword [ebp - 0x48], eax
jle 0x7003a284
mov eax, dword [ebp - 0x54]
mov edi, dword [ebp - 0x84]
neg eax
cmp esi, eax
mov eax, 1
cmovge eax, dword [ebp - 0x58]
mov dword [ebp - 0x58], eax
mov eax, dword [ebp - 0x6c]
mov dword [eax - 4], edi
jmp 0x7003a21d
add esi, dword [ebp - 0x38]
add eax, esi
mov dword [ebp - 0x48], eax
jmp 0x7003a211
cmp dword [ebp - 0x64], esi
jge 0x7003a211
cmp dword [ebp - 0x54], esi
mov eax, 1
cmovge eax, dword [ebp - 0x58]
mov edi, dword [ebp - 0x88]
mov dword [ebp - 0x58], eax
mov eax, dword [ebp - 0x6c]
mov dword [eax - 4], edi
jmp 0x7003a21d
mov edx, dword [eax + 0x3c]
jmp 0x700393de
add eax, 8
mov dword [esi + 0x48], eax
mov eax, dword [esi + 0x30]
add eax, 1
mov dword [esi + 0x30], eax
jmp 0x70038510
mov edx, dword [ebp - 0x60]
lea eax, [ecx - 1]
cmp edx, ecx
cmove eax, edx
mov dword [ebx + 8], eax
jmp 0x700392c0
mov edx, dword [edi + 0x3c]
jmp 0x70038b8a
mov edx, dword [ebp - 0x60]
lea eax, [ecx - 1]
cmp edx, ecx
cmove eax, edx
mov dword [ebx + 8], eax
jmp 0x70039342
add eax, 8
mov dword [esi + 0x48], eax
mov eax, dword [esi + 0x30]
lea edx, [eax + 1]
mov dword [esi + 0x30], edx
jmp 0x70038594
mov ebx, dword [esi + 0x30]
lea eax, [edx + 8]
mov ecx, dword [esi + 0x2c]
mov dword [ebp - 0x44], eax
mov dword [esi + 0x48], eax
lea eax, [ebx + 1]
sub ecx, eax
cmp dword [ebp - 0x44], 7
mov dword [esi + 0x30], eax
jg 0x70038566
add edx, 0x10
lea eax, [ebx + 2]
mov dword [esi + 0x48], edx
mov dword [esi + 0x30], eax
jmp 0x70038566
mov edi, dword [ebp - 0x90]
movzx ecx, byte [ebp - 0x4c]
mov eax, edi
shl esi, cl
sub eax, 4
mov dword [edi - 8], esi
jmp 0x7003a04c
mov edi, dword [ebp - 0x5c]
movzx ecx, byte [ebp - 0x4c]
shl edi, cl
mov dword [eax], edi
jmp 0x70039fcd
mov eax, dword [esi + 0x3c]
jmp 0x700397d9
mov esi, eax
jmp 0x7003a1d3
mov eax, dword [ebp + 0xc]
mov dword [ebp - 0x5c], esi
mov esi, dword [ebp - 0x48]
mov dword [ebp - 0x58], 0
mov dword [ebp - 0x40], 0
lea edi, [eax + 4]
mov eax, dword [ebp - 0x54]
neg eax
mov dword [ebp - 0x60], eax
jmp 0x7003a3ed
lea eax, [ecx + 1]
cmp ecx, 0x100
mov ecx, 0x100
cmove eax, ecx
mov dword [ebp - 0x30], eax
mov eax, edx
sub eax, ebx
cmp dword [ebp - 0x44], edx
mov dword [ebp - 0x24], eax
lea eax, [esi + esi*2]
mov dword [ebp - 0x28], edx
lea esi, [edx + eax]
jle 0x7003a443
cmp edx, dword [ebp - 0x60]
mov eax, 1
cmovge eax, dword [ebp - 0x58]
mov dword [ebp - 0x58], eax
mov eax, dword [ebp - 0x84]
mov dword [edi - 4], eax
add dword [ebp - 0x40], 1
add edi, 4
mov eax, dword [ebp - 0x40]
cmp eax, dword [ebp + 0x10]
je 0x7003966b
mov ecx, dword [ebp - 0x5c]
xor edx, edx
call fcn.70036210
cmp eax, 0x80000000
je 0x7003966b
mov ecx, dword [ebp - 0x30]
mov edx, dword [ebp - 0x24]
mov ebx, dword [ebp - 0x28]
imul edx, ecx
sub edx, 0xffffff80
sar edx, 8
add edx, ebx
add edx, eax
test eax, eax
mov eax, dword [ebp - 0x24]
setg byte [ebp - 0x48]
shr eax, 0x1f
cmp byte [ebp - 0x48], al
jne 0x7003a395
lea eax, [ecx - 1]
mov dword [ebp - 0x48], eax
xor eax, eax
test ecx, ecx
cmovne eax, dword [ebp - 0x48]
mov dword [ebp - 0x30], eax
jmp 0x7003a3a9
cmp dword [ebp - 0x64], edx
jge 0x7003a465
cmp dword [ebp - 0x54], edx
mov eax, 1
cmovge eax, dword [ebp - 0x58]
mov dword [ebp - 0x58], eax
mov eax, dword [ebp - 0x88]
mov dword [edi - 4], eax
jmp 0x7003a3da
movzx ecx, byte [ebp - 0x4c]
shl edx, cl
mov dword [edi - 4], edx
jmp 0x7003a3da
mov eax, dword [ebp - 0x6c]
mov esi, dword [ebp - 0x68]
mov dword [ebp - 0x5c], eax
jmp 0x70039f27
mov eax, dword [ebp + 0xc]
mov dword [ebp - 0x58], 0
mov dword [ebp - 0x40], 0
mov dword [ebp - 0x5c], esi
lea edi, [eax + 8]
mov eax, dword [ebp - 0x54]
mov dword [ebp - 0x60], edi
mov edi, dword [ebp - 0x48]
neg eax
mov dword [ebp - 0x68], eax
jmp 0x7003a588
lea eax, [edx + 1]
cmp edx, 0x100
mov esi, 0x100
cmove eax, esi
mov dword [ebp - 0x30], eax
mov ecx, dword [ebp - 0x5c]
mov eax, ebx
mov edx, 1
sub eax, dword [ebp - 0x48]
mov dword [ebp - 0x28], ebx
mov dword [ebp - 0x24], eax
lea eax, [edi + edi*2]
lea edi, [ebx + eax]
call fcn.70036210
mov ecx, dword [ebp - 0x2c]
mov edx, dword [ebp - 0x1c]
mov esi, dword [ebp - 0x20]
imul edx, ecx
sub edx, 0xffffff80
sar edx, 8
add edx, esi
add edx, eax
test eax, eax
mov eax, dword [ebp - 0x1c]
setg byte [ebp - 0x48]
shr eax, 0x1f
cmp byte [ebp - 0x48], al
je 0x7003a62c
lea eax, [ecx + 1]
cmp ecx, 0x100
mov ecx, 0x100
cmove eax, ecx
mov dword [ebp - 0x2c], eax
mov eax, edx
lea edi, [edi + edi*2]
sub eax, esi
add edi, edx
cmp dword [ebp - 0x44], ebx
mov dword [ebp - 0x1c], eax
mov dword [ebp - 0x20], edx
jle 0x7003a602
cmp ebx, dword [ebp - 0x68]
mov eax, 1
mov ebx, dword [ebp - 0x60]
cmovge eax, dword [ebp - 0x58]
mov esi, dword [ebp - 0x84]
mov dword [ebp - 0x58], eax
mov eax, ebx
sub eax, 4
mov dword [ebx - 8], esi
cmp dword [ebp - 0x44], edx
jle 0x7003a5e1
mov ebx, dword [ebp - 0x84]
cmp edx, dword [ebp - 0x68]
mov edx, 1
cmovge edx, dword [ebp - 0x58]
mov dword [eax], ebx
mov dword [ebp - 0x58], edx
add dword [ebp - 0x40], 1
mov eax, dword [ebp - 0x40]
add dword [ebp - 0x60], 8
cmp eax, dword [ebp + 0x10]
je 0x7003a665
mov ecx, dword [ebp - 0x5c]
xor edx, edx
call fcn.70036210
cmp eax, 0x80000000
je 0x7003a665
mov ebx, dword [ebp - 0x28]
mov edx, dword [ebp - 0x30]
mov esi, ebx
mov dword [ebp - 0x48], ebx
mov ebx, dword [ebp - 0x24]
imul ebx, edx
sub ebx, 0xffffff80
sar ebx, 8
add ebx, esi
add ebx, eax
test eax, eax
setg al
mov esi, eax
mov eax, dword [ebp - 0x24]
mov ecx, esi
shr eax, 0x1f
cmp cl, al
jne 0x7003a4ab
xor eax, eax
test edx, edx
lea esi, [edx - 1]
cmovne eax, esi
mov dword [ebp - 0x30], eax
jmp 0x7003a4bf
cmp dword [ebp - 0x64], edx
jge 0x7003a642
mov ebx, dword [ebp - 0x88]
cmp dword [ebp - 0x54], edx
mov edx, 1
cmovge edx, dword [ebp - 0x58]
mov dword [eax], ebx
mov dword [ebp - 0x58], edx
jmp 0x7003a574
cmp dword [ebp - 0x64], ebx
jge 0x7003a64f
cmp dword [ebp - 0x54], ebx
mov eax, 1
mov ebx, dword [ebp - 0x60]
cmovge eax, dword [ebp - 0x58]
mov esi, dword [ebp - 0x88]
mov dword [ebp - 0x58], eax
mov eax, ebx
sub eax, 4
mov dword [ebx - 8], esi
jmp 0x7003a554
lea eax, [ecx - 1]
mov dword [ebp - 0x48], eax
xor eax, eax
test ecx, ecx
cmovne eax, dword [ebp - 0x48]
mov dword [ebp - 0x2c], eax
jmp 0x7003a51c
movzx ecx, byte [ebp - 0x4c]
shl edx, cl
mov dword [eax], edx
jmp 0x7003a574
mov esi, dword [ebp - 0x60]
movzx ecx, byte [ebp - 0x4c]
mov eax, esi
shl ebx, cl
sub eax, 4
mov dword [esi - 8], ebx
jmp 0x7003a554
mov esi, dword [ebp - 0x5c]
mov dword [ebp - 0x48], edi
mov edi, dword [ebp - 0x40]
movzx eax, word [esi + 0xa]
jmp 0x70037b0b
movzx edx, word [esi + 0xa]
lea edi, [eax + 0x1c]
add eax, 0x34
test dx, dx
cmove edi, eax
lea eax, [edi + 0x10]
jmp 0x70039908
mov edx, dword [esi + 0x3c]
jmp 0x70039c59
mov dword [ebp - 0x4c], esi
mov ebx, dword [ebp - 0x40]
mov dword [ebp - 0x44], edi
mov esi, dword [ebp + 8]
jmp 0x700385dd
mov dword [esp], ecx
call sub.msvcrt.dll_free
mov eax, dword [ebp + 8]
mov dword [eax + 0x5c], 0
mov dword [eax + 0x60], 0
jmp 0x70037b48
movzx eax, word [ebp - 0x4e]
and eax, 1
mov word [ebp - 0x4c], ax
mov eax, dword [ebp + 0x10]
shl eax, 2
mov dword [ebp - 0x5c], eax
jmp 0x70038163
lea eax, [edi + 0x24]
mov dword [esp], eax
call dword [edi + 0x24]
mov eax, dword [edi + 0x30]
jmp 0x70038c58
mov eax, ebx
add eax, 0x24
mov dword [esp], eax
call dword [ebx + 0x24]
mov eax, dword [ebx + 0x30]
jmp 0x700395c7
mov eax, dword [ebp - 0x60]
mov dword [esp], eax
call dword [esi + 0x24]
mov eax, dword [esi + 0x30]
jmp 0x70039849
mov eax, dword [ebp - 0x70]
mov dword [esp], eax
call dword [esi + 0x24]
mov eax, dword [esi + 0x30]
jmp 0x70039d21