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

Disassembly:
push 0xffffffffffffffff
mov eax, dword fs:[0]
push 0x6cbf95
push eax
mov eax, 0x1480
mov dword fs:[0], esp
call fcn.00698650
push ebx
push ebp
mov ebp, ecx
push esi
xor ebx, ebx
push edi
lea ecx, [esp + 0x50]
mov dword [esp + 0x7c], ebx
call fcn.0060d180
lea ecx, [esp + 0x300]
mov dword [esp + 0x1498], ebx
call fcn.00652890
mov edi, dword [esp + 0x14a4]
mov byte [esp + 0x1498], 1
mov eax, dword [edi + 0x14]
cmp eax, 0xffffffff
je 0x66e1bb
mov ecx, dword [ebp + 0xcc]
push ecx
push eax
lea ecx, [esp + 0x308]
call fcn.00653050
mov ebx, eax
xor esi, esi
test ebx, ebx
jle 0x66e1b9
push esi
lea ecx, [esp + 0x304]
call fcn.00653190
mov edx, dword [ebp]
lea eax, [esp + 0x50]
lea ecx, [esp + 0x7c]
push eax
push ecx
lea eax, [esp + 0x1c4]
push 0
lea ecx, [esp + 0x30c]
push eax
push ecx
mov ecx, ebp
call dword [edx + 8]
cmp eax, 1
jne 0x66e245
inc esi
cmp esi, ebx
jl 0x66e17a
xor ebx, ebx
mov ecx, dword [esp + 0x14a0]
mov word [ebp + 0xf8], bx
mov dword [ebp + 0x130], ecx
mov ecx, dword [ebp + 0xcc]
mov word [ebp + 0xfa], bx
mov word [ebp + 0xfc], bx
mov dx, word [edi + 0x38]
push ecx
mov word [ebp + 0x134], dx
mov edx, dword [edi + 0x18]
mov eax, dword [edi + 0x3c]
push edx
lea ecx, [esp + 0x308]
mov dword [esp + 0xc4], ebx
mov dword [esp + 0x38], eax
call fcn.00653050
cmp ax, bx
jg 0x66e2c4
lea ecx, [esp + 0x300]
mov byte [esp + 0x1498], 0
call fcn.006529a0
lea ecx, [esp + 0x50]
mov dword [esp + 0x1498], 0xffffffff
call fcn.0060d280
xor eax, eax
jmp 0x670e6d
push 0
push 1
sub esp, 0x10
mov ecx, 0x71bec0
mov edx, esp
mov dword [esp + 0x100], esp
push 1
push edx
call fcn.00636830
sub esp, 0x10
mov ecx, 0x71bec0
mov eax, esp
mov dword [esp + 0xe4], esp
push 1
push eax
mov byte [esp + 0x14c8], 2
call fcn.00636830
mov ecx, 0x71b930
mov byte [esp + 0x14c0], 1
call fcn.00611530
lea ecx, [esp + 0x300]
mov byte [esp + 0x1498], 0
call fcn.006529a0
lea ecx, [esp + 0x50]
mov dword [esp + 0x1498], 0xffffffff
call fcn.0060d280
xor eax, eax
jmp 0x670e6d
movsx eax, ax
xor edi, edi
cmp eax, ebx
mov dword [esp + 0xa0], eax
jle 0x66e38c
push edi
lea ecx, [esp + 0x304]
call fcn.00653190
lea ecx, [esp + 0x300]
call fcn.00653770
cmp eax, 8
lea ecx, [esp + 0x300]
jbe 0x66e343
call fcn.00653770
mov esi, eax
lea ecx, [esp + 0x300]
add word [ebp + 0xfa], si
call fcn.00653760
lea ecx, [eax + 8]
cmp esi, ebx
mov word [ebp + 0xfc], cx
jle 0x66e37c
mov dx, word [ebp + 0xf8]
mov eax, 1
shl eax, cl
or dx, ax
dec ecx
dec esi
jne 0x66e32c
mov word [ebp + 0xf8], dx
jmp 0x66e37c
call fcn.00653770
mov esi, eax
lea ecx, [esp + 0x300]
add word [ebp + 0xfa], si
call fcn.00653760
cmp esi, ebx
mov word [ebp + 0xfc], ax
mov ecx, eax
jle 0x66e37c
mov edx, 1
shl edx, cl
or word [ebp + 0xf8], dx
dec ecx
dec esi
jne 0x66e36a
mov eax, dword [esp + 0xa0]
inc edi
cmp edi, eax
jl 0x66e2d8
cmp eax, ebx
mov dword [esp + 0x78], ebx
jle 0x670e40
mov esi, ebx
mov ecx, 0x3f
xor eax, eax
lea edi, [esp + 0x1bc]
rep stosd dword es:[edi], eax
stosw word es:[edi], ax
stosb byte es:[edi], al
lea ecx, [esp + 0x50]
mov edi, 1
call fcn.0060d780
push esi
lea ecx, [esp + 0x304]
call fcn.00653190
test esi, esi
jne 0x66e40f
lea ecx, [esp + 0x300]
call fcn.00653770
shr eax, 3
jne 0x66e409
mov cx, word [ebp + 0xfa]
test cx, cx
jbe 0x66e409
and ecx, 0xffff
mov eax, 0x38e38e39
imul ecx
sar edx, 1
mov eax, edx
shr eax, 0x1f
lea ecx, [edx + eax + 1]
mov dword [ebp + 0x138], ecx
jmp 0x66e40f
mov dword [ebp + 0x138], eax
lea ecx, [esp + 0x300]
call fcn.00683040
lea edx, [esp + 0xd4]
lea ebx, [ebp + 0xe4]
push edx
mov ecx, ebx
mov dword [esp + 0xd8], eax
call fcn.00673c20
mov ecx, dword [ebx + 4]
mov dword [esp + 0x14], eax
cmp eax, ecx
je 0x66e456
mov edx, dword [esp + 0xd4]
mov esi, dword [eax + 0xc]
cmp edx, esi
jb 0x66e456
lea eax, [esp + 0x14]
jmp 0x66e464
mov dword [esp + 0xe8], ecx
lea eax, [esp + 0xe8]
mov eax, dword [eax]
mov ecx, dword [ebp + 0xe8]
cmp eax, ecx
mov dword [esp + 0x84], eax
je 0x66e479
xor edi, edi
mov esi, dword [esp + 0x30]
cmp esi, 0x29
jne 0x66e49a
cmp byte [ebp + 0xe0], 1
jbe 0x66e49a
cmp dword [ebp + 0x168], 1
je 0x670e40
jmp 0x66e4b7
test edi, edi
je 0x66e82f
cmp esi, 2
je 0x66e4ac
cmp esi, 3
jne 0x66e4b7
mov dword [esp + 0x318], 0xff
mov eax, dword [esp + 0x14a4]
push 0
mov ecx, dword [eax + 0x4c]
push ecx
mov ecx, dword [ebp + 0xd4]
call fcn.006421c0
lea edx, [esp + 0x50]
push 0
push edx
lea eax, [esp + 0x84]
push 3
push eax
push 0
lea ecx, [esp + 0x1d0]
push 0
lea edx, [esp + 0x318]
push ecx
mov ecx, dword [ebp + 0xd4]
push edx
call fcn.006462e0
cmp eax, 1
jne 0x66e80d
lea ecx, [esp + 0x188]
call fcn.0060fe70
lea ecx, [esp + 0x18c]
mov byte [esp + 0x1498], 3
call fcn.0060d180
push ecx
lea ecx, [esp + 0x54]
mov eax, esp
mov dword [esp + 0x18], esp
push eax
mov byte [esp + 0x14a0], 4
call fcn.0060d6b0
lea ecx, [esp + 0x18c]
call fcn.006101a0
mov cl, byte [esp + 0x50]
sub esp, 0x24
mov esi, esp
mov dword [esp + 0x38], esp
mov dword [esp + 0x38], esi
mov byte [esi], cl
mov ecx, dword [esp + 0x78]
test ecx, ecx
jne 0x66e56c
xor eax, eax
jmp 0x66e575
mov eax, dword [esp + 0x7c]
sub eax, ecx
sar eax, 4
test eax, eax
jge 0x66e57b
xor eax, eax
shl eax, 4
push eax
call fcn.00697be2
add esp, 4
mov dword [esi + 4], eax
mov edx, dword [esp + 0x7c]
mov ecx, esi
push eax
mov eax, dword [esp + 0x7c]
push edx
push eax
call fcn.00413ae0
mov dword [esi + 8], eax
mov dword [esi + 0xc], eax
lea ecx, [esp + 0x84]
add esi, 0x10
push ecx
mov ecx, esi
mov byte [esp + 0x14c0], 5
call fcn.00413210
mov dl, byte [esp + 0x94]
lea ecx, [esp + 0x1b0]
mov byte [esi + 0x10], dl
mov byte [esp + 0x14bc], 4
call fcn.0060d330
lea ecx, [esp + 0x300]
call fcn.00683040
lea ecx, [esp + 0x188]
mov dword [esp + 0x114], eax
lea eax, [esp + 0x118]
push ecx
lea ecx, [esp + 0x11c]
mov dword [esp + 0x18], eax
call fcn.0060fe80
mov al, byte [esp + 0x18c]
lea edx, [esp + 0x11c]
lea ecx, [esp + 0x18c]
mov byte [esp + 0x1498], 6
mov dword [esp + 0x20], edx
mov byte [esp + 0x11c], al
call fcn.00462a60
test eax, eax
jge 0x66e63f
xor eax, eax
shl eax, 4
push eax
call fcn.00697be2
mov ecx, dword [esp + 0x198]
mov edx, dword [esp + 0x194]
add esp, 4
mov dword [esp + 0x120], eax
push eax
push ecx
push edx
lea ecx, [esp + 0x128]
call fcn.00413ae0
mov dword [esp + 0x124], eax
mov dword [esp + 0x128], eax
lea eax, [esp + 0x19c]
lea ecx, [esp + 0x12c]
push eax
mov byte [esp + 0x149c], 7
call fcn.00406650
mov ecx, dword [esp + 0x114]
lea eax, [esp + 0x118]
mov dword [esp + 0x150], ecx
lea edx, [esp + 0x154]
push eax
lea ecx, [esp + 0x158]
mov byte [esp + 0x149c], 8
mov dword [esp + 0x18], edx
call fcn.0060fe80
mov dl, byte [esp + 0x11c]
lea ecx, [esp + 0x158]
mov dword [esp + 0x20], ecx
lea ecx, [esp + 0x11c]
mov byte [esp + 0x1498], 9
mov byte [esp + 0x158], dl
call fcn.00462a60
test eax, eax
jge 0x66e701
xor eax, eax
shl eax, 4
push eax
call fcn.00697be2
mov ecx, dword [esp + 0x124]
add esp, 4
mov dword [esp + 0x15c], eax
push eax
mov eax, dword [esp + 0x128]
push eax
push ecx
lea ecx, [esp + 0x164]
call fcn.00413ae0
mov dword [esp + 0x160], eax
mov dword [esp + 0x164], eax
lea edx, [esp + 0x12c]
lea ecx, [esp + 0x168]
push edx
mov byte [esp + 0x149c], 0xa
call fcn.00406650
lea eax, [esp + 0x150]
lea ecx, [esp + 0x2f8]
push eax
push ecx
mov ecx, ebx
mov byte [esp + 0x14a0], 0xb
call fcn.00672cb0
lea edx, [esp + 0x154]
mov dword [esp + 0x14], edx
lea ecx, [esp + 0x158]
mov byte [esp + 0x1498], 0xc
call fcn.0060d280
lea ecx, [esp + 0x154]
mov byte [esp + 0x1498], 8
call fcn.0060ffb0
lea eax, [esp + 0x118]
mov dword [esp + 0x14], eax
lea ecx, [esp + 0x11c]
mov byte [esp + 0x1498], 0xd
call fcn.0060d280
lea ecx, [esp + 0x118]
mov byte [esp + 0x1498], 4
call fcn.0060ffb0
lea ecx, [esp + 0x18c]
mov byte [esp + 0x1498], 0xe
call fcn.0060d280
lea ecx, [esp + 0x188]
mov byte [esp + 0x1498], 1
call fcn.0060ffb0
jmp 0x66e92c
or edi, 0xffffffff
cmp eax, edi
je case.0x66e947.13
cmp esi, 0x23
je case.0x66e947.13
cmp esi, 0x10
jne 0x670ee5
jmp 0x66e933
lea ecx, [eax + 0x10]
xor esi, esi
call fcn.00610330
test ax, ax
jle 0x66e86c
mov ecx, dword [esp + 0x84]
push esi
add ecx, 0x10
call fcn.00610190
mov edx, dword [esp + 0x84]
mov byte [esp + esi + 0x1bc], al
inc esi
lea ecx, [edx + 0x10]
call fcn.00610330
movsx eax, ax
cmp esi, eax
jl 0x66e83e
mov ecx, dword [esp + 0x84]
add ecx, 0x10
call fcn.00610330
lea ecx, [esp + 0x84]
mov dword [esp + 0x7c], eax
call fcn.006729d0
mov esi, eax
sub esp, 0x24
add esi, 8
mov eax, esp
mov dword [esp + 0x38], esp
mov dword [esp + 0x38], eax
mov dl, byte [esi]
mov byte [eax], dl
mov ecx, dword [esi + 4]
test ecx, ecx
jne 0x66e8ac
xor eax, eax
jmp 0x66e8b4
mov eax, dword [esi + 8]
sub eax, ecx
sar eax, 4
test eax, eax
jge 0x66e8ba
xor eax, eax
shl eax, 4
push eax
call fcn.00697be2
mov ecx, dword [esp + 0x3c]
add esp, 4
mov edi, eax
mov dword [ecx + 4], eax
mov ecx, dword [esi + 8]
mov ebx, dword [esi + 4]
mov dword [esp + 0x44], ecx
cmp ebx, ecx
je 0x66e8f5
push ebx
push edi
call fcn.00414f50
mov eax, dword [esp + 0x4c]
add ebx, 0x10
add esp, 8
add edi, 0x10
cmp ebx, eax
jne 0x66e8dd
mov eax, dword [esp + 0x38]
mov dword [eax + 8], edi
mov dword [eax + 0xc], edi
add esi, 0x10
lea edi, [eax + 0x10]
push esi
mov ecx, edi
mov byte [esp + 0x14c0], 0xf
call fcn.00413210
mov dl, byte [esi + 0x10]
lea ecx, [esp + 0x74]
mov byte [edi + 0x10], dl
mov byte [esp + 0x14bc], 1
call fcn.0060d330
mov esi, dword [esp + 0x30]
or edi, 0xffffffff
lea eax, [esi - 1]
cmp eax, 0x29
ja case.0x66e947.13
xor ecx, ecx
mov cl, byte [eax + 0x671178]
jmp dword [ecx*4 + 0x671144]
lea edx, [esp + 0x2c]
lea ecx, [esp + 0x50]
push edx
call fcn.0060d6b0
lea ecx, [esp + 0x2c]
mov byte [esp + 0x1498], 0x10
xor esi, esi
call fcn.00610330
test ax, ax
jle 0x66e996
push esi
lea ecx, [esp + 0x30]
call fcn.00610190
mov byte [esp + esi + 0x1bc], al
lea ecx, [esp + 0x2c]
inc esi
call fcn.00610330
movsx eax, ax
cmp esi, eax
jl 0x66e974
lea ecx, [esp + 0x300]
call fcn.00653770
mov esi, eax
lea ecx, [esp + 0x300]
shr esi, 3
call fcn.00653770
test al, 7
jbe 0x66e9dc
mov ax, word [ebp + 0xfa]
test ax, ax
jbe 0x66e9dc
and eax, 0xffff
mov ecx, eax
mov eax, 0x38e38e39
imul ecx
sar edx, 1
mov ecx, edx
shr ecx, 0x1f
lea esi, [edx + ecx + 1]
test esi, esi
jle 0x66eb54
lea ecx, [esp + 0x300]
call fcn.00653750
mov edi, eax
mov eax, dword [ebp + 0x130]
cmp eax, 0xffffffff
je 0x66ea78
xor ebx, ebx
test eax, eax
jle 0x66eb54
cmp dword [esp + 0x30], 0x28
jne 0x66ea2a
xor eax, eax
test esi, esi
jle 0x66ea26
lea ecx, [esp + edi + 0x1bc]
cmp byte [ecx + eax], 0
jne 0x66ea2a
inc eax
cmp eax, esi
jl 0x66ea1b
add edi, esi
jmp 0x66ea68
push 0
push ebx
lea edx, [esp + edi + 0x1c4]
push esi
push edx
mov ecx, ebp
call fcn.0066d8e0
mov ax, word [ebp + 0x134]
test ax, ax
je 0x66eb54
and eax, 0xffff
lea ecx, [esp + 0x2c]
add edi, eax
call fcn.00610330
movsx eax, ax
cmp edi, eax
jg 0x66eb54
mov eax, dword [ebp + 0x130]
inc ebx
cmp ebx, eax
jl 0x66ea07
jmp 0x66eb54
cmp word [ebp + 0x134], 0
jne 0x66eacf
mov eax, dword [esp + 0x30]
cmp eax, 0x28
jne 0x66eaad
xor eax, eax
test esi, esi
jle 0x66ec45
lea ecx, [esp + edi + 0x1bc]
cmp byte [ecx], 0
jne 0x66eab6
inc eax
inc ecx
cmp eax, esi
jge 0x66ec45
jmp 0x66ea9c
cmp eax, 0x2a
je 0x670e88
push 0
push 0
lea ecx, [esp + edi + 0x1c4]
push esi
push ecx
mov ecx, ebp
call fcn.0066d8e0
jmp 0x66eb54
lea ecx, [esp + 0x2c]
xor ebx, ebx
call fcn.00610330
movsx edx, ax
xor eax, eax
mov ax, word [ebp + 0x134]
add eax, edi
cmp eax, edx
jg 0x66eb54
mov eax, dword [esp + 0x30]
cmp eax, 0x28
jne 0x66eb11
xor eax, eax
test esi, esi
jle 0x66eb0d
lea ecx, [esp + edi + 0x1bc]
cmp byte [ecx], 0
jne 0x66eb1a
inc eax
inc ecx
cmp eax, esi
jl 0x66eb02
add edi, esi
jmp 0x66eb39
cmp eax, 0x2a
je 0x670dd2
push 0
push ebx
lea ecx, [esp + edi + 0x1c4]
push esi
push ecx
mov ecx, ebp
call fcn.0066d8e0
xor edx, edx
mov dx, word [ebp + 0x134]
add edi, edx
inc ebx
lea ecx, [esp + 0x2c]
call fcn.00610330
xor ecx, ecx
mov cx, word [ebp + 0x134]
movsx eax, ax
add ecx, edi
cmp ecx, eax
jle 0x66eaec
mov edx, dword [esp + 0x14a4]
mov eax, dword [edx + 0x20]
cmp eax, 0xffffffff
je 0x66eb6b
push eax
mov ecx, ebp
call fcn.0066d090
cmp dword [esp + 0x30], 0xb
jne 0x66ec45
lea ecx, [esp + 0x300]
call fcn.00653750
mov cl, byte [esp + eax + 0x1bc]
test cl, cl
je 0x66ec45
lea ecx, [esp + 0x300]
call fcn.00653750
cmp byte [esp + eax + 0x1bb], 0x28
je 0x66ec45
lea ecx, [esp + 0x300]
call fcn.00653750
cmp byte [esp + eax + 0x1bb], 8
je 0x66ec45
lea ecx, [esp + 0x300]
call fcn.00653750
mov cl, byte [esp + eax + 0x1bb]
test cl, cl
je 0x66ec45
lea ecx, [esp + 0x50]
call fcn.0060d780
lea eax, [esp + 0x50]
push 0
push eax
lea ecx, [esp + 0x84]
push 3
push ecx
mov ecx, dword [ebp + 0xd4]
push 0
lea edx, [esp + 0x1d0]
push 0
lea eax, [esp + 0x318]
push edx
push eax
call fcn.006462e0
mov eax, dword [esp + 0xbc]
mov byte [esp + 0x1498], 1
inc eax
lea ecx, [esp + 0x2c]
cmp eax, 0xff
mov dword [esp + 0xbc], eax
jg 0x670db3
call fcn.0060ffb0
jmp case.0x66e947.1
mov byte [esp + 0x1498], 1
lea ecx, [esp + 0x2c]
jmp 0x670db3
mov ecx, dword [ebp + 0xd4]
call fcn.006413e0
lea ecx, [esp + 0x300]
call fcn.00653770
shr eax, 3
mov dword [esp + 0x14], eax
jne 0x66ec9f
mov ax, word [ebp + 0xfa]
test ax, ax
jbe 0x66ec9f
and eax, 0xffff
mov ecx, eax
mov eax, 0x38e38e39
imul ecx
sar edx, 1
mov ecx, edx
shr ecx, 0x1f
lea edx, [edx + ecx + 1]
mov dword [esp + 0x14], edx
xor ebx, ebx
xor edi, edi
mov dword [esp + 0x1c], ebx
push 0
lea ecx, [esp + 0x54]
call fcn.0060d6a0
mov ecx, dword [eax + 4]
test ecx, ecx
je 0x66ed21
mov eax, dword [eax + 8]
sub eax, ecx
sar eax, 2
cmp edi, eax
jae 0x66ed21
xor esi, esi
lea ecx, [esp + 0x50]
push esi
call fcn.0060d6a0
mov eax, dword [eax + 4]
lea ecx, [eax + edi*4]
call fcn.00610330
test ax, ax
jle 0x66ed1e
push 0
lea ecx, [esp + 0x54]
call fcn.0060d6a0
mov eax, dword [eax + 4]
push esi
lea ecx, [eax + edi*4]
call fcn.00610190
mov byte [esp + ebx + 0x1bc], al
inc ebx
push 0
lea ecx, [esp + 0x54]
inc esi
call fcn.0060d6a0
mov eax, dword [eax + 4]
lea ecx, [eax + edi*4]
call fcn.00610330
movsx ecx, ax
cmp esi, ecx
jl 0x66ece1
inc edi
jmp 0x66eca7
mov edi, dword [esp + 0x14]
mov dword [esp + 0x1c], ebx
test edi, edi
jle 0x66ef63
lea ecx, [esp + 0x300]
call fcn.00653750
mov esi, eax
mov eax, dword [ebp + 0x130]
cmp eax, 0xffffffff
mov dword [esp + 0x20], esi
je 0x66ee1c
xor ebx, ebx
test eax, eax
jle 0x66ef63
mov eax, dword [esp + 0x20]
mov ecx, dword [esp + 0x1c]
cmp eax, ecx
jge 0x66ef63
mov ecx, dword [esp + 0x14]
test ecx, ecx
jle 0x66ed90
mov edx, ecx
lea esi, [esp + eax + 0x1bc]
lea edi, [esp + 0x2bc]
shr ecx, 2
rep movsd dword es:[edi], dword [esi]
mov ecx, edx
and ecx, 3
rep movsb byte es:[edi], byte [esi]
test ebx, ebx
jne 0x66eda0
cmp dword [esp + 0x30], 3
jne 0x66eda0
dec eax
mov dword [esp + 0x20], eax
mov al, byte [esp + 0x2bc]
cmp al, 0xff
jne 0x66edbb
cmp byte [esp + 0x2bd], 0xff
je 0x66ef63
jmp 0x66edce
test al, al
jne 0x66edce
mov al, byte [esp + 0x2bd]
test al, al
je 0x66ef63
push 0
lea ecx, [esp + 0x54]
call fcn.0060d6a0
mov eax, dword [eax + 4]
mov ecx, dword [esp + 0x14]
lea edx, [esp + 0x2bc]
lea eax, [eax + ebx*4]
push eax
push ebx
push ecx
push edx
mov ecx, ebp
call fcn.0066d8e0
mov edx, dword [esp + 0x20]
xor eax, eax
mov ax, word [ebp + 0x134]
add edx, eax
mov eax, dword [ebp + 0x130]
inc ebx
mov dword [esp + 0x20], edx
cmp ebx, eax
jl 0x66ed5c
jmp 0x66ef63
push 0
lea ecx, [esp + 0x54]
mov dword [esp + 0x28], 0
call fcn.0060d6a0
mov ecx, dword [eax + 4]
test ecx, ecx
je 0x66ef63
mov edx, dword [eax + 8]
sub edx, ecx
sar edx, 2
je 0x66ef63
add esi, edi
cmp esi, ebx
jge 0x66ef63
mov ebx, dword [esp + 0x20]
mov ecx, dword [esp + 0x14]
test ecx, ecx
jle 0x66ee7a
mov eax, ecx
lea esi, [esp + ebx + 0x1bc]
lea edi, [esp + 0x2d0]
shr ecx, 2
rep movsd dword es:[edi], dword [esi]
mov ecx, eax
and ecx, 3
rep movsb byte es:[edi], byte [esi]
mov eax, dword [esp + 0x24]
test eax, eax
jne 0x66ee8a
cmp dword [esp + 0x30], 3
jne 0x66ee8a
dec ebx
mov al, byte [esp + 0x2d0]
cmp al, 0xff
jne 0x66eea5
cmp byte [esp + 0x2d1], 0xff
je 0x66ef63
jmp 0x66eeb8
test al, al
jne 0x66eeb8
mov al, byte [esp + 0x2d1]
test al, al
je 0x66ef63
push 0
lea ecx, [esp + 0x54]
call fcn.0060d6a0
mov eax, dword [eax + 4]
mov esi, dword [esp + 0x24]
mov edi, dword [esp + 0x14]
lea edx, [esp + 0x2d0]
lea ecx, [eax + esi*4]
push ecx
push esi
push edi
push edx
mov ecx, ebp
call fcn.0066d8e0
cmp word [ebp + 0x134], 0
jne 0x66ef25
push 0
lea ecx, [esp + 0x54]
call fcn.0060d6a0
mov ecx, dword [eax + 4]
test ecx, ecx
je 0x66ef0b
mov eax, dword [eax + 8]
sub eax, ecx
and al, 0xfc
cmp eax, 4
je 0x66ef63
push 0
lea ecx, [esp + 0x54]
call fcn.0060d6a0
mov ecx, dword [eax + 4]
call fcn.00610330
mov word [ebp + 0x134], ax
xor ecx, ecx
push 0
mov cx, word [ebp + 0x134]
add ebx, ecx
lea ecx, [esp + 0x54]
call fcn.0060d6a0
mov ecx, dword [eax + 4]
call fcn.00610330
movsx ecx, ax
mov eax, ebx
cdq
idiv ecx
cmp eax, esi
jle 0x66ef54
inc esi
mov dword [esp + 0x24], esi
mov eax, dword [esp + 0x1c]
lea edx, [ebx + edi]
cmp edx, eax
jl 0x66ee56
mov eax, dword [esp + 0x14a4]
mov eax, dword [eax + 0x20]
cmp eax, 0xffffffff
je case.0x66e947.13
push eax
mov ecx, ebp
call fcn.0066d090
jmp case.0x66e947.13
lea ecx, [esp + 0x300]
call fcn.00653750
lea ecx, [esp + 0x80]
mov edi, eax
push ecx
lea ecx, [esp + 0x54]
mov dword [esp + 0x18], edi
call fcn.0060d6b0
lea ecx, [esp + 0x80]
mov byte [esp + 0x1498], 0x11
xor ebx, ebx
xor esi, esi
call fcn.00610330
test ax, ax
jle 0x66efeb
push esi
lea ecx, [esp + 0x84]
call fcn.00610190
mov byte [esp + esi + 0x1bc], al
lea ecx, [esp + 0x80]
inc esi
call fcn.00610330
movsx edx, ax
cmp esi, edx
jl 0x66efc3
lea ecx, [esp + 0x300]
call fcn.00653770
shr eax, 3
mov dword [esp + 0x20], eax
jne 0x66f029
mov ax, word [ebp + 0xfa]
cmp ax, bx
jbe 0x66f029
and eax, 0xffff
mov ecx, eax
mov eax, 0x38e38e39
imul ecx
sar edx, 1
mov eax, edx
shr eax, 0x1f
lea ecx, [edx + eax + 1]
mov dword [esp + 0x20], ecx
mov eax, dword [esp + 0x30]
sub eax, 4
je 0x66f28c
dec eax
je 0x66f147
sub eax, 2
jne 0x66f373
mov eax, dword [esp + 0x20]
cmp eax, ebx
jle 0x66f373
cmp dword [ebp + 0x130], 0xffffffff
je 0x66f0d1
cmp eax, ebx
mov dword [esp + 0x1c], ebx
jle 0x66f373
lea edi, [esp + edi + 0x1bc]
mov edx, dword [esp + 0x1c]
xor ebx, ebx
mov al, byte [edi + edx]
mov byte [esp + 0x13], al
mov dl, byte [esp + 0x13]
mov cl, bl
shr dl, cl
test dl, 1
je 0x66f0b5
mov al, byte [esp + 0x14]
mov cl, byte [esp + 0x1c]
add al, cl
push 0
push 0
lea ecx, [esp + 0x184]
push 2
push ecx
mov ecx, ebp
mov byte [esp + 0x18c], al
mov byte [esp + 0x18d], bl
call fcn.0066d8e0
inc ebx
cmp ebx, 8
jl 0x66f07b
mov eax, dword [esp + 0x1c]
mov ecx, dword [esp + 0x20]
inc eax
cmp eax, ecx
mov dword [esp + 0x1c], eax
jl 0x66f06e
jmp 0x66f373
cmp eax, ebx
mov dword [esp + 0x24], ebx
jle 0x66f373
lea edi, [esp + edi + 0x1bc]
mov edx, dword [esp + 0x24]
xor ebx, ebx
mov al, byte [edi + edx]
mov byte [esp + 0x13], al
mov dl, byte [esp + 0x13]
mov cl, bl
shr dl, cl
test dl, 1
je 0x66f12b
mov al, byte [esp + 0x24]
mov cl, byte [esp + 0x14]
add al, cl
push 0
push 0
lea ecx, [esp + 0x1b8]
push 2
push ecx
mov ecx, ebp
mov byte [esp + 0x1c0], al
mov byte [esp + 0x1c1], bl
call fcn.0066d8e0
inc ebx
cmp ebx, 8
jl 0x66f0f1
mov eax, dword [esp + 0x24]
mov ecx, dword [esp + 0x20]
inc eax
cmp eax, ecx
mov dword [esp + 0x24], eax
jl 0x66f0e4
jmp 0x66f373
mov eax, dword [esp + 0x20]
cmp eax, ebx
jle 0x66f373
cmp dword [ebp + 0x130], 0xffffffff
je 0x66f1f8
cmp eax, ebx
mov dword [esp + 0x1c], ebx
jle 0x66f373
lea esi, [esp + 0x1bc]
jmp 0x66f179
mov edi, dword [esp + 0x14]
mov edx, dword [esp + 0x1c]
lea eax, [edi + edx]
mov cl, byte [eax + esi]
and eax, 0x80000001
mov byte [esp + 0x13], cl
jns 0x66f193
dec eax
or eax, 0xfffffffe
inc eax
jne 0x66f1d2
xor ebx, ebx
mov dl, byte [esp + 0x13]
mov cl, bl
shr dl, cl
test dl, 1
je 0x66f1ca
mov al, byte [esp + 0x14]
mov dl, byte [esp + 0x1c]
add al, dl
mov cl, 0xa
imul cl
push 0
push 0
lea edx, [esp + 0x23]
add al, bl
push 1
push edx
mov ecx, ebp
mov byte [esp + 0x2b], al
call fcn.0066d8e0
inc ebx
cmp ebx, 8
jl 0x66f197
jmp 0x66f1e2
push 0
push 0
push 0x9901
mov ecx, ebp
call fcn.0066d150
mov eax, dword [esp + 0x1c]
mov ecx, dword [esp + 0x20]
inc eax
cmp eax, ecx
mov dword [esp + 0x1c], eax
jl 0x66f175
jmp 0x66f373
cmp eax, ebx
mov dword [esp + 0x24], ebx
jle 0x66f373
lea edi, [esp + 0x1bc]
mov eax, dword [esp + 0x14]
mov ecx, dword [esp + 0x24]
add eax, ecx
mov dl, byte [eax + edi]
and eax, 0x80000001
mov byte [esp + 0x1b], dl
jns 0x66f228
dec eax
or eax, 0xfffffffe
inc eax
jne 0x66f266
xor ebx, ebx
mov al, byte [esp + 0x1b]
mov cl, bl
shr al, cl
test al, 1
je 0x66f25e
mov al, byte [esp + 0x24]
mov dl, byte [esp + 0x14]
add al, dl
mov cl, 0xa
imul cl
push 0
push 0
lea edx, [esp + 0x1b]
add al, bl
push 1
push edx
mov ecx, ebp
mov byte [esp + 0x23], al
call fcn.0066d8e0
inc ebx
cmp ebx, 8
jl 0x66f22c
jmp 0x66f276
push 0
push 0
push 0x9901
mov ecx, ebp
call fcn.0066d150
mov eax, dword [esp + 0x24]
mov ecx, dword [esp + 0x20]
inc eax
cmp eax, ecx
mov dword [esp + 0x24], eax
jl 0x66f20b
jmp 0x66f373
mov eax, dword [esp + 0x20]
cmp eax, ebx
jle 0x66f373
cmp dword [ebp + 0x130], 0xffffffff
je 0x66f30d
cmp eax, ebx
mov dword [esp + 0x1c], ebx
jle 0x66f373
lea edi, [esp + edi + 0x1bc]
mov eax, dword [esp + 0x1c]
xor ebx, ebx
mov cl, byte [edi + eax]
mov byte [esp + 0x1b], cl
mov dl, byte [esp + 0x1b]
mov cl, bl
shr dl, cl
test dl, 1
je 0x66f2f4
mov al, byte [esp + 0x14]
mov dl, byte [esp + 0x1c]
add al, dl
mov cl, 0xa
imul cl
push 0
push 0
lea edx, [esp + 0x1b]
add al, bl
push 1
push edx
mov ecx, ebp
mov byte [esp + 0x23], al
call fcn.0066d8e0
inc ebx
cmp ebx, 8
jl 0x66f2c1
mov eax, dword [esp + 0x1c]
mov ecx, dword [esp + 0x20]
inc eax
cmp eax, ecx
mov dword [esp + 0x1c], eax
jl 0x66f2b4
jmp 0x66f373
cmp eax, ebx
mov dword [esp + 0x24], ebx
jle 0x66f373
lea edi, [esp + edi + 0x1bc]
mov eax, dword [esp + 0x24]
xor ebx, ebx
mov cl, byte [edi + eax]
mov byte [esp + 0x1b], cl
mov dl, byte [esp + 0x1b]
mov cl, bl
shr dl, cl
test dl, 1
je 0x66f35c
mov al, byte [esp + 0x24]
mov dl, byte [esp + 0x14]
add al, dl
mov cl, 0xa
imul cl
push 0
push 0
lea edx, [esp + 0x1b]
add al, bl
push 1
push edx
mov ecx, ebp
mov byte [esp + 0x23], al
call fcn.0066d8e0
inc ebx
cmp ebx, 8
jl 0x66f329
mov eax, dword [esp + 0x24]
mov ecx, dword [esp + 0x20]
inc eax
cmp eax, ecx
mov dword [esp + 0x24], eax
jl 0x66f31c
mov eax, dword [esp + 0x14a4]
mov eax, dword [eax + 0x20]
cmp eax, 0xffffffff
je 0x66f38a
push eax
mov ecx, ebp
call fcn.0066d090
mov byte [esp + 0x1498], 1
lea ecx, [esp + 0x80]
jmp 0x670db3
lea ecx, [esp + 0x88]
push ecx
lea ecx, [esp + 0x54]
call fcn.0060d6b0
lea ecx, [esp + 0x88]
mov byte [esp + 0x1498], 0x12
xor esi, esi
call fcn.00610330
test ax, ax
jle 0x66f3f2
push esi
lea ecx, [esp + 0x8c]
call fcn.00610190
mov byte [esp + esi + 0x1bc], al
lea ecx, [esp + 0x88]
inc esi
call fcn.00610330
movsx edx, ax
cmp esi, edx
jl 0x66f3ca
lea ecx, [esp + 0x300]
call fcn.00653770
shr eax, 3
mov dword [esp + 0x14], eax
jne 0x66f434
mov ax, word [ebp + 0xfa]
test ax, ax
jbe 0x66f5ec
and eax, 0xffff
mov ecx, eax
mov eax, 0x38e38e39
imul ecx
sar edx, 1
mov eax, edx
shr eax, 0x1f
lea eax, [edx + eax + 1]
mov dword [esp + 0x14], eax
test eax, eax
jle 0x66f5ec
lea ecx, [esp + 0x300]
call fcn.00653750
mov cl, byte [esp + 0x2b]
mov dword [esp + 0x20], eax
mov byte [esp + 0xd8], cl
mov edi, 0x71b8d8
or ecx, 0xffffffff
xor eax, eax
xor esi, esi
push 1
repne scasb al, byte es:[edi]
not ecx
dec ecx
mov dword [esp + 0xe0], esi
mov ebx, ecx
lea ecx, [esp + 0xdc]
push ebx
mov dword [esp + 0xe8], esi
mov dword [esp + 0xec], esi
call fcn.00414210
test al, al
je 0x66f4c2
mov edi, dword [esp + 0xdc]
mov ecx, ebx
mov edx, ecx
mov esi, 0x71b8d8
shr ecx, 2
rep movsd dword es:[edi], dword [esi]
mov ecx, edx
and ecx, 3
rep movsb byte es:[edi], byte [esi]
mov eax, dword [esp + 0xdc]
mov dword [esp + 0xe0], ebx
xor esi, esi
mov byte [eax + ebx], 0
mov eax, dword [esp + 0x14]
xor edi, edi
cmp eax, esi
jle 0x66f5a5
mov ecx, dword [esp + 0x20]
lea edx, [esp + ecx + 0x1bc]
mov dword [esp + 0x20], edx
mov eax, dword [esp + 0x20]
xor esi, esi
xor ebx, ebx
mov cl, byte [eax + edi]
mov byte [esp + 0x1b], cl
mov dl, byte [esp + 0x1b]
mov cl, bl
shr dl, cl
test dl, 1
je 0x66f58e
mov al, byte [esp + 0x2b]
mov dword [esp + 0xf0], esi
mov byte [esp + 0xec], al
mov dword [esp + 0xf4], esi
mov dword [esp + 0xf8], esi
lea ecx, [esp + 0xec]
mov byte [esp + 0x1498], 0x14
push ecx
lea ecx, [esp + 0x304]
call fcn.00653600
mov edx, dword [esp + 0xf0]
mov cl, bl
inc cl
push esi
mov al, byte [edx]
push esi
lea edx, [esp + 0x2ec]
mov byte [esp + 0x2ed], cl
push 2
push edx
mov ecx, ebp
mov byte [esp + 0x2f4], al
call fcn.0066d8e0
mov eax, dword [esp + 0xf0]
push eax
call fcn.00697880
add esp, 4
mov dword [esp + 0xf0], esi
mov dword [esp + 0xf4], esi
mov dword [esp + 0xf8], esi
inc ebx
cmp ebx, 8
jl 0x66f4ee
mov eax, dword [esp + 0x14]
inc edi
cmp edi, eax
jl 0x66f4df
mov eax, dword [esp + 0xdc]
xor esi, esi
cmp eax, esi
mov byte [esp + 0x1498], 0x12
je 0x66f5d7
lea ecx, [eax - 1]
mov al, byte [eax - 1]
test al, al
je 0x66f5ce
cmp al, 0xff
je 0x66f5ce
dec al
mov byte [ecx], al
jmp 0x66f5d7
push ecx
call fcn.00697880
add esp, 4
mov dword [esp + 0xdc], esi
mov dword [esp + 0xe0], esi
mov dword [esp + 0xe4], esi
mov ecx, dword [esp + 0x14a4]
mov eax, dword [ecx + 0x20]
cmp eax, 0xffffffff
je 0x66f603
push eax
mov ecx, ebp
call fcn.0066d090
mov byte [esp + 0x1498], 1
lea ecx, [esp + 0x88]
jmp 0x670db3
cmp dword [ebp + 0x130], edi
je 0x670ef2
mov byte [esp + 0xb4], 1
lea edx, [esp + 0x40]
lea ecx, [esp + 0x50]
push edx
call fcn.0060d6b0
lea ecx, [esp + 0x40]
mov byte [esp + 0x1498], 0x15
call fcn.00610330
test ax, ax
jle 0x66f720
lea ecx, [esp + 0x40]
xor esi, esi
call fcn.00610330
test ax, ax
jle 0x66f685
push esi
lea ecx, [esp + 0x44]
call fcn.00610190
mov byte [esp + esi + 0x1bc], al
lea ecx, [esp + 0x40]
inc esi
call fcn.00610330
movsx eax, ax
cmp esi, eax
jl 0x66f663
lea ecx, [esp + 0x300]
call fcn.00653770
mov ebx, eax
shr ebx, 3
jne 0x66f6bd
mov ax, word [ebp + 0xfa]
test ax, ax
jbe 0x66f720
and eax, 0xffff
mov ecx, eax
mov eax, 0x38e38e39
imul ecx
sar edx, 1
mov ecx, edx
shr ecx, 0x1f
lea ebx, [edx + ecx + 1]
test ebx, ebx
jle 0x66f720
lea ecx, [esp + 0x300]
call fcn.00653750
mov esi, eax
mov eax, dword [ebp + 0x130]
test eax, eax
jle 0x66f720
xor edi, edi
test eax, eax
jle 0x66f720
push 0
push edi
lea edx, [esp + esi + 0x1c4]
push ebx
push edx
mov ecx, ebp
call fcn.0066d8e0
mov ax, word [ebp + 0x134]
test ax, ax
je 0x66f720
and eax, 0xffff
lea ecx, [esp + 0x40]
add esi, eax
call fcn.00610330
movsx eax, ax
cmp esi, eax
jg 0x66f720
mov eax, dword [ebp + 0x130]
inc edi
cmp edi, eax
jl 0x66f6df
mov ecx, dword [esp + 0xb4]
mov eax, dword [ebp + 0x130]
and ecx, 0xff
cmp ecx, eax
jge 0x66f867
mov dl, byte [esp + 0x2b]
xor esi, esi
mov byte [esp + 0x8c], dl
mov dword [esp + 0x90], esi
mov dword [esp + 0x94], esi
mov dword [esp + 0x98], esi
lea eax, [esp + 0x8c]
lea ecx, [esp + 0x300]
push eax
mov byte [esp + 0x149c], 0x16
call fcn.00653600
mov ecx, dword [esp + 0x90]
cmp ecx, esi
jne 0x66f788
xor eax, eax
jmp 0x66f791
mov eax, dword [esp + 0x94]
sub eax, ecx
mov bl, byte [ecx + eax - 1]
inc bl
mov byte [ecx + eax - 1], bl
lea ecx, [esp + 0x8c]
push ecx
lea ecx, [esp + 0x304]
call fcn.00653430
mov cl, byte [esp + 0xb4]
lea edx, [esp + 0x50]
push esi
inc cl
push edx
lea eax, [esp + 0x84]
push 3
mov byte [esp + 0xc0], cl
push eax
push esi
lea ecx, [esp + 0x1d0]
push esi
lea edx, [esp + 0x318]
push ecx
mov ecx, dword [ebp + 0xd4]
push edx
call fcn.006462e0
cmp eax, 1
je 0x66f82c
cmp eax, 0xffffffff
jne 0x670f1d
mov eax, dword [esp + 0x90]
mov byte [esp + 0x1498], 0x15
push eax
call fcn.00697880
add esp, 4
mov dword [esp + 0x90], esi
mov dword [esp + 0x94], esi
mov dword [esp + 0x98], esi
jmp 0x66f720
mov ecx, dword [esp + 0x90]
push ecx
call fcn.00697880
add esp, 4
lea ecx, [esp + 0x40]
mov dword [esp + 0x90], esi
mov dword [esp + 0x94], esi
mov dword [esp + 0x98], esi
mov byte [esp + 0x1498], 1
call fcn.0060ffb0
jmp 0x66f62b
mov edx, dword [esp + 0x14a4]
mov eax, dword [edx + 0x20]
cmp eax, 0xffffffff
je 0x66f87e
push eax
mov ecx, ebp
call fcn.0066d090
mov byte [esp + 0x1498], 1
lea ecx, [esp + 0x40]
jmp 0x670db3
lea eax, [esp + 0x34]
lea ecx, [esp + 0x50]
push eax
call fcn.0060d6b0
xor ebx, ebx
lea ecx, [esp + 0x34]
mov byte [esp + 0x1498], 0x17
mov dword [esp + 0x24], ebx
call fcn.00610330
test ax, ax
jle 0x66f8df
push ebx
lea ecx, [esp + 0x38]
call fcn.00610190
mov byte [esp + ebx + 0x1bc], al
lea ecx, [esp + 0x34]
inc ebx
call fcn.00610330
movsx ecx, ax
cmp ebx, ecx
jl 0x66f8b9
mov dword [esp + 0x24], ebx
lea ecx, [esp + 0x300]
call fcn.00653770
mov edi, eax
shr edi, 3
mov dword [esp + 0x14], edi
jne 0x66f923
mov ax, word [ebp + 0xfa]
test ax, ax
jbe 0x67037b
and eax, 0xffff
mov ecx, eax
mov eax, 0x38e38e39
imul ecx
sar edx, 1
mov eax, edx
shr eax, 0x1f
lea edi, [edx + eax + 1]
mov dword [esp + 0x14], edi
test edi, edi
jle 0x67037b
lea ecx, [esp + 0x300]
call fcn.00653750
mov ecx, eax
mov eax, esi
sub eax, 0x14
mov dword [esp + 0x1c], ecx
je 0x670033
dec eax
je 0x66fcd0
dec eax
jne 0x67037b
mov eax, dword [0x71d638]
test eax, eax
jne 0x66fb0d
mov dl, 0x10
cmp ecx, ebx
mov dword [0x71d638], 1
mov byte [esp + 0x13], dl
jge 0x67037b
jmp 0x66f981
mov edi, dword [esp + 0x14]
cmp edi, 2
jne 0x66f99f
movzx ax, byte [esp + ecx + 0x1bc]
movzx si, byte [esp + ecx + 0x1bd]
shl eax, 8
add eax, esi
jmp 0x66f9b1
cmp edi, 1
jne 0x670f8f
movzx ax, byte [esp + ecx + 0x1bc]
test ax, ax
jne 0x66f9e2
mov eax, dword [ebp + 0x38]
test eax, eax
je 0x67037b
mov edx, dword [ebp + 0x3c]
sub edx, eax
mov eax, 0x6bca1af3
imul edx
sar edx, 5
mov eax, edx
shr eax, 0x1f
add edx, eax
je 0x67037b
jmp 0x66fae3
movzx si, dl
sub dl, 0x10
push 0
and edx, 0xff
mov ecx, ebp
push edx
push esi
call fcn.0066d150
and esi, 0xffff
lea ecx, [esp + 0xac]
push esi
push 0x70350c
push ecx
call fcn.00698355
mov eax, dword [ebp + 0x38]
add esp, 0xc
test eax, eax
jne 0x66fa21
xor edx, edx
jmp 0x66fa37
mov ecx, dword [ebp + 0x3c]
sub ecx, eax
mov eax, 0x6bca1af3
imul ecx
sar edx, 5
mov eax, edx
shr eax, 0x1f
add edx, eax
mov eax, dword [ebp + 0x38]
lea ecx, [edx + edx*8]
lea edi, [esp + 0xac]
lea edx, [edx + ecx*2]
or ecx, 0xffffffff
lea esi, [eax + edx*4 - 0x4c]
xor eax, eax
repne scasb al, byte es:[edi]
not ecx
dec ecx
mov dword [esp + 0x20], esi
mov ebx, ecx
cmp ebx, 0xfffffffd
jbe 0x66fa65
call fcn.0069788b
mov ecx, dword [esi + 4]
test ecx, ecx
je 0x66fa8a
mov al, byte [ecx - 1]
test al, al
je 0x66fa8a
cmp al, 0xff
je 0x66fa8a
test ebx, ebx
jne 0x66faae
dec al
push ebx
mov byte [ecx - 1], al
mov ecx, esi
call fcn.004138a0
jmp 0x66fadf
test ebx, ebx
jne 0x66fa99
push 1
mov ecx, esi
call fcn.004138a0
jmp 0x66fadf
mov eax, dword [esi + 0xc]
cmp eax, 0x1f
ja 0x66faa5
cmp eax, ebx
jae 0x66fab6
push 1
mov ecx, esi
call fcn.004138a0
push ebx
mov ecx, esi
call fcn.00414870
mov eax, dword [esp + 0x20]
mov ecx, ebx
mov edx, ecx
lea esi, [esp + 0xac]
mov edi, dword [eax + 4]
shr ecx, 2
rep movsd dword es:[edi], dword [esi]
mov ecx, edx
and ecx, 3
rep movsb byte es:[edi], byte [esi]
mov ecx, dword [eax + 4]
mov dword [eax + 8], ebx
add ebx, ecx
mov byte [ebx], 0
mov ecx, dword [esp + 0x1c]
mov dl, byte [esp + 0x13]
xor eax, eax
mov ax, word [ebp + 0x134]
inc dl
add ecx, eax
mov eax, dword [esp + 0x24]
cmp ecx, eax
mov byte [esp + 0x13], dl
mov dword [esp + 0x1c], ecx
jl 0x66f97d
jmp 0x67037b
cmp eax, 1
jne 0x67037b
mov eax, dword [ebp + 0x38]
test eax, eax
je 0x67037b
mov edx, dword [ebp + 0x3c]
sub edx, eax
mov eax, 0x6bca1af3
imul edx
sar edx, 5
mov eax, edx
shr eax, 0x1f
add edx, eax
je 0x67037b
xor dl, dl
mov dword [0x71d638], 0
mov byte [esp + 0x9c], dl
jmp 0x66fb5a
mov ebx, dword [esp + 0x24]
mov edi, dword [esp + 0x14]
cmp ecx, ebx
jge 0x67037b
cmp edi, 2
jne 0x66fb80
movzx ax, byte [esp + ecx + 0x1bc]
movzx si, byte [esp + ecx + 0x1bd]
shl eax, 8
add eax, esi
jmp 0x66fb92
cmp edi, 1
jne 0x670f8f
movzx ax, byte [esp + ecx + 0x1bc]
test ax, ax
je 0x66fca3
mov ecx, dword [esp + 0x9c]
add dl, 0x20
movzx si, dl
and ecx, 0xff
push 0
push ecx
push esi
mov ecx, ebp
call fcn.0066d150
and esi, 0xffff
lea edx, [esp + 0x10c]
push esi
push 0x70350c
push edx
call fcn.00698355
mov eax, dword [ebp + 0x38]
add esp, 0xc
test eax, eax
jne 0x66fbe1
xor edx, edx
jmp 0x66fbf7
mov ecx, dword [ebp + 0x3c]
sub ecx, eax
mov eax, 0x6bca1af3
imul ecx
sar edx, 5
mov eax, edx
shr eax, 0x1f
add edx, eax
mov eax, dword [ebp + 0x38]
lea ecx, [edx + edx*8]
lea edi, [esp + 0x10c]
lea edx, [edx + ecx*2]
or ecx, 0xffffffff
lea esi, [eax + edx*4 - 0x4c]
xor eax, eax
repne scasb al, byte es:[edi]
not ecx
dec ecx
mov dword [esp + 0x20], esi
mov ebx, ecx
cmp ebx, 0xfffffffd
jbe 0x66fc25
call fcn.0069788b
mov ecx, dword [esi + 4]
test ecx, ecx
je 0x66fc4a
mov al, byte [ecx - 1]
test al, al
je 0x66fc4a
cmp al, 0xff
je 0x66fc4a
test ebx, ebx
jne 0x66fc6e
dec al
push ebx
mov byte [ecx - 1], al
mov ecx, esi
call fcn.004138a0
jmp 0x66fc9f
test ebx, ebx
jne 0x66fc59
push 1
mov ecx, esi
call fcn.004138a0
jmp 0x66fc9f
mov eax, dword [esi + 0xc]
cmp eax, 0x1f
ja 0x66fc65
cmp eax, ebx
jae 0x66fc76
push 1
mov ecx, esi
call fcn.004138a0
push ebx
mov ecx, esi
call fcn.00414870
mov eax, dword [esp + 0x20]
mov ecx, ebx
mov edx, ecx
lea esi, [esp + 0x10c]
mov edi, dword [eax + 4]
shr ecx, 2
rep movsd dword es:[edi], dword [esi]
mov ecx, edx
and ecx, 3
rep movsb byte es:[edi], byte [esi]
mov ecx, dword [eax + 4]
mov dword [eax + 8], ebx
add ebx, ecx
mov byte [ebx], 0
mov ecx, dword [esp + 0x1c]
mov dl, byte [esp + 0x9c]
xor eax, eax
mov ax, word [ebp + 0x134]
add ecx, eax
inc dl
cmp dl, 0xff
mov dword [esp + 0x1c], ecx
mov byte [esp + 0x9c], dl
jb 0x66fb52
jmp 0x67037b
mov eax, dword [0x71d638]
test eax, eax
jne 0x66fe96
xor dl, dl
mov dword [0x71d638], 1
mov byte [esp + 0x13], dl
mov byte [esp + 0xb0], dl
jmp 0x66fd02
mov ebx, dword [esp + 0x24]
mov dl, byte [esp + 0x13]
mov edi, dword [esp + 0x14]
cmp ecx, ebx
jge 0x67037b
cmp edi, 2
jne 0x66fd28
movzx ax, byte [esp + ecx + 0x1bc]
movzx si, byte [esp + ecx + 0x1bd]
shl eax, 8
add eax, esi
jmp 0x66fd3a
cmp edi, 1
jne 0x670f8f
movzx ax, byte [esp + ecx + 0x1bc]
cmp ax, 1
jbe 0x66fe57
test dl, dl
jne 0x66fd52
cmp ax, 0x10
sbb esi, esi
neg esi
jmp 0x66fd56
movzx si, dl
mov ecx, dword [esp + 0xb0]
push 0
and ecx, 0xff
push ecx
push esi
mov ecx, ebp
call fcn.0066d150
and esi, 0xffff
lea edx, [esp + 0xd0]
push esi
push 0x70350c
push edx
call fcn.00698355
mov eax, dword [ebp + 0x38]
add esp, 0xc
test eax, eax
jne 0x66fd95
xor edx, edx
jmp 0x66fdab
mov ecx, dword [ebp + 0x3c]
sub ecx, eax
mov eax, 0x6bca1af3
imul ecx
sar edx, 5
mov eax, edx
shr eax, 0x1f
add edx, eax
mov eax, dword [ebp + 0x38]
lea ecx, [edx + edx*8]
lea edi, [esp + 0xd0]
lea edx, [edx + ecx*2]
or ecx, 0xffffffff
lea esi, [eax + edx*4 - 0x4c]
xor eax, eax
repne scasb al, byte es:[edi]
not ecx
dec ecx
mov dword [esp + 0x20], esi
mov ebx, ecx
cmp ebx, 0xfffffffd
jbe 0x66fdd9
call fcn.0069788b
mov ecx, dword [esi + 4]
test ecx, ecx
je 0x66fdfe
mov al, byte [ecx - 1]
test al, al
je 0x66fdfe
cmp al, 0xff
je 0x66fdfe
test ebx, ebx
jne 0x66fe22
dec al
push ebx
mov byte [ecx - 1], al
mov ecx, esi
call fcn.004138a0
jmp 0x66fe53
test ebx, ebx
jne 0x66fe0d
push 1
mov ecx, esi
call fcn.004138a0
jmp 0x66fe53
mov eax, dword [esi + 0xc]
cmp eax, 0x1f
ja 0x66fe19
cmp eax, ebx
jae 0x66fe2a
push 1
mov ecx, esi
call fcn.004138a0
push ebx
mov ecx, esi
call fcn.00414870
mov eax, dword [esp + 0x20]
mov ecx, ebx
mov edx, ecx
lea esi, [esp + 0xd0]
mov edi, dword [eax + 4]
shr ecx, 2
rep movsd dword es:[edi], dword [esi]
mov ecx, edx
and ecx, 3
rep movsb byte es:[edi], byte [esi]
mov ecx, dword [eax + 4]
mov dword [eax + 8], ebx
add ebx, ecx
mov byte [ebx], 0
mov ecx, dword [esp + 0x1c]
mov al, byte [esp + 0x13]
test al, al
jne 0x66fe66
mov byte [esp + 0x13], 2
jmp 0x66fe6a
inc byte [esp + 0x13]
xor eax, eax
mov ax, word [ebp + 0x134]
add ecx, eax
mov al, byte [esp + 0xb0]
inc al
mov dword [esp + 0x1c], ecx
cmp al, 8
mov byte [esp + 0xb0], al
jb 0x66fcf6
jmp 0x67037b
cmp eax, 1
jne 0x67037b
xor dl, dl
mov dword [0x71d638], 0
mov byte [esp + 0xc0], dl
jmp 0x66febc
mov ebx, dword [esp + 0x24]
mov edi, dword [esp + 0x14]
cmp ecx, ebx
jge 0x67037b
cmp edi, 2
jne 0x66fee2
movzx ax, byte [esp + ecx + 0x1bc]
movzx si, byte [esp + ecx + 0x1bd]
shl eax, 8
add eax, esi
jmp 0x66fef4
cmp edi, 1
jne 0x670f8f
movzx ax, byte [esp + ecx + 0x1bc]
cmp ax, 1
jbe 0x670006
mov ecx, dword [esp + 0xc0]
add dl, 9
movzx si, dl
and ecx, 0xff
push 0
push ecx
push esi
mov ecx, ebp
call fcn.0066d150
and esi, 0xffff
lea edx, [esp + 0x104]
push esi
push 0x70350c
push edx
call fcn.00698355
mov eax, dword [ebp + 0x38]
add esp, 0xc
test eax, eax
jne 0x66ff44
xor edx, edx
jmp 0x66ff5a
mov ecx, dword [ebp + 0x3c]
sub ecx, eax
mov eax, 0x6bca1af3
imul ecx
sar edx, 5
mov eax, edx
shr eax, 0x1f
add edx, eax
mov eax, dword [ebp + 0x38]
lea ecx, [edx + edx*8]
lea edi, [esp + 0x104]
lea edx, [edx + ecx*2]
or ecx, 0xffffffff
lea esi, [eax + edx*4 - 0x4c]
xor eax, eax
repne scasb al, byte es:[edi]
not ecx
dec ecx
mov dword [esp + 0x20], esi
mov ebx, ecx
cmp ebx, 0xfffffffd
jbe 0x66ff88
call fcn.0069788b
mov ecx, dword [esi + 4]
test ecx, ecx
je 0x66ffad
mov al, byte [ecx - 1]
test al, al
je 0x66ffad
cmp al, 0xff
je 0x66ffad
test ebx, ebx
jne 0x66ffd1
dec al
push ebx
mov byte [ecx - 1], al
mov ecx, esi
call fcn.004138a0
jmp 0x670002
test ebx, ebx
jne 0x66ffbc
push 1
mov ecx, esi
call fcn.004138a0
jmp 0x670002
mov eax, dword [esi + 0xc]
cmp eax, 0x1f
ja 0x66ffc8
cmp eax, ebx
jae 0x66ffd9
push 1
mov ecx, esi
call fcn.004138a0
push ebx
mov ecx, esi
call fcn.00414870
mov eax, dword [esp + 0x20]
mov ecx, ebx
mov edx, ecx
lea esi, [esp + 0x104]
mov edi, dword [eax + 4]
shr ecx, 2
rep movsd dword es:[edi], dword [esi]
mov ecx, edx
and ecx, 3
rep movsb byte es:[edi], byte [esi]
mov ecx, dword [eax + 4]
mov dword [eax + 8], ebx
add ebx, ecx
mov byte [ebx], 0
mov ecx, dword [esp + 0x1c]
mov dl, byte [esp + 0xc0]
xor eax, eax
mov ax, word [ebp + 0x134]
add ecx, eax
inc dl
cmp dl, 8
mov dword [esp + 0x1c], ecx
mov byte [esp + 0xc0], dl
jb 0x66feb4
jmp 0x67037b
mov eax, dword [0x71d638]
test eax, eax
jne 0x6701e4
mov dl, 1
mov dword [0x71d638], 1
mov byte [esp + 0x13], dl
mov byte [esp + 0xb8], al
jmp 0x670061
mov ebx, dword [esp + 0x24]
mov edi, dword [esp + 0x14]
cmp ecx, ebx
jge 0x67037b
cmp edi, 2
jne 0x670087
movzx ax, byte [esp + ecx + 0x1bc]
movzx si, byte [esp + ecx + 0x1bd]
shl eax, 8
add eax, esi
jmp 0x670099
cmp edi, 1
jne 0x670f8f
movzx ax, byte [esp + ecx + 0x1bc]
test ax, ax
je 0x6701ae
cmp dl, 9
movzx si, dl
jne 0x6700ad
xor esi, esi
mov ecx, dword [esp + 0xb8]
push 0
and ecx, 0xff
push ecx
push esi
mov ecx, ebp
call fcn.0066d150
and esi, 0xffff
lea edx, [esp + 0xcc]
push esi
push 0x70350c
push edx
call fcn.00698355
mov eax, dword [ebp + 0x38]
add esp, 0xc
test eax, eax
jne 0x6700ec
xor edx, edx
jmp 0x670102
mov ecx, dword [ebp + 0x3c]
sub ecx, eax
mov eax, 0x6bca1af3
imul ecx
sar edx, 5
mov eax, edx
shr eax, 0x1f
add edx, eax
mov eax, dword [ebp + 0x38]
lea ecx, [edx + edx*8]
lea edi, [esp + 0xcc]
lea edx, [edx + ecx*2]
or ecx, 0xffffffff
lea esi, [eax + edx*4 - 0x4c]
xor eax, eax
repne scasb al, byte es:[edi]
not ecx
dec ecx
mov dword [esp + 0x20], esi
mov ebx, ecx
cmp ebx, 0xfffffffd
jbe 0x670130
call fcn.0069788b
mov ecx, dword [esi + 4]
test ecx, ecx
je 0x670155
mov al, byte [ecx - 1]
test al, al
je 0x670155
cmp al, 0xff
je 0x670155
test ebx, ebx
jne 0x670179
dec al
push ebx
mov byte [ecx - 1], al
mov ecx, esi
call fcn.004138a0
jmp 0x6701aa
test ebx, ebx
jne 0x670164
push 1
mov ecx, esi
call fcn.004138a0
jmp 0x6701aa
mov eax, dword [esi + 0xc]
cmp eax, 0x1f
ja 0x670170
cmp eax, ebx
jae 0x670181
push 1
mov ecx, esi
call fcn.004138a0
push ebx
mov ecx, esi
call fcn.00414870
mov eax, dword [esp + 0x20]
mov ecx, ebx
mov edx, ecx
lea esi, [esp + 0xcc]
mov edi, dword [eax + 4]
shr ecx, 2
rep movsd dword es:[edi], dword [esi]
mov ecx, edx
and ecx, 3
rep movsb byte es:[edi], byte [esi]
mov ecx, dword [eax + 4]
mov dword [eax + 8], ebx
add ebx, ecx
mov byte [ebx], 0
mov ecx, dword [esp + 0x1c]
mov dl, byte [esp + 0x13]
xor eax, eax
mov ax, word [ebp + 0x134]
inc dl
add ecx, eax
mov al, byte [esp + 0xb8]
inc al
mov byte [esp + 0x13], dl
cmp al, 9
mov dword [esp + 0x1c], ecx
mov byte [esp + 0xb8], al
jb 0x670059
jmp 0x67037b
cmp eax, 1
jne 0x67037b
xor dl, dl
mov dword [0x71d638], 0
mov byte [esp + 0xa4], dl
jmp 0x67020a
mov ebx, dword [esp + 0x24]
mov edi, dword [esp + 0x14]
cmp ecx, ebx
jge 0x67037b
cmp edi, 2
jne 0x670230
movzx ax, byte [esp + ecx + 0x1bc]
movzx si, byte [esp + ecx + 0x1bd]
shl eax, 8
add eax, esi
jmp 0x670242
cmp edi, 1
jne 0x670f8f
movzx ax, byte [esp + ecx + 0x1bc]
test ax, ax
je 0x670353
mov ecx, dword [esp + 0xa4]
add dl, 9
movzx si, dl
and ecx, 0xff
push 0
push ecx
push esi
mov ecx, ebp
call fcn.0066d150
and esi, 0xffff
lea edx, [esp + 0xfc]
push esi
push 0x70350c
push edx
call fcn.00698355
mov eax, dword [ebp + 0x38]
add esp, 0xc
test eax, eax
jne 0x670291
xor edx, edx
jmp 0x6702a7
mov ecx, dword [ebp + 0x3c]
sub ecx, eax
mov eax, 0x6bca1af3
imul ecx
sar edx, 5
mov eax, edx
shr eax, 0x1f
add edx, eax
lea ecx, [edx + edx*8]
lea edi, [esp + 0xfc]
xor eax, eax
mov ebx, dword [ebp + 0x38]
lea edx, [edx + ecx*2]
or ecx, 0xffffffff
repne scasb al, byte es:[edi]
not ecx
dec ecx
lea ebx, [ebx + edx*4 - 0x4c]
mov esi, ecx
cmp esi, 0xfffffffd
mov dword [esp + 0x20], esi
jbe 0x6702d5
call fcn.0069788b
mov ecx, dword [ebx + 4]
test ecx, ecx
je 0x6702fa
mov al, byte [ecx - 1]
test al, al
je 0x6702fa
cmp al, 0xff
je 0x6702fa
test esi, esi
jne 0x67031e
dec al
push esi
mov byte [ecx - 1], al
mov ecx, ebx
call fcn.004138a0
jmp 0x67034f
test esi, esi
jne 0x670309
push 1
mov ecx, ebx
call fcn.004138a0
jmp 0x67034f
mov eax, dword [ebx + 0xc]
cmp eax, 0x1f
ja 0x670315
cmp eax, esi
jae 0x670326
push 1
mov ecx, ebx
call fcn.004138a0
push esi
mov ecx, ebx
call fcn.00414870
mov eax, dword [esp + 0x20]
mov edi, dword [ebx + 4]
mov ecx, eax
lea esi, [esp + 0xfc]
mov edx, ecx
shr ecx, 2
rep movsd dword es:[edi], dword [esi]
mov ecx, edx
and ecx, 3
rep movsb byte es:[edi], byte [esi]
mov dword [ebx + 8], eax
mov ebx, dword [ebx + 4]
add ebx, eax
mov byte [ebx], 0
mov ecx, dword [esp + 0x1c]
mov dl, byte [esp + 0xa4]
xor eax, eax
mov ax, word [ebp + 0x134]
add ecx, eax
inc dl
cmp dl, 6
mov dword [esp + 0x1c], ecx
mov byte [esp + 0xa4], dl
jb 0x670202
mov ecx, dword [esp + 0x14a4]
mov eax, dword [ecx + 0x20]
cmp eax, 0xffffffff
je 0x670392
push eax
mov ecx, ebp
call fcn.0066d090
mov byte [esp + 0x1498], 1
lea ecx, [esp + 0x34]
jmp 0x670db3
lea edx, [esp + 0x74]
lea ecx, [esp + 0x50]
push edx
call fcn.0060d6b0
xor ebx, ebx
lea ecx, [esp + 0x74]
mov byte [esp + 0x1498], 0x18
mov dword [esp + 0x24], ebx
call fcn.00610330
test ax, ax
jle 0x6703f3
push ebx
lea ecx, [esp + 0x78]
call fcn.00610190
mov byte [esp + ebx + 0x1bc], al
lea ecx, [esp + 0x74]
inc ebx
call fcn.00610330
movsx eax, ax
cmp ebx, eax
jl 0x6703cd
mov dword [esp + 0x24], ebx
lea ecx, [esp + 0x300]
call fcn.00653770
shr eax, 3
jne 0x67042d
mov ax, word [ebp + 0xfa]
test ax, ax
jbe 0x670fcf
and eax, 0xffff
mov ecx, eax
mov eax, 0x38e38e39
imul ecx
sar edx, 1
mov ecx, edx
shr ecx, 0x1f
lea eax, [edx + ecx + 1]
cmp eax, 2
jne 0x670fcf
lea ecx, [esp + 0x300]
call fcn.00653750
mov edi, eax
mov dword [esp + 0x20], 0
cmp edi, ebx
mov dword [esp + 0x14], edi
jge 0x670624
mov al, byte [esp + edi + 0x1bc]
lea esi, [esp + edi + 0x1bc]
cmp al, 0x40
jbe 0x67058b
cmp al, 0xa0
je 0x67048c
and eax, 0xff
sub eax, 0x40
and eax, 0x8000001f
jns 0x670486
dec eax
or eax, 0xffffffe0
inc eax
je 0x67058b
mov edx, dword [esp + 0x20]
push 0
push edx
push 1
push esi
mov ecx, ebp
call fcn.0066d8e0
xor eax, eax
lea ecx, [esp + 0xc4]
mov al, byte [esi]
push eax
push 0x70350c
push ecx
call fcn.00698355
mov eax, dword [ebp + 0x38]
add esp, 0xc
test eax, eax
jne 0x6704c2
xor edx, edx
jmp 0x6704d8
mov ecx, dword [ebp + 0x3c]
sub ecx, eax
mov eax, 0x6bca1af3
imul ecx
sar edx, 5
mov eax, edx
shr eax, 0x1f
add edx, eax
mov eax, dword [ebp + 0x38]
lea ecx, [edx + edx*8]
lea edi, [esp + 0xc4]
lea edx, [edx + ecx*2]
or ecx, 0xffffffff
lea esi, [eax + edx*4 - 0x4c]
xor eax, eax
repne scasb al, byte es:[edi]
not ecx
dec ecx
mov dword [esp + 0x1c], esi
mov ebx, ecx
cmp ebx, 0xfffffffd
jbe 0x670506
call fcn.0069788b
mov edx, dword [esi + 4]
xor ecx, ecx
cmp edx, ecx
je 0x67052e
mov al, byte [edx - 1]
test al, al
je 0x67052e
cmp al, 0xff
je 0x67052e
cmp ebx, ecx
jne 0x670552
dec al
mov byte [edx - 1], al
mov dword [esi + 4], ecx
mov dword [esi + 8], ecx
mov dword [esi + 0xc], ecx
jmp 0x670583
cmp ebx, ecx
jne 0x67053d
push 1
mov ecx, esi
call fcn.004138a0
jmp 0x670583
mov eax, dword [esi + 0xc]
cmp eax, 0x1f
ja 0x670549
cmp eax, ebx
jae 0x67055a
push 1
mov ecx, esi
call fcn.004138a0
push ebx
mov ecx, esi
call fcn.00414870
mov eax, dword [esp + 0x1c]
mov ecx, ebx
mov edx, ecx
lea esi, [esp + 0xc4]
mov edi, dword [eax + 4]
shr ecx, 2
rep movsd dword es:[edi], dword [esi]
mov ecx, edx
and ecx, 3
rep movsb byte es:[edi], byte [esi]
mov ecx, dword [eax + 4]
mov dword [eax + 8], ebx
add ebx, ecx
mov byte [ebx], 0
mov edi, dword [esp + 0x14]
mov ebx, dword [esp + 0x24]
mov al, byte [esp + edi + 0x1bd]
lea esi, [esp + edi + 0x1bd]
cmp al, 0x40
jbe 0x670604
cmp al, 0xa0
je 0x6705b7
and eax, 0xff
sub eax, 0x40
and eax, 0x8000001f
jns 0x6705b5
dec eax
or eax, 0xffffffe0
inc eax
je 0x670604
mov eax, dword [esp + 0x20]
push 0
push eax
push 1
push esi
mov ecx, ebp
call fcn.0066d8e0
xor ecx, ecx
lea edx, [esp + 0xc4]
mov cl, byte [esi]
push ecx
push 0x70350c
push edx
call fcn.00698355
add esp, 0xc
lea esi, [ebp + 0x34]
lea eax, [esp + 0xc4]
mov ecx, esi
push eax
call fcn.00672980
dec eax
mov ecx, esi
push eax
call fcn.006729b0
mov ecx, eax
call fcn.004c2200
xor ecx, ecx
mov cx, word [ebp + 0x134]
add edi, ecx
mov ecx, dword [esp + 0x20]
inc ecx
cmp edi, ebx
mov dword [esp + 0x14], edi
mov dword [esp + 0x20], ecx
jl 0x670458
mov byte [esp + 0x1498], 1
lea ecx, [esp + 0x74]
jmp 0x670db3
lea edx, [esp + 0x4c]
lea ecx, [esp + 0x50]
push edx
call fcn.0060d6b0
lea ecx, [esp + 0x4c]
mov byte [esp + 0x1498], 0x19
xor esi, esi
call fcn.00610330
test ax, ax
jle 0x67067d
push esi
lea ecx, [esp + 0x50]
call fcn.00610190
mov byte [esp + esi + 0x1bc], al
lea ecx, [esp + 0x4c]
inc esi
call fcn.00610330
movsx eax, ax
cmp esi, eax
jl 0x67065b
lea ecx, [esp + 0x300]
call fcn.00653770
mov ebx, eax
shr ebx, 3
mov dword [esp + 0x14], ebx
jne 0x6706c3
mov ax, word [ebp + 0xfa]
test ax, ax
jbe 0x6707d0
and eax, 0xffff
mov ecx, eax
mov eax, 0x38e38e39
imul ecx
sar edx, 1
mov ecx, edx
shr ecx, 0x1f
lea edx, [edx + ecx + 1]
mov dword [esp + 0x14], edx
mov ebx, edx
test ebx, ebx
jle 0x6707d0
lea ecx, [esp + 0x300]
call fcn.00653750
cmp word [ebp + 0x134], 0
mov esi, eax
jne 0x670740
test ebx, ebx
jle 0x6707d0
mov edi, ebx
mov al, byte [esp + esi + 0x1bc]
test al, al
je 0x670737
xor ebx, ebx
mov al, byte [esp + esi + 0x1bc]
mov cl, bl
shr al, cl
test al, 1
je 0x670731
mov ecx, dword [esp + 0x30]
xor eax, eax
cmp ecx, 0x1f
jne 0x670719
lea eax, [ebx + esi*8]
jmp 0x670725
cmp ecx, 0x1e
jne 0x670725
mov eax, esi
shl eax, 8
add eax, ebx
push 0
push 0
push eax
mov ecx, ebp
call fcn.0066d150
inc ebx
cmp ebx, 8
jl 0x6706fa
inc esi
dec edi
jne 0x6706ed
jmp 0x6707d0
lea ecx, [esp + 0x4c]
xor edi, edi
call fcn.00610330
movsx ecx, ax
cmp esi, ecx
jge 0x6707d0
test ebx, ebx
jle 0x6707b4
mov dword [esp + 0x20], ebx
mov al, byte [esp + esi + 0x1bc]
test al, al
je 0x6707a8
xor ebx, ebx
mov dl, byte [esp + esi + 0x1bc]
mov cl, bl
shr dl, cl
test dl, 1
je 0x67079e
mov ecx, dword [esp + 0x30]
xor eax, eax
cmp ecx, 0x1f
jne 0x670787
lea eax, [ebx + esi*8]
jmp 0x670793
cmp ecx, 0x1e
jne 0x670793
mov eax, esi
shl eax, 8
add eax, ebx
push 0
push edi
push eax
mov ecx, ebp
call fcn.0066d150
inc ebx
cmp ebx, 8
jl 0x670767
mov ebx, dword [esp + 0x14]
mov eax, dword [esp + 0x20]
inc esi
dec eax
mov dword [esp + 0x20], eax
jne 0x67075a
xor eax, eax
lea ecx, [esp + 0x4c]
mov ax, word [ebp + 0x134]
add esi, eax
inc edi
call fcn.00610330
movsx ecx, ax
cmp esi, ecx
jl 0x670752
mov edx, dword [esp + 0x14a4]
mov eax, dword [edx + 0x20]
cmp eax, 0xffffffff
je 0x6707e7
push eax
mov ecx, ebp
call fcn.0066d090
mov byte [esp + 0x1498], 1
lea ecx, [esp + 0x4c]
jmp 0x670db3
lea eax, [esp + 0x38]
lea ecx, [esp + 0x50]
push eax
mov dword [ebp + 0x15c], 1
call fcn.0060d6b0
lea ecx, [esp + 0x38]
mov byte [esp + 0x1498], 0x1a
call fcn.00610330
test ax, ax
jle 0x6710ff
lea ecx, [esp + 0x38]
call fcn.00610330
lea ecx, [esp + 0x38]
xor esi, esi
movsx ebx, ax
call fcn.00610330
test ax, ax
jle 0x670868
push esi
lea ecx, [esp + 0x3c]
call fcn.00610190
mov byte [esp + esi + 0x1bc], al
lea ecx, [esp + 0x38]
inc esi
call fcn.00610330
movsx ecx, ax
cmp esi, ecx
jl 0x670846
lea ecx, [esp + 0x300]
call fcn.00653770
mov edi, eax
shr edi, 3
jne 0x6708a4
mov ax, word [ebp + 0xfa]
test ax, ax
jbe 0x6710e8
and eax, 0xffff
mov ecx, eax
mov eax, 0x38e38e39
imul ecx
sar edx, 1
mov eax, edx
shr eax, 0x1f
lea edi, [edx + eax + 1]
test edi, edi
jle 0x6710e8
lea ecx, [esp + 0x300]
call fcn.00653750
mov esi, eax
lea ecx, [esi + edi]
cmp ecx, ebx
jle 0x67100f
mov byte [esp + 0x1498], 1
lea ecx, [esp + 0x38]
jmp 0x670db3
lea edx, [esp + 0x3c]
lea ecx, [esp + 0x50]
push edx
call fcn.0060d6b0
lea ecx, [esp + 0x3c]
mov byte [esp + 0x1498], 0x1b
call fcn.00610330
test ax, ax
jle 0x671110
lea ecx, [esp + 0x3c]
xor esi, esi
call fcn.00610330
test ax, ax
jle 0x670930
push esi
lea ecx, [esp + 0x40]
call fcn.00610190
mov byte [esp + esi + 0x1bc], al
lea ecx, [esp + 0x3c]
inc esi
call fcn.00610330
movsx eax, ax
cmp esi, eax
jl 0x67090e
lea ecx, [esp + 0x300]
call fcn.00653770
mov edi, eax
shr edi, 3
jne 0x67096c
mov ax, word [ebp + 0xfa]
test ax, ax
jbe 0x670a3f
and eax, 0xffff
mov ecx, eax
mov eax, 0x38e38e39
imul ecx
sar edx, 1
mov ecx, edx
shr ecx, 0x1f
lea edi, [edx + ecx + 1]
test edi, edi
jle 0x670a3f
lea ecx, [esp + 0x300]
call fcn.00653750
mov esi, eax
mov eax, dword [ebp + 0x130]
cmp eax, 0xffffffff
je 0x6709de
xor ebx, ebx
test eax, eax
jle 0x670a3f
push 0
push ebx
lea edx, [esp + esi + 0x1c4]
push edi
push edx
mov ecx, ebp
call fcn.0066d8e0
mov ax, word [ebp + 0x134]
test ax, ax
je 0x670a3f
and eax, 0xffff
lea ecx, [esp + 0x3c]
add esi, eax
call fcn.00610330
movsx eax, ax
cmp esi, eax
jg 0x670a3f
mov eax, dword [ebp + 0x130]
inc ebx
cmp ebx, eax
jl 0x670997
jmp 0x670a3f
cmp word [ebp + 0x134], 0
jne 0x6709fe
push 0
push 0
lea ecx, [esp + esi + 0x1c4]
push edi
push ecx
mov ecx, ebp
call fcn.0066d8e0
jmp 0x670a3f
lea ecx, [esp + 0x3c]
xor ebx, ebx
call fcn.00610330
movsx edx, ax
cmp esi, edx
jge 0x670a3f
push 0
push ebx
lea eax, [esp + esi + 0x1c4]
push edi
push eax
mov ecx, ebp
call fcn.0066d8e0
xor ecx, ecx
mov cx, word [ebp + 0x134]
add esi, ecx
lea ecx, [esp + 0x3c]
inc ebx
call fcn.00610330
movsx edx, ax
cmp esi, edx
jl 0x670a10
mov eax, dword [esp + 0x14a4]
mov eax, dword [eax + 0x20]
cmp eax, 0xffffffff
je 0x670a56
push eax
mov ecx, ebp
call fcn.0066d090
mov byte [esp + 0x1498], 1
lea ecx, [esp + 0x3c]
jmp 0x670db3
lea ecx, [esp + 0x300]
call fcn.00653750
lea ecx, [esp + 0x44]
mov dword [esp + 0x14], eax
push ecx
lea ecx, [esp + 0x54]
call fcn.0060d6b0
lea ecx, [esp + 0x44]
mov byte [esp + 0x1498], 0x1c
xor esi, esi
call fcn.00610330
test ax, ax
jle 0x670abf
push esi
lea ecx, [esp + 0x48]
call fcn.00610190
mov byte [esp + esi + 0x1bc], al
lea ecx, [esp + 0x44]
inc esi
call fcn.00610330
movsx edx, ax
cmp esi, edx
jl 0x670a9d
lea ecx, [esp + 0x300]
call fcn.00653770
mov esi, eax
shr esi, 3
jne 0x670afb
mov ax, word [ebp + 0xfa]
test ax, ax
jbe 0x670c28
and eax, 0xffff
mov ecx, eax
mov eax, 0x38e38e39
imul ecx
sar edx, 1
mov eax, edx
shr eax, 0x1f
lea esi, [edx + eax + 1]
test esi, esi
jle 0x670c28
mov ecx, dword [ebp + 0xd4]
call fcn.006711c0
mov ecx, dword [ebp + 0xd4]
call fcn.006711c0
mov bl, al
lea ecx, [esp + 0x44]
and ebx, 0xff
call fcn.00610330
movsx ecx, ax
mov eax, dword [esp + 0x14]
sub ecx, ebx
dec ecx
cmp eax, ecx
jle 0x670b49
mov byte [esp + 0x1498], 1
lea ecx, [esp + 0x44]
jmp 0x670db3
xor ebx, ebx
test esi, esi
jle 0x670c28
lea edi, [esp + eax + 0x1bc]
mov dl, byte [edi + ebx]
xor cl, cl
mov byte [esp + 0x1b], dl
mov byte [esp + 0x13], cl
mov al, byte [esp + 0x1b]
shr al, cl
test al, 1
je 0x670c10
lea ecx, [esp + 0xab]
push ecx
lea ecx, [esp + 0x144]
call fcn.0064dca0
lea edx, [esp + 0x140]
lea ecx, [esp + 0x300]
push edx
mov byte [esp + 0x149c], 0x1d
call fcn.00653600
mov al, byte [esp + 0x14]
lea ecx, [esp + 0x2b]
add al, bl
push ecx
lea ecx, [esp + 0x144]
mov byte [esp + 0x2f], al
call fcn.00672800
lea edx, [esp + 0x13]
lea ecx, [esp + 0x140]
push edx
call fcn.00672800
push 0
push 0
lea ecx, [esp + 0x148]
call fcn.0064dd40
push eax
push 0
lea ecx, [esp + 0x150]
call fcn.0064dd50
push eax
mov ecx, ebp
call fcn.0066d8e0
lea ecx, [esp + 0x140]
mov byte [esp + 0x1498], 0x1c
call fcn.00639f00
mov cl, byte [esp + 0x13]
inc cl
cmp cl, 8
mov byte [esp + 0x13], cl
jb 0x670b67
inc ebx
cmp ebx, esi
jl 0x670b5a
mov byte [esp + 0x1498], 1
lea ecx, [esp + 0x44]
jmp 0x670db3
mov eax, dword [ebp + 0x168]
test eax, eax
jne 0x670c57
mov eax, dword [ebp + 0x130]
cmp eax, edi
je 0x670ef2
mov dword [ebp + 0x168], eax
cmp dword [ebp + 0x164], edi
jne 0x670c71
mov eax, dword [ebp + 0x168]
cmp eax, 1
jle 0x670c71
dec eax
mov dword [ebp + 0x164], eax
lea eax, [esp + 0x48]
lea ecx, [esp + 0x50]
push eax
call fcn.0060d6b0
lea ecx, [esp + 0x48]
mov byte [esp + 0x1498], 0x1e
call fcn.00610330
test ax, ax
jle 0x670da7
lea ecx, [esp + 0x48]
xor esi, esi
call fcn.00610330
test ax, ax
jle 0x670ccb
push esi
lea ecx, [esp + 0x4c]
call fcn.00610190
mov byte [esp + esi + 0x1bc], al
lea ecx, [esp + 0x48]
inc esi
call fcn.00610330
movsx ecx, ax
cmp esi, ecx
jl 0x670ca9
lea ecx, [esp + 0x300]
call fcn.00653770
mov ebx, eax
shr ebx, 3
jne 0x670d07
mov ax, word [ebp + 0xfa]
test ax, ax
jbe 0x670da7
and eax, 0xffff
mov ecx, eax
mov eax, 0x38e38e39
imul ecx
sar edx, 1
mov eax, edx
shr eax, 0x1f
lea ebx, [edx + eax + 1]
test ebx, ebx
jle 0x670da7
lea ecx, [esp + 0x300]
call fcn.00653750
mov esi, eax
mov eax, dword [ebp + 0x168]
test eax, eax
jle 0x670d90
xor edi, edi
test eax, eax
jle 0x670d6e
push 0
push edi
lea ecx, [esp + esi + 0x1c4]
push ebx
push ecx
mov ecx, ebp
call fcn.0066d8e0
mov ax, word [ebp + 0x134]
test ax, ax
je 0x670d63
and eax, 0xffff
lea ecx, [esp + 0x48]
add esi, eax
call fcn.00610330
movsx edx, ax
cmp esi, edx
jg 0x670d6e
mov eax, dword [ebp + 0x168]
inc edi
cmp edi, eax
jl 0x670d2d
mov eax, dword [ebp + 0x164]
test eax, eax
jle 0x670d90
mov ecx, dword [ebp + 0x168]
sub ecx, 2
cmp eax, ecx
jg 0x670d89
dec dword [esp + 0x78]
dec eax
mov dword [ebp + 0x164], eax
mov edx, dword [esp + 0x14a4]
mov eax, dword [edx + 0x20]
cmp eax, 0xffffffff
je 0x670da7
push eax
mov ecx, ebp
call fcn.0066d090
mov byte [esp + 0x1498], 1
lea ecx, [esp + 0x48]
call fcn.0060ffb0
mov esi, dword [esp + 0x78]
mov eax, dword [esp + 0xa0]
inc esi
cmp esi, eax
mov dword [esp + 0x78], esi
jl 0x66e39a
jmp 0x670e40
lea ecx, [esp + 0x2c]
call fcn.00610330
movsx eax, ax
lea ecx, [edi + 1]
cmp ecx, eax
jge 0x670e2f
mov cl, byte [esp + edi + 0x1bc]
lea eax, [esp + edi + 0x1bc]
cmp cl, 0x92
jne 0x670e03
mov cl, byte [esp + edi + 0x1bd]
test cl, cl
je 0x670e11
push 0
push 0
push 2
push eax
mov ecx, ebp
call fcn.0066d8e0
xor edx, edx
lea ecx, [esp + 0x2c]
mov dx, word [ebp + 0x134]
add edi, edx
call fcn.00610330
movsx eax, ax
lea ecx, [edi + 1]
cmp ecx, eax
jl 0x670de5
mov byte [esp + 0x1498], 1
lea ecx, [esp + 0x2c]
call fcn.0060ffb0
lea ecx, [esp + 0x300]
mov byte [esp + 0x1498], 0
call fcn.006529a0
mov dword [esp + 0x1498], 0xffffffff
lea ecx, [esp + 0x50]
call fcn.0060d280
mov eax, 1
mov ecx, dword [esp + 0x1490]
pop edi
pop esi
pop ebp
mov dword fs:[0], ecx
pop ebx
add esp, 0x148c
ret 0xc
lea ecx, [esp + 0x2c]
call fcn.00610330
movsx edx, ax
lea eax, [edi + 1]
cmp eax, edx
jge 0x670e2f
mov esi, 1
lea ecx, [esp + 0x1bc]
lea edi, [esp + edi + 0x1bc]
sub esi, ecx
cmp byte [edi], 0x92
jne 0x670ebc
mov al, byte [edi + 1]
test al, al
je 0x670eca
push 0
push 0
push 2
push edi
mov ecx, ebp
call fcn.0066d8e0
lea ecx, [esp + 0x2c]
add edi, 2
call fcn.00610330
movsx edx, ax
lea eax, [esi + edi]
cmp eax, edx
jl 0x670eb0
jmp 0x670e2f
mov ecx, dword [esp + 0x14a8]
mov dword [ecx], 1
lea ecx, [esp + 0x300]
mov byte [esp + 0x1498], 0
call fcn.006529a0
lea ecx, [esp + 0x50]
mov dword [esp + 0x1498], edi
call fcn.0060d280
xor eax, eax
jmp 0x670e6d
mov edx, dword [esp + 0x14a8]
mov eax, dword [esp + 0x90]
push eax
mov dword [edx], 1
call fcn.00697880
add esp, 4
lea ecx, [esp + 0x40]
mov dword [esp + 0x90], esi
mov dword [esp + 0x94], esi
mov dword [esp + 0x98], esi
mov byte [esp + 0x1498], 1
call fcn.0060ffb0
lea ecx, [esp + 0x300]
mov byte [esp + 0x1498], 0
call fcn.006529a0
lea ecx, [esp + 0x50]
mov dword [esp + 0x1498], 0xffffffff
call fcn.0060d280
xor eax, eax
jmp 0x670e6d
lea ecx, [esp + 0x34]
mov byte [esp + 0x1498], 1
call fcn.0060ffb0
lea ecx, [esp + 0x300]
mov byte [esp + 0x1498], 0
call fcn.006529a0
lea ecx, [esp + 0x50]
mov dword [esp + 0x1498], 0xffffffff
call fcn.0060d280
xor eax, eax
jmp 0x670e6d
lea ecx, [esp + 0x74]
mov byte [esp + 0x1498], 1
call fcn.0060ffb0
lea ecx, [esp + 0x300]
mov byte [esp + 0x1498], 0
call fcn.006529a0
lea ecx, [esp + 0x50]
mov dword [esp + 0x1498], 0xffffffff
call fcn.0060d280
xor eax, eax
jmp 0x670e6d
lea ecx, [esp + 0x300]
call fcn.006711b0
mov word [ebp + 0x160], ax
mov eax, dword [ebp + 0x130]
cmp eax, 0xffffffff
je 0x671081
xor ebx, ebx
test eax, eax
jle 0x6710e8
push 0
push ebx
lea ecx, [esp + esi + 0x1c4]
push edi
push ecx
mov ecx, ebp
call fcn.0066d8e0
mov ax, word [ebp + 0x134]
test ax, ax
je 0x6710e8
and eax, 0xffff
lea ecx, [esp + 0x38]
add esi, eax
call fcn.00610330
movsx edx, ax
lea eax, [esi + edi]
cmp eax, edx
jg 0x6710e8
mov eax, dword [ebp + 0x130]
inc ebx
cmp ebx, eax
jl 0x671037
jmp 0x6710e8
cmp word [ebp + 0x134], 0
jne 0x6710a1
push 0
push 0
lea ecx, [esp + esi + 0x1c4]
push edi
push ecx
mov ecx, ebp
call fcn.0066d8e0
jmp 0x6710e8
lea ecx, [esp + 0x38]
xor ebx, ebx
call fcn.00610330
movsx edx, ax
lea eax, [esi + edi]
cmp eax, edx
jge 0x6710e8
push 0
push ebx
lea ecx, [esp + esi + 0x1c4]
push edi
push ecx
mov ecx, ebp
call fcn.0066d8e0
xor edx, edx
lea ecx, [esp + 0x38]
mov dx, word [ebp + 0x134]
add esi, edx
inc ebx
call fcn.00610330
movsx eax, ax
lea ecx, [esi + edi]
cmp ecx, eax
jl 0x6710b6
mov edx, dword [esp + 0x14a4]
mov eax, dword [edx + 0x20]
cmp eax, 0xffffffff
je 0x6710ff
push eax
mov ecx, ebp
call fcn.0066d090
mov byte [esp + 0x1498], 1
lea ecx, [esp + 0x38]
jmp 0x670e3b
lea ecx, [esp + 0x3c]
mov byte [esp + 0x1498], 1
call fcn.0060ffb0
lea ecx, [esp + 0x300]
mov byte [esp + 0x1498], 0
call fcn.006529a0
mov dword [esp + 0x1498], edi
jmp 0x670e5f