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

Disassembly:
push ebp
mov ebp, esp
push edi
push esi
push ebx
sub esp, 0xdc
mov esi, dword [ebp + 8]
mov eax, dword [ebp + 8]
mov dword [ebp - 0x84], 0
mov edx, dword [esi + 0x190]
mov eax, dword [eax + 0x180]
mov esi, dword [edx + eax*4]
test eax, eax
mov edi, dword [esi + 0x18]
mov dword [ebp - 0x78], esi
mov esi, dword [esi + 0x14]
mov dword [ebp - 0x88], edi
mov dword [ebp - 0x80], esi
jne 0x70030e0d
test edi, 0x80
je 0x70031560
mov eax, dword [ebp - 0x88]
test al, 4
mov dword [ebp - 0x7c], eax
jne 0x70030ee2
mov eax, dword [ebp + 8]
cmp dword [eax + 0x18c], 0x40f
jle 0x70030ee2
mov ebx, dword [ebp - 0x80]
test ebx, ebx
jle 0x70031e48
mov eax, dword [ebp + 0xc]
mov esi, dword [eax]
mov eax, dword [eax + 4]
mov ecx, esi
sub ecx, eax
setne dl
or esi, eax
setne al
and al, dl
jne 0x70033b11
mov eax, dword [ebp + 0xc]
xor edx, edx
jmp 0x70030e75
mov ebx, dword [eax + 4]
mov edi, dword [eax]
or edi, ebx
or esi, edi
mov edi, dword [eax]
sub edi, ebx
or ecx, edi
jne 0x70031e40
add eax, 8
add edx, 1
cmp edx, dword [ebp - 0x80]
jne 0x70030e60
test esi, esi
setne al
cmp edx, dword [ebp - 0x80]
jne 0x70031e48
test al, al
je 0x70031e48
test ecx, ecx
jne 0x70031e48
mov eax, dword [ebp - 0x88]
mov ebx, dword [ebp - 0x80]
mov edx, dword [ebp + 0xc]
and eax, 0xfffffbcf
mov dword [ebp - 0x7c], eax
mov eax, dword [ebp - 0x78]
or dword [ebp - 0x7c], 0x40000000
mov esi, dword [ebp - 0x7c]
mov dword [eax + 0x18], esi
xor eax, eax
mov ecx, dword [edx + eax*8]
mov dword [edx + eax*4], ecx
add eax, 1
cmp eax, ebx
jne 0x70030ec4
mov eax, dword [ebp - 0x78]
mov ecx, dword [eax + 0x90]
test ecx, ecx
je 0x70032ed3
mov ecx, dword [ebp - 0x7c]
and ecx, 0x3e000
je 0x70030f3b
mov eax, dword [ebp - 0x7c]
shr ecx, 0xd
mov edx, eax
and edx, 0x7c0000
shr edx, 0x12
test eax, 0x40000004
je 0x70031527
mov eax, dword [ebp - 0x80]
test eax, eax
lea ebx, [eax - 1]
je 0x70030f24
mov eax, dword [ebp + 0xc]
add eax, 4
sub ebx, 1
sar dword [eax - 4], cl
cmp ebx, 0xffffffff
jne 0x70030f16
cmp edx, ecx
js 0x70031550
shl ecx, 0x12
sub dword [ebp - 0x7c], ecx
mov eax, dword [ebp - 0x78]
mov esi, dword [ebp - 0x7c]
mov dword [eax + 0x18], esi
mov eax, dword [ebp - 0x7c]
and eax, 0x80
mov dword [ebp - 0xa4], eax
jne 0x700310d4
mov eax, dword [ebp - 0x7c]
and eax, 0x7c0000
cmp eax, 0x5c0000
ja 0x700310d4
mov esi, dword [ebp - 0x80]
mov edi, dword [ebp - 0x78]
mov eax, esi
add eax, eax
test dword [ebp - 0x7c], 0x40000004
mov byte [edi + 0x11b], 0
mov byte [edi + 0x11a], 0
cmovne eax, esi
mov byte [edi + 0x119], 0
test eax, eax
mov byte [edi + 0x118], 0
lea edi, [eax - 1]
mov dword [ebp - 0x8c], eax
mov dword [ebp - 0x90], edi
je 0x70033ade
mov esi, dword [ebp + 0xc]
xor ebx, ebx
mov edi, 0xffffffff
mov dword [ebp - 0x74], eax
xor ecx, ecx
mov dword [ebp - 0x70], 0
nop
mov eax, dword [esi]
cdq
or ebx, eax
xor edx, eax
and edi, eax
or ecx, edx
mov edx, eax
and edx, 1
neg edx
xor edx, eax
or dword [ebp - 0x70], edx
test bl, 1
je 0x70030fee
test edi, 1
jne 0x70030fee
test byte [ebp - 0x70], 2
jne 0x70032605
add esi, 4
sub dword [ebp - 0x74], 1
jne 0x70030fc0
mov esi, dword [ebp - 0x78]
mov eax, dword [esi + 0x18]
and eax, 0xff83ffff
test ecx, ecx
mov dword [esi + 0x18], eax
je 0x70031022
add eax, 0x40000
jmp 0x70031012
mov eax, edx
shr ecx, 1
lea edx, [eax + 0x40000]
jne 0x70031010
mov esi, dword [ebp - 0x78]
mov dword [esi + 0x18], eax
test eax, 0x7c0000
je 0x70032605
test bl, 1
jne 0x70032d82
mov edx, 1
nop
lea esi, [esi]
shr ebx, 1
sub eax, 0x40000
mov ecx, edx
test bl, 1
lea edx, [ecx + 1]
je 0x70031040
mov edi, dword [ebp - 0x78]
mov dword [edi + 0x18], eax
mov byte [edi + 0x119], cl
mov eax, dword [ebp - 0x78]
mov edi, dword [ebp - 0x8c]
mov edx, dword [ebp - 0x90]
or dword [eax + 0x18], 0x100
test edi, edi
mov eax, dword [ebp + 0xc]
je 0x70033b2a
nop
sub edx, 1
sar dword [eax], cl
add eax, 4
cmp edx, 0xffffffff
jne 0x70031080
mov eax, dword [ebp - 0x78]
movzx edx, byte [eax + 0x11b]
movzx ecx, byte [eax + 0x119]
movzx eax, byte [eax + 0x11a]
add eax, ecx
add eax, edx
mov edi, dword [ebp - 0x78]
mov dword [ebp - 0x9c], 0
cmp dword [edi + 0x94], eax
je 0x7003114b
mov dword [edi + 0x94], eax
mov dword [edi + 0x84], 0
jmp 0x7003114b
test byte [ebp - 0x7c], 8
jne 0x70031490
mov eax, dword [ebp + 8]
test byte [eax + 0x17], 4
je 0x700314ae
mov eax, dword [ebp - 0xa4]
test eax, eax
je 0x70031651
mov eax, dword [ebp + 8]
mov edi, dword [ebp - 0x78]
mov esi, dword [ebp - 0x80]
mov eax, dword [eax + 0x20]
mov byte [edi + 0x11f], al
mov eax, esi
add eax, eax
test dword [ebp - 0x7c], 0x40000004
mov dword [esp], edi
cmovne eax, esi
mov dword [esp + 8], eax
mov eax, dword [ebp + 0xc]
mov dword [esp + 4], eax
call fcn.70041c00
test eax, eax
jne 0x70031674
mov dword [ebp - 0x9c], 0
mov eax, dword [ebp - 0x78]
mov dword [eax + 0x84], 0
mov eax, dword [ebp + 8]
test byte [eax + 0x16], 2
je 0x70031162
mov esi, dword [ebp - 0x84]
test esi, esi
je 0x700325f6
mov eax, dword [ebp - 0x78]
mov ebx, dword [eax + 0x9c]
test ebx, ebx
jne 0x700311bf
mov ecx, dword [eax + 0x84]
test ecx, ecx
jne 0x700311bf
mov dword [eax + 0x9c], 1
mov eax, dword [ebp + 0xc]
test dword [ebp - 0x7c], 0x40000004
mov dword [esp + 0xc], 0
mov dword [esp + 8], 1
mov dword [esp + 4], eax
mov eax, dword [ebp + 8]
mov dword [esp], eax
jne 0x70031de0
call fcn.700452b0
mov eax, dword [ebp - 0x78]
mov dword [eax + 0x9c], 0
mov eax, dword [ebp + 8]
mov edx, dword [eax + 0x180]
mov eax, dword [eax + 0x190]
mov eax, dword [eax + edx*4]
mov esi, dword [eax + 0x18]
mov edi, dword [eax + 0x14]
mov dword [ebp - 0x74], eax
mov eax, dword [eax + 0x154]
test esi, 8
mov dword [ebp - 0x90], edi
mov dword [ebp - 0xac], eax
je 0x70031686
mov eax, esi
and eax, 0x4000000c
jne 0x70031e0a
mov eax, dword [ebp + 0xc]
mov edi, dword [ebp - 0x90]
lea ebx, [eax + edi*8]
cmp eax, ebx
jae 0x700339bf
mov edx, 0xffffffff
nop
mov ecx, dword [eax]
lea edx, [edx + edx*8]
add eax, 8
add edx, ecx
add edx, dword [eax - 4]
cmp ebx, eax
lea edx, [edx + ecx*2]
ja 0x70031220
mov dword [ebp - 0x98], edx
mov eax, dword [ebp - 0x74]
mov edi, dword [eax + 0x9c]
test edi, edi
jne 0x70032a73
mov edi, dword [ebp - 0x74]
mov eax, dword [edi + 0x6c]
mov edx, dword [edi]
mov dword [edi + 4], 0x18
mov dword [eax], edx
mov edx, dword [edi + 4]
mov dword [eax + 4], edx
mov edx, dword [edi + 8]
mov dword [eax + 8], edx
mov edx, dword [edi + 0xc]
mov dword [eax + 0xc], edx
mov edx, dword [edi + 0x10]
mov dword [eax + 0x10], edx
mov edx, dword [edi + 0x14]
mov dword [eax + 0x14], edx
mov edx, dword [edi + 0x18]
mov dword [eax + 0x18], edx
mov edx, dword [edi + 0x1c]
mov dword [eax + 0x1c], edx
mov eax, dword [ebp + 8]
mov edi, dword [eax + 0x58]
test edi, edi
je 0x700312f0
mov dword [ebp - 0x84], esi
mov edi, dword [eax + 0x50]
mov ebx, eax
mov esi, dword [ebp - 0x74]
jmp 0x700312a3
mov edi, dword [ebp - 0x70]
mov eax, dword [esi + 0x70]
mov dword [esp + 8], eax
mov eax, dword [esi + 0x6c]
mov dword [esp], edi
mov dword [esp + 4], eax
call fcn.7003e650
mov eax, dword [edi]
sub dword [ebx + 0x54], eax
lea eax, [edi + 0xc]
mov dword [esp], edi
mov dword [ebp - 0x70], eax
call fcn.7003eb10
sub dword [ebx + 0x58], 1
jne 0x700312a0
mov eax, dword [ebp + 8]
mov esi, dword [ebp - 0x84]
mov eax, dword [eax + 0x50]
mov dword [esp], eax
call sub.msvcrt.dll_free
mov eax, dword [ebp + 8]
mov dword [eax + 0x50], 0
mov ebx, dword [ebp - 0x90]
test ebx, ebx
jne 0x700316d1
mov eax, dword [ebp - 0x78]
mov esi, dword [ebp - 0x88]
mov dword [eax + 0x18], esi
mov eax, dword [eax + 0x150]
test eax, eax
je 0x7003134f
mov edi, dword [ebp - 0x78]
mov esi, dword [ebp - 0x80]
mov ecx, dword [edi + 0x158]
mov edx, esi
cmp ecx, esi
je 0x70031343
sub ecx, esi
lea edx, [eax + esi*2]
add ecx, ecx
mov dword [esp + 4], edx
mov dword [esp + 8], ecx
mov dword [esp], eax
call sub.msvcrt.dll_memmove
mov edx, dword [edi + 0x158]
mov eax, dword [ebp - 0x78]
sub edx, dword [ebp - 0x80]
mov dword [eax + 0x158], edx
mov eax, dword [ebp - 0x9c]
test eax, eax
je 0x70031afd
mov eax, dword [ebp + 8]
mov eax, dword [eax + 0x98]
test eax, eax
je 0x70031b80
mov esi, dword [ebp - 0x78]
mov eax, dword [esi + 0x74]
mov edx, dword [eax + 4]
lea eax, [eax + edx + 8]
mov dword [ebp - 0x90], eax
mov eax, dword [esi + 0x78]
mov esi, dword [ebp - 0x78]
mov dword [esp + 8], eax
mov eax, dword [ebp - 0x90]
add esi, 0xf0
add eax, 8
mov dword [esp + 4], eax
mov dword [esp], esi
mov dword [ebp - 0x8c], esi
call fcn.7002f3e0
mov eax, dword [ebp - 0xa4]
test eax, eax
je 0x70031ba0
mov esi, dword [ebp - 0x80]
mov eax, esi
add eax, eax
test dword [ebp - 0x7c], 0x40000004
cmovne eax, esi
mov dword [esp + 8], eax
mov eax, dword [ebp - 0x9c]
mov dword [esp + 4], eax
mov eax, dword [ebp - 0x78]
mov dword [esp], eax
call fcn.70041fd0
mov eax, dword [ebp - 0x8c]
mov dword [esp], eax
call fcn.7002f420
mov ebx, eax
mov eax, dword [ebp - 0x9c]
mov dword [esp], eax
call sub.msvcrt.dll_free
test ebx, ebx
je 0x70031afd
cmp ebx, 0xffffffff
je 0x70032d7b
mov esi, dword [ebp - 0x90]
add ebx, 4
mov eax, ebx
mov edi, dword [ebp - 0x78]
shr eax, 1
mov byte [esi + 1], al
mov eax, ebx
shr eax, 9
mov byte [esi + 2], al
mov eax, ebx
shr eax, 0x11
mov byte [esi], 0x8c
mov byte [esi + 3], al
mov eax, dword [edi + 0xb0]
mov byte [esi + 4], al
mov eax, dword [edi + 0xb0]
shr eax, 8
mov byte [esi + 5], al
movzx eax, word [edi + 0xb2]
mov byte [esi + 6], al
movzx eax, byte [edi + 0xb3]
mov byte [esi + 7], al
mov eax, dword [ebp + 8]
mov eax, dword [eax + 0x98]
test eax, eax
jne 0x70031af0
mov eax, dword [ebp - 0x78]
mov eax, dword [eax + 0x6c]
mov edx, dword [eax + 4]
lea edx, [ebx + edx + 4]
mov dword [eax + 4], edx
lea esp, [ebp - 0xc]
mov eax, 1
pop ebx
pop esi
pop edi
pop ebp
ret
mov eax, dword [ebp + 8]
mov eax, dword [eax + 0x98]
test eax, eax
je 0x700310eb
mov eax, dword [ebp + 8]
test byte [eax + 0x17], 4
jne 0x700310eb
test dword [ebp - 0x7c], 0x40000004
mov eax, dword [ebp - 0x80]
je 0x70031d70
lea ebx, [eax*4]
mov dword [esp], ebx
call sub.msvcrt.dll_malloc
mov esi, dword [ebp + 0xc]
mov dword [esp + 8], ebx
mov dword [esp + 4], esi
mov dword [esp], eax
mov dword [ebp - 0x9c], eax
call sub.msvcrt.dll_memcpy
mov eax, dword [ebp - 0xa4]
test eax, eax
jne 0x70032d59
mov ecx, dword [ebp - 0x80]
mov edx, dword [ebp + 0xc]
mov eax, dword [ebp - 0x78]
call fcn.7002f6a0
test eax, eax
jne 0x7003113e
mov eax, dword [ebp - 0x9c]
mov dword [esp], eax
call sub.msvcrt.dll_free
mov dword [ebp - 0x9c], 0
jmp 0x7003113e
mov edi, dword [ebp - 0x80]
mov eax, dword [ebp + 0xc]
test edi, edi
lea ebx, [edi - 1]
je 0x70030f24
sar dword [eax], cl
sub ebx, 1
add eax, 8
sar dword [eax - 4], cl
cmp ebx, 0xffffffff
jne 0x70031538
cmp edx, ecx
jns 0x70030f2c
and dword [ebp - 0x7c], 0xff83ffff
jmp 0x70030f32
mov eax, edi
and eax, 0x7c0000
cmp eax, 0x5c0000
ja 0x70030e0d
mov eax, dword [ebp + 8]
test byte [eax + 0x16], 2
je 0x70031586
mov esi, dword [eax + 0x24]
test esi, esi
je 0x70032eae
mov eax, dword [ebp + 8]
mov dword [ebp - 0x84], 0
mov esi, dword [eax + 0xb8]
test esi, esi
je 0x70030e0d
lea eax, [esi + esi]
cmp dword [ebp - 0x80], eax
jl 0x70030e0d
mov eax, dword [ebp - 0x80]
xor edx, edx
div esi
mov dword [ebp - 0x70], eax
mov eax, dword [ebp - 0x88]
and eax, 0x40000004
cmp eax, 1
mov eax, dword [ebp + 0xc]
sbb ebx, ebx
not ebx
add ebx, 2
mov edi, ebx
imul edi, esi
mov edx, edi
mov dword [ebp - 0x74], edi
call fcn.7002f5e0
cmp dword [ebp - 0x70], 1
mov dword [ebp - 0x7c], eax
jle 0x70030e0d
lea eax, [ebx*4]
mov ebx, dword [ebp + 0xc]
mov edi, 1
imul eax, esi
mov dword [ebp - 0x8c], esi
mov dword [ebp - 0x84], eax
add ebx, eax
jmp 0x70031628
add edi, 1
add esi, dword [ebp - 0x8c]
add ebx, dword [ebp - 0x84]
cmp dword [ebp - 0x70], edi
je 0x70033acf
mov edx, dword [ebp - 0x74]
mov eax, ebx
call fcn.7002f5e0
cmp eax, dword [ebp - 0x7c]
je 0x70031610
mov eax, esi
mov esi, dword [ebp - 0x78]
mov dword [ebp - 0x80], eax
mov dword [ebp - 0x84], 0
mov dword [esi + 0x14], eax
jmp 0x70030e0d
mov eax, dword [ebp - 0x80]
test dword [ebp - 0x7c], 0x40000004
mov edx, dword [ebp + 0xc]
lea ecx, [eax + eax]
cmovne ecx, eax
mov eax, dword [ebp - 0x78]
call fcn.7002f6a0
test eax, eax
je 0x70031134
mov eax, dword [ebp + 8]
mov dword [eax + 0xa8], 1
jmp 0x70031134
test esi, 0x40000004
jne 0x70031b10
mov eax, esi
and eax, 0x4000000c
je 0x70031205
nop
cmp eax, 8
mov dword [ebp - 0x98], 0xffffffff
jne 0x7003124b
mov eax, dword [ebp - 0x74]
mov edx, dword [eax + 0x9c]
test edx, edx
je 0x7003124b
mov dword [esp + 0xc], 0
jmp 0x70032a7b
mov edi, dword [ebp - 0x74]
lea ebx, [ebp - 0x64]
mov dword [esp + 4], ebx
mov dword [esp], edi
call fcn.70030570
mov eax, dword [edi + 0x70]
mov dword [esp + 8], eax
mov eax, dword [edi + 0x6c]
mov dword [esp], ebx
mov dword [esp + 4], eax
call fcn.7003e650
mov dword [esp], ebx
call fcn.7003eb10
mov dword [esp + 4], ebx
mov dword [esp], edi
call fcn.700305d0
mov eax, dword [edi + 0x70]
mov dword [esp + 8], eax
mov eax, dword [edi + 0x6c]
mov dword [esp], ebx
mov dword [esp + 4], eax
call fcn.7003e650
mov dword [esp], ebx
call fcn.7003eb10
mov dword [esp + 4], ebx
mov dword [esp], edi
call fcn.70030720
mov eax, dword [edi + 0x70]
mov dword [esp + 8], eax
mov eax, dword [edi + 0x6c]
mov dword [esp], ebx
mov dword [esp + 4], eax
call fcn.7003e650
mov dword [esp], ebx
call fcn.7003eb10
mov dword [esp + 4], ebx
mov dword [esp], edi
call fcn.70040510
mov eax, dword [edi + 0x70]
mov dword [esp + 8], eax
mov eax, dword [edi + 0x6c]
mov dword [esp], ebx
mov dword [esp + 4], eax
call fcn.7003e650
mov dword [esp], ebx
call fcn.7003eb10
mov eax, esi
and eax, 0x7800000
cmp eax, 0x7800000
je 0x70032a31
mov edi, esi
and edi, 8
jne 0x70032680
test esi, 0x80
jne 0x70032645
test esi, 0x100
jne 0x70032610
test esi, 0x800
je 0x70031847
mov eax, dword [ebp + 8]
mov edx, dword [eax + 0x1c]
cmp edx, 2
jg 0x700317da
mov ecx, dword [ebp + 8]
mov eax, 5
sub eax, edx
cmp dword [ecx + 0x30], eax
je 0x7003180a
mov eax, dword [ebp + 8]
mov dword [esp + 4], ebx
mov dword [esp], eax
call fcn.70030c40
mov ecx, dword [ebp - 0x74]
mov eax, dword [ecx + 0x70]
mov dword [esp + 8], eax
mov eax, dword [ecx + 0x6c]
mov dword [esp], ebx
mov dword [esp + 4], eax
call fcn.7003e650
mov dword [esp], ebx
call fcn.7003eb10
mov eax, dword [ebp - 0x74]
mov eax, dword [eax + 0xa8]
test eax, eax
jne 0x70031847
mov eax, dword [ebp + 8]
mov dword [esp + 4], ebx
mov dword [esp], eax
call fcn.70030d10
mov ecx, dword [ebp - 0x74]
mov eax, dword [ecx + 0x70]
mov dword [esp + 8], eax
mov eax, dword [ecx + 0x6c]
mov dword [esp], ebx
mov dword [esp + 4], eax
call fcn.7003e650
mov dword [esp], ebx
call fcn.7003eb10
mov ecx, dword [ebp - 0x74]
lea edx, [ecx + 0xb8]
mov eax, dword [ecx + 0x6c]
mov dword [ebp - 0xb0], edx
mov edx, dword [ecx + 0x70]
mov dword [esp + 8], edx
mov edx, dword [eax + 4]
lea eax, [eax + edx + 0xc]
mov edx, dword [ebp - 0xb0]
mov dword [esp + 4], eax
mov dword [esp], edx
call fcn.7002f3e0
mov eax, dword [ebp + 8]
mov ecx, dword [eax + 0x98]
test ecx, ecx
jne 0x700326b5
test edi, edi
je 0x70031cd0
mov eax, esi
and eax, 0x4000000c
je 0x70031ce9
test esi, 0x40000004
je 0x70032727
mov eax, esi
and esi, 0x20000000
and eax, 0x40
mov dword [ebp - 0xbc], eax
mov eax, dword [ebp - 0x74]
fldz
mov dword [ebp - 0xa8], 0
fstp qword [ebp - 0xb8]
mov dword [ebp - 0x94], 0
mov dword [ebp - 0x70], 0
add eax, 0x160
mov dword [ebp - 0x84], eax
mov dword [ebp - 0xa0], 0xffffffff
mov dword [ebp - 0xc0], esi
lea esi, [esi]
mov eax, dword [ebp + 0xc]
mov esi, dword [ebp - 0x94]
mov edx, dword [eax + esi*4]
mov eax, dword [ebp - 0xa0]
mov esi, dword [ebp - 0xbc]
lea eax, [edx + eax*2]
add dword [ebp - 0xa0], eax
test esi, esi
je 0x700319b0
mov eax, dword [ebp - 0xac]
test eax, eax
je 0x70033a40
movsx esi, word [eax]
add eax, 2
mov dword [ebp - 0xac], eax
mov eax, dword [ebp - 0x74]
mov eax, dword [eax + 0x130]
movsx ecx, ax
cmp eax, ecx
je 0x70033981
mov ebx, eax
movzx ecx, ax
xor bx, bx
imul ecx, esi
sar ebx, 9
imul ebx, esi
sar ecx, 9
lea ecx, [ecx + ebx + 1]
sar ecx, 1
neg ecx
mov ebx, dword [ebp - 0xc0]
test ebx, ebx
je 0x70033860
shr esi, 0x1f
mov ebx, esi
test bl, bl
je 0x70033860
test ecx, ecx
je 0x70033860
cmp eax, ecx
je 0x70033abd
mov esi, dword [ebp - 0x74]
mov eax, edx
add edx, ecx
neg eax
mov dword [esi + 0x130], eax
lea esi, [esi]
mov eax, dword [ebp - 0x74]
mov edi, dword [eax + 0x84]
test edi, edi
lea ecx, [edi - 1]
je 0x700339ce
mov eax, dword [ebp - 0x84]
mov dword [ebp - 0x8c], edi
jmp 0x70031a19
and ebx, 1
je 0x70033410
mov esi, dword [eax + 0x10]
lea ebx, [esi + esi]
sub ebx, dword [eax + 0x14]
mov dword [eax + 0x18], ebx
movsx esi, bx
cmp esi, ebx
je 0x70031a2e
mov edi, dword [eax + 8]
movzx esi, bx
xor bx, bx
sar ebx, 9
sub ecx, 1
add eax, 0x60
imul esi, edi
imul ebx, edi
sar esi, 9
lea ebx, [esi + ebx + 1]
sar ebx, 1
mov dword [eax - 0x10], ebx
sub edx, ebx
cmp ecx, 0xffffffff
je 0x70031a4b
mov ebx, dword [eax]
cmp ebx, 8
jg 0x700319d2
mov esi, dword [ebp - 0x70]
mov ebx, dword [eax + esi*4 + 0x10]
movsx esi, bx
cmp ebx, esi
jne 0x700319ee
imul ebx, dword [eax + 8]
sub ecx, 1
add eax, 0x60
add ebx, 0x200
sar ebx, 0xa
mov dword [eax - 0x10], ebx
sub edx, ebx
cmp ecx, 0xffffffff
jne 0x70031a19
mov edi, dword [ebp - 0x8c]
lea ebx, [edi + edi*2]
shl ebx, 5
add ebx, dword [ebp - 0x84]
mov ecx, dword [ebp - 0x74]
mov dword [esp], 0
call fcn.700409b0
mov esi, eax
sub esp, 4
lea eax, [ebx - 0x5c]
jmp 0x70031aa0
mov ecx, dword [eax + 0x14]
test ecx, ecx
je 0x70031a8f
test esi, esi
je 0x70031a8f
mov edx, dword [eax]
xor ecx, esi
sar ecx, 0x1f
xor edx, ecx
sub edx, ecx
add dword [eax + 4], edx
mov edx, dword [eax + 0xc]
add esi, dword [eax + 0x4c]
mov dword [eax + 0x10], edx
mov dword [eax + 0xc], esi
sub eax, 0x60
mov ebx, edi
lea edi, [ebx - 0x60]
cmp edi, dword [ebp - 0x84]
jb 0x70033480
mov edx, dword [eax - 4]
cmp edx, 8
jg 0x70031a76
mov ecx, dword [ebp - 0x70]
mov ecx, dword [eax + ecx*4 + 0xc]
test ecx, ecx
je 0x70031adc
test esi, esi
je 0x70031adc
xor ecx, esi
sar ecx, 0x1f
mov dword [ebp - 0x8c], ecx
xor ecx, dword [eax]
sub ecx, dword [ebp - 0x8c]
add dword [eax + 4], ecx
add edx, dword [ebp - 0x70]
add esi, dword [eax + 0x4c]
and edx, 7
mov dword [ebx + edx*4 - 0x50], esi
jmp 0x70031a9b
mov eax, dword [edi + 0x74]
mov edx, dword [eax + 4]
lea edx, [ebx + edx + 4]
mov dword [eax + 4], edx
mov eax, 1
lea esp, [ebp - 0xc]
pop ebx
pop esi
pop edi
pop ebp
ret
mov eax, dword [ebp + 0xc]
lea ecx, [eax + edi*4]
cmp eax, ecx
jae 0x70033aae
mov edx, 0xffffffff
add eax, 4
mov ebx, dword [eax - 4]
lea ebx, [ebx + edx*2]
add edx, ebx
cmp ecx, eax
ja 0x70031b23
mov dword [ebp - 0x98], edx
mov eax, dword [ebp - 0x74]
mov edx, dword [eax + 0x9c]
test edx, edx
je 0x7003124b
mov dword [esp + 0xc], 1
mov ecx, dword [eax + 0x84]
xor eax, eax
test ecx, ecx
sete al
mov dword [esp + 8], eax
mov eax, dword [ebp + 0xc]
mov dword [esp + 4], eax
mov eax, dword [ebp + 8]
mov dword [esp], eax
call fcn.700472d0
jmp 0x7003124b
mov edi, dword [ebp - 0x78]
mov eax, dword [edi + 0x6c]
mov edx, dword [eax + 4]
lea eax, [eax + edx + 8]
mov dword [ebp - 0x90], eax
mov eax, dword [edi + 0x70]
jmp 0x70031384
mov edi, dword [ebp - 0x80]
mov eax, edi
add eax, eax
test dword [ebp - 0x7c], 0x40000004
cmovne eax, edi
mov ecx, eax
mov eax, dword [ebp - 0x78]
movzx edi, byte [eax + 0x118]
movzx edx, byte [eax + 0x119]
movzx ebx, byte [eax + 0x11a]
movzx esi, byte [eax + 0x11b]
test edi, edi
je 0x700313e4
test ecx, ecx
mov dword [ebp - 0x80], ecx
je 0x700313e4
mov ecx, edi
mov eax, 1
shl eax, cl
lea ecx, [eax - 1]
mov eax, esi
mov dword [ebp - 0x84], ecx
mov ecx, dword [ebp - 0x9c]
movzx eax, al
mov dword [ebp - 0x74], edi
mov dword [ebp - 0x7c], ecx
movzx ecx, dl
movzx edx, bl
mov ebx, dword [ebp - 0x78]
add edx, ecx
lea esi, [edx + eax]
mov dword [ebp - 0x88], esi
lea esi, [esi]
mov eax, dword [ebp - 0x7c]
movzx ecx, byte [ebp - 0x88]
mov esi, dword [eax]
mov eax, dword [ebp - 0x74]
sar esi, cl
mov ecx, dword [ebx + 0x104]
and esi, dword [ebp - 0x84]
mov edi, esi
add eax, ecx
shl edi, cl
or edi, dword [ebx + 0x108]
cmp eax, 0xf
mov dword [ebx + 0x104], eax
mov dword [ebx + 0x108], edi
jbe 0x70031cbb
mov ecx, edi
jmp 0x70031c68
mov ecx, dword [ebx + 0x108]
mov edi, ecx
mov edx, dword [ebx + 0xf8]
sub eax, 0x10
mov word [edx], di
mov edi, ecx
shr edi, 0x10
cmp eax, 0x10
mov dword [ebp - 0x70], edi
mov dword [ebx + 0x108], edi
mov dword [ebx + 0x104], eax
jbe 0x70031ca1
mov ecx, dword [ebp - 0x74]
mov edi, esi
sub ecx, eax
sar edi, cl
mov ecx, dword [ebp - 0x70]
or ecx, edi
mov dword [ebx + 0x108], ecx
add edx, 2
cmp edx, dword [ebx + 0xf4]
mov dword [ebx + 0xf8], edx
je 0x70031df0
cmp eax, 0xf
ja 0x70031c60
add dword [ebp - 0x7c], 4
sub dword [ebp - 0x80], 1
jne 0x70031c20
jmp 0x700313e4
test esi, 0x40000004
jne 0x70032b21
mov eax, esi
and eax, 0x4000000c
jne 0x70032727
mov eax, dword [ebp - 0x74]
mov eax, dword [eax + 0x9c]
test eax, eax
jne 0x70032470
mov eax, dword [ebp + 0xc]
test esi, 0x10
mov edi, dword [ebp - 0x90]
lea eax, [eax + edi*8]
mov dword [ebp - 0x70], eax
jne 0x70032e55
mov eax, dword [ebp - 0x74]
and esi, 0x7c0000
mov dword [ebp - 0xa8], esi
shr dword [ebp - 0xa8], 0x12
lea edi, [eax + 0x160]
mov eax, dword [eax + 0x84]
mov esi, edi
test eax, eax
mov dword [ebp - 0xac], eax
je 0x70032470
cmp dword [ebp - 0xa8], 0xf
ja 0x70031d5a
cmp dword [esi + 4], 2
je 0x70032d44
mov edx, dword [esi]
lea eax, [edx + 3]
cmp eax, 0x15
ja case.0x70031d68.0
jmp dword [eax*4 + 0x7078fe60]
lea ebx, [eax*8]
mov dword [esp], ebx
call sub.msvcrt.dll_malloc
mov esi, dword [ebp + 0xc]
mov dword [esp + 8], ebx
mov dword [esp + 4], esi
mov dword [esp], eax
mov dword [ebp - 0x9c], eax
call sub.msvcrt.dll_memcpy
mov eax, dword [ebp - 0xa4]
test eax, eax
je 0x70032d70
mov eax, dword [ebp + 8]
mov esi, dword [ebp - 0x78]
mov eax, dword [eax + 0x20]
mov byte [esi + 0x11f], al
mov eax, dword [ebp - 0x80]
add eax, eax
mov dword [esp + 8], eax
mov eax, dword [ebp + 0xc]
mov dword [esp + 4], eax
mov eax, dword [ebp - 0x78]
mov dword [esp], eax
call fcn.70041c00
test eax, eax
jne 0x7003113e
jmp 0x7003150a
call fcn.700472d0
jmp 0x700311b2
mov eax, dword [ebp - 0x8c]
mov dword [esp], eax
call dword [ebx + 0xfc]
mov eax, dword [ebx + 0x104]
jmp 0x70031cb6
test esi, 0x40000004
je 0x700316a0
mov eax, dword [ebp - 0x74]
mov dword [ebp - 0x98], 0xffffffff
mov ebx, dword [eax + 0x9c]
test ebx, ebx
je 0x7003124b
mov dword [esp + 0xc], 0
jmp 0x70031b51
test esi, esi
je 0x70030e75
mov eax, dword [ebp - 0x88]
mov dword [ebp - 0x7c], eax
mov eax, dword [ebp - 0x78]
mov edx, dword [eax + 0x90]
test edx, edx
je 0x70030ee2
mov dword [eax + 0x90], 0
mov dword [eax + 0x84], 0
mov dword [esp], eax
call fcn.7003ee50
mov eax, dword [ebp - 0x88]
mov dword [ebp - 0x7c], eax
jmp 0x70030ee2
mov edi, dword [ebp + 0xc]
mov eax, dword [ebp - 0x70]
cmp edi, eax
jb 0x70031f3e
jmp 0x70032460
mov ebx, eax
movzx edx, ax
xor bx, bx
imul edx, dword [esi + 8]
sar ebx, 9
imul ebx, dword [esi + 8]
sar edx, 9
lea edx, [edx + ebx + 1]
sar edx, 1
sub ecx, edx
test ecx, ecx
mov dword [edi], ecx
je 0x70031eda
test eax, eax
je 0x70031eda
mov edx, dword [esi + 4]
xor ecx, eax
sar ecx, 0x1f
xor edx, ecx
sub edx, ecx
add dword [esi + 8], edx
mov edx, dword [esi + 0x30]
mov eax, edx
sub eax, dword [esi + 0x34]
mov dword [esi + 0x34], edx
mov ecx, dword [edi + 4]
sar eax, 1
add eax, edx
movsx edx, ax
cmp eax, edx
mov dword [esi + 0x30], ecx
je 0x70032532
mov ebx, eax
movzx edx, ax
xor bx, bx
imul edx, dword [esi + 0xc]
sar ebx, 9
imul ebx, dword [esi + 0xc]
sar edx, 9
lea edx, [edx + ebx + 1]
sar edx, 1
sub ecx, edx
test ecx, ecx
mov dword [edi + 4], ecx
je 0x70031f32
test eax, eax
je 0x70031f32
mov edx, dword [esi + 4]
xor ecx, eax
sar ecx, 0x1f
xor edx, ecx
sub edx, ecx
add dword [esi + 0xc], edx
add edi, 8
cmp dword [ebp - 0x70], edi
jbe 0x70032460
mov edx, dword [esi + 0x10]
mov eax, edx
sub eax, dword [esi + 0x14]
mov dword [esi + 0x14], edx
mov ecx, dword [edi]
sar eax, 1
add eax, edx
movsx edx, ax
cmp eax, edx
mov dword [esi + 0x10], ecx
jne 0x70031ea3
mov edx, dword [esi + 8]
imul edx, eax
add edx, 0x200
sar edx, 0xa
jmp 0x70031ebf
mov edi, dword [ebp + 0xc]
mov eax, dword [ebp - 0x70]
cmp edi, eax
jb 0x7003201c
jmp 0x70032460
mov ebx, eax
movzx edx, ax
xor bx, bx
imul edx, dword [esi + 8]
sar ebx, 9
imul ebx, dword [esi + 8]
sar edx, 9
lea edx, [edx + ebx + 1]
sar edx, 1
sub ecx, edx
test ecx, ecx
mov dword [edi], ecx
je 0x70031fbb
test eax, eax
je 0x70031fbb
mov edx, dword [esi + 4]
xor ecx, eax
sar ecx, 0x1f
xor edx, ecx
sub edx, ecx
add dword [esi + 8], edx
mov edx, dword [esi + 0x30]
lea eax, [edx + edx]
sub eax, dword [esi + 0x34]
mov dword [esi + 0x34], edx
mov ecx, dword [edi + 4]
movsx edx, ax
cmp eax, edx
mov dword [esi + 0x30], ecx
je 0x700325a0
mov ebx, eax
movzx edx, ax
xor bx, bx
imul edx, dword [esi + 0xc]
sar ebx, 9
imul ebx, dword [esi + 0xc]
sar edx, 9
lea edx, [edx + ebx + 1]
sar edx, 1
sub ecx, edx
test ecx, ecx
mov dword [edi + 4], ecx
je 0x70032010
test eax, eax
je 0x70032010
mov edx, dword [esi + 4]
xor ecx, eax
sar ecx, 0x1f
xor edx, ecx
sub edx, ecx
add dword [esi + 0xc], edx
add edi, 8
cmp dword [ebp - 0x70], edi
jbe 0x70032460
mov edx, dword [esi + 0x10]
lea eax, [edx + edx]
sub eax, dword [esi + 0x14]
mov dword [esi + 0x14], edx
mov ecx, dword [edi]
movsx edx, ax
cmp eax, edx
mov dword [esi + 0x10], ecx
jne 0x70031f84
mov edx, dword [esi + 8]
imul edx, eax
add edx, 0x200
sar edx, 0xa
jmp 0x70031fa0
mov edi, dword [ebp + 0xc]
mov eax, dword [ebp - 0x70]
cmp edi, eax
jb 0x7003211b
jmp 0x70032460
mov ebx, edx
movzx ecx, dx
xor bx, bx
imul ecx, dword [esi + 8]
sar ebx, 9
imul ebx, dword [esi + 8]
sar ecx, 9
lea ecx, [ecx + ebx + 1]
sar ecx, 1
mov ebx, eax
sub ebx, ecx
test ebx, ebx
mov dword [edi], ebx
je 0x700320b1
test edx, edx
je 0x700320b1
mov ecx, dword [esi + 8]
xor edx, ebx
mov ebx, 0x400
sar edx, 0x1f
xor ecx, edx
sub ecx, edx
add ecx, dword [esi + 4]
cmp ecx, 0x401
cmovge ecx, ebx
xor ecx, edx
sub ecx, edx
mov dword [esi + 8], ecx
mov ecx, dword [edi + 4]
movsx edx, ax
cmp eax, edx
mov dword [esi + 0x10], ecx
je 0x70032588
mov ebx, eax
movzx edx, ax
xor bx, bx
imul edx, dword [esi + 0xc]
sar ebx, 9
imul ebx, dword [esi + 0xc]
sar edx, 9
lea edx, [edx + ebx + 1]
sar edx, 1
sub ecx, edx
test ecx, ecx
mov dword [edi + 4], ecx
je 0x7003210f
test eax, eax
je 0x7003210f
mov edx, dword [esi + 0xc]
xor ecx, eax
mov eax, 0x400
sar ecx, 0x1f
xor edx, ecx
sub edx, ecx
add edx, dword [esi + 4]
cmp edx, 0x401
cmovge edx, eax
xor edx, ecx
sub edx, ecx
mov dword [esi + 0xc], edx
add edi, 8
cmp dword [ebp - 0x70], edi
jbe 0x70032460
mov edx, dword [esi + 0x10]
mov eax, dword [edi]
movsx ecx, dx
cmp edx, ecx
jne 0x70032063
mov ecx, dword [esi + 8]
imul ecx, edx
add ecx, 0x200
sar ecx, 0xa
jmp 0x7003207f
mov edi, dword [ebp + 0xc]
mov eax, dword [ebp - 0x70]
cmp edi, eax
jb 0x7003220a
jmp 0x70032460
mov ebx, edx
movzx ecx, dx
xor bx, bx
imul ecx, dword [esi + 0xc]
sar ebx, 9
imul ebx, dword [esi + 0xc]
sar ecx, 9
lea ecx, [ecx + ebx + 1]
sar ecx, 1
mov ebx, eax
sub ebx, ecx
test ebx, ebx
mov dword [edi + 4], ebx
je 0x700321a2
test edx, edx
je 0x700321a2
mov ecx, dword [esi + 0xc]
xor edx, ebx
mov ebx, 0x400
sar edx, 0x1f
xor ecx, edx
sub ecx, edx
add ecx, dword [esi + 4]
cmp ecx, 0x401
cmovge ecx, ebx
xor ecx, edx
sub ecx, edx
mov dword [esi + 0xc], ecx
mov ecx, dword [edi]
movsx edx, ax
cmp eax, edx
mov dword [esi + 0x30], ecx
je 0x70032560
mov ebx, eax
movzx edx, ax
xor bx, bx
imul edx, dword [esi + 8]
sar ebx, 9
imul ebx, dword [esi + 8]
sar edx, 9
lea edx, [edx + ebx + 1]
sar edx, 1
sub ecx, edx
test ecx, ecx
mov dword [edi], ecx
je 0x700321fe
test eax, eax
je 0x700321fe
mov edx, dword [esi + 8]
xor ecx, eax
mov eax, 0x400
sar ecx, 0x1f
xor edx, ecx
sub edx, ecx
add edx, dword [esi + 4]
cmp edx, 0x401
cmovge edx, eax
xor edx, ecx
sub edx, ecx
mov dword [esi + 8], edx
add edi, 8
cmp dword [ebp - 0x70], edi
jbe 0x70032460
mov edx, dword [esi + 0x30]
mov eax, dword [edi + 4]
movsx ecx, dx
cmp edx, ecx
jne 0x70032153
mov ecx, dword [esi + 0xc]
imul ecx, edx
add ecx, 0x200
sar ecx, 0xa
jmp 0x7003216f
mov edi, dword [ebp + 0xc]
mov eax, dword [ebp - 0x70]
cmp edi, eax
jb 0x700322ff
jmp 0x70032460
movzx edx, ax
imul edx, dword [esi + 0xc]
mov ecx, edx
mov edx, eax
xor dx, dx
sar edx, 9
imul edx, dword [esi + 0xc]
sar ecx, 9
lea edx, [ecx + edx + 1]
sar edx, 1
mov ecx, dword [ebp - 0x84]
sub ecx, edx
test ecx, ecx
mov dword [edi + 4], ecx
je 0x70032298
test eax, eax
je 0x70032298
mov edx, dword [esi + 0xc]
xor ecx, eax
mov eax, 0x400
sar ecx, 0x1f
xor edx, ecx
sub edx, ecx
add edx, dword [esi + 4]
cmp edx, 0x401
cmovge edx, eax
xor edx, ecx
sub edx, ecx
mov dword [esi + 0xc], edx
mov edx, dword [edi]
movsx eax, bx
cmp ebx, eax
mov dword [esi + 0x30], edx
je 0x70032546
mov ecx, ebx
movzx eax, bx
xor cx, cx
imul eax, dword [esi + 8]
sar ecx, 9
imul ecx, dword [esi + 8]
sar eax, 9
lea eax, [eax + ecx + 1]
sar eax, 1
sub edx, eax
test edx, edx
mov dword [edi], edx
je 0x700322f3
test ebx, ebx
je 0x700322f3
mov eax, dword [esi + 8]
xor edx, ebx
mov ecx, 0x400
sar edx, 0x1f
xor eax, edx
sub eax, edx
add eax, dword [esi + 4]
cmp eax, 0x401
cmovge eax, ecx
xor eax, edx
sub eax, edx
mov dword [esi + 8], eax
add edi, 8
cmp dword [ebp - 0x70], edi
jbe 0x70032460
mov eax, dword [esi + 0x30]
mov ecx, dword [edi + 4]
mov ebx, dword [esi + 0x10]
movsx edx, ax
cmp eax, edx
mov dword [ebp - 0x84], ecx
mov dword [esi + 0x10], ecx
jne 0x70032243
mov edx, dword [esi + 0xc]
imul edx, eax
add edx, 0x200
sar edx, 0xa
jmp 0x70032261
mov eax, dword [ebp - 0x70]
and edx, 7
cmp dword [ebp + 0xc], eax
mov dword [ebp - 0x8c], edx
jae 0x70032460
mov edi, dword [ebp + 0xc]
mov dword [ebp - 0x84], 0
jmp 0x7003240c
movzx edx, ax
imul edx, dword [esi + 8]
mov ecx, edx
mov edx, eax
xor dx, dx
sar edx, 9
imul edx, dword [esi + 8]
sar ecx, 9
lea edx, [ecx + edx + 1]
sar edx, 1
sub ebx, edx
test ebx, ebx
mov dword [edi], ebx
je 0x70032390
test eax, eax
je 0x70032390
mov edx, dword [esi + 4]
xor ebx, eax
sar ebx, 0x1f
xor edx, ebx
sub edx, ebx
add dword [esi + 8], edx
mov eax, dword [ebp - 0xa0]
mov ebx, dword [edi + 4]
mov ecx, dword [ebp - 0x94]
mov eax, dword [eax + 0x30]
mov dword [ecx + 0x30], ebx
movsx edx, ax
cmp eax, edx
je 0x70032574
mov ecx, eax
movzx edx, ax
xor cx, cx
imul edx, dword [esi + 0xc]
sar ecx, 9
imul ecx, dword [esi + 0xc]
sar edx, 9
lea edx, [edx + ecx + 1]
sar edx, 1
sub ebx, edx
test ebx, ebx
mov dword [edi + 4], ebx
je 0x700323e8
test eax, eax
je 0x700323e8
mov edx, dword [esi + 4]
xor ebx, eax
sar ebx, 0x1f
xor edx, ebx
sub edx, ebx
add dword [esi + 0xc], edx
add dword [ebp - 0x84], 1
add edi, 8
add dword [ebp - 0x8c], 1
and dword [ebp - 0x84], 7
and dword [ebp - 0x8c], 7
cmp dword [ebp - 0x70], edi
jbe 0x70032451
mov eax, dword [ebp - 0x84]
mov ecx, dword [ebp - 0x8c]
mov ebx, dword [edi]
lea eax, [esi + eax*4]
mov dword [ebp - 0xa0], eax
mov eax, dword [eax + 0x10]
lea ecx, [esi + ecx*4]
mov dword [ebp - 0x94], ecx
mov dword [ecx + 0x10], ebx
movsx edx, ax
cmp eax, edx
jne 0x70032357
mov edx, dword [esi + 8]
imul edx, eax
add edx, 0x200
sar edx, 0xa
jmp 0x70032375
mov eax, dword [ebp - 0x84]
test eax, eax
jne 0x70032dc7
nop
add esi, 0x60
sub dword [ebp - 0xac], 1
jne 0x70031d47
mov eax, dword [ebp - 0x90]
mov dword [esp + 8], eax
mov eax, dword [ebp + 0xc]
mov dword [esp + 4], eax
mov eax, dword [ebp - 0x74]
mov dword [esp], eax
call fcn.7003f550
fldz
mov dword [ebp - 0xa0], 0xffffffff
fstp qword [ebp - 0xb8]
mov dword [ebp - 0xa8], 0
mov eax, dword [ebp + 8]
test byte [eax + 0x16], 0x80
je 0x700324c6
mov eax, dword [ebp - 0x74]
fld qword [ebp - 0xb8]
fadd qword [eax + 0x138]
fstp qword [eax + 0x138]
mov eax, dword [ebp - 0x74]
mov dword [esp], eax
call fcn.7003eec0
mov eax, dword [ebp - 0xb0]
mov dword [esp], eax
call fcn.7002f420
test eax, eax
jne 0x700325b4
mov eax, dword [ebp - 0x74]
mov edx, dword [eax + 0x6c]
mov eax, dword [ebp - 0x98]
mov dword [edx + 0x1c], eax
mov eax, dword [ebp + 8]
mov ebx, dword [eax + 0x98]
test ebx, ebx
jne 0x70032ab0
mov edx, dword [ebp - 0xa8]
test edx, edx
je 0x7003251e
mov eax, dword [ebp + 8]
mov dword [eax + 0xa8], 1
mov eax, dword [ebp - 0x74]
mov esi, dword [ebp - 0x90]
add dword [eax + 0xa8], esi
jmp 0x700312fe
mov edx, dword [esi + 0xc]
imul edx, eax
add edx, 0x200
sar edx, 0xa
jmp 0x70031f16
mov eax, dword [esi + 8]
imul eax, ebx
add eax, 0x200
sar eax, 0xa
jmp 0x700322c4
mov edx, dword [esi + 8]
imul edx, eax
add edx, 0x200
sar edx, 0xa
jmp 0x700321ce
mov edx, dword [esi + 0xc]
imul edx, eax
add edx, 0x200
sar edx, 0xa
jmp 0x700323cc
mov edx, dword [esi + 0xc]
imul edx, eax
add edx, 0x200
sar edx, 0xa
jmp 0x700320de
mov edx, dword [esi + 0xc]
imul edx, eax
add edx, 0x200
sar edx, 0xa
jmp 0x70031ff4
cmp eax, 0xffffffff
je 0x7003326f
mov edi, dword [ebp - 0x74]
mov edx, dword [edi + 0x6c]
mov ecx, dword [edx + 4]
lea edx, [edx + ecx + 8]
mov ecx, eax
shr ecx, 1
mov byte [edx + 1], cl
mov ecx, eax
shr ecx, 9
mov byte [edx + 2], cl
mov ecx, eax
shr ecx, 0x11
mov byte [edx + 3], cl
mov byte [edx], 0x8a
mov edx, dword [edi + 0x6c]
mov ecx, dword [edx + 4]
lea eax, [eax + ecx + 4]
mov dword [edx + 4], eax
jmp 0x700324ed
mov edx, dword [ebp + 0xc]
xor ecx, ecx
call fcn.7002fa90
jmp 0x70031162
xor eax, eax
jmp 0x700310a9
mov eax, dword [ebp - 0x74]
mov dword [esp + 4], ebx
mov dword [esp], eax
call fcn.70030be0
mov ecx, dword [ebp - 0x74]
mov eax, dword [ecx + 0x70]
mov dword [esp + 8], eax
mov eax, dword [ecx + 0x6c]
mov dword [esp], ebx
mov dword [esp + 4], eax
call fcn.7003e650
mov dword [esp], ebx
call fcn.7003eb10
jmp 0x700317b4
mov eax, dword [ebp - 0x74]
mov dword [esp + 4], ebx
mov dword [esp], eax
call fcn.70041ba0
mov ecx, dword [ebp - 0x74]
mov eax, dword [ecx + 0x70]
mov dword [esp + 8], eax
mov eax, dword [ecx + 0x6c]
mov dword [esp], ebx
mov dword [esp + 4], eax
call fcn.7003e650
mov dword [esp], ebx
call fcn.7003eb10
jmp 0x700317a8
mov eax, dword [ebp - 0x74]
mov dword [esp + 4], ebx
mov dword [esp], eax
call fcn.70040740
mov ecx, dword [ebp - 0x74]
mov eax, dword [ecx + 0x70]
mov dword [esp + 8], eax
mov eax, dword [ecx + 0x6c]
mov dword [esp], ebx
mov dword [esp + 4], eax
call fcn.7003e650
mov dword [esp], ebx
call fcn.7003eb10
jmp 0x7003179c
mov ecx, dword [ebp - 0x74]
test esi, 0x40
mov edx, dword [ecx]
mov eax, dword [ecx + 0x74]
mov dword [ecx + 4], 0x18
mov dword [eax], edx
mov edx, dword [ecx + 4]
mov dword [eax + 4], edx
mov edx, dword [ecx + 8]
mov dword [eax + 8], edx
mov edx, dword [ecx + 0xc]
mov dword [eax + 0xc], edx
mov edx, dword [ecx + 0x10]
mov dword [eax + 0x10], edx
mov edx, dword [ecx + 0x14]
mov dword [eax + 0x14], edx
mov edx, dword [ecx + 0x18]
mov dword [eax + 0x18], edx
mov edx, dword [ecx + 0x1c]
mov dword [eax + 0x1c], edx
jne 0x700339f1
mov ecx, dword [ebp - 0x74]
mov eax, dword [ecx + 0x74]
mov edx, dword [ecx + 0x78]
mov dword [esp + 8], edx
mov edx, dword [eax + 4]
lea eax, [eax + edx + 0xc]
mov dword [esp + 4], eax
lea eax, [ecx + 0xd4]
mov dword [esp], eax
call fcn.7002f3e0
jmp 0x7003188a
cmp eax, 8
jne 0x7003248c
mov eax, esi
and eax, 0x40
mov dword [ebp - 0xd0], eax
mov eax, dword [ebp - 0x74]
fldz
mov dword [ebp - 0xa8], 0
fstp qword [ebp - 0xb8]
mov dword [ebp - 0xc0], 0
mov dword [ebp - 0x70], 0
add eax, 0x160
mov dword [ebp - 0x94], eax
mov eax, esi
and esi, 0x20000000
and eax, 0x10
mov dword [ebp - 0xc4], eax
mov dword [ebp - 0xa0], 0xffffffff
mov dword [ebp - 0xd4], esi
lea esi, [esi]
mov eax, dword [ebp + 0xc]
mov eax, dword [eax]
mov esi, eax
mov dword [ebp - 0x84], eax
mov eax, dword [ebp + 0xc]
add eax, 8
mov dword [ebp - 0xcc], eax
mov dword [ebp + 0xc], eax
mov eax, dword [eax - 4]
mov edi, eax
mov dword [ebp - 0x8c], eax
mov eax, dword [ebp - 0xa0]
lea eax, [eax + eax*8]
add eax, esi
lea eax, [eax + esi*2]
add eax, edi
mov dword [ebp - 0xa0], eax
mov eax, dword [ebp - 0xd0]
test eax, eax
je 0x700328e5
mov eax, dword [ebp - 0xac]
test eax, eax
je 0x70033a91
movsx edx, word [eax]
add eax, 2
mov dword [ebp - 0xac], eax
mov eax, dword [ebp - 0x74]
mov ecx, dword [eax + 0x130]
movsx eax, cx
cmp ecx, eax
je 0x700339ab
mov ebx, ecx
movzx eax, cx
xor bx, bx
imul eax, edx
sar ebx, 9
imul ebx, edx
sar eax, 9
lea eax, [eax + ebx + 1]
sar eax, 1
neg eax
mov edi, dword [ebp - 0xd4]
test edi, edi
je 0x700338f1
mov ebx, edx
shr ebx, 0x1f
test bl, bl
je 0x700338f1
test eax, eax
je 0x700338f1
cmp ecx, eax
je 0x70033aff
mov ecx, dword [ebp - 0x84]
mov esi, dword [ebp - 0x74]
add dword [ebp - 0x84], eax
neg ecx
mov dword [esi + 0x130], ecx
mov esi, dword [ebp - 0xac]
test esi, esi
je 0x70033a74
mov eax, dword [ebp - 0x74]
mov eax, dword [eax + 0x134]
movsx ecx, ax
cmp eax, ecx
je 0x70033996
mov ebx, eax
movzx ecx, ax
xor bx, bx
imul ecx, edx
sar ebx, 9
imul ebx, edx
sar ecx, 9
lea ecx, [ecx + ebx + 1]
sar ecx, 1
neg ecx
mov ebx, dword [ebp - 0xd4]
test ebx, ebx
je 0x700338d5
shr edx, 0x1f
test dl, dl
je 0x700338d5
test ecx, ecx
je 0x700338d5
cmp eax, ecx
je 0x70033b18
mov eax, dword [ebp - 0x8c]
mov esi, dword [ebp - 0x74]
add dword [ebp - 0x8c], ecx
neg eax
mov dword [esi + 0x134], eax
mov eax, dword [ebp - 0xc4]
test eax, eax
je 0x70032909
mov eax, dword [ebp - 0x8c]
sub dword [ebp - 0x84], eax
mov eax, dword [ebp - 0x84]
sar eax, 1
add dword [ebp - 0x8c], eax
mov eax, dword [ebp - 0x74]
mov eax, dword [eax + 0x84]
test eax, eax
mov dword [ebp - 0xbc], eax
lea edx, [eax - 1]
je 0x70033a23
mov eax, dword [ebp - 0x70]
add eax, 0xc
mov esi, eax
mov dword [ebp - 0xc8], eax
mov eax, dword [ebp - 0x94]
lea edi, [eax + esi*4]
jmp 0x700329d0
and ecx, 1
je 0x70033423
mov esi, dword [eax + 0x10]
lea ebx, [esi + esi]
mov esi, dword [eax + 0x30]
sub ebx, dword [eax + 0x14]
lea ecx, [esi + esi]
sub ecx, dword [eax + 0x34]
mov dword [eax + 0x18], ebx
mov dword [eax + 0x38], ecx
movsx esi, bx
cmp esi, ebx
je 0x7003344a
movzx esi, bx
xor bx, bx
imul esi, dword [eax + 8]
sar ebx, 9
imul ebx, dword [eax + 8]
sar esi, 9
lea ebx, [esi + ebx + 1]
sar ebx, 1
sub dword [ebp - 0x84], ebx
mov dword [eax + 0x50], ebx
movsx ebx, cx
cmp ebx, ecx
je 0x70032a22
mov esi, dword [eax + 0xc]
movzx ebx, cx
xor cx, cx
sar ecx, 9
imul ebx, esi
imul ecx, esi
sar ebx, 9
lea ecx, [ebx + ecx + 1]
sar ecx, 1
sub edx, 1
add eax, 0x60
mov dword [eax - 0xc], ecx
add edi, 0x60
sub dword [ebp - 0x8c], ecx
cmp edx, 0xffffffff
je 0x70033552
mov ecx, dword [eax]
cmp ecx, 8
jg 0x70032940
test ecx, ecx
jle 0x70033460
mov ecx, dword [edi - 0x20]
movsx ebx, cx
cmp ecx, ebx
je 0x70033540
mov esi, dword [eax + 8]
movzx ebx, cx
xor cx, cx
sar ecx, 9
imul ebx, esi
imul ecx, esi
sar ebx, 9
lea ecx, [ebx + ecx + 1]
sar ecx, 1
sub dword [ebp - 0x84], ecx
mov dword [eax + 0x50], ecx
mov ecx, dword [edi]
movsx ebx, cx
cmp ecx, ebx
jne 0x7003299a
imul ecx, dword [eax + 0xc]
add ecx, 0x200
sar ecx, 0xa
jmp 0x700329b5
mov eax, dword [ebp + 8]
cmp dword [eax + 0x2c], 0xac44
je 0x70031791
mov dword [esp], eax
mov dword [esp + 4], ebx
call fcn.70030d80
mov edi, dword [ebp - 0x74]
mov eax, dword [edi + 0x70]
mov dword [esp + 8], eax
mov eax, dword [edi + 0x6c]
mov dword [esp], ebx
mov dword [esp + 4], eax
call fcn.7003e650
mov dword [esp], ebx
call fcn.7003eb10
jmp 0x70031791
mov dword [esp + 0xc], 1
mov esi, eax
mov eax, dword [eax + 0x84]
test eax, eax
sete al
movzx eax, al
mov dword [esp + 8], eax
mov eax, dword [ebp + 0xc]
mov dword [esp + 4], eax
mov eax, dword [ebp + 8]
mov dword [esp], eax
call fcn.700452b0
mov esi, dword [esi + 0x18]
jmp 0x7003124b
mov eax, dword [ebp - 0x74]
add eax, 0xd4
mov dword [esp], eax
call fcn.7002f420
test eax, eax
je 0x70032ace
mov ecx, dword [ebp - 0xa8]
test ecx, ecx
jne 0x70032ae2
mov eax, dword [ebp - 0x74]
mov edx, dword [eax + 0x74]
mov eax, dword [ebp - 0xa0]
mov dword [edx + 0x1c], eax
jmp 0x7003251e
cmp eax, 0xffffffff
je 0x7003326f
mov esi, dword [ebp - 0x74]
mov edx, dword [esi + 0x74]
mov ecx, dword [edx + 4]
lea edx, [edx + ecx + 8]
mov ecx, eax
shr ecx, 1
mov byte [edx + 1], cl
mov ecx, eax
shr ecx, 9
mov byte [edx + 2], cl
mov ecx, eax
shr ecx, 0x11
mov byte [edx + 3], cl
mov byte [edx], 0x8b
mov edx, dword [esi + 0x74]
mov ecx, dword [edx + 4]
lea eax, [eax + ecx + 4]
mov dword [edx + 4], eax
jmp 0x70032ad4
mov eax, dword [ebp - 0x74]
mov dword [ebp - 0x70], 0
mov edx, dword [eax + 0x9c]
test edx, edx
jne 0x70032c3e
add eax, 0x160
mov dword [ebp - 0x8c], eax
xor eax, eax
mov dword [ebp - 0x84], eax
lea esi, [esi]
mov eax, dword [ebp + 0xc]
mov esi, dword [ebp - 0x84]
mov ecx, dword [eax + esi*4]
mov eax, dword [ebp - 0x74]
mov eax, dword [eax + 0x84]
test eax, eax
lea edi, [eax - 1]
je 0x70032c11
mov eax, dword [ebp - 0x8c]
jmp 0x70032bd5
and ebx, 1
mov ebx, dword [eax + 0x10]
je 0x70032c04
lea edx, [ebx + ebx]
sub edx, dword [eax + 0x14]
mov dword [eax + 0x14], ebx
movsx ebx, dx
cmp edx, ebx
mov dword [eax + 0x10], ecx
je 0x70032bf3
mov esi, edx
movzx ebx, dx
xor si, si
imul ebx, dword [eax + 8]
sar esi, 9
imul esi, dword [eax + 8]
sar ebx, 9
lea ebx, [ebx + esi + 1]
sar ebx, 1
sub ecx, ebx
je 0x70032bca
test edx, edx
je 0x70032bca
mov ebx, dword [eax + 4]
xor edx, ecx
sar edx, 0x1f
xor ebx, edx
sub ebx, edx
add dword [eax + 8], ebx
sub edi, 1
add eax, 0x60
cmp edi, 0xffffffff
je 0x70032c11
mov ebx, dword [eax]
cmp ebx, 8
jg 0x70032b78
mov esi, dword [ebp - 0x70]
mov edx, dword [eax + esi*4 + 0x10]
add ebx, esi
and ebx, 7
mov dword [eax + ebx*4 + 0x10], ecx
movsx ebx, dx
cmp edx, ebx
jne 0x70032b97
mov ebx, dword [eax + 8]
imul ebx, edx
add ebx, 0x200
sar ebx, 0xa
jmp 0x70032bb3
lea edx, [ebx + ebx*2]
sub edx, dword [eax + 0x14]
sar edx, 1
jmp 0x70032b8a
mov eax, dword [ebp + 0xc]
mov esi, dword [ebp - 0x84]
add dword [ebp - 0x84], 1
add dword [ebp - 0x70], 1
and dword [ebp - 0x70], 7
mov dword [eax + esi*4], ecx
mov eax, dword [ebp - 0x84]
cmp eax, dword [ebp - 0x90]
jne 0x70032b50
mov eax, dword [ebp - 0x90]
mov dword [esp + 8], eax
mov eax, dword [ebp + 0xc]
mov dword [esp + 4], eax
mov eax, dword [ebp - 0x74]
mov dword [esp], eax
call fcn.7003f550
mov dword [ebp - 0xa8], 0
mov dword [ebp - 0xa0], 0xffffffff
fldz
fstp qword [ebp - 0xb8]
mov eax, dword [ebp - 0x70]
test eax, eax
je 0x700324a8
mov esi, dword [ebp - 0x74]
mov ebx, dword [esi + 0x84]
lea ecx, [esi + 0x160]
test ebx, ebx
jne 0x70032cac
jmp 0x700324a8
add ecx, 0x60
sub ebx, 1
je 0x700324a8
mov esi, dword [ecx]
lea edx, [esi - 1]
cmp edx, 7
ja 0x70032ca0
mov esi, dword [ecx + 0x10]
mov edx, dword [ecx + 0x2c]
mov dword [ebp - 0x58], esi
mov esi, dword [ecx + 0x14]
mov dword [ebp - 0x3c], edx
mov edx, dword [ecx + 0x4c]
mov dword [ebp - 0x54], esi
mov esi, dword [ecx + 0x18]
mov dword [ebp - 0x1c], edx
mov edx, ecx
mov dword [ebp - 0x50], esi
mov esi, dword [ecx + 0x1c]
mov dword [ebp - 0x4c], esi
mov esi, dword [ecx + 0x20]
mov dword [ebp - 0x48], esi
mov esi, dword [ecx + 0x24]
mov dword [ebp - 0x44], esi
mov esi, dword [ecx + 0x28]
mov dword [ebp - 0x40], esi
mov esi, dword [ecx + 0x30]
mov dword [ebp - 0x38], esi
mov esi, dword [ecx + 0x34]
mov dword [ebp - 0x34], esi
mov esi, dword [ecx + 0x38]
mov dword [ebp - 0x30], esi
mov esi, dword [ecx + 0x3c]
mov dword [ebp - 0x2c], esi
mov esi, dword [ecx + 0x40]
mov dword [ebp - 0x28], esi
mov esi, dword [ecx + 0x44]
mov dword [ebp - 0x24], esi
mov esi, dword [ecx + 0x48]
mov dword [ebp - 0x20], esi
xor esi, esi
lea esi, [esi]
mov edi, dword [ebp + eax*4 - 0x58]
add esi, 1
add edx, 4
mov dword [edx + 0xc], edi
mov edi, dword [ebp + eax*4 - 0x38]
add eax, 1
and eax, 7
mov dword [edx + 0x2c], edi
cmp esi, 8
jne 0x70032d20
jmp 0x70032ca0
mov edx, dword [esi]
lea eax, [edx + 3]
cmp eax, 0x15
ja case.0x70032d52.0
jmp dword [eax*4 + 0x7078feb8]
mov eax, dword [ebp + 8]
mov esi, dword [ebp - 0x78]
mov eax, dword [eax + 0x20]
mov byte [esi + 0x11f], al
mov eax, dword [ebp - 0x80]
jmp 0x70031dba
mov eax, dword [ebp - 0x80]
lea ecx, [eax + eax]
jmp 0x700314f7
xor eax, eax
jmp 0x70031b02
test edi, 1
jne 0x70032e82
test byte [ebp - 0x70], 2
jne 0x70032605
mov esi, dword [ebp - 0x70]
mov edx, 1
shr esi, 1
sub eax, 0x40000
mov ebx, edx
mov ecx, edx
add edx, 1
test esi, 2
je 0x70032da0
mov esi, dword [ebp - 0x78]
mov dword [esi + 0x18], eax
mov byte [esi + 0x11b], bl
jmp 0x7003105d
mov edx, dword [esi + 0x10]
mov eax, dword [esi + 0x2c]
mov ecx, dword [ebp - 0x84]
mov dword [ebp - 0x58], edx
mov edx, dword [esi + 0x14]
mov dword [ebp - 0x3c], eax
mov eax, dword [esi + 0x4c]
mov dword [ebp - 0x54], edx
mov edx, dword [esi + 0x18]
mov dword [ebp - 0x1c], eax
mov eax, esi
mov dword [ebp - 0x50], edx
mov edx, dword [esi + 0x1c]
mov dword [ebp - 0x4c], edx
mov edx, dword [esi + 0x20]
mov dword [ebp - 0x48], edx
mov edx, dword [esi + 0x24]
mov dword [ebp - 0x44], edx
mov edx, dword [esi + 0x28]
mov dword [ebp - 0x40], edx
mov edx, dword [esi + 0x30]
mov dword [ebp - 0x38], edx
mov edx, dword [esi + 0x34]
mov dword [ebp - 0x34], edx
mov edx, dword [esi + 0x38]
mov dword [ebp - 0x30], edx
mov edx, dword [esi + 0x3c]
mov dword [ebp - 0x2c], edx
mov edx, dword [esi + 0x40]
mov dword [ebp - 0x28], edx
mov edx, dword [esi + 0x44]
mov dword [ebp - 0x24], edx
mov edx, dword [esi + 0x48]
mov dword [ebp - 0x20], edx
xor edx, edx
mov ebx, dword [ebp + ecx*4 - 0x58]
add edx, 1
add eax, 4
mov dword [eax + 0xc], ebx
mov ebx, dword [ebp + ecx*4 - 0x38]
add ecx, 1
and ecx, 7
mov dword [eax + 0x2c], ebx
cmp edx, 8
jne 0x70032e31
jmp 0x70032460
mov ebx, dword [ebp - 0x70]
cmp dword [ebp + 0xc], ebx
jae 0x70031d15
mov eax, dword [ebp + 0xc]
mov ecx, dword [eax + 4]
add eax, 8
mov edx, dword [eax - 8]
sub edx, ecx
mov dword [eax - 8], edx
sar edx, 1
add ecx, edx
mov dword [eax - 4], ecx
cmp ebx, eax
ja 0x70032e64
jmp 0x70031d15
mov edx, 1
shr edi, 1
sub eax, 0x40000
mov ecx, edx
test edi, 1
mov ebx, edx
lea edx, [ecx + 1]
jne 0x70032e87
mov esi, dword [ebp - 0x78]
mov dword [esi + 0x18], eax
mov byte [esi + 0x11a], bl
jmp 0x7003105d
mov edx, dword [ebp + 0xc]
mov ecx, 1
call fcn.7002fa90
mov eax, dword [ebp - 0x78]
mov dword [ebp - 0x84], 1
mov eax, dword [eax + 0x14]
mov dword [ebp - 0x80], eax
jmp 0x70030e0d
mov dword [eax + 0x90], 1
mov dword [eax + 0x84], 0
mov dword [esp], eax
call fcn.7003ee50
jmp 0x70030ee2
mov eax, dword [ebp + 0xc]
mov edi, dword [ebp - 0x70]
mov ebx, dword [ebp - 0x70]
cmp eax, edi
jae 0x70032460
mov edx, dword [esi + 0x10]
mov ecx, edx
sub ecx, dword [esi + 0x14]
mov dword [esi + 0x14], edx
mov edi, dword [eax]
sar ecx, 1
add ecx, edx
mov edx, dword [esi + 8]
mov dword [esi + 0x10], edi
imul edx, ecx
add edx, 0x200
sar edx, 0xa
sub edi, edx
test edi, edi
mov dword [eax], edi
je 0x70032f46
test ecx, ecx
je 0x70032f46
xor ecx, edi
mov edx, 2
sar ecx, 0x1d
and ecx, 4
sub edx, ecx
add dword [esi + 8], edx
mov edx, dword [esi + 0x30]
mov ecx, edx
sub ecx, dword [esi + 0x34]
mov dword [esi + 0x34], edx
mov edi, dword [eax + 4]
sar ecx, 1
add ecx, edx
mov edx, dword [esi + 0xc]
mov dword [esi + 0x30], edi
imul edx, ecx
add edx, 0x200
sar edx, 0xa
sub edi, edx
test edi, edi
mov dword [eax + 4], edi
je 0x70032f89
test ecx, ecx
je 0x70032f89
xor ecx, edi
mov edx, 2
sar ecx, 0x1d
and ecx, 4
sub edx, ecx
add dword [esi + 0xc], edx
add eax, 8
cmp ebx, eax
ja 0x70032f05
jmp 0x70032460
mov eax, dword [ebp + 0xc]
mov edi, dword [ebp - 0x70]
mov ebx, dword [ebp - 0x70]
cmp eax, edi
jae 0x70032460
lea esi, [esi]
mov ecx, dword [esi + 0x10]
lea edx, [ecx + ecx]
sub edx, dword [esi + 0x14]
mov dword [esi + 0x14], ecx
mov ecx, dword [esi + 8]
mov edi, dword [eax]
imul ecx, edx
mov dword [esi + 0x10], edi
add ecx, 0x200
sar ecx, 0xa
sub edi, ecx
test edi, edi
mov dword [eax], edi
je 0x70032fee
test edx, edx
je 0x70032fee
xor edx, edi
mov edi, 2
sar edx, 0x1d
and edx, 4
sub edi, edx
add dword [esi + 8], edi
mov ecx, dword [esi + 0x30]
lea edx, [ecx + ecx]
sub edx, dword [esi + 0x34]
mov dword [esi + 0x34], ecx
mov ecx, dword [esi + 0xc]
mov edi, dword [eax + 4]
imul ecx, edx
mov dword [esi + 0x30], edi
add ecx, 0x200
sar ecx, 0xa
sub edi, ecx
test edi, edi
mov dword [eax + 4], edi
je 0x7003302e
test edx, edx
je 0x7003302e
xor edx, edi
mov edi, 2
sar edx, 0x1d
and edx, 4
sub edi, edx
add dword [esi + 0xc], edi
add eax, 8
cmp ebx, eax
ja 0x70032fb0
jmp 0x70032460
mov eax, dword [ebp + 0xc]
mov edi, dword [ebp - 0x70]
cmp eax, edi
jae 0x70032460
lea esi, [esi]
mov ecx, dword [esi + 0x10]
mov ebx, dword [esi + 8]
mov edx, dword [eax]
imul ebx, ecx
mov edi, edx
add ebx, 0x200
sar ebx, 0xa
sub edi, ebx
test edi, edi
mov dword [eax], edi
je 0x7003309a
test ecx, ecx
je 0x7003309a
xor ecx, edi
mov edi, dword [esi + 8]
mov ebx, 2
sar ecx, 0x1f
sub ebx, ecx
xor edi, ecx
add ebx, edi
mov edi, 0x400
cmp ebx, 0x401
cmovge ebx, edi
xor ebx, ecx
sub ebx, ecx
mov dword [esi + 8], ebx
mov ecx, dword [esi + 0xc]
mov ebx, dword [eax + 4]
imul ecx, edx
mov dword [esi + 0x10], ebx
add ecx, 0x200
sar ecx, 0xa
sub ebx, ecx
test ebx, ebx
mov ecx, ebx
mov dword [eax + 4], ebx
je 0x700330e6
test edx, edx
je 0x700330e6
mov ebx, dword [esi + 0xc]
xor ecx, edx
mov edx, 2
sar ecx, 0x1f
mov edi, 0x400
sub edx, ecx
xor ebx, ecx
add edx, ebx
cmp edx, 0x401
cmovge edx, edi
xor edx, ecx
sub edx, ecx
mov dword [esi + 0xc], edx
add eax, 8
cmp dword [ebp - 0x70], eax
ja 0x70033050
jmp 0x70032460
mov eax, dword [ebp + 0xc]
mov edi, dword [ebp - 0x70]
cmp eax, edi
jae 0x70032460
mov ecx, dword [esi + 0x30]
mov ebx, dword [esi + 0xc]
mov edx, dword [eax + 4]
imul ebx, ecx
mov edi, edx
add ebx, 0x200
sar ebx, 0xa
sub edi, ebx
test edi, edi
mov dword [eax + 4], edi
je 0x70033151
test ecx, ecx
je 0x70033151
xor ecx, edi
mov edi, dword [esi + 0xc]
mov ebx, 2
sar ecx, 0x1f
sub ebx, ecx
xor edi, ecx
add ebx, edi
mov edi, 0x400
cmp ebx, 0x401
cmovge ebx, edi
xor ebx, ecx
sub ebx, ecx
mov dword [esi + 0xc], ebx
mov ecx, dword [esi + 8]
mov ebx, dword [eax]
imul ecx, edx
mov dword [esi + 0x30], ebx
add ecx, 0x200
sar ecx, 0xa
sub ebx, ecx
test ebx, ebx
mov ecx, ebx
mov dword [eax], ebx
je 0x7003319b
test edx, edx
je 0x7003319b
mov ebx, dword [esi + 8]
xor ecx, edx
mov edx, 2
sar ecx, 0x1f
mov edi, 0x400
sub edx, ecx
xor ebx, ecx
add edx, ebx
cmp edx, 0x401
cmovge edx, edi
xor edx, ecx
sub edx, ecx
mov dword [esi + 8], edx
add eax, 8
cmp dword [ebp - 0x70], eax
ja 0x70033105
jmp 0x70032460
mov eax, dword [ebp + 0xc]
mov edi, dword [ebp - 0x70]
cmp eax, edi
jae 0x70032460
lea esi, [esi]
mov edi, dword [esi + 0x30]
mov edx, dword [esi + 0xc]
mov ecx, dword [eax + 4]
mov ebx, dword [esi + 0x10]
imul edx, edi
mov dword [esi + 0x10], ecx
add edx, 0x200
sar edx, 0xa
sub ecx, edx
test ecx, ecx
mov dword [eax + 4], ecx
je 0x70033212
test edi, edi
je 0x70033212
xor ecx, edi
mov edi, dword [esi + 0xc]
sar ecx, 0x1f
mov edx, ecx
xor edi, ecx
mov ecx, 2
sub ecx, edx
add ecx, edi
mov edi, 0x400
cmp ecx, 0x401
cmovge ecx, edi
xor ecx, edx
sub ecx, edx
mov dword [esi + 0xc], ecx
mov edx, dword [esi + 8]
mov ecx, dword [eax]
imul edx, ebx
mov dword [esi + 0x30], ecx
add edx, 0x200
sar edx, 0xa
sub ecx, edx
test ecx, ecx
mov edx, ecx
mov dword [eax], ecx
je 0x7003325e
test ebx, ebx
je 0x7003325e
xor edx, ebx
mov ebx, dword [esi + 8]
mov edi, 0x400
mov ecx, edx
mov edx, 2
sar ecx, 0x1f
sub edx, ecx
xor ebx, ecx
add edx, ebx
cmp edx, 0x401
cmovge edx, edi
xor edx, ecx
sub edx, ecx
mov dword [esi + 8], edx
add eax, 8
cmp dword [ebp - 0x70], eax
ja 0x700331c0
jmp 0x70032460
mov eax, dword [ebp - 0x78]
mov esi, dword [ebp - 0x88]
mov dword [eax + 0x18], esi
mov eax, dword [ebp - 0x9c]
test eax, eax
je 0x70032d7b
mov eax, dword [ebp - 0x9c]
mov dword [esp], eax
call sub.msvcrt.dll_free
lea esp, [ebp - 0xc]
xor eax, eax
pop ebx
pop esi
pop edi
pop ebp
ret
mov eax, dword [ebp - 0x70]
and edx, 7
cmp dword [ebp + 0xc], eax
mov dword [ebp - 0x8c], edx
jae 0x70032460
mov edi, dword [ebp + 0xc]
xor ecx, ecx
mov dword [ebp - 0x84], ecx
mov eax, dword [ebp - 0x84]
mov edx, dword [ebp - 0x8c]
mov ebx, dword [edi]
lea ecx, [esi + eax*4]
mov eax, dword [ecx + 0x10]
lea edx, [esi + edx*4]
mov dword [edx + 0x10], ebx
mov dword [ebp - 0x94], eax
imul eax, dword [esi + 8]
add eax, 0x200
sar eax, 0xa
sub ebx, eax
test ebx, ebx
mov dword [edi], ebx
je 0x70033315
mov eax, dword [ebp - 0x94]
test eax, eax
je 0x70033315
xor ebx, dword [ebp - 0x94]
mov eax, 2
sar ebx, 0x1d
and ebx, 4
sub eax, ebx
add dword [esi + 8], eax
mov eax, dword [edi + 4]
mov ecx, dword [ecx + 0x30]
mov dword [edx + 0x30], eax
mov edx, dword [esi + 0xc]
imul edx, ecx
add edx, 0x200
sar edx, 0xa
sub eax, edx
test eax, eax
mov dword [edi + 4], eax
je 0x7003334c
test ecx, ecx
je 0x7003334c
xor eax, ecx
mov ecx, 2
sar eax, 0x1d
and eax, 4
sub ecx, eax
add dword [esi + 0xc], ecx
add dword [ebp - 0x84], 1
add edi, 8
add dword [ebp - 0x8c], 1
and dword [ebp - 0x84], 7
and dword [ebp - 0x8c], 7
cmp dword [ebp - 0x70], edi
ja 0x700332c1
mov ecx, dword [ebp - 0x84]
test ecx, ecx
je 0x70032460
mov edx, dword [esi + 0x10]
mov eax, dword [esi + 0x2c]
mov dword [ebp - 0x58], edx
mov edx, dword [esi + 0x14]
mov dword [ebp - 0x3c], eax
mov eax, dword [esi + 0x4c]
mov dword [ebp - 0x54], edx
mov edx, dword [esi + 0x18]
mov dword [ebp - 0x1c], eax
mov eax, esi
mov dword [ebp - 0x50], edx
mov edx, dword [esi + 0x1c]
mov dword [ebp - 0x4c], edx
mov edx, dword [esi + 0x20]
mov dword [ebp - 0x48], edx
mov edx, dword [esi + 0x24]
mov dword [ebp - 0x44], edx
mov edx, dword [esi + 0x28]
mov dword [ebp - 0x40], edx
mov edx, dword [esi + 0x30]
mov dword [ebp - 0x38], edx
mov edx, dword [esi + 0x34]
mov dword [ebp - 0x34], edx
mov edx, dword [esi + 0x38]
mov dword [ebp - 0x30], edx
mov edx, dword [esi + 0x3c]
mov dword [ebp - 0x2c], edx
mov edx, dword [esi + 0x40]
mov dword [ebp - 0x28], edx
mov edx, dword [esi + 0x44]
mov dword [ebp - 0x24], edx
mov edx, dword [esi + 0x48]
mov dword [ebp - 0x20], edx
xor edx, edx
mov ebx, dword [ebp + ecx*4 - 0x58]
add edx, 1
add eax, 4
mov dword [eax + 0xc], ebx
mov ebx, dword [ebp + ecx*4 - 0x38]
add ecx, 1
and ecx, 7
mov dword [eax + 0x2c], ebx
cmp edx, 8
jne 0x700333e6
jmp 0x70032460
mov ebx, dword [eax + 0x10]
lea ebx, [ebx + ebx*2]
sub ebx, dword [eax + 0x14]
sar ebx, 1
mov dword [eax + 0x18], ebx
jmp 0x700319e7
mov ecx, dword [eax + 0x10]
lea ebx, [ecx + ecx*2]
mov ecx, dword [eax + 0x30]
sub ebx, dword [eax + 0x14]
lea ecx, [ecx + ecx*2]
sub ecx, dword [eax + 0x34]
sar ebx, 1
movsx esi, bx
sar ecx, 1
cmp esi, ebx
mov dword [eax + 0x18], ebx
mov dword [eax + 0x38], ecx
jne 0x7003296c
imul ebx, dword [eax + 8]
add ebx, 0x200
sar ebx, 0xa
jmp 0x70032986
cmp ecx, 0xffffffff
je 0x700338c2
cmp ecx, 0xfffffffe
je 0x70033910
mov ebx, dword [eax + 0x10]
mov ecx, dword [eax + 0x30]
jmp 0x70032961
mov eax, dword [ebp - 0x74]
add dword [ebp - 0x70], 1
and dword [ebp - 0x70], 7
add dword [eax + 0x130], esi
mov eax, dword [ebp - 0x98]
lea eax, [esi + eax*2]
add dword [ebp - 0x98], eax
mov eax, dword [ebp - 0x98]
cmp dword [ebp - 0xa0], eax
mov eax, 1
cmove eax, dword [ebp - 0xa8]
mov dword [ebp - 0xa8], eax
mov eax, dword [ebp + 8]
test byte [eax + 0x16], 0x80
je 0x70033522
mov edi, dword [ebp + 0xc]
mov eax, esi
mov ecx, dword [ebp - 0x94]
sub eax, dword [edi + ecx*4]
mov dword [ebp - 0x6c], eax
mov eax, dword [ebp - 0x74]
fild dword [ebp - 0x6c]
fmul st(0)
fld qword [ebp - 0xb8]
fadd st(1)
fstp qword [ebp - 0xb8]
fld qword [0x70794b38]
fmul qword [eax + 0x140]
fxch st(1)
fmul qword [0x70794b40]
faddp st(1)
fst qword [eax + 0x140]
fld qword [eax + 0x148]
fxch st(1)
fucomi st(1)
fstp st(1)
jbe 0x70033520
fstp qword [eax + 0x148]
jmp 0x70033522
fstp st(0)
add dword [ebp - 0x94], 1
mov eax, dword [ebp - 0x90]
cmp dword [ebp - 0x94], eax
jne 0x70031900
jmp 0x70032c76
imul ecx, dword [eax + 8]
add ecx, 0x200
sar ecx, 0xa
jmp 0x70032a0c
mov eax, dword [ebp - 0xbc]
lea esi, [eax + eax*2]
shl esi, 5
add esi, dword [ebp - 0x94]
mov dword [ebp - 0xbc], esi
mov esi, dword [ebp - 0x74]
mov edx, dword [ebp - 0x84]
mov dword [esp], 0
mov ecx, esi
call fcn.700409b0
mov edx, dword [ebp - 0x8c]
mov ecx, esi
sub esp, 4
mov ebx, eax
mov dword [esp], 1
call fcn.700409b0
mov ecx, dword [ebp - 0xc8]
mov edi, eax
mov eax, dword [ebp - 0xbc]
sub esp, 4
lea esi, [eax - 0x60]
lea ecx, [esi + ecx*4]
lea edx, [eax - 0x5c]
mov dword [ebp - 0x84], ecx
mov ecx, eax
mov eax, esi
mov esi, edi
mov edi, eax
jmp 0x7003361d
mov ecx, dword [edx + 0x14]
test ecx, ecx
je 0x700335dd
test ebx, ebx
je 0x700335dd
mov eax, dword [edx]
xor ecx, ebx
sar ecx, 0x1f
xor eax, ecx
sub eax, ecx
add dword [edx + 4], eax
mov ecx, dword [edx + 0x34]
test ecx, ecx
je 0x700335f6
test esi, esi
je 0x700335f6
mov eax, dword [edx]
xor ecx, esi
sar ecx, 0x1f
xor eax, ecx
sub eax, ecx
add dword [edx + 8], eax
mov eax, dword [edx + 0xc]
add ebx, dword [edx + 0x4c]
add esi, dword [edx + 0x50]
mov dword [edx + 0x10], eax
mov eax, dword [edx + 0x2c]
mov dword [edx + 0xc], ebx
mov dword [edx + 0x2c], esi
mov dword [edx + 0x30], eax
sub dword [ebp - 0x84], 0x60
mov ecx, edi
sub edx, 0x60
sub edi, 0x60
cmp edi, dword [ebp - 0x94]
jb 0x70033771
mov eax, dword [edx - 4]
cmp eax, 8
jg 0x700335c4
test eax, eax
jle 0x700336c2
add eax, dword [ebp - 0x70]
mov dword [ebp - 0x8c], eax
mov eax, dword [ebp - 0x84]
and dword [ebp - 0x8c], 7
mov eax, dword [eax - 0x20]
test eax, eax
je 0x70033682
test ebx, ebx
je 0x70033682
xor eax, ebx
sar eax, 0x1f
mov dword [ebp - 0xc8], eax
xor eax, dword [edx]
mov dword [ebp - 0xbc], eax
mov eax, dword [ebp - 0xc8]
sub dword [ebp - 0xbc], eax
mov eax, dword [ebp - 0xbc]
add dword [edx + 4], eax
mov eax, dword [ebp - 0x8c]
add ebx, dword [edx + 0x4c]
lea eax, [ecx + eax*4]
mov ecx, dword [ebp - 0x84]
mov dword [eax - 0x50], ebx
mov ecx, dword [ecx]
test ecx, ecx
je 0x700336b7
test esi, esi
je 0x700336b7
xor ecx, esi
sar ecx, 0x1f
mov dword [ebp - 0x8c], ecx
xor ecx, dword [edx]
sub ecx, dword [ebp - 0x8c]
add dword [edx + 8], ecx
add esi, dword [edx + 0x50]
mov dword [eax - 0x30], esi
jmp 0x7003360e
cmp eax, 0xffffffff
je 0x70033874
cmp eax, 0xfffffffe
je 0x70033923
mov ecx, dword [edx + 0x2c]
mov eax, dword [edx + 0xc]
mov dword [ebp - 0x8c], ecx
mov ecx, dword [edx + 0x50]
add ecx, esi
mov dword [ebp - 0xbc], ecx
mov ecx, dword [edx + 0x4c]
add ecx, ebx
test eax, eax
je 0x70033726
test ebx, ebx
je 0x70033726
xor ebx, eax
mov eax, dword [edx + 4]
sar ebx, 0x1f
mov dword [ebp - 0xc8], ebx
xor eax, ebx
sub eax, ebx
mov ebx, 0x400
add eax, dword [edx]
cmp eax, 0x401
cmovge eax, ebx
mov ebx, dword [ebp - 0xc8]
xor eax, ebx
sub eax, ebx
mov dword [edx + 4], eax
mov eax, dword [ebp - 0x8c]
test eax, eax
je 0x7003375c
test esi, esi
je 0x7003375c
mov eax, dword [ebp - 0x8c]
xor eax, esi
mov esi, 0x400
sar eax, 0x1f
mov ebx, eax
xor eax, dword [edx + 8]
sub eax, ebx
add eax, dword [edx]
cmp eax, 0x401
cmovge eax, esi
xor eax, ebx
sub eax, ebx
mov dword [edx + 8], eax
mov eax, dword [ebp - 0xbc]
mov ebx, ecx
mov dword [edx + 0x2c], ecx
mov dword [edx + 0xc], eax
mov esi, eax
jmp 0x7003360e
mov edi, esi
mov esi, dword [ebp - 0xc4]
test esi, esi
je 0x70033785
mov eax, ebx
sar eax, 1
sub edi, eax
add ebx, edi
mov eax, dword [ebp - 0x74]
add dword [ebp - 0x70], 1
and dword [ebp - 0x70], 7
add dword [eax + 0x130], ebx
add dword [eax + 0x134], edi
mov eax, dword [ebp - 0x98]
lea eax, [eax + eax*8]
add eax, ebx
add eax, edi
lea eax, [eax + ebx*2]
mov dword [ebp - 0x98], eax
cmp dword [ebp - 0xa0], eax
mov eax, 1
cmove eax, dword [ebp - 0xa8]
mov dword [ebp - 0xa8], eax
mov eax, dword [ebp + 8]
test byte [eax + 0x16], 0x80
je 0x70033842
mov eax, dword [ebp - 0xcc]
sub ebx, dword [eax - 8]
mov dword [ebp - 0x6c], ebx
fild dword [ebp - 0x6c]
fmul st(0)
sub edi, dword [eax - 4]
mov eax, dword [ebp - 0x74]
mov dword [ebp - 0x6c], edi
fild dword [ebp - 0x6c]
fmul st(0)
faddp st(1)
fmul dword [0x70794b20]
fld qword [ebp - 0xb8]
fadd st(1)
fstp qword [ebp - 0xb8]
fld qword [0x70794b38]
fmul qword [eax + 0x140]
fxch st(1)
fmul qword [0x70794b40]
faddp st(1)
fst qword [eax + 0x140]
fld qword [eax + 0x148]
fxch st(1)
fucomi st(1)
fstp st(1)
jbe 0x70033840
fstp qword [eax + 0x148]
jmp 0x70033842
fstp st(0)
add dword [ebp - 0xc0], 1
mov eax, dword [ebp - 0x90]
cmp dword [ebp - 0xc0], eax
jne 0x70032790
jmp 0x70032c76
mov esi, dword [ebp - 0x74]
add edx, ecx
mov eax, edx
neg eax
mov dword [esi + 0x130], eax
jmp 0x700319b0
mov eax, dword [edx + 0x4c]
add eax, ebx
mov ecx, eax
mov dword [ebp - 0x8c], eax
mov dword [edx + 0x2c], eax
cwde
cmp ecx, eax
je 0x700339d9
mov eax, ecx
movzx ecx, cx
xor ax, ax
imul ecx, dword [edx + 8]
sar eax, 9
imul eax, dword [edx + 8]
sar ecx, 9
lea ecx, [ecx + eax + 1]
sar ecx, 1
mov dword [edx + 0x50], ecx
add ecx, esi
mov eax, dword [edx + 0xc]
mov dword [ebp - 0xbc], ecx
mov ecx, dword [ebp - 0x8c]
jmp 0x700336f0
mov esi, dword [ebp - 0x84]
mov ebx, dword [eax + 0x10]
mov dword [eax + 0x30], esi
mov ecx, esi
jmp 0x70032961
add dword [ebp - 0x8c], ecx
mov eax, dword [ebp - 0x8c]
mov edi, dword [ebp - 0x74]
neg eax
mov dword [edi + 0x134], eax
jmp 0x700328e5
add dword [ebp - 0x84], eax
mov eax, dword [ebp - 0x84]
mov edi, dword [ebp - 0x74]
neg eax
mov dword [edi + 0x130], eax
jmp 0x70032867
mov esi, dword [ebp - 0x8c]
mov ecx, dword [eax + 0x30]
mov dword [eax + 0x10], esi
mov ebx, esi
jmp 0x70032961
mov ecx, dword [edx + 0x50]
add ecx, esi
mov dword [ebp - 0xbc], ecx
movsx eax, word [ebp - 0xbc]
mov dword [edx + 0xc], ecx
cmp ecx, eax
je 0x70033a5d
movzx eax, word [ebp - 0xbc]
imul eax, dword [edx + 4]
mov ecx, eax
mov eax, dword [ebp - 0xbc]
sar ecx, 9
xor ax, ax
sar eax, 9
imul eax, dword [edx + 4]
lea eax, [ecx + eax + 1]
sar eax, 1
mov ecx, eax
mov dword [edx + 0x4c], eax
mov eax, dword [edx + 0x2c]
add ecx, ebx
mov dword [ebp - 0x8c], eax
mov eax, dword [ebp - 0xbc]
jmp 0x700336f0
mov ecx, eax
imul ecx, esi
add ecx, 0x200
sar ecx, 0xa
neg ecx
jmp 0x70031973
mov ecx, eax
imul ecx, edx
add ecx, 0x200
sar ecx, 0xa
neg ecx
jmp 0x700328a5
mov eax, ecx
imul eax, edx
add eax, 0x200
sar eax, 0xa
neg eax
jmp 0x70032825
mov dword [ebp - 0x98], 0xffffffff
jmp 0x7003123a
mov ebx, dword [ebp - 0x84]
jmp 0x70031a5d
mov ecx, dword [ebp - 0x8c]
imul ecx, dword [edx + 8]
add ecx, 0x200
sar ecx, 0xa
jmp 0x700338a9
mov dword [esp], ecx
mov dword [esp + 4], ebx
call fcn.70030a60
mov ecx, dword [ebp - 0x74]
mov eax, dword [ecx + 0x78]
mov dword [esp + 8], eax
mov eax, dword [ecx + 0x74]
mov dword [esp], ebx
mov dword [esp + 4], eax
call fcn.7003e650
mov dword [esp], ebx
call fcn.7003eb10
jmp 0x700326fc
mov eax, dword [ebp - 0x94]
mov dword [ebp - 0xbc], eax
mov eax, dword [ebp - 0x70]
add eax, 0xc
mov dword [ebp - 0xc8], eax
jmp 0x7003356a
mov eax, dword [ebp - 0x74]
mov esi, dword [eax + 0x120]
add esi, dword [eax + 0x128]
mov dword [eax + 0x120], esi
sar esi, 0x10
jmp 0x70031943
mov eax, dword [ebp - 0xbc]
imul eax, dword [edx + 4]
add eax, 0x200
sar eax, 0xa
jmp 0x70033966
mov eax, dword [ebp - 0x74]
mov edx, dword [eax + 0x124]
add edx, dword [eax + 0x12c]
mov dword [eax + 0x124], edx
sar edx, 0x10
jmp 0x70032875
mov eax, dword [ebp - 0x74]
mov edx, dword [eax + 0x120]
add edx, dword [eax + 0x128]
mov dword [eax + 0x120], edx
sar edx, 0x10
jmp 0x700327f5
mov dword [ebp - 0x98], 0xffffffff
jmp 0x70031b38
lea ebx, [ecx + 1]
test ecx, ecx
lea eax, [ecx - 1]
mov ecx, ebx
cmovns ecx, eax
jmp 0x7003199e
mov dword [ebp - 0x84], 0
jmp 0x70030e0d
mov esi, dword [ebp - 0x78]
mov edi, 0xffffffff
xor ebx, ebx
mov dword [ebp - 0x70], 0
mov eax, dword [esi + 0x18]
and eax, 0xff83ffff
mov dword [esi + 0x18], eax
jmp 0x70031022
lea ebx, [eax + 1]
test eax, eax
lea ecx, [eax - 1]
mov eax, ebx
cmovns eax, ecx
jmp 0x70032850
xor edx, edx
jmp 0x70030e85
lea edx, [ecx + 1]
test ecx, ecx
lea eax, [ecx - 1]
mov ecx, edx
cmovns ecx, eax
jmp 0x700328ce
mov eax, dword [ebp - 0x78]
movzx edx, byte [eax + 0x11b]
movzx ecx, byte [eax + 0x11a]
movzx eax, byte [eax + 0x119]
add eax, ecx
add eax, edx
jmp 0x700310a9