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

Disassembly:
push ebp
mov ebp, edx
push edi
push esi
push ebx
sub esp, 0xec
mov edx, dword [edx + 0x24]
mov edi, dword [esp + 0x110]
mov esi, dword [esp + 0x114]
mov dword [esp + 0x64], ecx
mov dword [esp + 0x24], eax
mov ecx, edi
mov dword [esp + 0x4c], esi
mov byte [esp + 0x73], cl
mov ecx, esi
mov esi, dword [esp + 0x10c]
mov dword [esp + 0x48], edi
mov edi, dword [eax]
mov eax, dword [eax + 8]
test esi, esi
mov byte [esp + 0x71], cl
mov dword [esp + 0x3c], edi
mov dword [esp + 0x2c], eax
setne byte [esp + 0x72]
test dl, 0x80
je 0x666341e0
mov eax, dword [ebp + 8]
mov dword [esp + 0x54], eax
test eax, eax
je 0x66635ccc
mov ecx, dword [esp + 0x54]
jmp 0x66633cb3
mov ecx, dword [ecx + 0x14]
test ecx, ecx
je 0x66679fc5
movzx eax, byte [ecx + 0x38]
and eax, 3
cmp al, 2
jne 0x66633ca8
movzx eax, word [ecx + 0x32]
mov dword [esp + 0x54], ecx
mov dword [esp + 0x78], eax
and dh, 8
jne 0x666341f9
lea esi, [esi]
nop
mov esi, dword [ebp + 0x18]
xor ebx, ebx
mov byte [esp + 0x28], bl
mov dword [esp + 0x30], esi
test esi, esi
je 0x66633e8e
mov eax, dword [esp + 0x3c]
test byte [eax + 0x21], 2
jne 0x66633e8e
mov eax, dword [esp + 0x108]
mov edi, dword [esp + 0x24]
mov ecx, dword [esi]
not eax
mov dword [edi + 0x34], eax
mov edi, dword [esp + 0x4c]
mov eax, edi
cmp al, 0xb
mov eax, 2
cmovne eax, edi
movzx eax, al
test ecx, ecx
jle 0x66633e83
mov dword [esp + 0x28], 0
lea edi, [esi + 4]
mov dword [esp + 0x38], ebp
mov ebp, eax
lea esi, [esi]
mov edx, dword [esp + 0x120]
mov esi, dword [edi]
xor eax, eax
test edx, edx
je 0x66633dac
mov dword [esp + eax + 0xc4], 0
add eax, 4
cmp eax, 0x18
jb 0x66633d4f
mov eax, dword [esp + 0x120]
mov dword [esp + 0xc8], 0x6658cb90
mov dword [esp + 0xdc], eax
test esi, esi
je 0x666345dc
mov edx, esi
lea eax, [esp + 0xc4]
call fcn.665a6500
cmp byte [esp + 0x73], 0
movzx eax, word [esp + 0xd8]
jne 0x66633da3
and eax, 0xfffffffd
test ax, ax
je 0x66633e63
test bl, bl
je 0x666345c0
mov eax, dword [esp + 0x24]
mov ebx, dword [eax + 0x38]
lea ecx, [ebx - 1]
mov dword [esp + 0x34], ecx
mov dword [eax + 0x38], ecx
test esi, esi
je 0x666345f0
mov dword [esp], 0
mov eax, dword [esp + 0x3c]
xor ecx, ecx
mov edx, esi
call fcn.665a7430
mov esi, eax
mov eax, dword [esp + 0x3c]
cmp byte [eax + 0x53], 0
je 0x66634670
test esi, esi
je 0x66633e00
mov eax, dword [esp + 0x3c]
mov edx, esi
call fcn.665978b0
cmp ebp, 4
je 0x66634630
mov eax, dword [edi + 4]
cmp ebp, 5
mov edx, 2
mov dword [esp + 8], 3
cmove ebp, edx
mov dword [esp + 4], 0
mov edx, 0x113
mov dword [esp], eax
mov eax, dword [esp + 0x24]
mov ecx, ebp
call fcn.665a0de0
mov eax, dword [esp + 0x2c]
mov eax, dword [eax + 0xc]
mov edx, dword [eax + 0x38]
add edx, dword [eax + 0x3c]
js 0x66634653
mov esi, dword [esp + 0x2c]
shl ebx, 2
neg ebx
add ebx, dword [eax + 0x40]
mov edx, dword [esi + 0x6c]
mov dword [ebx], edx
mov ebx, 1
mov esi, dword [esp + 0x30]
add dword [esp + 0x28], 1
add edi, 0x14
mov eax, dword [esp + 0x28]
cmp dword [esi], eax
jg 0x66633d40
mov byte [esp + 0x28], bl
mov ebp, dword [esp + 0x38]
mov eax, dword [esp + 0x24]
mov dword [eax + 0x34], 0
mov eax, dword [ebp + 8]
mov ecx, dword [esp + 0x124]
mov dword [esp + 0x40], eax
test ecx, ecx
je 0x66634698
mov edi, dword [esp + 0x124]
mov edi, dword [edi]
mov dword [esp + 0x6c], edi
test edi, edi
je 0x6663458a
mov edx, dword [esp + 0x40]
test edx, edx
je 0x66634698
xor edx, edx
lea esi, [esi]
nop
mov eax, dword [eax + 0x14]
add edx, 1
test eax, eax
jne 0x66633ed0
lea ebx, [edx + edx*4]
mov esi, dword [esp + 0x3c]
mov dword [esp + 0x40], edx
xor edx, edx
add ebx, ebx
mov eax, ebx
test esi, esi
je 0x66635590
mov ecx, edx
mov eax, esi
mov edx, ebx
call fcn.6658bdd0
mov dword [esp + 0x6c], eax
mov edi, dword [esp + 0x6c]
test edi, edi
je 0x66634e58
mov dword [esp + 8], ebx
mov dword [esp], edi
mov dword [esp + 4], 0
call sub.msvcrt.dll_memset
mov esi, dword [esp + 0x40]
mov ebx, dword [ebp + 8]
lea esi, [edi + esi*8]
mov dword [esp + 0x30], esi
mov esi, dword [esp + 0x124]
mov dword [esi + 0x18], edi
xor edi, edi
lea esi, [esi]
mov eax, dword [esi]
test eax, eax
je 0x66633f9d
mov ecx, dword [esi + 0x1c]
test ecx, ecx
je 0x66633f96
test ebx, ebx
je 0x66635a13
cmp ecx, ebx
je 0x66635a20
mov eax, ebx
xor edx, edx
jmp 0x66633f6c
cmp ecx, eax
je 0x66633f76
mov eax, dword [eax + 0x14]
add edx, 1
test eax, eax
jne 0x66633f68
mov ecx, dword [esp + 0x30]
add ecx, edx
cmp byte [ecx], 0
jne 0x66633f96
mov ebx, dword [esp + 0x6c]
mov byte [ecx], 1
lea ecx, [ebx + edi*8]
mov ebx, dword [ebp + 8]
add edi, 1
mov dword [ecx], eax
mov dword [ecx + 4], edx
mov esi, dword [esi + 0x10]
test esi, esi
jne 0x66633f40
test ebx, ebx
je 0x66633fcb
mov ecx, dword [esp + 0x30]
mov esi, dword [esp + 0x6c]
xor eax, eax
lea esi, [esi]
nop
cmp byte [ecx + eax], 0
jne 0x66633fc1
lea edx, [esi + edi*8]
add edi, 1
mov dword [edx], ebx
mov dword [edx + 4], eax
mov ebx, dword [ebx + 0x14]
add eax, 1
test ebx, ebx
jne 0x66633fb0
mov eax, dword [esp + 0x3c]
mov dword [esp + 0x50], 1
mov eax, dword [eax + 0x20]
test ah, 0x60
jne 0x666346b8
mov dword [esp + 0xa4], 0
cmp byte [esp + 0x48], 0
mov dword [esp + 0xa8], 0
mov dword [esp + 0x98], 0
je 0x66634750
mov ecx, dword [esp + 0x54]
test ecx, ecx
jne 0x66634750
mov eax, dword [esp + 0x24]
mov edi, dword [eax + 0x38]
lea esi, [edi - 1]
mov dword [eax + 0x38], esi
movzx eax, byte [esp + 0x71]
cmp al, 0xb
je 0x666358f7
mov dword [esp + 0x30], eax
mov eax, dword [esp + 0x124]
test eax, eax
je 0x666359f3
mov ebx, dword [esp + 0x124]
nop
mov eax, dword [ebx]
test eax, eax
je 0x666354c0
mov eax, dword [ebx + 0x1c]
test eax, eax
je 0x666354c0
mov ebx, dword [ebx + 0x10]
test ebx, ebx
jne 0x66634050
mov eax, dword [esp + 0x2c]
mov ecx, dword [eax + 0x6c]
mov dword [esp + 0x90], ecx
cmp ecx, dword [eax + 0x70]
jge 0x66635bdf
mov ecx, dword [esp + 0x90]
mov edx, dword [esp + 0x2c]
lea eax, [ecx + 1]
mov dword [edx + 0x6c], eax
mov edx, dword [edx + 0x68]
lea eax, [ecx + ecx*4]
lea eax, [edx + eax*4]
mov dword [eax], 0xb
mov dword [eax + 4], 0
mov dword [eax + 8], 0
mov dword [eax + 0xc], 0
mov dword [eax + 0x10], 0
mov dword [esp + 0x88], 0
cmp dword [esp + 0x30], 5
jne 0x666356a6
cmp byte [esp + 0x71], 5
je 0x66634133
mov eax, dword [ebp + 8]
test eax, eax
je 0x66634133
mov ecx, dword [esp + 0x2c]
mov eax, dword [ecx + 0x6c]
cmp eax, dword [ecx + 0x70]
jge 0x66635b53
mov edx, dword [esp + 0x2c]
lea ecx, [eax + 1]
mov dword [esp + 0x88], ecx
mov dword [edx + 0x6c], ecx
lea edx, [eax + eax*4]
mov eax, dword [esp + 0x2c]
mov eax, dword [eax + 0x68]
lea eax, [eax + edx*4]
mov dword [eax], 0xb
mov dword [eax + 4], 0
mov dword [eax + 8], 0
mov dword [eax + 0xc], 0
mov dword [eax + 0x10], 0
mov eax, dword [esp + 0x10c]
test eax, eax
jne 0x6663599d
mov eax, dword [esp + 0x108]
mov dword [esp], esi
mov edx, 0x20
mov ecx, dword [esp + 0x100]
mov dword [esp + 4], eax
mov eax, dword [esp + 0x2c]
call fcn.6659fdb0
mov esi, dword [esp + 0x98]
test esi, esi
jne 0x66635a7a
mov edx, dword [ebp + 8]
test edx, edx
je 0x66635cb1
mov esi, dword [esp + 0x24]
mov eax, dword [esi + 0x74]
test eax, eax
cmove eax, esi
mov byte [eax + 0x14], 1
mov eax, dword [esp + 0x104]
mov ecx, dword [ebp + 0x24]
mov dword [esp + 0xc], 0xffffffff
mov dword [esp + 4], eax
mov eax, dword [esp + 0x100]
mov dword [esp + 8], 0
mov dword [esp], eax
mov eax, esi
call fcn.6661f1b0
mov dword [esp + 0xa0], 0
mov dword [esp + 0x8c], 1
jmp 0x66635722
mov dword [esp + 0x78], 1
mov dword [esp + 0x54], 0
and dh, 8
je 0x66633cd8
movsx eax, word [ebp + 0x2a]
mov dword [esp + 0x38], 0
mov dword [esp + 0x44], 0
mov dword [esp + 0x28], eax
mov dword [esp + 0x30], 0
lea esi, [esi]
mov ebx, dword [esp + 0x28]
test ebx, ebx
jle 0x66634338
movzx eax, byte [esp + 0x30]
xor ebx, ebx
xor eax, 1
mov byte [esp + 0x34], al
jmp 0x6663425d
cmp byte [esp + 0x34], 0
je 0x66634284
add dword [esp + 0x38], 1
lea esi, [esi]
add ebx, 1
cmp dword [esp + 0x28], ebx
je 0x66634338
mov edx, dword [ebp + 4]
lea eax, [ebx + ebx*4]
lea edi, [edx + eax*4]
movzx esi, byte [edi + 0xc]
test esi, esi
je 0x66634250
movsx eax, word [ebp + 0x28]
cmp eax, ebx
je 0x66634250
movzx eax, word [edi + 0x10]
mov edx, eax
and edx, 0x60
and eax, 0x60
jne 0x66634240
mov ecx, dword [esp + 0x120]
test ecx, ecx
je 0x666342a2
mov ecx, dword [esp + 0x120]
mov ecx, dword [ecx + ebx*4]
test ecx, ecx
jns 0x666342a2
test dx, dx
je 0x66634250
movzx ecx, byte [esp + 0x71]
cmp cl, 0xb
je 0x666344c0
movzx esi, cl
cmp esi, 5
je 0x666344d8
test eax, eax
jne 0x666342c8
mov eax, dword [esp + 0x30]
test eax, eax
jne 0x66634250
mov eax, ebx
test byte [ebp + 0x24], 0x20
je 0x666342da
mov edx, ebx
mov eax, ebp
call fcn.66588d10
cwde
mov ecx, dword [esp + 0x108]
lea ecx, [eax + ecx + 1]
cmp esi, 3
je 0x66634431
jg 0x66634370
cmp esi, 1
je 0x66634431
cmp esi, 2
je 0x6663441c
mov eax, dword [esp + 0x118]
mov dword [esp + 4], 0
mov edx, 0x32
add ebx, 1
mov dword [esp], eax
mov eax, dword [esp + 0x2c]
call fcn.6659fdb0
cmp dword [esp + 0x28], ebx
jne 0x6663425d
lea esi, [esi]
nop
mov esi, dword [esp + 0x38]
mov eax, dword [esp + 0x44]
or esi, eax
je 0x66633cd8
mov ebx, dword [esp + 0x30]
test ebx, ebx
jne 0x66633cd8
test eax, eax
je 0x66634362
test byte [ebp + 0x24], 0x60
jne 0x66634570
mov dword [esp + 0x30], 1
jmp 0x66634220
cmp esi, 5
jne 0x66634306
mov eax, dword [esp + 0x2c]
mov esi, dword [eax + 0x6c]
cmp esi, dword [eax + 0x70]
jge 0x6663452d
mov edx, dword [esp + 0x2c]
lea eax, [esi + 1]
mov dword [edx + 0x6c], eax
mov edx, dword [edx + 0x68]
lea eax, [esi + esi*4]
lea eax, [edx + eax*4]
mov dword [eax + 4], ecx
mov dword [eax + 8], 0
mov dword [eax + 0xc], 0
mov dword [eax + 0x10], 0
mov dword [eax], 0x33
mov edx, dword [edi + 4]
mov eax, dword [esp + 0x24]
add dword [esp + 0x44], 1
call fcn.666134e0
mov edi, dword [esp + 0x2c]
test esi, esi
mov eax, dword [edi + 0x6c]
mov ecx, dword [edi]
lea edx, [eax - 1]
cmovs esi, edx
cmp byte [ecx + 0x53], 0
mov edx, 0x666b004c
jne 0x666343ec
mov edx, dword [edi + 0x68]
lea ecx, [esi + esi*4]
lea edx, [edx + ecx*4]
mov dword [edx + 8], eax
jmp 0x66634250
mov esi, dword [esp + 0x108]
lea ecx, [ebx + esi + 1]
test eax, eax
je 0x6663441c
mov edx, ebx
mov eax, ebp
call fcn.66588d10
mov esi, dword [esp + 0x108]
cwde
lea ecx, [esi + eax + 1]
mov esi, dword [esp + 0x24]
mov eax, dword [esi + 0x74]
test eax, eax
cmove eax, esi
mov esi, 2
mov byte [eax + 0x15], 1
mov eax, dword [edi]
mov dword [esp + 0x40], ecx
mov dword [esp + 0xc], eax
mov eax, dword [ebp]
mov dword [esp + 4], str._s._s
mov dword [esp + 8], eax
mov eax, dword [esp + 0x3c]
mov dword [esp], eax
call fcn.665bc610
mov ecx, dword [esp + 0x40]
mov dword [esp], esi
mov edx, 0x43
mov esi, dword [esp + 0x2c]
mov edi, eax
mov dword [esp + 4], ecx
mov ecx, 0x513
mov eax, esi
call fcn.6659fdb0
mov eax, dword [esi]
cmp byte [eax + 0x53], 0
jne 0x66634558
mov esi, dword [esp + 0x2c]
mov eax, dword [esi + 0x6c]
mov edx, dword [esi + 0x68]
lea ecx, [eax + eax*4]
lea edx, [edx + ecx*4 - 0x14]
mov byte [edx + 1], 0xf9
mov dword [edx + 0x10], edi
test eax, eax
jle 0x66634250
mov esi, dword [esp + 0x2c]
lea eax, [eax + eax*4]
shl eax, 2
add eax, dword [esi + 0x68]
mov esi, 1
mov word [eax - 0x12], si
jmp 0x66634250
cmp esi, 0xb
jne 0x666342b3
mov esi, 2
jmp 0x666342bc
mov eax, dword [ebp + 0x24]
mov ecx, dword [esp + 0x30]
and eax, 0x20
test ecx, ecx
jne 0x666343f8
mov edx, dword [edi + 4]
test edx, edx
je 0x666343f8
mov esi, dword [esp + 0x108]
lea ecx, [ebx + esi + 1]
test eax, eax
je 0x66634375
mov edx, ebx
mov eax, ebp
call fcn.66588d10
mov esi, dword [esp + 0x108]
cwde
lea ecx, [esi + eax + 1]
mov eax, dword [esp + 0x2c]
mov esi, dword [eax + 0x6c]
cmp esi, dword [eax + 0x70]
jl 0x66634385
mov dword [esp + 4], 0
mov edx, 0x33
mov dword [esp], 0
mov dword [esp + 0x40], ecx
call fcn.6659fd40
mov ecx, dword [esp + 0x40]
mov esi, eax
jmp 0x666343b6
test edi, edi
je 0x66634563
mov edx, edi
call fcn.665926e0
mov eax, dword [esp + 0x2c]
mov eax, dword [eax + 0x6c]
jmp 0x6663449c
mov eax, dword [esp + 0x108]
mov ecx, ebp
lea edx, [eax + 1]
mov eax, dword [esp + 0x24]
call fcn.666139e0
jmp 0x66634362
mov eax, dword [esp + 0x124]
cmp byte [eax + 0x14], 0
jne 0x6663565f
mov dword [esp + 0x124], 0
mov dword [esp + 0x50], 0
mov byte [esp + 0x71], 4
jmp 0x666346a8
mov eax, dword [esp + 0x108]
mov edx, dword [esp + 0x38]
lea ecx, [eax + 1]
mov eax, dword [esp + 0x2c]
call fcn.665a2da0
jmp 0x66633db4
cmp byte [esp + 0x73], 0
jne 0x66633e63
xor eax, eax
jmp 0x66633da0
mov eax, dword [esp + 0x3c]
cmp byte [eax + 0x53], 0
jne 0x66633e00
mov eax, dword [esp + 0x34]
mov dword [esp + 0xc], 0x10
mov dword [esp + 4], 0
mov dword [esp + 8], eax
mov eax, dword [esp + 0x24]
mov dword [esp], eax
call fcn.666076e0
cmp ebp, 4
jne 0x66633e09
lea esi, [esi]
nop
mov edx, dword [esp + 0x118]
mov eax, dword [esp + 0x2c]
call fcn.665a07c0
mov eax, dword [esp + 0x2c]
mov eax, dword [eax + 0xc]
mov edx, dword [eax + 0x38]
add edx, dword [eax + 0x3c]
jns 0x66633e4d
neg ebx
mov edx, dword [esp + 0x2c]
mov ecx, ebx
mov ebx, 1
call fcn.6659a020
jmp 0x66633e63
mov eax, dword [esp + 0x34]
mov dword [esp + 0xc], 0x10
mov dword [esp + 4], esi
mov dword [esp + 8], eax
mov eax, dword [esp + 0x24]
mov dword [esp], eax
call fcn.666076e0
jmp 0x66633df1
mov dword [esp + 0x6c], 0
mov dword [esp + 0x50], 0
mov eax, dword [esp + 0x3c]
mov eax, dword [eax + 0x20]
test ah, 0x60
je 0x66633fe3
test ah, 0x20
je 0x66634955
mov dword [esp + 4], 0
mov eax, dword [esp + 0x24]
mov ecx, 0x7f
mov edx, ebp
mov dword [esp], 0
call fcn.665b8aa0
mov dword [esp + 0xa4], eax
test eax, eax
je 0x66634955
mov eax, dword [esp + 0x24]
xor ecx, ecx
mov edx, 0x45
mov edi, dword [eax + 0x2c]
mov esi, eax
mov dword [esp + 0x30], edi
lea edi, [edi + 1]
mov dword [eax + 0x2c], edi
mov eax, dword [esp + 0x2c]
mov dword [esp], edi
mov dword [esp + 4], 0
mov dword [esp + 0x98], edi
call fcn.6659fdb0
mov edi, dword [esi + 0x38]
mov eax, esi
mov esi, edi
mov dword [esp + 0x30], edi
sub esi, 1
cmp byte [esp + 0x48], 0
mov dword [esp + 0xa8], esi
mov dword [eax + 0x38], esi
jne 0x6663400f
lea esi, [esi]
nop
mov dword [esp + 0xa0], 0
xor ebx, ebx
mov dword [esp + 0xb4], 0
mov dword [esp + 0x88], 0
mov dword [esp + 0x90], 0
mov dword [esp + 0x80], 0
mov dword [esp + 0x8c], 0
mov eax, dword [esp + 0x50]
test eax, eax
je 0x666353e0
mov eax, dword [esp + 0x6c]
mov edi, dword [eax + 4]
mov dword [esp + 0x30], edi
mov edi, dword [eax]
test edi, edi
je 0x66635c06
mov eax, dword [esp + 0xa8]
movzx ecx, byte [esp + 0x28]
mov dword [esp + 0x34], 0
mov esi, dword [esp + 0x2c]
mov dword [esp + 0x4c], ebp
mov ebp, ebx
mov dword [esp + 0x9c], eax
lea esi, [esi]
mov eax, dword [esp + 0x64]
mov ebx, dword [esp + 0x30]
lea eax, [eax + ebx*4]
mov dword [esp + 0x38], eax
mov eax, dword [eax]
test eax, eax
jne 0x66634990
mov eax, dword [esp + 0x50]
test eax, eax
je 0x66634cf9
add dword [esp + 0x34], 1
mov eax, dword [esp + 0x34]
cmp dword [esp + 0x40], eax
jle 0x66634e18
mov edi, dword [esp + 0x6c]
lea eax, [edi + eax*8]
mov edi, dword [eax + 4]
mov dword [esp + 0x30], edi
mov edi, dword [eax]
test edi, edi
jne 0x666347e0
mov eax, dword [esp + 0x30]
mov ebp, dword [esp + 0x4c]
mov byte [esp + 0x28], cl
mov dword [esp + 0x34], eax
mov eax, dword [esp + 0x88]
test eax, eax
je 0x66634e2f
mov esi, dword [esp + 0x2c]
mov edx, dword [esp + 0x88]
mov eax, esi
call fcn.665a07c0
mov edi, dword [esp + 0xb4]
mov eax, dword [esi + 0x6c]
mov ecx, dword [esi]
test edi, edi
lea edx, [eax - 1]
cmovns edx, edi
cmp byte [ecx + 0x53], 0
mov edi, edx
mov edx, 0x666b004c
je 0x6663559e
mov dword [edx + 8], eax
mov edi, dword [esp + 0xa0]
test edi, edi
je 0x66634e3e
mov eax, dword [esp + 0x9c]
mov dword [esp + 4], 0
mov edx, 0x14
mov ecx, dword [esp + 0x98]
mov dword [esp], eax
mov eax, dword [esp + 0x2c]
call fcn.6659fdb0
mov esi, dword [esp + 0x54]
test esi, esi
je 0x666355af
mov edx, dword [esp + 0xa8]
mov eax, dword [esp + 0x2c]
call fcn.665a07c0
mov eax, dword [esp + 0x2c]
mov ecx, dword [esp + 0x9c]
mov eax, dword [eax + 0xc]
not ecx
mov edx, dword [eax + 0x38]
add edx, dword [eax + 0x3c]
js 0x66635a05
mov esi, dword [esp + 0x2c]
mov eax, dword [eax + 0x40]
mov edx, dword [esi + 0x6c]
mov dword [eax + ecx*4], edx
test byte [ebp + 0x24], 0x80
jne 0x66634e48
mov eax, dword [esp + 0x108]
mov esi, dword [esp + 0x34]
mov edx, 0x5c
lea ecx, [eax + 1]
mov eax, dword [esp + 0x64]
mov eax, dword [eax + esi*4]
mov dword [esp + 4], eax
movsx eax, word [ebp + 0x2c]
mov dword [esp], eax
mov eax, dword [esp + 0x2c]
call fcn.6659fdb0
cmp byte [esp + 0x28], 0
jne 0x66634e48
mov eax, dword [esp + 0x2c]
xor ecx, ecx
mov edx, ebp
call fcn.665a2da0
jmp 0x66634e48
mov eax, dword [esp + 0x24]
mov eax, dword [eax]
test byte [eax + 0x21], 0x40
je 0x66633fe3
mov eax, dword [ebp + 0x48]
mov edx, dword [ebp]
xor ecx, ecx
add eax, 0x38
call fcn.66593b10
mov esi, dword [eax + 8]
test esi, esi
je 0x66635bcf
mov dword [esp + 0xa4], 0
jmp 0x666346ef
mov eax, dword [esp + 0x124]
test eax, eax
jne 0x66634da0
mov eax, dword [esp + 0x24]
mov ebx, dword [eax + 0x38]
mov dword [esp + 0x60], ebx
sub ebx, 1
mov dword [esp + 0x58], ebx
mov dword [eax + 0x38], ebx
test cl, cl
je 0x66634e68
mov ebx, dword [esp + 0x38]
mov ecx, dword [edi + 0x24]
mov eax, dword [ebx]
mov dword [esp + 0x68], eax
test ecx, ecx
je 0x66634a17
mov dword [esp], eax
xor ecx, ecx
mov edx, 0x48
mov eax, esi
mov dword [esp + 4], 0
call fcn.6659fdb0
mov eax, dword [esp + 0x108]
mov edx, dword [esp + 0x24]
mov ecx, dword [esp + 0x58]
not eax
mov dword [edx + 0x34], eax
mov edx, dword [edi + 0x24]
mov eax, dword [esp + 0x24]
call fcn.66607f40
mov edx, dword [esp + 0x24]
mov dword [edx + 0x34], 0
mov eax, dword [ebx]
mov dword [esp + 0x68], eax
mov eax, dword [esp + 0x68]
add eax, 1
cmp word [edi + 0x34], 0
mov dword [esp + 0x28], eax
je 0x6663546b
mov eax, dword [esp + 0x108]
mov dword [esp + 0x5c], ebp
xor ebx, ebx
mov ebp, dword [esp + 0x4c]
not eax
mov dword [esp + 0x44], eax
jmp 0x66634a9c
test byte [ebp + 0x24], 0x20
je 0x66634a6d
test dx, dx
js 0x66634a6d
mov eax, ebp
mov dword [esp + 0x48], ecx
call fcn.66588d10
mov ecx, dword [esp + 0x48]
movsx edx, ax
mov eax, dword [esp + 0x108]
mov dword [esp], ecx
mov dword [esp + 4], 0
lea eax, [edx + eax + 1]
mov edx, 0x4e
mov ecx, eax
mov eax, esi
call fcn.6659fdb0
movzx eax, word [edi + 0x34]
add ebx, 1
cmp eax, ebx
jle 0x66634ae7
mov eax, dword [edi + 4]
mov ecx, dword [esp + 0x28]
movsx edx, word [eax + ebx*2]
add ecx, ebx
cmp dx, 0xfffe
je 0x66634d10
cmp edx, 0xffffffff
je 0x66634abe
cmp dx, word [ebp + 0x28]
jne 0x66634a50
mov dword [esp], ecx
mov ecx, dword [esp + 0x108]
mov eax, esi
add ebx, 1
mov dword [esp + 4], 0
mov edx, 0x4f
call fcn.6659fdb0
movzx eax, word [edi + 0x34]
cmp eax, ebx
jg 0x66634a9c
mov ebx, dword [esp + 0x38]
mov ebp, dword [esp + 0x5c]
mov edx, dword [ebx]
mov dword [esp + 4], edx
mov ecx, dword [esp + 0x28]
mov edx, 0x5c
mov dword [esp], eax
mov eax, esi
call fcn.6659fdb0
cmp dword [esp + 0x54], edi
mov ecx, dword [esp + 0x60]
sete byte [esp + 0x44]
cmp byte [esp + 0x73], 0
movzx eax, byte [esp + 0x44]
sete bl
neg ecx
and bl, byte [esp + 0x72]
mov dword [esp + 0x7c], ecx
and bl, al
jne 0x66635476
movzx eax, byte [edi + 0x36]
mov dword [esp + 0x38], eax
test eax, eax
je 0x666350a0
movzx eax, byte [esp + 0x71]
cmp al, 0xb
jne 0x66634b5c
mov ecx, dword [esp + 0x38]
mov eax, 2
cmp ecx, 0xb
cmovne eax, ecx
mov dword [esp + 0x38], eax
test ebp, ebp
je 0x66635070
cmp byte [ebp + 0x14], 1
sbb eax, eax
and eax, 0xfffffffe
add eax, 6
mov dword [esp + 0x38], eax
mov eax, dword [esp + 0x30]
mov ecx, dword [esp + 0x104]
add ecx, eax
mov dword [esp + 0x5c], ecx
test eax, eax
jne 0x66634b98
mov ecx, dword [edi + 0x14]
test ecx, ecx
je 0x66635360
movzx eax, word [edi + 0x32]
mov ecx, dword [esp + 0x58]
mov edx, 0x1c
mov dword [esp + 8], eax
mov eax, dword [esp + 0x28]
mov dword [esp], ecx
mov ecx, dword [esp + 0x5c]
mov dword [esp + 4], eax
mov eax, esi
call fcn.665a0980
mov dword [esp + 0x94], eax
mov eax, dword [esp + 0x28]
mov dword [esp + 0x48], eax
cmp dword [esp + 0x54], edi
je 0x66634be5
mov edx, dword [esp + 0x78]
mov eax, dword [esp + 0x24]
call fcn.66588c30
mov dword [esp + 0x48], eax
cmp byte [esp + 0x72], 0
jne 0x66634e88
test bl, bl
jne 0x66634e88
mov eax, dword [esp + 0x38]
cmp eax, 4
je 0x66634d6a
jg 0x66634d40
sub eax, 1
cmp eax, 2
ja 0x666350d0
mov edx, dword [esp + 0x38]
mov eax, dword [esp + 0x24]
mov ecx, edi
call fcn.665ab9b0
mov eax, dword [esi + 0xc]
mov edx, dword [eax + 0x38]
add edx, dword [eax + 0x3c]
js 0x66634d87
mov edx, dword [esp + 0x60]
mov ecx, dword [esi + 0x6c]
shl edx, 2
neg edx
add edx, dword [eax + 0x40]
mov dword [edx], ecx
mov edi, dword [esp + 0x48]
cmp dword [esp + 0x28], edi
je 0x66634c78
cmp dword [esp + 0x78], 1
je 0x66635496
mov eax, dword [esp + 0x24]
mov edi, dword [esp + 0x78]
cmp edi, dword [eax + 0x1c]
jle 0x66634c78
mov dword [eax + 0x1c], edi
mov edi, dword [esp + 0x48]
mov dword [eax + 0x20], edi
lea esi, [esi]
test ebp, ebp
je 0x66634ce8
mov eax, dword [esp + 0x80]
test eax, eax
je 0x66634ce8
mov eax, dword [ebp + 0x10]
test eax, eax
je 0x66634ca4
mov edx, dword [eax]
test edx, edx
je 0x66634ca4
mov eax, dword [eax + 0x1c]
mov ecx, 1
test eax, eax
jne 0x666347f9
mov eax, dword [esp + 0x90]
lea edx, [eax + 1]
mov eax, esi
call fcn.665a07c0
mov edi, dword [esp + 0x80]
mov eax, dword [esi + 0x6c]
mov ecx, dword [esi]
test edi, edi
lea edx, [eax - 1]
cmovns edx, edi
cmp byte [ecx + 0x53], 0
mov edi, edx
mov edx, 0x666b004c
je 0x66635582
mov dword [edx + 8], eax
mov dword [esp + 0x80], 0
mov eax, dword [esp + 0x50]
mov ecx, 1
test eax, eax
jne 0x66634805
mov eax, dword [esp + 0x40]
add dword [esp + 0x30], 1
mov eax, dword [eax + 0x14]
mov dword [esp + 0x40], eax
mov edi, eax
jmp 0x66634828
mov eax, dword [esp + 0x24]
mov edx, dword [esp + 0x44]
mov dword [eax + 0x34], edx
mov edx, dword [edi + 0x28]
lea eax, [ebx + ebx*4]
lea eax, [edx + eax*4]
mov edx, dword [eax + 4]
mov eax, dword [esp + 0x24]
call fcn.666134e0
mov eax, dword [esp + 0x24]
mov dword [eax + 0x34], 0
jmp 0x66634a91
cmp dword [esp + 0x38], 6
jne 0x666350d0
mov eax, dword [esp + 0x5c]
mov ecx, dword [esp + 0x4c]
mov dword [esp], edi
mov edx, dword [esp + 0x124]
mov dword [esp + 4], eax
mov eax, dword [esp + 0x24]
call fcn.66632470
mov edx, dword [esp + 0x118]
mov eax, esi
call fcn.665a07c0
mov eax, dword [esi + 0xc]
mov edx, dword [eax + 0x38]
add edx, dword [eax + 0x3c]
jns 0x66634c35
mov ecx, dword [esp + 0x7c]
mov edx, esi
call fcn.6659a020
jmp 0x66634c46
mov ebp, dword [esp + 0x124]
jmp 0x66634dc0
cmp dword [ebp + 0x1c], edi
je 0x66634dc7
mov ebp, dword [ebp + 0x10]
test ebp, ebp
je 0x6663499f
mov ebx, dword [ebp]
test ebx, ebx
jne 0x66634db0
mov edx, dword [esp + 0x90]
test edx, edx
je 0x6663499f
cmp dword [esp + 0x124], ebp
jne 0x6663499f
mov ebx, dword [esi + 0x6c]
test edx, edx
lea eax, [ebx - 1]
cmovs edx, eax
mov eax, dword [esi]
cmp byte [eax + 0x53], 0
mov dword [esp + 0x28], edx
mov edx, 0x666b004c
jne 0x66634e0c
mov edx, dword [esp + 0x28]
mov eax, dword [esi + 0x68]
lea edx, [edx + edx*4]
lea edx, [eax + edx*4]
mov dword [edx + 8], ebx
jmp 0x6663499f
mov byte [esp + 0x28], cl
mov ebp, dword [esp + 0x4c]
mov eax, dword [esp + 0x88]
test eax, eax
jne 0x6663484b
mov edi, dword [esp + 0xa0]
test edi, edi
jne 0x66634894
test byte [ebp + 0x24], 0x80
je 0x6663490a
mov eax, dword [esp + 0x11c]
mov edi, dword [esp + 0x8c]
mov dword [eax], edi
add esp, 0xec
pop ebx
pop esi
pop edi
pop ebp
ret
mov eax, dword [esp + 0x108]
mov edx, dword [esp + 0x4c]
lea ecx, [eax + 1]
mov eax, esi
call fcn.665a2da0
jmp 0x666349bc
mov eax, dword [esp + 0x4c]
test byte [eax + 0x24], 0x80
je 0x666353f9
cmp dword [esp + 0x54], edi
je 0x66634f28
mov eax, dword [esp + 0x54]
cmp word [eax + 0x32], 0
je 0x66634f28
mov dword [esp + 0x84], ebp
xor ebx, ebx
mov dword [esp + 0x74], esi
mov esi, eax
lea esi, [esi]
mov eax, dword [esi + 4]
movzx edx, word [edi + 0x34]
movzx ecx, word [eax + ebx*2]
test edx, edx
je 0x66635060
mov ebp, dword [edi + 4]
xor eax, eax
jmp 0x66634eeb
add eax, 1
cmp eax, edx
je 0x66635060
cmp cx, word [ebp + eax*2]
jne 0x66634ee0
cwde
mov edx, dword [esp + 0x48]
mov ecx, dword [esp + 0x5c]
mov dword [esp], eax
mov eax, dword [esp + 0x74]
add edx, ebx
add ebx, 1
mov dword [esp + 4], edx
mov edx, 0x5a
call fcn.6659fdb0
movzx eax, word [esi + 0x32]
cmp eax, ebx
jg 0x66634ec0
mov ebp, dword [esp + 0x84]
mov esi, dword [esp + 0x74]
mov ebx, dword [esp + 0x10c]
test ebx, ebx
je 0x66634bf8
mov ecx, dword [esp + 0x54]
mov eax, dword [esi + 0x6c]
movzx edx, word [ecx + 0x32]
add eax, edx
mov dword [esp + 0x74], eax
movzx eax, byte [edi + 0x38]
and eax, 3
cmp al, 2
mov eax, dword [esp + 0x48]
cmove eax, dword [esp + 0x28]
mov dword [esp + 0xac], eax
test edx, edx
je 0x66634bf8
mov eax, dword [esp + 0x10c]
mov dword [esp + 0xb8], ebp
xor ebx, ebx
mov dword [esp + 0xbc], edi
mov edi, ecx
add eax, 1
mov dword [esp + 0xb0], eax
mov eax, 0x34
mov ebp, eax
lea esi, [esi]
nop
mov eax, dword [edi + 0x20]
mov edx, dword [eax + ebx*4]
mov eax, dword [esp + 0x24]
call fcn.665b40c0
mov dword [esp + 0x84], eax
mov eax, dword [edi + 4]
movsx edx, word [eax + ebx*2]
movzx eax, word [edi + 0x32]
sub eax, 1
cmp eax, ebx
mov eax, dword [esp + 0x74]
cmove eax, dword [esp + 0x58]
mov dword [esp + 0x74], eax
mov eax, 0x35
cmove ebp, eax
mov eax, dword [esp + 0x4c]
test byte [eax + 0x24], 0x20
je 0x66634fea
test dx, dx
js 0x66634fea
call fcn.66588d10
movsx edx, ax
mov eax, dword [esp + 0xb0]
mov dword [esp + 0xc], 0xfffffffe
lea ecx, [edx + eax]
mov eax, dword [esp + 0x84]
mov edx, ebp
mov dword [esp + 8], eax
mov eax, dword [esp + 0xac]
add eax, ebx
mov dword [esp + 4], eax
mov eax, dword [esp + 0x74]
mov dword [esp], eax
mov eax, esi
call fcn.665a0890
mov eax, dword [esi + 0x6c]
test eax, eax
jle 0x6663503d
mov edx, dword [esi + 0x68]
lea eax, [eax + eax*4]
mov ecx, 0x90
lea eax, [edx + eax*4]
mov word [eax - 0x12], cx
movzx eax, word [edi + 0x32]
add ebx, 1
cmp eax, ebx
jg 0x66634f98
mov ebp, dword [esp + 0xb8]
mov edi, dword [esp + 0xbc]
jmp 0x66634bf8
mov eax, 0xffffffff
jmp 0x66634ef3
cmp dword [esp + 0x38], 5
sete bl
jmp 0x66634b78
mov ebx, eax
mov eax, dword [eax + 0x48]
xor ecx, ecx
mov edx, dword [ebx]
mov dword [esp + 0x48], eax
add eax, 0x38
call fcn.66593b10
mov eax, dword [eax + 8]
test eax, eax
jne 0x6663539b
lea esi, [esi]
mov eax, dword [esi + 0xc]
mov edx, dword [eax + 0x38]
add edx, dword [eax + 0x3c]
js 0x66635970
mov edx, dword [esp + 0x60]
mov ecx, dword [esi + 0x6c]
shl edx, 2
neg edx
add edx, dword [eax + 0x40]
mov dword [edx], ecx
mov ecx, 1
jmp 0x666347f9
mov eax, dword [esi + 0x6c]
mov dword [esp + 0x58], eax
mov eax, dword [esp + 0x98]
test eax, eax
je 0x666350fa
mov ebx, dword [esp + 0x24]
mov eax, dword [ebx + 0x74]
test eax, eax
cmove eax, ebx
add dword [esp + 0xa0], 1
mov byte [eax + 0x14], 1
movzx eax, byte [esp + 0x44]
movsx ebx, word [esp + 0x78]
mov dword [esp + 0x38], eax
mov eax, dword [esp + 0xa4]
test eax, eax
je 0x6663511e
cmp byte [esp + 0x72], 0
jne 0x666354e4
mov eax, dword [esp + 0x5c]
mov ecx, dword [esp + 0xa4]
mov dword [esp + 0xc], ebx
mov dword [esp + 0x14], 5
mov edx, dword [esp + 0x4c]
mov dword [esp + 0x1c], eax
mov eax, dword [esp + 0x38]
mov dword [esp + 0x10], 0
mov dword [esp + 0x18], eax
mov eax, dword [esp + 0x48]
mov dword [esp + 8], eax
mov eax, dword [esp + 0x104]
mov dword [esp + 4], eax
mov eax, dword [esp + 0x100]
mov dword [esp], eax
mov eax, dword [esp + 0x24]
call fcn.66633720
mov eax, dword [esp + 0x98]
mov dword [esp + 0x8c], 1
test eax, eax
je 0x66634c26
mov dword [esp + 4], 0
mov ecx, dword [esp + 0x98]
mov edx, 0x53
mov eax, esi
mov dword [esp], 1
call fcn.6659fdb0
mov eax, dword [esi + 0x6c]
mov dword [esp + 0x5c], eax
cmp eax, dword [esi + 0x70]
jge 0x66635c8b
mov ebx, dword [esp + 0x5c]
mov edx, dword [esi + 0x68]
lea eax, [ebx + 1]
mov dword [esi + 0x6c], eax
lea eax, [ebx + ebx*4]
lea eax, [edx + eax*4]
mov dword [eax], 0xb
mov dword [eax + 4], 0
mov dword [eax + 8], 0
mov dword [eax + 0xc], 0
mov dword [eax + 0x10], 0
mov eax, dword [esi + 0xc]
mov ecx, dword [esp + 0x9c]
mov edx, dword [eax + 0x38]
add edx, dword [eax + 0x3c]
not ecx
js 0x66635c53
mov edx, dword [esi + 0x6c]
mov eax, dword [eax + 0x40]
mov dword [eax + ecx*4], edx
mov ebx, dword [esp + 0x24]
mov eax, dword [ebx + 0x38]
mov dword [esp + 0x38], eax
sub eax, 1
mov dword [ebx + 0x38], eax
mov ebx, dword [edi + 0x24]
mov dword [esp + 0x9c], eax
test ebx, ebx
je 0x6663524f
mov dword [esp], eax
mov ecx, dword [esp + 0x68]
mov edx, 0x32
mov eax, esi
mov dword [esp + 4], 0
call fcn.6659fdb0
mov ebx, dword [esp + 0x58]
mov eax, ebx
sub eax, dword [esp + 0x94]
mov dword [esp + 0x38], ebx
test eax, eax
jle 0x66635316
mov dword [esp + 0x58], ebp
mov ebx, dword [esp + 0x94]
mov dword [esp + 0x68], edi
lea esi, [esi]
nop
mov edx, ebx
test ebx, ebx
jns 0x6663528c
mov eax, dword [esi + 0x6c]
lea edx, [eax - 1]
mov ecx, dword [esi]
mov eax, 0x666b004c
cmp byte [ecx + 0x53], 0
jne 0x666352a2
mov eax, dword [esi + 0x68]
lea edx, [edx + edx*4]
lea eax, [eax + edx*4]
movzx edx, byte [eax]
cmp dl, 0x89
je 0x66635301
movzx ecx, word [eax + 2]
movsx ebp, byte [eax + 1]
mov edi, dword [esp + 0x9c]
test byte [edx + 0x666908c0], 1
mov word [esp + 0x44], cx
cmove edi, dword [eax + 8]
mov ecx, dword [eax + 4]
mov dword [esp + 0xc], ebp
mov ebp, dword [eax + 0x10]
mov dword [esp + 8], ebp
mov eax, dword [eax + 0xc]
mov dword [esp], edi
mov dword [esp + 4], eax
mov eax, esi
call fcn.665a0890
mov eax, dword [esi + 0x6c]
test eax, eax
jle 0x66635301
mov ecx, dword [esi + 0x68]
lea eax, [eax + eax*4]
lea eax, [ecx + eax*4]
movzx ecx, word [esp + 0x44]
mov word [eax - 0x12], cx
add ebx, 1
cmp ebx, dword [esp + 0x38]
jne 0x66635280
mov ebp, dword [esp + 0x58]
mov edi, dword [esp + 0x68]
mov eax, dword [esp + 0x24]
mov ecx, edi
mov edx, 2
call fcn.665ab9b0
mov edi, dword [esp + 0x5c]
mov eax, dword [esi + 0x6c]
mov ecx, dword [esi]
test edi, edi
lea edx, [eax - 1]
cmovns edx, edi
cmp byte [ecx + 0x53], 0
mov dword [esp + 0x5c], edx
mov edx, 0x666b004c
je 0x66635b1e
mov dword [edx + 8], eax
mov dword [esp + 0x8c], 1
jmp 0x66634c26
cmp byte [esp + 0x44], 0
je 0x66634b98
test bl, bl
je 0x66634b98
mov eax, dword [esp + 0x3c]
mov eax, dword [eax + 0x20]
test ah, 0x20
jne 0x66635671
test ah, 0x40
je 0x666350a0
mov eax, dword [esp + 0x4c]
mov edx, dword [eax + 0x10]
test edx, edx
je 0x6663507d
movzx eax, word [edi + 0x32]
mov ebx, dword [esp + 0x28]
mov edx, 0x1c
mov ecx, dword [esp + 0x5c]
mov dword [esp + 8], eax
mov eax, dword [esp + 0x58]
mov dword [esp + 4], ebx
mov dword [esp], eax
mov eax, esi
call fcn.665a0980
mov dword [esp + 0x94], eax
mov eax, dword [esp + 0x4c]
test byte [eax + 0x24], 0x80
je 0x666353f1
mov dword [esp + 0x48], ebx
jmp 0x66634f28
mov dword [esp + 0x30], 0
mov edi, dword [esp + 0x40]
jmp 0x666347ad
mov eax, dword [esp + 0x28]
mov dword [esp + 0x48], eax
mov eax, dword [esp + 0x48]
mov ecx, dword [esp + 0x5c]
mov edx, 0x89
mov dword [esp + 4], 0
mov dword [esp], eax
mov eax, esi
call fcn.6659fdb0
mov ebx, dword [esp + 0x10c]
test ebx, ebx
je 0x66634bf8
mov eax, dword [esp + 0x10c]
mov ecx, dword [esp + 0x48]
mov edx, 0x35
mov dword [esp + 4], eax
mov eax, dword [esp + 0x58]
mov dword [esp], eax
mov eax, esi
call fcn.6659fdb0
mov eax, dword [esi + 0x6c]
test eax, eax
jle 0x66634bf8
mov edx, dword [esi + 0x68]
lea eax, [eax + eax*4]
mov ecx, 0x90
lea eax, [edx + eax*4]
mov word [eax - 0x12], cx
jmp 0x66634bf8
mov edx, dword [esp + 0x68]
xor eax, eax
jmp 0x66634af1
mov eax, dword [esi + 0xc]
mov edx, dword [eax + 0x38]
add edx, dword [eax + 0x3c]
jns 0x666350af
mov edx, esi
call fcn.6659a020
mov ecx, 1
jmp 0x666347f9
test edi, edi
je 0x66634c78
mov ebx, dword [esp + 0x24]
movzx eax, byte [ebx + 0x13]
cmp al, 7
ja 0x66634c78
lea edx, [eax + 1]
mov byte [ebx + 0x13], dl
mov dword [ebx + eax*4 + 0x94], edi
jmp 0x66634c78
cmp byte [ebx + 0x14], 0
jne 0x666355fd
cmp dword [esp + 0x124], ebx
je 0x66635a2d
mov dword [esp + 0x30], 4
jmp 0x6663406c
mov dword [esp + 4], 0
mov ecx, dword [esp + 0x100]
mov edx, 0xa2
mov eax, esi
mov dword [esp], 0
call fcn.6659fdb0
mov eax, dword [esp + 0x38]
mov edx, dword [esp + 0x5c]
mov dword [esp + 0x14], 5
mov dword [esp + 0x10], 0
mov ecx, dword [esp + 0xa4]
mov dword [esp + 0x18], eax
mov eax, dword [esp + 0x48]
mov dword [esp + 0x1c], edx
mov edx, dword [esp + 0x4c]
mov dword [esp + 8], eax
mov eax, dword [esp + 0x104]
mov dword [esp + 0xc], ebx
mov dword [esp + 4], eax
mov eax, dword [esp + 0x100]
mov dword [esp], eax
mov eax, dword [esp + 0x24]
call fcn.66633720
mov dword [esp + 4], 0
mov edx, 0xa3
mov eax, esi
mov dword [esp], 0
mov ecx, dword [esp + 0x100]
call fcn.6659fdb0
jmp 0x66635173
mov edx, dword [esi + 0x68]
lea ecx, [edi + edi*4]
lea edx, [edx + ecx*4]
jmp 0x66634cda
call fcn.6658bcf0
mov dword [esp + 0x6c], eax
jmp 0x66633f02
mov edx, dword [esi + 0x68]
lea ecx, [edi + edi*4]
lea edx, [edx + ecx*4]
mov dword [edx + 8], eax
jmp 0x66634885
mov ebx, dword [esp + 0x10c]
test ebx, ebx
jne 0x66635b81
mov eax, dword [esp + 0x108]
mov ecx, dword [esp + 0x100]
mov edx, 0x20
mov dword [esp + 4], eax
mov eax, dword [esp + 0xa8]
mov dword [esp], eax
mov eax, dword [esp + 0x2c]
call fcn.6659fdb0
mov eax, dword [esp + 0x24]
mov ecx, ebp
mov edx, 2
call fcn.665bcd50
jmp 0x666348d7
mov dword [esp + 0x30], 6
cmp dword [esp + 0x124], ebx
jne 0x6663406c
mov ecx, dword [esp + 0x10c]
test ecx, ecx
jne 0x66635987
mov eax, dword [esp + 0x108]
mov dword [esp], esi
mov edx, 0x20
mov ecx, dword [esp + 0x100]
mov dword [esp + 4], eax
mov eax, dword [esp + 0x2c]
call fcn.6659fdb0
mov dword [esp + 0x90], 0
mov dword [esp + 0x88], 0
jmp 0x66635888
mov dword [esp + 0x50], 0
mov byte [esp + 0x71], 6
jmp 0x666346a8
mov dword [esp], 0
mov edx, dword [esp + 0x4c]
mov ecx, 0x7f
mov dword [esp + 4], 0
mov eax, dword [esp + 0x24]
call fcn.665b8aa0
test eax, eax
jne 0x6663539b
mov eax, dword [esp + 0x3c]
mov eax, dword [eax + 0x20]
jmp 0x66635383
mov eax, dword [esp + 0x10c]
test eax, eax
jne 0x6663599d
mov eax, dword [esp + 0x108]
mov dword [esp], esi
mov edx, 0x20
mov ecx, dword [esp + 0x100]
mov dword [esp + 4], eax
mov eax, dword [esp + 0x2c]
call fcn.6659fdb0
mov esi, dword [esp + 0x30]
cmp esi, 4
je 0x666358ac
jg 0x66635872
lea eax, [esi - 1]
cmp eax, 3
mov eax, 2
cmovb eax, esi
mov dword [esp + 0x30], eax
mov edx, dword [esp + 0x30]
mov eax, dword [esp + 0x24]
mov ecx, ebp
call fcn.665bcd50
mov dword [esp + 0xa0], 0
mov dword [esp + 0x8c], 0
mov eax, dword [esp + 0x2c]
mov eax, dword [eax + 0xc]
mov edx, dword [eax + 0x38]
add edx, dword [eax + 0x3c]
js 0x666358e5
mov esi, dword [esp + 0x2c]
shl edi, 2
neg edi
add edi, dword [eax + 0x40]
mov edx, dword [esi + 0x6c]
mov dword [edi], edx
mov eax, dword [esp + 0x124]
test eax, eax
je 0x666357bd
cmp dword [esp + 0x124], ebx
je 0x666357bd
mov eax, dword [esp + 0x2c]
mov esi, dword [eax + 0x6c]
mov dword [esp + 0x80], esi
cmp esi, dword [eax + 0x70]
jge 0x66635c21
mov esi, dword [esp + 0x80]
mov edi, dword [esp + 0x2c]
mov dword [esp + 0xb4], 0
mov edx, dword [edi + 0x68]
lea eax, [esi + 1]
mov dword [edi + 0x6c], eax
lea eax, [esi + esi*4]
lea eax, [edx + eax*4]
mov dword [eax], 0xb
mov dword [eax + 4], 0
mov dword [eax + 8], 0
mov dword [eax + 0xc], 0
mov dword [eax + 0x10], 0
jmp 0x66634794
mov eax, dword [esp + 0x88]
mov dword [esp + 0xb4], 0
mov dword [esp + 0x80], 0
test eax, eax
je 0x66634794
mov eax, dword [esp + 0x2c]
mov esi, dword [eax + 0x6c]
mov dword [esp + 0xb4], esi
cmp esi, dword [eax + 0x70]
jge 0x66635c5f
mov edi, dword [esp + 0x2c]
mov eax, dword [esp + 0xb4]
mov edx, dword [edi + 0x68]
lea ecx, [eax + 1]
lea eax, [eax + eax*4]
mov dword [edi + 0x6c], ecx
lea eax, [edx + eax*4]
mov dword [eax], 0xb
mov dword [eax + 4], 0
mov dword [eax + 8], 0
mov dword [eax + 0xc], 0
mov dword [eax + 0x10], 0
mov edi, dword [esp + 0x2c]
mov eax, dword [esp + 0x88]
lea edx, [ecx - 1]
mov esi, dword [edi]
sub eax, 1
cmovs eax, edx
mov edx, 0x666b004c
cmp byte [esi + 0x53], 0
jne 0x6663585f
lea edx, [eax + eax*4]
mov eax, dword [edi + 0x68]
lea edx, [eax + edx*4]
mov dword [edx + 8], ecx
mov dword [esp + 0x80], 0
jmp 0x66634794
mov eax, dword [esp + 0x30]
cmp eax, 5
je 0x66634165
cmp eax, 6
jne 0x666359e6
mov eax, dword [esp + 0x100]
mov dword [esp], 0
mov ecx, ebp
mov edx, dword [esp + 0x124]
mov dword [esp + 4], eax
mov eax, dword [esp + 0x24]
call fcn.66632470
mov edx, dword [esp + 0x118]
mov eax, dword [esp + 0x2c]
call fcn.665a07c0
mov eax, dword [esp + 0x2c]
mov dword [esp + 0xa0], 0
mov dword [esp + 0x8c], 0
mov eax, dword [eax + 0xc]
mov edx, dword [eax + 0x38]
add edx, dword [eax + 0x3c]
jns 0x66635735
neg edi
mov edx, dword [esp + 0x2c]
mov ecx, edi
call fcn.6659a020
jmp 0x66635746
movzx eax, byte [ebp + 0x32]
mov dword [esp + 0x30], eax
cmp eax, 0xb
jne 0x66634039
mov edx, dword [esp + 0x124]
mov dword [esp + 0x30], 2
test edx, edx
jne 0x66634048
mov eax, dword [esp + 0x10c]
test eax, eax
jne 0x66635985
mov eax, dword [esp + 0x108]
mov dword [esp], esi
mov edx, 0x20
xor ebx, ebx
mov ecx, dword [esp + 0x100]
mov dword [esp + 4], eax
mov eax, dword [esp + 0x2c]
call fcn.6659fdb0
mov dword [esp + 0x90], 0
mov dword [esp + 0x88], 0
jmp 0x666356fd
mov ecx, dword [esp + 0x7c]
mov edx, esi
call fcn.6659a020
mov ecx, 1
jmp 0x666347f9
xor ebx, ebx
mov dword [esp + 0x90], 0
mov dword [esp + 0x88], 0
mov eax, dword [esp + 0x10c]
mov dword [esp], esi
mov edx, 0x35
mov ecx, dword [esp + 0x108]
mov dword [esp + 4], eax
mov eax, dword [esp + 0x2c]
call fcn.6659fdb0
mov ecx, dword [esp + 0x2c]
mov eax, dword [ecx + 0x6c]
test eax, eax
jle 0x666356b5
mov edx, dword [ecx + 0x68]
lea eax, [eax + eax*4]
mov ecx, 0x90
lea eax, [edx + eax*4]
mov word [eax - 0x12], cx
jmp 0x666356b5
mov dword [esp + 0x30], 2
jmp 0x666356fd
mov dword [esp + 0x90], 0
xor ebx, ebx
jmp 0x666340bf
mov edx, dword [esp + 0x2c]
call fcn.6659a020
jmp 0x66634e3e
mov ecx, dword [esp + 0x30]
xor eax, eax
xor edx, edx
jmp 0x66633f7c
mov ecx, dword [esp + 0x30]
mov eax, ebx
xor edx, edx
jmp 0x66633f7c
mov edx, dword [esp + 0x10c]
test edx, edx
jne 0x66635b30
mov eax, dword [esp + 0x108]
mov dword [esp], esi
mov edx, 0x20
mov ecx, dword [esp + 0x100]
mov dword [esp + 4], eax
mov eax, dword [esp + 0x2c]
call fcn.6659fdb0
mov dword [esp + 0x90], 0
mov dword [esp + 0x88], 0
jmp 0x666358ac
mov ecx, dword [esp + 0x24]
mov edx, dword [esp + 0x108]
mov eax, dword [ecx + 0x74]
test eax, eax
cmove eax, ecx
mov ecx, dword [esp + 0xa4]
mov byte [eax + 0x14], 1
mov eax, dword [esp + 0x24]
mov dword [esp + 8], edx
mov edx, dword [esp + 0x104]
mov dword [esp + 0x1c], 0xffffffff
mov dword [esp + 4], edx
mov edx, dword [esp + 0x100]
mov dword [esp + 0x18], 1
mov dword [esp], edx
mov edx, ebp
mov dword [esp + 0x14], 5
mov dword [esp + 0x10], 0
mov dword [esp + 0xc], 1
call fcn.66633720
mov eax, dword [esp + 0x2c]
mov ecx, esi
mov edx, 0x53
mov dword [esp + 4], 0
mov dword [esp], 1
call fcn.6659fdb0
mov dword [esp + 0xa0], 1
mov dword [esp + 0x8c], 1
jmp 0x66635722
mov edi, dword [esp + 0x5c]
mov edx, dword [esi + 0x68]
lea ecx, [edi + edi*4]
lea edx, [edx + ecx*4]
jmp 0x6663534a
mov dword [esp + 0x30], 4
mov dword [esp + 0x90], 0
mov dword [esp + 0x88], 0
jmp 0x6663599d
mov dword [esp + 4], 0
mov eax, dword [esp + 0x2c]
xor ecx, ecx
mov edx, 0xb
mov dword [esp], 0
call fcn.6659fd40
add eax, 1
mov dword [esp + 0x88], eax
jmp 0x66634133
mov eax, dword [esp + 0x10c]
mov edi, dword [esp + 0x2c]
mov edx, 0x35
mov ecx, dword [esp + 0x108]
mov dword [esp + 4], eax
mov eax, dword [esp + 0xa8]
mov dword [esp], eax
mov eax, edi
call fcn.6659fdb0
mov eax, dword [edi + 0x6c]
test eax, eax
jle 0x666355be
mov edx, dword [edi + 0x68]
lea eax, [eax + eax*4]
mov ecx, 0x90
lea eax, [edx + eax*4]
mov word [eax - 0x12], cx
jmp 0x666355be
mov ebx, dword [ebp + 0x10]
test ebx, ebx
jne 0x66634980
jmp 0x66633fe3
mov dword [esp + 4], 0
xor ecx, ecx
mov edx, 0xb
mov dword [esp], 0
call fcn.6659fd40
mov dword [esp + 0x90], eax
jmp 0x666340bf
mov eax, dword [esp + 0x30]
mov dword [esp + 0x34], eax
mov eax, dword [esp + 0xa8]
mov dword [esp + 0x9c], eax
jmp 0x66634e20
mov dword [esp + 4], 0
xor ecx, ecx
mov edx, 0xb
mov dword [esp], 0
call fcn.6659fd40
mov dword [esp + 0xb4], 0
mov dword [esp + 0x80], eax
jmp 0x66634794
mov edx, esi
call fcn.6659a020
jmp 0x66635215
mov dword [esp], 0
xor ecx, ecx
mov edx, 0xb
mov esi, eax
mov dword [esp + 4], 0
call fcn.6659fd40
mov ecx, dword [esi + 0x6c]
mov dword [esp + 0xb4], eax
jmp 0x66635835
mov dword [esp], 0
xor ecx, ecx
mov edx, 0xb
mov eax, esi
mov dword [esp + 4], 0
call fcn.6659fd40
mov dword [esp + 0x5c], eax
jmp 0x666351f4
mov dword [esp + 0xa0], 0
mov dword [esp + 0x8c], 1
jmp 0x66635722
jmp 0x66679fc5
movzx eax, word [0x32]
ud2