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

Disassembly:
push ebp
push edi
mov edi, ecx
push esi
push ebx
sub esp, 0x11c
mov ebp, dword [esp + 0x134]
mov ebx, dword [esp + 0x138]
mov dword [esp + 0x30], eax
mov eax, dword [eax]
mov dword [esp + 0x2c], ecx
mov dword [esp + 0x4c], ebx
mov ebx, dword [esp + 0x13c]
mov dword [esp + 0x38], eax
mov eax, dword [ebp + 0x48]
mov dword [esp + 0x50], ebx
lea ebx, [ecx + 0x50]
mov ecx, dword [ecx + 4]
mov dword [esp + 0x24], eax
movzx eax, byte [ebp + 0x34]
mov dword [esp + 0x54], ebx
mov esi, dword [esp + 0x130]
mov dword [esp + 0x44], eax
mov ebx, eax
lea eax, [eax + eax*8]
mov dword [esp + 0x20], edx
mov edx, dword [ecx + eax*8 + 0x34]
mov eax, dword [edi + 0x1ec]
mov dword [esp + 0x1c], ecx
mov dword [esp + 0x48], edx
test eax, eax
jle 0x666149d5
xor ecx, ecx
jmp 0x666149a7
add ecx, 1
cmp ecx, eax
je 0x666149d5
cmp edx, dword [edi + ecx*4 + 0x1f0]
jne 0x666149a0
mov eax, 1
xor edx, edx
xor edi, edi
shld edx, eax, cl
shl eax, cl
test cl, 0x20
cmovne edx, eax
cmovne eax, edi
not edx
not eax
and edx, dword [esp + 0x50]
and eax, dword [esp + 0x4c]
jmp 0x666149dd
mov eax, dword [esp + 0x4c]
mov edx, dword [esp + 0x50]
mov dword [ebp + 0x50], eax
mov eax, dword [esp + 0x2c]
mov dword [ebp + 0x54], edx
mov ecx, dword [esp + 0x30]
mov edx, dword [eax + 0x4c]
mov eax, dword [eax + 0x48]
mov dword [esp + 0x10], eax
mov eax, dword [ecx + 0x38]
mov dword [esp + 0x14], edx
lea edi, [eax - 1]
sub eax, 2
mov dword [ebp + 0x10], edi
mov dword [ebp + 0xc], edi
mov dword [esp + 0x34], eax
mov dword [ecx + 0x38], eax
mov dword [ebp + 0x18], eax
test bl, bl
je 0x66614a2c
mov eax, dword [esp + 0x44]
mov ebx, dword [esp + 0x1c]
lea eax, [eax + eax*8]
test byte [ebx + eax*8 + 0x2c], 8
jne 0x66615785
test esi, esi
je 0x66616547
imul edx, esi, 0x58
mov eax, esi
add edx, dword [esp + 0x2c]
jmp 0x66614a48
sub edx, 0x58
sub eax, 1
je 0x66614a52
mov ecx, dword [edx + 0x2f0]
test ecx, ecx
je 0x66614a40
mov dword [esp + 0x28], eax
mov eax, dword [esp + 0x44]
lea edx, [eax + eax*8]
mov eax, dword [esp + 0x1c]
lea ecx, [eax + edx*8]
movzx eax, byte [ecx + 0x30]
mov ebx, eax
mov byte [esp + 0x3c], al
and ebx, 0x10
mov byte [esp + 0x64], bl
jne 0x6661570d
mov eax, dword [esp + 0x10]
mov edx, dword [esp + 0x14]
mov ecx, esi
xor ebx, ebx
shrd eax, edx, cl
shr edx, cl
test cl, 0x20
cmovne eax, edx
cmovne edx, ebx
mov dword [esp + 0x58], eax
and eax, 1
mov dword [esp + 0x10], eax
mov eax, dword [esp + 0x24]
mov dword [esp + 0x5c], edx
mov ecx, dword [eax + 0x24]
test ch, 4
jne 0x66614ea0
test ch, 1
je 0x66614ac2
test cl, 5
jne 0x66615d39
imul eax, dword [esp + 0x28], 0x58
mov ebx, dword [esp + 0x2c]
mov eax, dword [ebx + eax + 0x2fc]
mov dword [esp + 0x28], eax
mov eax, ecx
and eax, 0x102
cmp eax, 0x102
je 0x66615e0d
test ch, 2
je 0x666157b5
mov edi, dword [esp + 0x24]
movzx edx, word [edi + 0x1c]
movzx eax, word [edi + 0x18]
movzx ebx, word [edi + 0x1a]
mov word [esp + 0x8c], dx
mov edx, dword [edi + 0x20]
mov word [esp + 0x90], bx
movzx ebx, ax
mov dword [esp + 0x40], edx
mov edx, dword [ebp + 8]
mov word [esp + 0x94], ax
mov dword [esp + 0x60], edx
mov dword [esp + 0x3c], ebx
test cl, 0x20
je 0x6661636a
mov edx, dword [edi + 0x30]
lea eax, [ebx + 1]
mov edi, dword [edx + ebx*4]
movzx ebx, word [esp + 0x90]
mov dword [esp + 0x7c], edi
test cl, 0x10
je 0x66616355
mov edi, dword [esp + 0x24]
mov edx, dword [edi + 0x30]
mov edi, dword [edx + eax*4]
movzx eax, word [esp + 0x8c]
cmp ebx, eax
mov dword [esp + 0x78], edi
cmovl ebx, eax
test byte [edi + 0xb], 1
jne 0x666167c0
mov eax, dword [esp + 0x7c]
mov byte [esp + 0x84], 0
test eax, eax
je 0x66616855
and ecx, 0x80030
mov dword [esp + 0x6c], 0
cmp ecx, 0x80000
je 0x66616dc4
mov eax, dword [esp + 0x40]
movzx edi, word [esp + 0x94]
cmp word [eax + 0x32], di
jbe 0x666162b2
mov eax, dword [eax + 0x1c]
mov edi, dword [esp + 0x3c]
cmp byte [eax + edi], 0
sete al
movzx eax, al
cmp eax, dword [esp + 0x10]
je 0x666162c8
test esi, esi
je 0x66614beb
mov eax, dword [esp + 0x24]
test byte [eax + 0x26], 0x10
jne 0x66616585
mov edi, dword [esp + 0x30]
mov ecx, dword [ebp + 0x48]
mov eax, dword [edi + 8]
movzx esi, word [ecx + 0x2a]
mov dword [esp + 0x74], ecx
mov dword [esp + 0x70], eax
mov eax, dword [ecx + 0x20]
movzx ecx, word [ecx + 0x18]
mov dword [esp + 0x58], eax
mov eax, dword [edi + 0x2c]
add ebx, ecx
mov dword [esp + 0x68], ecx
lea edx, [eax + 1]
add eax, ebx
mov dword [esp + 0x80], ebx
movzx ebx, si
mov dword [edi + 0x2c], eax
mov eax, dword [edi]
mov dword [esp + 0x88], edx
mov dword [esp + 0x28], edx
mov edx, dword [esp + 0x58]
call fcn.6658c2d0
mov edx, eax
mov eax, dword [edi]
call fcn.66591c60
mov dword [esp + 0x58], eax
test si, si
je 0x66614d5e
cmp dword [esp + 0x10], 1
mov edi, dword [ebp + 8]
mov dword [esp + 4], 0
mov esi, dword [esp + 0x70]
sbb edx, edx
mov dword [esp], 0
and edx, 4
mov ecx, edi
mov eax, esi
add edx, 0x21
call fcn.6659fdb0
mov eax, esi
mov esi, dword [esi + 0x6c]
cmp esi, dword [eax + 0x70]
jge 0x66616889
mov ecx, dword [esp + 0x70]
lea eax, [esi + 1]
mov edx, dword [ecx + 0x68]
mov dword [ecx + 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
mov eax, dword [esp + 0x88]
cmp dword [esp + 0x10], 1
mov dword [esp + 8], ebx
mov ecx, edi
sbb edx, edx
mov dword [esp], 0
mov dword [esp + 4], eax
and edx, 3
mov eax, dword [esp + 0x70]
add edx, 0x16
call fcn.665a0980
mov ecx, dword [esp + 0x70]
test esi, esi
mov dword [ebp + 0x14], eax
mov edx, dword [ecx + 0x6c]
mov ecx, dword [ecx]
lea eax, [edx - 1]
cmovs esi, eax
cmp byte [ecx + 0x53], 0
mov eax, 0x666b004c
jne 0x66614d1c
mov eax, dword [esp + 0x70]
lea ecx, [esi + esi*4]
mov eax, dword [eax + 0x68]
lea eax, [eax + ecx*4]
mov dword [eax + 8], edx
xor esi, esi
mov dword [esp + 0x134], ebp
mov ebp, edi
mov edi, ebx
mov ebx, dword [esp + 0x70]
mov eax, dword [esp + 0x88]
mov dword [esp], esi
mov ecx, ebp
mov edx, 0x5a
add eax, esi
add esi, 1
mov dword [esp + 4], eax
mov eax, ebx
call fcn.6659fdb0
cmp esi, edi
jne 0x66614d30
mov ebp, dword [esp + 0x134]
mov ebx, edi
mov eax, dword [esp + 0x58]
test eax, eax
setne byte [esp + 0x88]
cmp dword [esp + 0x68], ebx
jle 0x66615e91
mov dword [esp + 0x134], ebp
jmp 0x66614da6
mov eax, dword [esi]
test byte [eax + 5], 8
je 0x66614d99
cmp byte [esp + 0x88], 0
je 0x66614d99
mov eax, dword [esp + 0x58]
mov byte [eax + ebx], 0x41
add ebx, 1
cmp dword [esp + 0x68], ebx
je 0x66615e8a
mov eax, dword [esp + 0x74]
mov ebp, dword [esp + 0x28]
mov ecx, dword [esp + 0x134]
mov eax, dword [eax + 0x30]
mov edi, ebp
add edi, ebx
mov esi, dword [eax + ebx*4]
mov eax, dword [esp + 0x10]
mov dword [esp + 8], edi
mov dword [esp], ebx
mov dword [esp + 4], eax
mov eax, dword [esp + 0x30]
mov edx, esi
call fcn.66610580
mov ecx, eax
cmp edi, eax
je 0x66614e20
cmp dword [esp + 0x80], 1
jne 0x66615e63
mov edi, ebp
test ebp, ebp
je 0x66615e81
mov ebp, dword [esp + 0x30]
movzx eax, byte [ebp + 0x13]
cmp al, 7
ja 0x66615e81
lea edx, [eax + 1]
mov dword [esp + 0x28], ecx
mov byte [ebp + 0x13], dl
mov dword [ebp + eax*4 + 0x94], edi
lea esi, [esi]
nop
movzx eax, word [esi + 0xc]
test al, 1
jne 0x66614d7f
test ah, 1
jne 0x66614d99
mov eax, dword [esi]
mov edi, dword [eax + 0x10]
test byte [esi + 0xb], 8
je 0x6661626c
mov eax, dword [esp + 0x58]
test eax, eax
je 0x66614d99
movzx esi, byte [eax + ebx]
mov eax, edi
call fcn.665833a0
cmp al, 0x40
jle 0x66616ccf
mov edx, esi
cmp dl, 0x40
jle 0x66616ccf
cmp al, 0x42
jg 0x66614e7b
cmp dl, 0x42
jle 0x66614d91
mov eax, dword [esp + 0x58]
movsx edx, byte [eax + ebx]
cmp dl, 0x41
je 0x66614d91
mov eax, edi
call fcn.66588b50
test eax, eax
je 0x66614d99
jmp 0x66614d91
movzx esi, word [eax + 0x28]
mov eax, dword [esp + 0x30]
lea edx, [esi + 2]
call fcn.66588c30
mov ebx, dword [ebp + 0xc]
mov dword [esp + 0x60], eax
mov dword [esp + 0x40], ebx
test esi, esi
je 0x66614f35
lea edi, [eax + 2]
mov dword [esp + 0x28], esi
xor ebx, ebx
mov esi, dword [esp + 0x24]
mov dword [esp + 0x3c], edi
mov edi, dword [esp + 0x30]
jmp 0x66614efe
mov eax, dword [esp + 0x10]
mov dword [esp + 8], ecx
mov ecx, ebp
mov dword [esp], ebx
mov dword [esp + 4], eax
mov eax, edi
call fcn.66610580
mov eax, dword [ebp + 0x10]
mov dword [esp + 0x40], eax
add ebx, 1
cmp dword [esp + 0x28], ebx
je 0x66614f31
mov eax, dword [esp + 0x3c]
lea ecx, [eax + ebx]
mov eax, dword [esi + 0x30]
mov edx, dword [eax + ebx*4]
test edx, edx
je 0x66614ef5
test byte [edx + 0xc], 1
jne 0x66614ed6
mov eax, dword [edx]
add ebx, 1
mov edx, dword [eax + 0x10]
mov dword [esp], 1
mov eax, edi
call fcn.66613be0
cmp dword [esp + 0x28], ebx
jne 0x66614efe
mov esi, dword [esp + 0x28]
mov edi, dword [esp + 0x24]
mov ebx, dword [esp + 0x60]
mov edx, 0x45
mov eax, dword [esp + 0x20]
mov ecx, dword [edi + 0x18]
mov dword [esp], ebx
mov dword [esp + 4], 0
call fcn.6659fdb0
lea eax, [ebx + 1]
mov ecx, esi
mov edx, 0x45
mov dword [esp], eax
mov eax, dword [esp + 0x20]
mov dword [esp + 4], 0
call fcn.6659fdb0
cmp byte [edi + 0x1c], 1
mov ecx, dword [esp + 0x48]
mov edx, 9
sbb eax, eax
or eax, 0xfffffff9
mov dword [esp + 0xc], eax
mov eax, dword [edi + 0x20]
mov dword [esp + 4], ebx
mov ebx, dword [esp + 0x40]
mov dword [esp + 8], eax
mov eax, dword [esp + 0x20]
mov dword [esp], ebx
call fcn.665a0890
mov eax, dword [esp + 0x38]
mov byte [edi + 0x1c], 0
cmp byte [eax + 0x53], 0
je 0x66614fbd
mov dword [edi + 0x20], 0
mov eax, dword [esp + 0x48]
mov edi, dword [ebp + 0x40]
lea ebx, [esi - 1]
mov dword [ebp + 0x38], eax
mov eax, dword [esp + 0x2c]
cmp byte [eax + 0x2e], 1
sbb eax, eax
and eax, 0xffffff8d
sub eax, 0x50
mov byte [ebp + 0x35], al
mov eax, dword [esp + 0x20]
mov eax, dword [eax + 0x6c]
mov dword [ebp + 0x3c], eax
test esi, esi
je 0x6661519d
mov eax, dword [esp + 0x60]
mov dword [esp + 0x134], ebp
mov ebp, edi
mov edi, dword [esp + 0x24]
add eax, 2
mov dword [esp + 0x28], eax
jmp 0x66615165
sub ebp, 1
cmp ebx, 0xf
jle 0x66615dde
mov eax, dword [esi]
mov edx, dword [eax + 0xc]
movzx eax, byte [edx]
cmp al, 0xaf
jne 0x6661502c
movzx eax, byte [edx + 2]
cmp al, 0xb0
je 0x66615e06
cmp al, 0x89
je 0x66615df0
mov eax, dword [esp + 0x38]
cmp byte [eax + 0x53], 0
jne 0x666150ae
mov ecx, dword [esp + 0x134]
lea eax, [ebp + ebp*4]
shl eax, 2
add eax, dword [ecx + 0x44]
mov edx, dword [eax + 4]
test edx, edx
jns 0x6661506c
mov eax, dword [esp + 0x20]
mov eax, dword [eax + 0x6c]
mov dword [esp + 0x10], eax
lea edx, [eax - 1]
mov eax, dword [esp + 0x20]
mov ecx, dword [eax]
mov eax, 0x666b004c
cmp byte [ecx + 0x53], 0
jne 0x6661508a
mov eax, dword [esp + 0x20]
lea edx, [edx + edx*4]
mov eax, dword [eax + 0x68]
lea eax, [eax + edx*4]
movzx edx, byte [eax]
mov ecx, dword [eax + 4]
mov dword [esp + 0x10], edx
mov edx, dword [eax + 0xc]
mov dword [esp + 4], edx
mov eax, dword [eax + 8]
mov edx, dword [esp + 0x10]
mov dword [esp], eax
mov eax, dword [esp + 0x20]
call fcn.6659fdb0
mov dword [esp], 0
mov eax, dword [esp + 0x30]
xor ecx, ecx
mov edx, 0x35
call fcn.665bb3d0
mov dword [esp + 0x10], eax
mov ecx, eax
test eax, eax
je 0x66615160
mov eax, dword [esi]
mov edx, 0xaf
mov esi, ecx
mov eax, dword [eax + 0xc]
mov dword [ecx + 0xc], eax
mov eax, dword [esp + 0x38]
lea ecx, [esp + 0xdc]
mov dword [esp], 0
mov dword [esp + 0xdc], 0
mov dword [esp + 0xe0], 0
call fcn.6658c010
mov dword [esi + 0x10], eax
test eax, eax
je 0x66615146
mov ecx, dword [esp + 0x28]
lea edx, [ecx + ebx]
mov ecx, dword [esp + 0x134]
mov dword [eax + 0x1c], edx
mov dword [esp + 0xc], 0x10
mov eax, dword [ecx + 0x18]
mov dword [esp + 4], esi
mov dword [esp + 8], eax
mov eax, dword [esp + 0x30]
mov dword [esp], eax
call fcn.66607b00
mov eax, dword [esp + 0x10]
mov dword [eax + 0xc], 0
mov edx, eax
mov eax, dword [esp + 0x38]
call fcn.665978b0
lea esi, [esi]
sub ebx, 1
jb 0x66615196
mov eax, dword [edi + 0x30]
mov esi, dword [eax + ebx*4]
test byte [esi + 0xc], 1
jne 0x66615010
cmp ebx, 0xf
jg 0x66615160
movzx eax, word [edi + 0x1e]
bt eax, ebx
jae 0x66615160
mov eax, dword [esp + 0x134]
mov edx, esi
call fcn.665837f0
sub ebx, 1
jae 0x66615165
mov ebp, dword [esp + 0x134]
mov dword [esp + 0x40], 0
mov dword [esp + 0x10], 2
mov eax, dword [esp + 0x44]
lea eax, [eax + eax*8]
mov dword [esp + 0x28], eax
mov eax, dword [esp + 0x2c]
mov esi, dword [eax + 0x5c]
mov ebx, dword [eax + 0x64]
test esi, esi
jle 0x666153ce
lea esi, [esi]
mov dword [esp + 0x24], 0
jmp 0x666152e5
test byte [edi + 4], 1
je 0x666152d9
cmp dword [esp + 0x10], 1
je 0x66615428
cmp dword [esp + 0x10], 3
jne 0x6661537a
and ch, 2
je 0x66615400
mov eax, dword [ebp + 0x2c]
test eax, eax
je 0x66615400
mov ecx, eax
and eax, 1
shr ecx, 1
cmp eax, 1
sbb eax, eax
mov dword [esp + 0x38], ecx
mov ecx, dword [esp + 0x20]
and eax, 0xfffffffe
add eax, 0x14
mov dword [esp + 0x3c], eax
mov eax, dword [ecx + 0x6c]
cmp eax, dword [ecx + 0x70]
jge 0x666154a0
mov edx, dword [esp + 0x20]
lea ecx, [eax + 1]
mov dword [edx + 0x6c], ecx
mov edx, dword [edx + 0x68]
lea ecx, [eax + eax*4]
lea ecx, [edx + ecx*4]
movzx edx, byte [esp + 0x3c]
mov dword [ecx + 8], 0
mov byte [ecx], dl
xor edx, edx
mov word [ecx + 2], dx
mov edx, dword [esp + 0x38]
mov dword [ecx + 0xc], 0
mov dword [ecx + 4], edx
mov dword [ecx + 0x10], 0
mov byte [ecx + 1], 0
mov dword [esp + 0x38], eax
mov eax, dword [esp + 0x34]
mov dword [esp + 0xc], 0x10
mov dword [esp + 8], eax
mov eax, dword [esp + 0x30]
mov dword [esp + 4], edi
mov dword [esp], eax
call fcn.66607b00
mov eax, dword [esp + 0x38]
test eax, eax
je 0x666152d4
mov edi, dword [esp + 0x20]
mov edx, dword [edi + 0x6c]
mov edi, dword [edi]
lea ecx, [edx - 1]
cmovs eax, ecx
cmp byte [edi + 0x53], 0
mov ecx, 0x666b004c
jne 0x666152d1
mov edi, dword [esp + 0x20]
lea ecx, [eax + eax*4]
mov eax, dword [edi + 0x68]
lea ecx, [eax + ecx*4]
mov dword [ecx + 8], edx
or word [ebx + 0xa], 4
add ebx, 0x30
sub esi, 1
je 0x666153a8
movzx ecx, word [ebx + 0xa]
test cl, 6
jne 0x666152d9
mov eax, dword [ebx + 0x28]
mov edx, dword [ebx + 0x2c]
and eax, dword [ebp + 0x50]
and edx, dword [ebp + 0x54]
or edx, eax
jne 0x666153f0
mov eax, dword [esp + 0x1c]
mov edx, dword [esp + 0x28]
mov edi, dword [ebx]
test byte [eax + edx*8 + 0x2c], 8
jne 0x666151e0
cmp dword [esp + 0x10], 1
jne 0x666151f5
mov eax, dword [ebp + 4]
lea ecx, [esp + 0xdc]
xor edx, edx
mov dword [esp + 0x38], eax
xor eax, eax
mov dword [ecx + eax], edx
add eax, 4
cmp eax, 0x18
jb 0x66615334
mov dword [esp + 0xe0], 0x66588ca0
mov eax, dword [esp + 0x38]
mov dword [esp + 0xc4], eax
mov eax, dword [esp + 0x40]
mov dword [esp + 0xc0], eax
lea eax, [esp + 0xc0]
mov dword [esp + 0xf4], eax
test edi, edi
jne 0x66615474
movzx ecx, word [ebx + 0xa]
test ch, 0x10
je 0x66615200
mov edi, dword [esp + 0x24]
mov eax, 3
test edi, edi
cmovne eax, edi
add ebx, 0x30
mov dword [esp + 0x24], eax
sub esi, 1
jne 0x666152e5
lea esi, [esi]
mov eax, dword [esp + 0x24]
test eax, eax
je 0x666154c5
mov eax, dword [esp + 0x24]
mov dword [esp + 0x10], eax
mov eax, dword [esp + 0x2c]
mov esi, dword [eax + 0x5c]
mov ebx, dword [eax + 0x64]
test esi, esi
jg 0x666151d0
mov eax, dword [ebp]
test eax, eax
jne 0x66615657
mov eax, dword [ebp + 0x50]
mov edx, dword [ebp + 0x54]
add esp, 0x11c
pop ebx
pop esi
pop edi
pop ebp
ret
mov eax, dword [esp + 0x2c]
or byte [eax + 0x30], 2
jmp 0x666152d9
mov eax, dword [esp + 0x34]
mov dword [esp + 0xc], 0x10
mov dword [esp + 4], edi
mov dword [esp + 8], eax
mov eax, dword [esp + 0x30]
mov dword [esp], eax
call fcn.66607b00
jmp 0x666152d4
mov eax, dword [ebp + 4]
lea ecx, [esp + 0xdc]
xor edx, edx
mov dword [esp + 0x38], eax
xor eax, eax
mov dword [ecx + eax], edx
add eax, 4
cmp eax, 0x18
jb 0x6661543a
mov dword [esp + 0xe0], 0x66588ca0
mov eax, dword [esp + 0x38]
mov dword [esp + 0xc4], eax
mov eax, dword [esp + 0x40]
mov dword [esp + 0xc0], eax
lea eax, [esp + 0xc0]
mov dword [esp + 0xf4], eax
mov edx, edi
mov eax, ecx
call fcn.665a6500
cmp word [esp + 0xf0], 0
je 0x66615376
mov dword [esp + 0x24], 2
jmp 0x666152d9
mov ecx, dword [esp + 0x38]
mov edx, dword [esp + 0x3c]
mov dword [esp + 4], 0
mov dword [esp], 0
mov eax, dword [esp + 0x20]
call fcn.6659fd40
jmp 0x6661527e
mov eax, dword [esp + 0x2c]
mov esi, dword [eax + 0x5c]
mov ebx, dword [eax + 0x64]
test esi, esi
jle 0x666153ce
mov eax, dword [esp + 0x44]
mov edx, dword [esp + 0x48]
lea edi, [eax + eax*8]
lea esi, [esi]
test byte [ebx + 0xa], 6
jne 0x66615640
movzx eax, word [ebx + 0xc]
test al, 0x82
je 0x66615640
test ah, 8
je 0x66615640
cmp dword [ebx + 0x14], edx
jne 0x66615640
mov eax, dword [esp + 0x1c]
test byte [eax + edi*8 + 0x2c], 8
jne 0x66615640
mov eax, dword [ebx]
mov ecx, dword [ebx + 0x18]
mov dword [esp + 0xc], 0
mov dword [esp + 8], 0x83
mov dword [esp + 0x24], eax
mov eax, dword [esp + 0x4c]
mov dword [esp + 0x10], edx
mov dword [esp], eax
mov eax, dword [esp + 0x50]
mov dword [esp + 4], eax
mov eax, dword [esp + 0x54]
call fcn.665c1310
mov edx, dword [esp + 0x10]
test eax, eax
mov ecx, eax
je 0x66615640
test byte [eax + 0xa], 4
jne 0x66615640
mov eax, dword [eax]
test byte [ecx + 0xc], 1
je 0x6661557e
test byte [eax + 5], 8
jne 0x66615d25
mov ecx, dword [eax]
mov dword [esp + 0x10], edx
mov dword [esp + 0xdc], ecx
mov ecx, dword [eax + 4]
mov dword [esp + 0xe0], ecx
mov ecx, dword [eax + 8]
mov dword [esp + 0xe4], ecx
mov ecx, dword [eax + 0xc]
mov dword [esp + 0xe8], ecx
mov ecx, dword [eax + 0x10]
mov dword [esp + 0xec], ecx
mov ecx, dword [eax + 0x14]
mov dword [esp + 0xf0], ecx
mov ecx, dword [eax + 0x18]
mov dword [esp + 0xf4], ecx
mov ecx, dword [eax + 0x1c]
mov dword [esp + 0xf8], ecx
mov ecx, dword [eax + 0x20]
mov dword [esp + 0xfc], ecx
mov ecx, dword [eax + 0x24]
mov dword [esp + 0x100], ecx
mov ecx, dword [eax + 0x28]
mov dword [esp + 0x104], ecx
mov ecx, dword [eax + 0x2c]
mov dword [esp + 0x108], ecx
mov eax, dword [eax + 0x30]
mov dword [esp + 0x10c], eax
mov eax, dword [esp + 0x24]
mov eax, dword [eax + 0xc]
mov dword [esp + 0xc], 0x10
mov dword [esp + 0xe8], eax
mov eax, dword [esp + 0x34]
mov dword [esp + 8], eax
lea eax, [esp + 0xdc]
mov dword [esp + 4], eax
mov eax, dword [esp + 0x30]
mov dword [esp], eax
call fcn.66607b00
mov edx, dword [esp + 0x10]
lea esi, [esi]
add ebx, 0x30
sub esi, 1
jne 0x666154e8
mov eax, dword [ebp]
test eax, eax
je 0x666153d9
mov esi, dword [esp + 0x20]
mov ecx, 1
mov edx, dword [esi + 0x6c]
mov dword [ebp + 0x1c], edx
mov edx, 0x45
mov dword [esp], eax
mov eax, esi
mov dword [esp + 4], 0
call fcn.6659fdb0
mov eax, dword [esp + 0x2c]
mov edx, dword [ebp + 0x54]
mov edi, dword [eax + 0x5c]
mov ebx, dword [eax + 0x64]
mov eax, dword [ebp + 0x50]
test edi, edi
jle 0x666153df
mov dword [esp + 0x134], ebp
mov ebp, dword [esp + 0x2c]
xor esi, esi
lea esi, [esi]
test byte [ebx + 0xa], 6
jne 0x666156f7
mov ecx, dword [ebx + 0x28]
mov edi, dword [ebx + 0x2c]
and ecx, eax
and edi, edx
or edi, ecx
jne 0x666156f7
mov eax, dword [esp + 0x34]
mov dword [esp + 0xc], 0x10
mov dword [esp + 8], eax
mov eax, dword [ebx]
mov dword [esp + 4], eax
mov eax, dword [esp + 0x30]
mov dword [esp], eax
call fcn.66607b00
mov eax, dword [esp + 0x134]
or word [ebx + 0xa], 4
mov edi, dword [esp + 0x134]
mov eax, dword [eax + 0x50]
mov edx, dword [edi + 0x54]
add esi, 1
add ebx, 0x30
cmp dword [ebp + 0x5c], esi
jg 0x666156a8
add esp, 0x11c
pop ebx
pop esi
pop edi
pop ebp
ret
mov eax, dword [ecx + 0x20]
mov ebx, dword [ecx + 0x24]
mov edx, 0xd
mov dword [esp], 0
mov esi, dword [esp + 0x20]
mov dword [esp + 4], eax
mov ecx, ebx
mov eax, esi
call fcn.6659fdb0
mov eax, dword [esi + 0x6c]
cmp eax, dword [esi + 0x70]
jge 0x66616335
mov esi, dword [esp + 0x20]
lea edx, [eax + 1]
mov ecx, dword [esi + 0x68]
mov dword [esi + 0x6c], edx
lea edx, [eax + eax*4]
lea edx, [ecx + edx*4]
mov dword [edx + 4], ebx
mov dword [edx + 8], edi
mov dword [edx + 0xc], 0
mov dword [edx + 0x10], 0
mov dword [edx], 0xe
mov dword [ebp + 0x3c], eax
mov byte [ebp + 0x35], 0xb
mov dword [esp + 0x40], 0
mov dword [esp + 0x10], 2
jmp 0x666151ad
mov eax, dword [ecx + 0x2c]
mov edx, 0x45
mov dword [esp + 0x28], eax
add eax, 1
mov dword [ecx + 0x2c], eax
xor ecx, ecx
mov dword [ebp], eax
mov dword [esp], eax
mov eax, dword [esp + 0x20]
mov dword [esp + 4], 0
call fcn.6659fdb0
jmp 0x66614a2c
and ch, 0x20
je 0x66616311
mov edi, dword [esp + 0x30]
mov eax, dword [edi + 0x28]
mov dword [esp + 0x7c], eax
add eax, 1
mov dword [edi + 0x28], eax
mov eax, edi
mov edi, dword [edi + 0x2c]
mov ebx, dword [eax + 0x38]
add edi, 1
mov dword [esp + 0x90], ebx
sub ebx, 1
mov dword [eax + 0x2c], edi
mov dword [eax + 0x38], ebx
mov eax, dword [esp + 0x44]
mov dword [esp + 0x94], ebx
mov ebx, dword [esp + 0x1c]
lea eax, [eax + eax*8]
mov dword [esp + 0x80], edi
mov eax, dword [ebx + eax*8 + 0x18]
mov dword [esp + 0x3c], eax
mov eax, dword [esp + 0x24]
mov eax, dword [eax + 0x30]
mov eax, dword [eax]
mov dword [esp + 0x84], eax
mov eax, dword [eax + 0x18]
mov byte [ebp + 0x35], 0x41
mov dword [esp + 0x10], eax
mov eax, dword [esp + 0x2c]
mov dword [ebp + 0x38], edi
movzx eax, byte [eax + 0x2c]
cmp al, 1
ja 0x666165df
mov eax, dword [esp + 0x2c]
mov eax, dword [eax + 4]
mov dword [esp + 0x24], eax
mov eax, dword [esp + 0x2c]
test byte [eax + 0x28], 0x10
jne 0x66616fba
mov eax, dword [esp + 0x3c]
test byte [eax + 0x24], 0x80
je 0x6661751b
mov eax, dword [esp + 0x3c]
mov ebx, dword [eax + 8]
test ebx, ebx
jne 0x6661587b
jmp 0x666176e6
mov ebx, dword [ebx + 0x14]
test ebx, ebx
je 0x66679f61
movzx eax, byte [ebx + 0x38]
and eax, 3
cmp al, 2
jne 0x66615870
mov esi, dword [esp + 0x30]
mov edx, 0x65
mov ecx, dword [esi + 0x28]
lea eax, [ecx + 1]
mov dword [esp + 0x68], ecx
mov dword [esi + 0x28], eax
mov dword [esp + 4], 0
movzx eax, word [ebx + 0x32]
mov dword [esp], eax
mov eax, dword [esp + 0x20]
call fcn.6659fdb0
mov edx, ebx
mov eax, esi
call fcn.665b4220
mov eax, dword [esp + 0x30]
mov esi, dword [eax + 0x2c]
mov dword [esp + 0x28], esi
add esi, 1
mov dword [esp + 0x64], esi
mov dword [eax + 0x2c], esi
mov eax, dword [esp + 0x20]
mov esi, dword [eax + 0x6c]
mov dword [esp + 0x88], esi
cmp esi, dword [eax + 0x70]
jge 0x66617618
mov esi, dword [esp + 0x88]
mov edi, dword [esp + 0x20]
lea eax, [esi + 1]
mov edx, dword [edi + 0x68]
mov dword [edi + 0x6c], eax
lea eax, [esi + esi*4]
mov esi, dword [esp + 0x80]
lea eax, [edx + eax*4]
mov dword [eax + 8], esi
mov dword [eax + 0xc], 0
mov dword [eax + 0x10], 0
mov dword [eax], 0x45
mov dword [eax + 4], 0
mov eax, dword [esp + 0x2c]
xor ebx, ebx
xor esi, esi
mov edi, dword [esp + 0x2c]
cmp dword [eax + 0x5c], 1
jle 0x66616f07
lea eax, [ebx + ebx*2]
shl eax, 4
add eax, dword [edi + 0x64]
cmp eax, dword [esp + 0x84]
je 0x66615987
test byte [eax + 0xa], 6
jne 0x66615987
test word [eax + 0xc], 0x1fff
je 0x66615987
mov edx, dword [eax]
test edx, edx
je 0x66615978
mov dword [esp], 0
mov eax, dword [esp + 0x38]
xor ecx, ecx
call fcn.665a7430
mov edx, eax
mov eax, dword [esp + 0x30]
mov ecx, edx
mov edx, esi
call fcn.665bb800
mov esi, eax
add ebx, 1
cmp dword [edi + 0x5c], ebx
jg 0x6661593e
test esi, esi
je 0x66616f07
mov dword [esp], esi
mov eax, dword [esp + 0x30]
xor ecx, ecx
mov edx, 0x1002c
call fcn.665bb3d0
mov dword [esp + 0x70], eax
mov ebx, dword [esp + 0x30]
mov dword [esp + 8], str.MULTI_INDEX_OR
mov dword [esp + 4], 1
mov dword [esp], ebx
call fcn.665bd1e0
mov eax, dword [esp + 0x10]
mov esi, dword [eax + 0xc]
test esi, esi
jle 0x66617454
mov dword [esp + 0x134], ebp
mov esi, dword [esp + 0x20]
xor edi, edi
mov ebp, ebx
mov dword [esp + 0x6c], 0
mov dword [esp + 0x60], 0
jmp 0x66615abf
mov eax, dword [esp + 0x94]
mov dword [esp + 4], 0
mov edx, 0xc
mov ecx, dword [esp + 0x80]
mov dword [esp], eax
mov eax, esi
call fcn.6659fdb0
mov ebx, dword [esp + 0x74]
mov eax, 1
movzx edx, byte [ebx + 0x30]
test dl, 2
cmove eax, dword [esp + 0x6c]
mov dword [esp + 0x6c], eax
mov eax, dword [ebx + 0x338]
test byte [eax + 0x25], 2
je 0x66615a60
mov ecx, dword [esp + 0x78]
mov eax, dword [eax + 0x20]
test ecx, ecx
je 0x66616b7e
cmp dword [esp + 0x60], eax
je 0x66616b7e
mov dword [esp + 0x60], 0
and edx, 1
je 0x66615a75
mov eax, dword [esp + 0x2c]
or byte [eax + 0x30], 1
mov eax, dword [esp + 0x74]
call fcn.665a22f0
mov eax, dword [ebp + 0xd4]
test eax, eax
je 0x66615aac
mov edx, dword [ebp + 8]
jns 0x66615a93
mov eax, dword [edx + 0x6c]
sub eax, 1
mov ebx, dword [edx]
mov ecx, 0x666b004c
cmp byte [ebx + 0x53], 0
jne 0x66615aa9
lea ecx, [eax + eax*4]
mov eax, dword [edx + 0x68]
lea ecx, [eax + ecx*4]
mov eax, dword [ecx + 8]
mov dword [ebp + 0xd4], eax
mov eax, dword [esp + 0x10]
cmp dword [eax + 0xc], edi
jle 0x66616bac
mov ebx, dword [esp + 0x10]
lea eax, [edi + edi*2]
mov dword [esp + 0x28], edi
shl eax, 4
mov dword [esp + 0x78], edi
add edi, 1
add eax, dword [ebx + 0x14]
mov ebx, dword [esp + 0x48]
cmp dword [eax + 0x14], ebx
je 0x66615ae6
test byte [eax + 0xd], 4
je 0x66615ab2
mov ebx, dword [eax]
mov eax, dword [esp + 0x70]
test eax, eax
je 0x66615af5
mov dword [eax + 0xc], ebx
mov ebx, eax
mov dword [esp + 0xc], edi
mov dword [esp + 8], str.INDEX__d
mov dword [esp + 4], 1
mov dword [esp], ebp
call fcn.665bd1e0
mov eax, dword [esp + 0x7c]
mov edx, dword [esp + 0x24]
mov ecx, ebx
mov dword [esp + 8], 0x20
mov dword [esp + 0xc], eax
mov eax, ebp
mov dword [esp + 4], 0
mov dword [esp], 0
call fcn.66608ae0
mov dword [esp + 0x74], eax
test eax, eax
je 0x66615ab2
mov eax, dword [ebp + 0x74]
test eax, eax
cmove eax, ebp
cmp byte [eax + 0xc7], 2
jne 0x66615b81
mov eax, dword [esp + 0x74]
mov edx, dword [esp + 0x24]
movzx ecx, byte [eax + 0x324]
mov dword [esp + 4], 0
mov eax, dword [eax + 0x338]
mov dword [esp], eax
mov eax, ebp
call fcn.665be8a0
mov eax, dword [esp + 0x2c]
test byte [eax + 0x28], 0x10
jne 0x666159fd
mov eax, dword [esp + 0x10]
mov ebx, dword [esp + 0x28]
mov eax, dword [eax + 0xc]
mov dword [esp + 0x40], eax
sub eax, 1
cmp eax, ebx
mov eax, 0xffffffff
cmovne eax, ebx
mov dword [esp + 0x28], eax
mov ebx, eax
mov eax, dword [esp + 0x3c]
test byte [eax + 0x24], 0x80
je 0x66616ce4
mov eax, dword [esp + 0x3c]
mov ebx, dword [eax + 8]
test ebx, ebx
jne 0x66615bdb
jmp 0x666176f0
mov ebx, dword [ebx + 0x14]
test ebx, ebx
je 0x66679f72
movzx eax, byte [ebx + 0x38]
and eax, 3
cmp al, 2
jne 0x66615bd0
movzx eax, word [ebx + 0x32]
mov edx, eax
mov dword [esp + 0x40], eax
mov eax, ebp
call fcn.66588c30
mov dword [esp + 0x58], eax
mov edx, eax
mov eax, dword [esp + 0x40]
lea ecx, [eax + eax]
mov dword [esp + 0x8c], ecx
xor ecx, ecx
test eax, eax
je 0x66615c63
mov dword [esp + 0x98], edi
mov edi, ecx
mov dword [esp + 0x9c], ebp
mov ebp, esi
mov esi, ebx
mov ebx, edx
mov dword [esp + 4], ebx
mov edx, dword [esi + 4]
mov eax, ebp
add ebx, 1
mov ecx, dword [esp + 0x48]
movsx edx, word [edx + edi]
add edi, 2
mov dword [esp], edx
mov edx, dword [esp + 0x3c]
call fcn.66613730
cmp dword [esp + 0x8c], edi
jne 0x66615c27
mov esi, ebp
mov edi, dword [esp + 0x98]
mov ebp, dword [esp + 0x9c]
mov ebx, dword [esp + 0x28]
test ebx, ebx
jne 0x66617550
mov ebx, dword [esp + 0x64]
mov eax, dword [esp + 0x40]
mov edx, 0x5c
mov ecx, dword [esp + 0x58]
mov dword [esp + 4], ebx
mov dword [esp], eax
mov eax, esi
call fcn.6659fdb0
mov eax, dword [esp + 0x40]
mov ecx, dword [esp + 0x68]
mov dword [esp], ebx
mov edx, 0x85
xor ebx, ebx
mov dword [esp + 8], eax
mov eax, dword [esp + 0x58]
mov dword [esp + 4], eax
mov eax, esi
call fcn.665a0980
cmp dword [esp + 0x40], 1
je 0x66617646
mov eax, dword [esp + 0x40]
cmp eax, dword [ebp + 0x1c]
jle 0x66615cd1
mov dword [ebp + 0x1c], eax
mov eax, dword [esp + 0x58]
mov dword [ebp + 0x20], eax
mov eax, dword [esp + 0x94]
mov dword [esp + 4], 0
mov edx, 0xc
mov ecx, dword [esp + 0x80]
mov dword [esp], eax
mov eax, esi
call fcn.6659fdb0
test ebx, ebx
je 0x66615a22
mov edx, dword [esi + 0x6c]
mov ecx, dword [esi]
lea eax, [edx - 1]
cmovs ebx, eax
cmp byte [ecx + 0x53], 0
mov eax, 0x666b004c
jne 0x66615d1d
mov eax, dword [esi + 0x68]
lea ecx, [ebx + ebx*4]
lea eax, [eax + ecx*4]
mov dword [eax + 8], edx
jmp 0x66615a22
mov ecx, dword [eax + 0x14]
mov ecx, dword [ecx + 0x1c]
cmp dword [ecx], 1
jle 0x6661557e
jmp 0x66615640
mov eax, dword [esp + 0x24]
mov edi, dword [esp + 0x30]
mov ecx, ebp
mov eax, dword [eax + 0x30]
mov esi, dword [edi + 0x2c]
mov ebx, dword [eax]
mov eax, dword [esp + 0x10]
mov dword [esp + 0x24], esi
add esi, 1
mov dword [edi + 0x2c], esi
mov dword [esp + 4], eax
mov edx, ebx
mov eax, edi
mov dword [esp + 8], esi
mov dword [esp], 0
call fcn.66610580
mov edx, eax
cmp esi, eax
je 0x66615d90
test esi, esi
je 0x66615d90
movzx eax, byte [edi + 0x13]
cmp al, 7
ja 0x66615d90
lea ecx, [eax + 1]
mov byte [edi + 0x13], cl
mov dword [edi + eax*4 + 0x94], esi
mov dword [esp + 4], edx
mov eax, dword [ebp + 0x10]
mov edx, 0x1f
mov ecx, dword [esp + 0x48]
mov dword [esp], eax
mov eax, dword [esp + 0x20]
call fcn.6659fdb0
mov byte [ebp + 0x35], 0xb0
mov eax, dword [ebx + 0x28]
mov edx, dword [ebx + 0x2c]
and eax, dword [ebp + 0x50]
and edx, dword [ebp + 0x54]
or edx, eax
jne 0x6661519d
or word [ebx + 0xa], 4
mov dword [esp + 0x40], 0
mov dword [esp + 0x10], 2
jmp 0x666151ad
movzx eax, word [edi + 0x1e]
bt eax, ebx
jae 0x6661501c
jmp 0x66615183
mov eax, dword [edx + 0x14]
mov eax, dword [eax + 0x1c]
mov eax, dword [eax]
cmp eax, 1
jne 0x66615160
jmp 0x6661503c
mov eax, dword [edx + 0x14]
mov eax, dword [eax]
jmp 0x66615df8
test cl, 0x20
je 0x6661653e
mov eax, dword [esp + 0x24]
mov eax, dword [eax + 0x30]
mov ebx, dword [eax]
mov eax, 1
and ecx, 0x10
jne 0x6661637d
mov eax, dword [esp + 0x10]
test eax, eax
je 0x6661656f
mov edx, 0x21
mov eax, dword [esp + 0x28]
mov ecx, dword [esp + 0x48]
mov dword [esp + 4], 0
mov dword [esp], eax
mov eax, dword [esp + 0x20]
call fcn.6659fdb0
mov dword [esp + 0x40], ebx
jmp 0x6661642e
mov dword [esp], edi
mov eax, dword [esp + 0x70]
mov edx, 0x4e
mov dword [esp + 4], 0
call fcn.6659fdb0
jmp 0x66614e20
mov dword [esp + 0x28], ecx
jmp 0x66614e20
mov ebp, dword [esp + 0x134]
cmp word [esp + 0x8c], 0
je 0x66615eaa
cmp byte [esp + 0x88], 0
jne 0x666166c3
mov dword [esp + 0x88], 0
mov eax, dword [esp + 0x6c]
test eax, eax
je 0x666162aa
mov edi, dword [ebp + 0x28]
mov esi, dword [esp + 0x7c]
test esi, esi
setne bl
cmp word [esp + 0x94], 0
setne al
test esi, esi
je 0x66616d2d
xor edx, edx
test byte [esi + 0xc], 0x28
mov esi, dword [esp + 0x78]
setne dl
mov dword [esp + 0x70], edx
test esi, esi
je 0x66616f71
or ebx, eax
movzx eax, bl
mov dword [esp + 0x80], eax
xor eax, eax
test byte [esi + 0xc], 0x28
setne al
mov dword [esp + 0x74], eax
mov eax, dword [esp + 0x7c]
movzx esi, word [esp + 0x90]
mov eax, dword [eax]
mov ebx, dword [eax + 0x10]
mov eax, dword [esp + 0x3c]
mov dword [esp], esi
add eax, dword [esp + 0x28]
mov ecx, eax
mov dword [esp + 0x84], eax
mov eax, dword [esp + 0x30]
mov edx, ebx
call fcn.66613be0
mov eax, dword [esp + 0x7c]
movzx ecx, word [eax + 0xa]
test ch, 1
je 0x66615f92
mov eax, dword [ebp + 0x2c]
mov dword [esp + 0x68], eax
mov eax, dword [esp + 0x20]
mov edx, dword [eax]
mov eax, 0x666b004c
cmp byte [edx + 0x53], 0
jne 0x66615f7d
mov eax, dword [esp + 0x20]
mov eax, dword [eax + 0x6c]
lea edx, [eax + eax*4 - 5]
mov eax, dword [esp + 0x20]
mov eax, dword [eax + 0x68]
lea eax, [eax + edx*4]
mov edx, dword [esp + 0x68]
shr edx, 1
mov dword [eax + 0xc], edx
movzx edx, word [esp + 0x68]
and edx, 1
mov word [eax + 2], dx
and ecx, 0x80
je 0x666165ab
mov eax, dword [esp + 0x58]
test eax, eax
je 0x66615fb5
add eax, dword [esp + 0x3c]
mov edx, esi
mov ecx, eax
mov eax, ebx
call fcn.66592400
movzx eax, byte [ebx]
add esi, dword [esp + 0x3c]
cmp al, 0xaf
je 0x6661657c
cmp al, 0xb0
je 0x66617294
cmp al, 0x89
je 0x6661682d
mov edx, dword [esp + 0x7c]
mov eax, ebp
call fcn.665837f0
mov dword [esp + 0x68], 0
mov ecx, esi
mov eax, dword [esp + 0x30]
mov ebx, dword [esp + 0x58]
mov edx, dword [esp + 0x28]
mov eax, dword [eax + 8]
mov dword [esp], ebx
call fcn.665a1e20
mov eax, dword [esp + 0x24]
movzx eax, word [eax + 0x2a]
test ax, ax
je 0x66616013
xor ebx, ebx
cmp eax, esi
je 0x66616070
mov ebx, dword [esp + 0x80]
mov eax, dword [esp + 0x6c]
shl ebx, 2
test eax, eax
jne 0x66616e99
mov eax, dword [esp + 0x10]
lea eax, [eax + ebx + 0x66689304]
mov ebx, dword [esp + 0x70]
movzx eax, byte [eax + ebx*2]
mov dword [esp + 0x7c], eax
mov eax, dword [esp + 0x24]
test byte [eax + 0x26], 0x10
jne 0x66616ae3
mov eax, dword [esp + 0x28]
mov ecx, dword [esp + 0x60]
mov dword [esp + 8], esi
xor ebx, ebx
mov dword [esp], edi
mov edx, dword [esp + 0x7c]
mov dword [esp + 4], eax
mov eax, dword [esp + 0x20]
call fcn.665a0980
mov eax, dword [esp + 0x78]
test eax, eax
je 0x66616ab4
mov eax, dword [eax]
movzx edx, word [esp + 0x8c]
mov ecx, dword [esp + 0x3c]
add ecx, dword [esp + 0x28]
mov esi, dword [eax + 0x10]
mov eax, dword [esp + 0x30]
mov dword [esp], edx
mov dword [esp + 0x64], edx
mov edx, esi
mov dword [esp + 0x70], ecx
call fcn.66613be0
mov eax, dword [esp + 0x78]
movzx eax, word [eax + 0xa]
mov word [esp + 0x7c], ax
test ah, 1
je 0x666160f0
mov ecx, dword [esp + 0x20]
mov eax, dword [ebp + 0x2c]
mov edx, 0x666b004c
mov ecx, dword [ecx]
cmp byte [ecx + 0x53], 0
jne 0x666160e2
mov ecx, dword [esp + 0x20]
mov edx, dword [ecx + 0x6c]
lea ecx, [edx + edx*4 - 5]
mov edx, dword [esp + 0x20]
mov edx, dword [edx + 0x68]
lea edx, [edx + ecx*4]
mov ecx, eax
and eax, 1
shr ecx, 1
mov word [edx + 2], ax
mov dword [edx + 0xc], ecx
test byte [esp + 0x7c], 0x80
je 0x66616f89
mov eax, dword [esp + 0x88]
test eax, eax
je 0x66616131
mov edx, dword [esp + 0x64]
mov ecx, eax
mov eax, esi
call fcn.66592400
mov edx, dword [esp + 0x30]
mov ecx, dword [esp + 0x88]
mov eax, dword [edx + 8]
mov edx, dword [esp + 0x70]
mov dword [esp], ecx
mov ecx, dword [esp + 0x64]
call fcn.665a1e20
mov eax, dword [esp + 0x64]
add eax, dword [esp + 0x3c]
mov dword [esp + 0x70], eax
movzx eax, byte [esi]
cmp al, 0xaf
jne 0x66616148
movzx eax, byte [esi + 2]
cmp al, 0xb0
je 0x66617322
cmp al, 0x89
je 0x66617304
mov edx, dword [esp + 0x78]
mov eax, ebp
call fcn.665837f0
mov eax, dword [esp + 0x58]
test eax, eax
je 0x66616176
mov edx, eax
mov eax, dword [esp + 0x38]
call fcn.665926e0
mov eax, dword [esp + 0x88]
test eax, eax
je 0x6661618c
mov edx, eax
mov eax, dword [esp + 0x38]
call fcn.665926e0
mov eax, dword [esp + 0x20]
mov esi, dword [esp + 0x70]
mov eax, dword [eax + 0x6c]
mov dword [ebp + 0x3c], eax
test esi, esi
je 0x66616a17
mov esi, dword [esp + 0x10]
mov ecx, dword [esp + 0x74]
add esi, esi
add ecx, esi
mov dword [esp + 0x38], ecx
mov ecx, dword [esp + 0x6c]
test ecx, ecx
jne 0x666172a5
mov eax, dword [esp + 0x38]
mov ecx, dword [esp + 0x60]
mov dword [esp], edi
movzx edx, byte [eax + 0x66689300]
mov eax, dword [esp + 0x70]
mov dword [esp + 8], eax
mov eax, dword [esp + 0x28]
mov dword [esp + 4], eax
mov eax, dword [esp + 0x20]
call fcn.665a0980
test ebx, ebx
jne 0x666169ef
mov eax, dword [esp + 0x24]
mov eax, dword [eax + 0x24]
test eax, 0x40000
jne 0x66616e0d
test al, 0x40
je 0x666168af
mov eax, dword [esp + 0x2c]
test byte [eax + 0x28], 0x20
jne 0x666168af
mov edi, 1
mov edx, dword [ebp]
test edx, edx
je 0x66617064
mov eax, dword [esp + 0x24]
mov eax, dword [eax + 0x24]
test ah, 0x10
je 0x66616a7c
mov byte [ebp + 0x35], 0xb0
mov edx, eax
mov esi, dword [esp + 0x60]
shr edx, 0x10
and edx, 1
mov dword [ebp + 0x38], esi
mov byte [ebp + 0x36], dl
test al, 0xf
jne 0x66616257
mov byte [ebp + 0x37], 1
mov dword [esp + 0x10], 1
test edi, edi
je 0x666151ad
jmp 0x6661519d
mov eax, edi
call fcn.66583070
test eax, eax
je 0x66614e44
mov eax, dword [esp + 0x28]
mov dword [esp + 4], 0
mov edx, 0x32
lea ecx, [eax + ebx]
mov eax, dword [esp + 0x134]
mov eax, dword [eax + 0xc]
mov dword [esp], eax
mov eax, dword [esp + 0x70]
call fcn.6659fdb0
jmp 0x66614e44
mov edi, dword [ebp + 0x10]
jmp 0x66615ec4
jne 0x66614bd9
movzx eax, byte [esp + 0x58]
and eax, 1
test al, al
je 0x66614bd9
movzx edx, byte [esp + 0x84]
mov edi, dword [esp + 0x78]
mov byte [esp + 0x84], 0
movzx eax, byte [esp + 0x90]
mov byte [esp + 0x64], dl
mov edx, dword [esp + 0x7c]
mov dword [esp + 0x7c], edi
movzx edi, word [esp + 0x8c]
mov dword [esp + 0x78], edx
mov word [esp + 0x90], di
mov word [esp + 0x8c], ax
jmp 0x66614bd9
test byte [esp + 0x3c], 0x20
je 0x6661674d
mov byte [ebp + 0x35], 0xb0
mov dword [esp + 0x40], 0
mov dword [esp + 0x10], 2
jmp 0x666151ad
mov dword [esp], edi
mov eax, dword [esp + 0x20]
mov ecx, ebx
mov edx, 0xe
mov dword [esp + 4], 0
call fcn.6659fd40
jmp 0x66615769
mov byte [esp + 0x84], 0
mov dword [esp + 0x78], 0
jmp 0x66614b8e
mov dword [esp + 0x7c], 0
mov eax, dword [esp + 0x3c]
xor ebx, ebx
jmp 0x66614b4c
mov esi, dword [esp + 0x24]
mov edx, dword [esi + 0x30]
mov esi, dword [esp + 0x10]
mov eax, dword [edx + eax*4]
mov dword [esp + 0x40], eax
test esi, esi
jne 0x66616554
test ebx, ebx
je 0x6661739c
mov dword [esp + 0xdc], 0x18161719
mov esi, dword [ebx]
mov edx, dword [esi + 0x10]
movzx eax, byte [edx]
cmp al, 0xaf
jne 0x666163ba
movzx eax, byte [edx + 2]
cmp al, 0xb0
je 0x66617329
cmp al, 0x89
je 0x666166e0
mov eax, dword [esp + 0x30]
lea ecx, [esp + 0xc0]
call fcn.66614800
mov edx, ebx
mov dword [esp + 0x24], eax
mov eax, ebp
call fcn.665837f0
movzx eax, byte [esi]
mov ecx, dword [esp + 0x24]
movzx edx, byte [esp + eax + 0xa6]
mov dword [esp + 4], ecx
mov eax, dword [esp + 0x20]
mov dword [esp], edi
mov ecx, dword [esp + 0x48]
call fcn.6659fdb0
mov edx, dword [esp + 0xc0]
test edx, edx
je 0x6661642e
mov esi, dword [esp + 0x30]
movzx eax, byte [esi + 0x13]
cmp al, 7
ja 0x6661642e
lea ecx, [eax + 1]
mov byte [esi + 0x13], cl
mov dword [esi + eax*4 + 0x94], edx
mov ecx, dword [esp + 0x40]
mov esi, 5
sub esi, dword [esp + 0x10]
test ecx, ecx
je 0x66616a91
mov eax, dword [esp + 0x40]
mov ebx, dword [eax]
mov eax, dword [esp + 0x30]
mov ecx, dword [eax + 0x2c]
mov edx, dword [ebx + 0x10]
add ecx, 1
mov dword [eax + 0x2c], ecx
mov dword [esp], 1
mov dword [esp + 0x24], ecx
call fcn.66613be0
mov eax, dword [ebx + 0x10]
movzx edx, byte [eax]
cmp dl, 0xaf
jne 0x66616478
movzx edx, byte [eax + 2]
cmp dl, 0xb0
je 0x6661705d
cmp dl, 0x89
je 0x6661703a
movzx eax, byte [ebx]
sub eax, 0x36
cmp dword [esp + 0x10], 1
sbb ebx, ebx
test al, 0xfd
jne 0x66616fe5
and ebx, 2
add ebx, 0x37
mov edx, dword [esp + 0x40]
mov eax, ebp
call fcn.665837f0
mov eax, dword [esp + 0x20]
mov edx, esi
mov ecx, dword [esp + 0x48]
mov eax, dword [eax + 0x6c]
mov byte [ebp + 0x35], dl
mov edx, dword [esp + 0x30]
mov dword [ebp + 0x38], ecx
mov dword [ebp + 0x3c], eax
mov eax, dword [esp + 0x20]
mov esi, dword [edx + 0x2c]
mov dword [esp + 0x10], esi
add esi, 1
mov dword [edx + 0x2c], esi
mov edx, 0x82
mov dword [esp], esi
mov dword [esp + 4], 0
call fcn.6659fdb0
mov dword [esp + 4], esi
mov esi, dword [esp + 0x20]
mov edx, ebx
mov dword [esp], edi
mov ecx, dword [esp + 0x24]
mov eax, esi
call fcn.6659fdb0
mov eax, dword [esi + 0x6c]
test eax, eax
jle 0x6661519d
mov esi, dword [esp + 0x20]
lea eax, [eax + eax*4]
mov edx, 0x53
mov dword [esp + 0x40], 0
shl eax, 2
mov dword [esp + 0x10], 2
add eax, dword [esi + 0x68]
mov word [eax - 0x12], dx
jmp 0x666151ad
xor ebx, ebx
xor eax, eax
jmp 0x66615e24
mov dword [esp + 0x28], 0
jmp 0x66614a56
mov esi, dword [esp + 0x40]
test esi, esi
je 0x66615e39
mov eax, ebx
mov ebx, dword [esp + 0x40]
mov dword [esp + 0x40], eax
jmp 0x6661639f
mov dword [esp + 0x40], 0
jmp 0x66616397
movzx eax, byte [ebx + 2]
jmp 0x66615fc4
mov dword [esp], 0
mov ecx, dword [esp + 0x60]
mov edx, 0x83
mov dword [esp + 4], 0
mov eax, dword [esp + 0x20]
call fcn.6659fdb0
jmp 0x66614beb
mov eax, ebx
call fcn.66583070
test eax, eax
je 0x66615f9e
mov dword [esp], edi
mov ecx, dword [esp + 0x84]
mov edx, 0x32
mov dword [esp + 4], 0
mov eax, dword [esp + 0x20]
call fcn.6659fdb0
jmp 0x66615f9e
sub eax, esi
mov esi, dword [esp + 0x38]
xor edx, edx
lea ebx, [eax - 1]
mov dword [esp + 0x28], eax
lea eax, [ebx + ebx*8]
lea eax, [eax*8 + 0x50]
test esi, esi
je 0x66617359
mov ecx, edx
mov edx, eax
mov eax, esi
call fcn.6658bdd0
mov dword [esp + 0x24], eax
mov edi, dword [esp + 0x24]
test edi, edi
je 0x6661734c
mov esi, dword [esp + 0x44]
lea eax, [ebx + 1]
movzx eax, al
lea edx, [esi + esi*8]
mov esi, dword [esp + 0x1c]
mov dword [edi + 4], eax
mov dword [edi], eax
lea eax, [edi + 8]
lea esi, [esi + edx*8 + 8]
mov edx, dword [esi]
mov dword [edi + 8], edx
mov edx, dword [esi + 0x44]
mov dword [eax + 0x44], edx
mov dword [esp + 0x24], edi
add edi, 0xc
and edi, 0xfffffffc
sub eax, edi
sub esi, eax
add eax, 0x48
shr eax, 2
mov ecx, eax
rep movsd dword es:[edi], dword [esi]
mov eax, dword [esp + 0x2c]
mov eax, dword [eax + 4]
add eax, 8
mov dword [esp + 0x40], eax
test ebx, ebx
jle 0x66615844
mov edi, dword [esp + 0x28]
mov esi, dword [esp + 0x24]
lea edx, [ebp + 0x8c]
lea ecx, [edi + edi*8]
lea eax, [esi + 0x50]
lea ebx, [esi + ecx*8 + 8]
movzx ecx, byte [edx]
mov esi, dword [esp + 0x40]
lea edi, [eax + 4]
add edx, 0x58
and edi, 0xfffffffc
lea ecx, [ecx + ecx*8]
lea esi, [esi + ecx*8]
mov ecx, dword [esi]
mov dword [eax], ecx
mov ecx, dword [esi + 0x44]
mov dword [eax + 0x44], ecx
mov ecx, eax
add eax, 0x48
sub ecx, edi
sub esi, ecx
add ecx, 0x48
shr ecx, 2
rep movsd dword es:[edi], dword [esi]
cmp ebx, eax
jne 0x66616689
jmp 0x66615844
mov eax, dword [esp + 0x38]
mov edx, dword [esp + 0x58]
add edx, dword [esp + 0x3c]
call fcn.66591c60
mov dword [esp + 0x88], eax
jmp 0x66615eb5
mov eax, dword [edx + 0x14]
mov eax, dword [eax + 0x1c]
mov eax, dword [eax]
cmp eax, 1
jle 0x666163ca
mov eax, dword [esp + 0x30]
movzx eax, byte [eax + 0x13]
test al, al
je 0x66616fcf
mov ebx, dword [esp + 0x30]
sub eax, 1
mov byte [ebx + 0x13], al
movzx eax, al
mov ecx, dword [ebx + eax*4 + 0x94]
mov dword [esp], 1
mov eax, dword [esp + 0x30]
mov dword [esp + 0xc0], ecx
mov dword [esp + 0x24], ecx
call fcn.66613be0
movzx eax, byte [esi]
mov ecx, dword [esp + 0x24]
sub eax, 0x37
and eax, 2
or eax, 1
movzx edx, byte [esp + eax + 0xdc]
jmp 0x666163f6
mov esi, dword [esp + 0x10]
movzx eax, byte [esi + 0x666892fb]
movzx ecx, byte [esi + 0x666892f9]
mov esi, dword [esp + 0x20]
mov byte [ebp + 0x35], al
mov eax, dword [esp + 0x48]
mov dword [ebp + 0x38], eax
mov eax, dword [esi + 0x6c]
cmp eax, dword [esi + 0x70]
jge 0x66617367
mov esi, dword [esp + 0x20]
lea edx, [eax + 1]
lea ebx, [eax + eax*4]
mov eax, dword [esi + 0x68]
mov dword [esi + 0x6c], edx
mov esi, dword [esp + 0x48]
lea eax, [eax + ebx*4]
mov dword [eax + 4], esi
mov esi, dword [esp + 0x28]
mov byte [eax], cl
xor ecx, ecx
mov word [eax + 2], cx
mov dword [eax + 8], esi
mov dword [eax + 0xc], 0
mov dword [eax + 0x10], 0
mov byte [eax + 1], 0
mov dword [ebp + 0x3c], edx
mov byte [ebp + 0x37], 1
jmp 0x6661519d
mov edi, dword [esp + 0x30]
mov ecx, 1
mov edx, 0x45
mov eax, dword [edi + 0x2c]
mov dword [esp + 0x28], eax
add eax, 1
mov dword [edi + 0x2c], eax
mov edi, dword [esp + 0x20]
mov dword [ebp + 0x2c], eax
mov dword [esp], eax
mov eax, edi
mov dword [esp + 4], 0
call fcn.6659fdb0
mov eax, dword [edi + 0x6c]
mov edi, dword [esp + 0x3c]
mov dword [ebp + 0x30], eax
mov eax, dword [ebp + 0x2c]
lea edx, [eax + eax]
mov eax, dword [esp + 0x40]
mov dword [ebp + 0x2c], edx
mov eax, dword [eax + 0x1c]
cmp byte [eax + edi], 1
sete al
movzx eax, al
xor eax, dword [esp + 0x10]
or eax, edx
mov dword [ebp + 0x2c], eax
mov eax, dword [esp + 0x24]
mov ecx, dword [eax + 0x24]
jmp 0x66614b7a
mov eax, dword [ebx + 0x14]
mov eax, dword [eax + 0x1c]
mov eax, dword [eax]
cmp eax, 1
jle 0x66615fd4
mov dword [esp + 0x68], 0
mov ecx, esi
mov dword [esp + 0x70], 1
jmp 0x66615fe9
mov edi, dword [esp + 0x40]
mov edx, dword [esp + 0x3c]
mov eax, dword [edi + 4]
movsx eax, word [eax + edx*2]
test eax, eax
js 0x6661738c
mov edx, dword [edi + 0xc]
lea eax, [eax + eax*4]
mov edi, dword [edx + 4]
lea eax, [edi + eax*4]
cmp byte [eax + 0xc], 0
sete byte [esp + 0x84]
jmp 0x66614b8e
mov dword [esp + 4], 0
mov eax, dword [esp + 0x70]
xor ecx, ecx
mov edx, 0xb
mov dword [esp], 0
call fcn.6659fd40
mov esi, eax
jmp 0x66614cc2
mov eax, dword [esp + 0x40]
mov eax, dword [eax + 0xc]
test byte [eax + 0x24], 0x80
je 0x66616f14
mov edi, dword [esp + 0x60]
cmp dword [esp + 0x48], edi
je 0x666169a9
mov ebx, dword [eax + 8]
test ebx, ebx
jne 0x666168eb
jmp 0x666176eb
mov ebx, dword [ebx + 0x14]
test ebx, ebx
je 0x66679f7b
movzx eax, byte [ebx + 0x38]
and eax, 3
cmp al, 2
jne 0x666168e0
movzx edx, word [ebx + 0x32]
mov eax, dword [esp + 0x30]
call fcn.66588c30
cmp word [ebx + 0x32], 0
mov dword [esp + 0x28], eax
je 0x6661768a
mov dword [esp + 0x134], ebp
mov ebp, dword [esp + 0x40]
xor esi, esi
mov eax, dword [ebx + 4]
movzx edx, word [ebp + 0x34]
movzx ecx, word [eax + esi*2]
test edx, edx
je 0x666169e5
mov edi, dword [ebp + 4]
xor eax, eax
jmp 0x6661694b
add eax, 1
cmp eax, edx
je 0x666169e5
cmp cx, word [edi + eax*2]
jne 0x66616940
cwde
mov edi, dword [esp + 0x28]
mov ecx, dword [esp + 0x60]
mov dword [esp], eax
mov eax, dword [esp + 0x20]
lea edx, [edi + esi]
add esi, 1
mov dword [esp + 4], edx
mov edx, 0x5a
call fcn.6659fdb0
movzx eax, word [ebx + 0x32]
cmp eax, esi
jg 0x6661691f
mov ebp, dword [esp + 0x134]
mov dword [esp + 8], eax
mov eax, dword [esp + 0x28]
mov edx, 0x1d
mov ecx, dword [esp + 0x48]
mov dword [esp + 4], eax
mov eax, dword [esp + 0x34]
mov dword [esp], eax
mov eax, dword [esp + 0x20]
call fcn.665a0980
mov edi, dword [ebp]
test edi, edi
jne 0x66616f6a
mov eax, dword [esp + 0x2c]
test byte [eax + 0x28], 0x20
je 0x66617064
xor edi, edi
mov eax, dword [esp + 0x40]
mov eax, dword [eax + 0x24]
test eax, eax
je 0x66616229
mov ecx, dword [esp + 0x54]
mov edx, dword [esp + 0x48]
call fcn.665bfb80
jmp 0x66616229
mov eax, 0xffffffff
jmp 0x66616952
mov esi, dword [esp + 0x20]
test ebx, ebx
mov eax, dword [esi + 0x6c]
mov ecx, dword [esi]
lea edx, [eax - 1]
cmovs ebx, edx
cmp byte [ecx + 0x53], 0
mov edx, 0x666b004c
jne 0x66616a14
mov edx, dword [esi + 0x68]
lea ecx, [ebx + ebx*4]
lea edx, [edx + ecx*4]
mov dword [edx + 8], eax
mov edx, dword [esp + 0x6c]
test edx, edx
je 0x666161f1
mov esi, dword [esp + 0x10]
add esi, esi
add eax, 2
mov ecx, dword [esp + 0x6c]
mov edx, 0x12
mov dword [esp + 4], 0
mov dword [esp], eax
mov eax, dword [esp + 0x20]
call fcn.6659fdb0
mov ebx, dword [esp + 0x68]
mov ecx, dword [esp + 0x60]
mov dword [esp], edi
mov eax, dword [esp + 0x20]
movzx edx, byte [esi + ebx + 0x66689300]
mov esi, dword [esp + 0x70]
add esi, ebx
mov dword [esp + 8], esi
mov esi, dword [esp + 0x28]
mov dword [esp + 4], esi
call fcn.665a0980
jmp 0x666161f1
cmp dword [esp + 0x10], 1
mov edx, 4
adc dl, 0
mov byte [ebp + 0x35], dl
jmp 0x6661623d
mov eax, dword [esp + 0x20]
mov edx, esi
mov esi, dword [esp + 0x48]
mov dword [esp + 0x10], 2
mov eax, dword [eax + 0x6c]
mov byte [ebp + 0x35], dl
mov dword [ebp + 0x38], esi
mov dword [ebp + 0x3c], eax
jmp 0x666151ad
mov eax, dword [esp + 0x3c]
cmp byte [esp + 0x64], 0
mov dword [esp + 0x70], eax
je 0x66616163
mov edx, dword [esp + 0x6c]
test edx, edx
je 0x666175ec
mov eax, dword [esp + 0x3c]
add eax, 1
mov dword [esp + 0x70], eax
jmp 0x66616163
xor ebx, ebx
cmp dword [esp + 0x7c], 0x18
je 0x66617482
mov eax, dword [esp + 0x28]
mov ecx, dword [esp + 0x60]
mov dword [esp + 8], esi
mov dword [esp], edi
mov edx, dword [esp + 0x7c]
mov dword [esp + 4], eax
mov eax, dword [esp + 0x20]
call fcn.665a0980
mov ecx, dword [esp + 0x6c]
test ecx, ecx
je 0x66616070
mov eax, dword [esp + 0x20]
mov dword [esp + 4], 0
mov edx, 0xb
mov ecx, dword [eax + 0x6c]
lea eax, [ecx + 2]
mov dword [esp + 0x7c], ecx
xor ecx, ecx
mov dword [esp], eax
mov eax, dword [esp + 0x20]
call fcn.6659fdb0
xor eax, eax
cmp esi, 1
mov ecx, dword [esp + 0x10]
setg al
sub esi, dword [esp + 0x70]
mov dword [esp], edi
mov dword [esp + 8], esi
mov esi, dword [esp + 0x28]
movzx edx, byte [ecx + eax*4 + 0x66689306]
mov ecx, dword [esp + 0x60]
mov dword [esp + 4], esi
mov eax, dword [esp + 0x20]
call fcn.665a0980
jmp 0x66616070
mov ecx, dword [esp + 0x3c]
mov dword [esp + 0x60], eax
mov ebx, eax
test byte [ecx + 0x24], 0x80
je 0x66615a68
movzx eax, byte [eax + 0x38]
and eax, 3
cmp al, 2
mov eax, 0
cmovne eax, ebx
mov dword [esp + 0x60], eax
jmp 0x66615a68
mov esi, dword [esp + 0x30]
mov ebp, dword [esp + 0x134]
mov eax, dword [esi + 0xd4]
test eax, eax
je 0x66616be7
mov edx, dword [esi + 8]
test eax, eax
jns 0x66616bce
mov eax, dword [edx + 0x6c]
sub eax, 1
mov ebx, dword [edx]
mov ecx, 0x666b004c
cmp byte [ebx + 0x53], 0
jne 0x66616be4
lea ecx, [eax + eax*4]
mov eax, dword [edx + 0x68]
lea ecx, [eax + ecx*4]
mov eax, dword [ecx + 8]
mov esi, dword [esp + 0x30]
mov dword [esi + 0xd4], eax
mov eax, dword [esp + 0x60]
mov dword [ebp + 0x40], eax
test eax, eax
je 0x66616c03
mov eax, dword [esp + 0x7c]
mov dword [ebp + 8], eax
mov eax, dword [esp + 0x70]
test eax, eax
je 0x66616c1d
mov dword [eax + 0xc], 0
mov edx, eax
mov eax, dword [esp + 0x38]
call fcn.665978b0
mov esi, dword [esp + 0x20]
mov edi, dword [esp + 0x88]
mov edx, dword [esi + 0x6c]
test edi, edi
mov ecx, dword [esi]
lea eax, [edx - 1]
cmovns eax, edi
cmp byte [ecx + 0x53], 0
mov edi, eax
mov eax, 0x666b004c
jne 0x66616c4b
mov eax, dword [esi + 0x68]
lea ecx, [edi + edi*4]
lea eax, [eax + ecx*4]
mov dword [eax + 4], edx
mov esi, dword [esp + 0x20]
mov edx, dword [ebp + 0xc]
mov eax, esi
call fcn.665a07c0
mov ebx, dword [esi + 0xc]
mov eax, dword [ebx + 0x38]
add eax, dword [ebx + 0x3c]
js 0x66617333
mov eax, dword [esp + 0x20]
mov edx, dword [eax + 0x6c]
mov eax, dword [esp + 0x90]
shl eax, 2
neg eax
add eax, dword [ebx + 0x40]
mov dword [eax], edx
mov eax, dword [esp + 0x2c]
cmp byte [eax + 0x2c], 1
jbe 0x66616ca0
mov eax, dword [esp + 0x24]
test eax, eax
je 0x66616ca0
mov edx, eax
mov eax, dword [esp + 0x38]
call fcn.665926e0
mov ebx, dword [esp + 0x6c]
test ebx, ebx
jne 0x6661519d
mov edx, dword [esp + 0x84]
mov eax, ebp
call fcn.665837f0
mov dword [esp + 0x40], 0
mov dword [esp + 0x10], 2
jmp 0x666151ad
or esi, 0x40
cmp al, 0x41
cmovl eax, esi
cmp al, 0x41
jne 0x66614e7b
jmp 0x66614d91
mov eax, dword [esp + 0x64]
mov ecx, dword [esp + 0x48]
mov edx, 0x82
mov dword [esp + 4], 0
mov dword [esp], eax
mov eax, esi
call fcn.6659fdb0
mov eax, dword [esp + 0x64]
mov dword [esp + 8], ebx
mov edx, 0x2d
mov dword [esp], 0
mov ecx, dword [esp + 0x68]
mov dword [esp + 4], eax
mov eax, esi
call fcn.665a0980
mov ebx, eax
jmp 0x66615cd1
movzx eax, al
mov dword [esp + 0x80], eax
mov eax, dword [esp + 0x78]
test eax, eax
je 0x666174f7
mov eax, dword [esp + 0x78]
mov dword [esp + 0x70], 1
test byte [eax + 0xc], 0x28
setne al
movzx eax, al
mov dword [esp + 0x74], eax
cmp byte [esp + 0x84], 0
jne 0x66616ff0
mov eax, dword [esp + 0x6c]
test eax, eax
jne 0x66616e36
mov esi, dword [esp + 0x58]
mov eax, dword [esp + 0x30]
mov edx, dword [esp + 0x28]
mov eax, dword [eax + 8]
mov dword [esp], esi
mov esi, dword [esp + 0x3c]
mov ecx, esi
call fcn.665a1e20
mov eax, dword [esp + 0x24]
movzx eax, word [eax + 0x2a]
test ax, ax
je 0x66616dad
mov esi, dword [esp + 0x3c]
cmp esi, eax
je 0x6661750c
mov ebx, dword [esp + 0x80]
mov dword [esp + 0x68], 0
shl ebx, 2
jmp 0x66616029
mov edi, dword [esp + 0x30]
mov edx, dword [ebp]
mov eax, dword [edi + 0x2c]
mov dword [esp + 0x28], eax
add eax, 1
mov dword [edi + 0x2c], eax
mov dword [esp + 0x6c], eax
mov dword [ebp + 0x24], eax
test edx, edx
jne 0x66617274
mov edi, dword [esp + 0x30]
mov byte [esp + 0x84], 1
mov ebx, 1
mov eax, dword [edi + 0x38]
mov dword [esp + 0x28], eax
sub eax, 1
mov dword [edi + 0x38], eax
mov dword [ebp + 0x28], eax
jmp 0x66614ba8
mov eax, dword [esp + 0x3c]
mov ecx, dword [esp + 0x60]
mov edx, 0x78
mov dword [esp + 4], eax
mov dword [esp], eax
mov eax, dword [esp + 0x20]
call fcn.6659fdb0
mov eax, dword [esp + 0x24]
mov eax, dword [eax + 0x24]
jmp 0x66616203
mov esi, dword [esp + 0x3c]
mov ebx, dword [esp + 0x28]
xor ecx, ecx
mov edx, 0x48
mov dword [esp + 4], 0
mov eax, esi
add esi, 1
add eax, ebx
mov dword [esp], eax
mov eax, dword [esp + 0x20]
call fcn.6659fdb0
mov ecx, dword [esp + 0x58]
mov eax, dword [esp + 0x30]
mov edx, ebx
mov eax, dword [eax + 8]
mov dword [esp], ecx
mov ecx, esi
call fcn.665a1e20
mov eax, dword [esp + 0x24]
movzx eax, word [eax + 0x2a]
test ax, ax
je 0x66616e8c
cmp esi, eax
je 0x6661750c
mov dword [esp + 0x68], 0
mov ebx, 4
mov eax, dword [esp + 0x6c]
mov ecx, 1
mov edx, 0x45
mov dword [esp + 4], 0
mov dword [esp], eax
mov eax, dword [esp + 0x20]
call fcn.6659fdb0
mov eax, dword [esp + 0x10]
lea eax, [eax + ebx + 0x66689304]
mov ebx, dword [esp + 0x70]
movzx eax, byte [eax + ebx*2]
mov dword [esp + 0x7c], eax
mov eax, dword [esp + 0x24]
test byte [eax + 0x26], 0x10
jne 0x66616ae3
mov eax, dword [esp + 0x28]
mov ecx, dword [esp + 0x60]
mov dword [esp + 8], esi
xor ebx, ebx
mov dword [esp], edi
mov edx, dword [esp + 0x7c]
mov dword [esp + 4], eax
mov eax, dword [esp + 0x20]
call fcn.665a0980
jmp 0x66616b1c
mov dword [esp + 0x70], 0
jmp 0x666159ae
mov edi, dword [esp + 0x2c]
mov ebx, dword [esp + 0x48]
mov edx, 0x88
mov ecx, dword [esp + 0x60]
mov esi, dword [edi]
mov eax, dword [esi + 8]
or byte [edi + 0x30], 1
mov dword [esp + 4], ebx
mov dword [esp], 0
mov dword [esp + 0x28], eax
call fcn.6659fdb0
test byte [edi + 0x28], 0x20
je 0x6661729e
mov eax, dword [esi + 0x74]
test eax, eax
cmove eax, esi
mov eax, dword [eax + 0x50]
test eax, eax
je 0x666173aa
mov ecx, dword [ebp]
test ecx, ecx
je 0x666169c2
xor edi, edi
jmp 0x66616229
mov dword [esp + 0x80], 1
mov dword [esp + 0x74], 1
jmp 0x66615f13
mov eax, esi
call fcn.66583070
test eax, eax
je 0x666160fb
mov ecx, dword [esp + 0x70]
mov eax, dword [esp + 0x20]
mov dword [esp], edi
mov edx, 0x32
mov dword [esp + 4], 0
call fcn.6659fdb0
jmp 0x666160fb
mov dword [esp + 0x64], 0
mov dword [esp + 0x68], 0
jmp 0x666158d2
mov eax, dword [esp + 0x30]
mov ebx, dword [eax + 0x2c]
lea ecx, [ebx + 1]
mov dword [esp + 0x24], ebx
mov dword [eax + 0x2c], ecx
jmp 0x66616715
and ebx, 0xfffffffe
add ebx, 0x38
jmp 0x666164a5
mov esi, dword [esp + 0x3c]
mov eax, dword [esp + 0x28]
xor ecx, ecx
mov edx, 0x48
mov dword [esp + 4], 0
add eax, esi
mov dword [esp], eax
mov eax, dword [esp + 0x20]
call fcn.6659fdb0
mov ecx, esi
lea esi, [esi + 1]
mov dword [esp + 0x68], 1
mov dword [esp + 0x80], 1
mov dword [esp + 0x70], 0
jmp 0x66615fe9
mov eax, dword [eax + 0x14]
mov eax, dword [eax + 0x1c]
mov eax, dword [eax]
cmp eax, 1
jle 0x6661648a
cmp dword [esp + 0x10], 1
sbb ebx, ebx
and ebx, 0xfffffffe
add ebx, 0x38
jmp 0x666164b0
mov eax, dword [eax + 0x14]
mov eax, dword [eax]
jmp 0x66617042
mov eax, dword [esp + 0x40]
mov edx, dword [eax + 0x28]
test edx, edx
je 0x666174e8
mov eax, dword [esp + 0x40]
xor ecx, ecx
mov eax, dword [eax + 0xc]
mov dword [esp + 0x38], eax
xor eax, eax
mov dword [esp + eax + 0xa4], ecx
add eax, 4
cmp eax, 0x18
jb 0x66617082
lea eax, [esp + 0xc0]
xor esi, esi
mov dword [esp + 0xbc], eax
mov eax, dword [esp + 0x48]
mov dword [esp + 0xc4], eax
mov eax, dword [esp + 0x60]
mov dword [esp + 0xc8], eax
mov eax, dword [esp + 0x2c]
mov dword [esp + 0xd4], eax
mov eax, dword [eax]
mov eax, dword [eax]
mov dword [esp + 0xd8], eax
lea eax, [edx + 4]
mov dword [esp + 0x28], eax
mov eax, dword [esp + 0x40]
cmp word [eax + 0x34], 0
je 0x666169c4
mov dword [esp + 0x3c], edi
mov edi, esi
mov eax, dword [esp + 0x40]
mov eax, dword [eax + 4]
movsx ebx, word [eax + edi*2]
cmp bx, 0xfffe
je 0x6661720e
test bx, bx
js 0x666171ed
mov eax, dword [esp + 0x38]
lea edx, [ebx + ebx*4]
mov eax, dword [eax + 4]
lea eax, [eax + edx*4]
test byte [eax + 0x10], 0x20
je 0x666171ed
mov esi, dword [eax + 8]
test esi, esi
je 0x66617159
xor edx, edx
mov eax, 0x42
jmp 0x6661714d
movzx eax, byte [eax + 0x66690a80]
cmp byte [ecx + 0x66690a80], al
jne 0x666171ed
movzx eax, byte [edx + 0x6669089d]
add edx, 1
movzx ecx, byte [esi + edx]
cmp ecx, eax
jne 0x66617130
test ecx, ecx
jne 0x66617143
mov dword [esp + 0xd0], ebx
mov dword [esp + 0xa8], 0x66591800
mov eax, dword [esp + 0x2c]
mov dword [esp + 0xcc], edi
mov edx, dword [eax + 0x10]
test edx, edx
je 0x66617189
lea eax, [esp + 0xa4]
call fcn.665a6500
mov eax, dword [esp + 0x2c]
mov ebx, dword [eax + 8]
test ebx, ebx
je 0x666171bb
mov esi, dword [ebx]
add ebx, 4
test esi, esi
jle 0x666171bb
mov edx, dword [ebx]
test edx, edx
je 0x666171b3
lea eax, [esp + 0xa4]
call fcn.665a6500
test eax, eax
jne 0x666171bb
add ebx, 0x14
sub esi, 1
jne 0x6661719d
mov eax, dword [esp + 0x2c]
mov ebx, dword [eax + 0xc]
test ebx, ebx
je 0x666171ed
mov esi, dword [ebx]
add ebx, 4
test esi, esi
jle 0x666171ed
mov edx, dword [ebx]
test edx, edx
je 0x666171e5
lea eax, [esp + 0xa4]
call fcn.665a6500
test eax, eax
jne 0x666171ed
add ebx, 0x14
sub esi, 1
jne 0x666171cf
mov eax, dword [esp + 0x40]
add edi, 1
add dword [esp + 0x28], 0x14
movzx eax, word [eax + 0x34]
cmp edi, eax
jl 0x666170e9
mov edi, dword [esp + 0x3c]
jmp 0x666169c4
mov eax, dword [esp + 0x28]
mov edx, dword [eax]
mov eax, 1
mov dword [esp + 0xe0], 0x6659dc30
mov word [esp + 0xf0], ax
mov dword [esp + 0xc0], edx
mov dword [esp + 0xe4], 0x66582ff0
mov dword [esp + 0xf4], 0
test edx, edx
je 0x666171ed
lea eax, [esp + 0xdc]
call fcn.665a6500
cmp word [esp + 0xf0], 0
jne 0x666171ed
mov dword [esp + 0xa8], 0x665c0a90
jmp 0x6661716b
mov dword [esp], eax
mov eax, dword [esp + 0x20]
xor ecx, ecx
mov edx, 0x45
mov dword [esp + 4], 0
call fcn.6659fdb0
jmp 0x66616de7
mov eax, dword [ebx + 0x14]
mov eax, dword [eax]
jmp 0x66616835
xor edi, edi
jmp 0x6661621e
add eax, 3
mov ecx, dword [esp + 0x6c]
mov edx, 0x14
mov dword [esp + 4], 0
mov dword [esp], eax
mov eax, dword [esp + 0x20]
call fcn.6659fdb0
mov ecx, dword [esp + 0x38]
mov eax, dword [esp + 0x20]
mov dword [esp], edi
movzx edx, byte [ecx + 0x66689300]
mov ecx, dword [esp + 0x70]
mov dword [esp + 8], ecx
mov ecx, dword [esp + 0x28]
mov dword [esp + 4], ecx
mov ecx, dword [esp + 0x60]
call fcn.665a0980
test ebx, ebx
jne 0x666169ef
mov eax, dword [esp + 0x20]
mov eax, dword [eax + 0x6c]
jmp 0x66616a29
mov eax, dword [esi + 0x14]
mov eax, dword [eax + 0x1c]
mov eax, dword [eax]
cmp eax, 1
jle 0x66616158
mov dword [esp + 0x74], 1
jmp 0x66616163
mov eax, dword [esi + 0x14]
mov eax, dword [eax]
jmp 0x6661730c
mov eax, dword [edx + 0x14]
mov eax, dword [eax]
jmp 0x666166e8
mov ecx, dword [esp + 0x90]
mov edx, dword [esp + 0x20]
mov eax, ebx
neg ecx
call fcn.6659a020
jmp 0x66616c83
mov eax, dword [esp + 0x4c]
mov edx, dword [esp + 0x50]
jmp 0x666153df
call fcn.6658bcf0
mov dword [esp + 0x24], eax
jmp 0x6661660f
mov eax, dword [esp + 0x28]
mov dword [esp + 4], 0
movzx edx, cl
mov ecx, dword [esp + 0x48]
mov dword [esp], eax
mov eax, esi
call fcn.6659fd40
lea edx, [eax + 1]
jmp 0x666167b4
cmp eax, 0xfffffffe
sete byte [esp + 0x84]
jmp 0x66614b8e
mov ebx, dword [esp + 0x40]
mov edx, 0x25
jmp 0x66615e3e
mov eax, dword [esp + 0x40]
xor ecx, ecx
mov ebx, dword [eax + 0xc]
movsx eax, word [ebx + 0x2a]
lea edi, [eax*4 + 4]
mov eax, dword [esi]
mov edx, edi
test eax, eax
je 0x666176b1
call fcn.6658bdd0
mov esi, eax
test esi, esi
je 0x666169a9
mov dword [esp + 8], edi
mov dword [esp + 4], 0
mov dword [esp], esi
call sub.msvcrt.dll_memset
movsx eax, word [ebx + 0x2a]
mov dword [esi], eax
mov eax, dword [esp + 0x40]
movzx eax, word [eax + 0x34]
cmp ax, 1
jbe 0x666176ca
mov edi, dword [esp + 0x40]
sub eax, 1
mov dword [esp + 0x134], ebp
mov ebp, esi
mov dword [esp + 0x38], eax
mov ecx, dword [edi + 4]
xor edi, edi
mov esi, ecx
jmp 0x66617440
test ax, ax
js 0x66617436
movsx edx, ax
mov eax, ebx
call fcn.66588d10
cwde
mov dword [ebp + eax*4 + 4], edi
cmp edi, dword [esp + 0x38]
je 0x666176c1
movzx eax, word [esi + edi*2]
add edi, 1
test byte [ebx + 0x24], 0x20
jne 0x66617422
test ax, ax
js 0x66617436
jmp 0x66617431
mov esi, dword [esp + 0x30]
mov eax, dword [esi + 0xd4]
mov dword [esp + 0x6c], eax
test eax, eax
je 0x66617670
mov dword [esp + 0x60], 0
mov edx, dword [esi + 8]
mov dword [esp + 0x6c], 0
jmp 0x66616bc4
mov eax, dword [esp + 0x40]
mov edx, 0x66666667
mov eax, dword [eax + 8]
movsx ebx, word [eax]
add ebx, 9
mov eax, ebx
sar ebx, 0x1f
imul edx
mov eax, dword [esp + 0x20]
sar edx, 2
mov ecx, edx
sub ecx, ebx
mov ebx, dword [eax + 0x6c]
cmp ebx, dword [eax + 0x70]
jge 0x66617691
mov edx, dword [esp + 0x20]
lea eax, [ebx + 1]
mov dword [edx + 0x6c], eax
mov edx, dword [edx + 0x68]
lea eax, [ebx + ebx*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], 0x77
jmp 0x66616af0
test byte [eax + 0x39], 4
jne 0x66617073
jmp 0x666169c4
mov dword [esp + 0x74], 1
mov dword [esp + 0x70], 1
jmp 0x66616d5d
mov dword [esp + 0x68], 0
xor ebx, ebx
jmp 0x66616070
mov esi, dword [esp + 0x30]
xor ecx, ecx
mov edx, 0x48
mov eax, dword [esi + 0x2c]
mov dword [esp + 0x28], eax
add eax, 1
mov dword [esi + 0x2c], eax
mov dword [esp], eax
mov dword [esp + 4], 0
mov dword [esp + 0x68], eax
mov eax, dword [esp + 0x20]
call fcn.6659fdb0
jmp 0x666158bd
mov eax, dword [esp + 0x40]
mov ecx, dword [esp + 0x68]
mov edx, 0x1e
mov dword [esp], 0
mov dword [esp + 8], eax
mov eax, dword [esp + 0x58]
mov dword [esp + 4], eax
mov eax, esi
call fcn.665a0980
cmp dword [esp + 0x28], 0xffffffff
mov ebx, eax
je 0x66615cb3
mov eax, dword [esp + 0x64]
mov ecx, dword [esp + 0x40]
mov edx, 0x5c
mov dword [esp + 4], eax
mov eax, esi
mov dword [esp], ecx
mov ecx, dword [esp + 0x58]
call fcn.6659fdb0
mov ecx, dword [esp + 0x40]
mov eax, dword [esp + 0x64]
mov edx, 0x85
mov dword [esp + 8], ecx
mov ecx, dword [esp + 0x58]
mov dword [esp], eax
mov eax, esi
mov dword [esp + 4], ecx
mov ecx, dword [esp + 0x68]
call fcn.665a0980
mov eax, dword [esi + 0x6c]
test eax, eax
jle 0x66615cb3
mov edx, dword [esi + 0x68]
lea eax, [eax + eax*4]
mov ecx, 0x10
lea eax, [edx + eax*4]
mov word [eax - 0x12], cx
jmp 0x66615cb3
add eax, dword [esp + 0x28]
mov dword [esp + 4], 0
xor ecx, ecx
mov edx, 0x48
mov dword [esp], eax
mov eax, dword [esp + 0x20]
call fcn.6659fdb0
mov dword [esp + 0x74], 0
jmp 0x66616ad3
mov eax, dword [esp + 0x80]
mov dword [esp + 4], 0
xor ecx, ecx
mov edx, 0x45
mov dword [esp], eax
mov eax, dword [esp + 0x20]
call fcn.6659fd40
mov dword [esp + 0x88], eax
jmp 0x66615928
mov ecx, dword [esp + 0x58]
test ecx, ecx
je 0x66615cd1
movzx eax, byte [ebp + 0x13]
cmp al, 7
ja 0x66615cd1
lea edx, [eax + 1]
mov byte [ebp + 0x13], dl
mov dword [ebp + eax*4 + 0x94], ecx
jmp 0x66615cd1
mov eax, dword [esp + 0x30]
mov dword [eax + 0xd4], 0
mov dword [ebp + 0x40], 0
jmp 0x66616c03
xor eax, eax
jmp 0x66616984
mov dword [esp + 4], 0
mov edx, 0x77
mov dword [esp], 0
call fcn.6659fd40
mov ebx, eax
jmp 0x66616af0
mov eax, edi
mov edx, ecx
call fcn.6658bcf0
mov esi, eax
jmp 0x666173d1
mov esi, ebp
mov ebp, dword [esp + 0x134]
mov dword [esp], 0xfffffff1
mov eax, dword [esp + 0x28]
mov ecx, esi
mov edx, 0xffffffff
call fcn.6659aa70
jmp 0x666169a9
jmp 0x66679f61
jmp 0x66679f7b
jmp 0x66679f72
mov eax, dword [esp + 0x30]
add dword [eax + 0x28], 1
movzx eax, word [0x32]
ud2
movzx eax, word [0x32]
ud2
movzx eax, word [0x32]
ud2