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

Disassembly:
push 0xffffffffffffffff
push 0x6da0be
mov eax, dword fs:[0]
push eax
mov dword fs:[0], esp
sub esp, 0x290
push ebx
push ebp
mov ebx, ecx
push esi
push edi
mov dword [esp + 0x4c], ebx
mov esi, dword [esp + 0x2b0]
xor edi, edi
mov ecx, esi
mov dword [esp + 0x2a8], edi
call fcn.0061b070
test ax, ax
je case.0x659481.11
mov ecx, dword [ebx + 0x60]
call fcn.006921b0
cmp eax, 0x15
jne 0x659467
mov al, byte [esp + 0x1b]
mov dword [esp + 0x2c], edi
mov byte [esp + 0x1c], al
mov dword [esp + 0x20], edi
mov dword [esp + 0x24], edi
mov dword [esp + 0x28], edi
lea ecx, [esp + 0x10]
mov byte [esp + 0x2a8], 1
call fcn.0061d780
mov ecx, esi
mov byte [esp + 0x2a8], 2
call fcn.0061b070
mov ebp, dword [ebx + 0x2014]
mov cl, byte [esp + 0x1b]
movsx eax, ax
mov dword [esp + 0x60], eax
add ebp, 3
mov byte [esp + 0x30], cl
mov dword [esp + 0x34], edi
mov dword [esp + 0x38], edi
mov dword [esp + 0x3c], edi
xor ebx, ebx
cmp eax, edi
mov byte [esp + 0x2a8], 3
jle 0x658eac
jmp 0x658e5b
mov esi, dword [esp + 0x2b0]
xor edi, edi
push ebx
mov ecx, esi
call fcn.0061b060
mov ecx, dword [eax + 4]
cmp ecx, edi
je 0x658e72
mov edi, dword [eax + 8]
sub edi, ecx
sar edi, 2
xor esi, esi
test edi, edi
jle 0x658ea1
mov ecx, dword [esp + 0x2b0]
push ebx
call fcn.0061b060
mov eax, dword [eax + 4]
lea ecx, [esp + 0x1c]
lea edx, [eax + esi*4]
mov eax, dword [esp + 0x24]
push edx
push 1
push eax
call fcn.00414350
inc esi
cmp esi, edi
jl 0x658e78
mov eax, dword [esp + 0x60]
inc ebx
cmp ebx, eax
jl 0x658e52
xor edi, edi
mov ecx, dword [esp + 0x20]
cmp ecx, edi
jne 0x658eb8
xor eax, eax
jmp 0x658ec1
mov eax, dword [esp + 0x24]
sub eax, ecx
sar eax, 2
lea ecx, [ecx + eax*4 - 4]
call fcn.0061dc40
movsx ecx, ax
cmp ecx, ebp
jle 0x659062
mov ecx, dword [esp + 0x20]
cmp ecx, edi
jne 0x658ee1
xor eax, eax
jmp 0x658eea
mov eax, dword [esp + 0x24]
sub eax, ecx
sar eax, 2
push ebp
lea ecx, [ecx + eax*4 - 4]
call fcn.0061daa0
cmp al, 0x7f
jne 0x659062
xor ebx, ebx
lea ecx, [esp + 0x14]
push ebx
call fcn.0061d7b0
mov byte [esp + 0x2a8], 4
mov esi, ebp
mov ecx, dword [esp + 0x20]
cmp ecx, ebx
jne 0x658f1e
xor eax, eax
jmp 0x658f27
mov eax, dword [esp + 0x24]
sub eax, ecx
sar eax, 2
lea ecx, [ecx + eax*4 - 4]
call fcn.0061dc40
movsx edx, ax
cmp esi, edx
jge 0x658f63
mov ecx, dword [esp + 0x20]
cmp ecx, ebx
jne 0x658f43
xor eax, eax
jmp 0x658f4c
mov eax, dword [esp + 0x24]
sub eax, ecx
sar eax, 2
push esi
lea ecx, [ecx + eax*4 - 4]
call fcn.0061daa0
push eax
lea ecx, [esp + 0x18]
call fcn.0061dc20
inc esi
jmp 0x658f12
mov eax, dword [esp + 0x20]
push eax
mov eax, dword [esp + 0x28]
push eax
push eax
call fcn.00414d10
mov ecx, dword [esp + 0x30]
add esp, 0xc
mov esi, eax
push ecx
push esi
lea ecx, [esp + 0x24]
call fcn.00413d20
lea edx, [esp + 0x14]
lea ecx, [esp + 0x1c]
push edx
push 1
push esi
mov dword [esp + 0x30], esi
call fcn.00414350
lea ecx, [esp + 0x14]
call fcn.0061dc40
mov esi, dword [esp + 0x2b0]
mov ebp, eax
mov ecx, esi
call fcn.0061b090
lea eax, [esp + 0x1c]
mov ecx, esi
push eax
call fcn.0061ae00
lea ecx, [esp + 0x14]
mov byte [esp + 0x2a8], 3
call fcn.0061d8c0
mov eax, dword [esp + 0x38]
mov esi, dword [esp + 0x34]
cmp esi, eax
mov byte [esp + 0x2a8], 2
mov edi, eax
je 0x658ffb
push ebx
mov ecx, esi
call fcn.00415c90
add esi, 4
cmp esi, edi
jne 0x658fe8
mov esi, dword [esp + 0x34]
push esi
call fcn.006a64d0
add esp, 4
lea ecx, [esp + 0x10]
mov dword [esp + 0x34], ebx
mov dword [esp + 0x38], ebx
mov dword [esp + 0x3c], ebx
mov byte [esp + 0x2a8], 1
call fcn.0061d8c0
mov edi, dword [esp + 0x24]
mov esi, dword [esp + 0x20]
cmp esi, edi
mov byte [esp + 0x2a8], 0
je 0x659048
push ebx
mov ecx, esi
call fcn.00415c90
add esi, 4
cmp esi, edi
jne 0x659035
mov esi, dword [esp + 0x20]
push esi
call fcn.006a64d0
add esp, 4
mov dword [esp + 0x20], ebx
mov dword [esp + 0x24], ebx
mov dword [esp + 0x28], ebx
jmp 0x6597e2
xor ebx, ebx
xor esi, esi
mov eax, dword [esp + 0x20]
mov ecx, dword [esp + 0x24]
cmp eax, ebx
je 0x6590b8
mov edx, ecx
sub edx, eax
sar edx, 2
cmp esi, edx
jae 0x6590b8
lea ecx, [eax + esi*4]
call fcn.0061dc40
movsx eax, ax
cmp eax, ebp
jle 0x65909d
mov ecx, dword [esp + 0x20]
push ebp
lea ecx, [ecx + esi*4]
call fcn.0061daa0
cmp al, 0x7f
je 0x6590b5
mov edx, dword [esp + 0x20]
mov ecx, dword [esp + 0x38]
lea eax, [edx + esi*4]
push eax
push 1
push ecx
lea ecx, [esp + 0x3c]
call fcn.00414350
inc esi
jmp 0x659066
mov edx, dword [esp + 0x34]
cmp edx, ebx
jne 0x6590c4
xor ebp, ebp
jmp 0x6590cd
mov ebp, dword [esp + 0x38]
sub ebp, edx
sar ebp, 2
push eax
push ecx
push ecx
call fcn.00414d10
mov edx, dword [esp + 0x30]
add esp, 0xc
mov esi, eax
lea ecx, [esp + 0x1c]
push edx
push esi
call fcn.00413d20
xor edi, edi
cmp ebp, ebx
mov dword [esp + 0x24], esi
jle 0x659283
mov eax, dword [esp + 0x4c]
push ebx
lea ecx, [esp + 0x44]
mov esi, dword [eax + 0x2014]
call fcn.0061d7b0
mov ecx, dword [esp + 0x34]
push 3
mov byte [esp + 0x2ac], 5
lea ecx, [ecx + edi*4]
call fcn.0061daa0
test al, 0xf
jne 0x659216
cmp edi, ebx
jne 0x659135
add esi, 3
jmp 0x659216
mov ecx, dword [esp + 0x20]
add esi, 4
cmp ecx, ebx
jne 0x659144
xor eax, eax
jmp 0x65914d
mov eax, dword [esp + 0x24]
sub eax, ecx
sar eax, 2
lea edx, [ecx + eax*4 - 4]
lea ecx, [esp + 0x14]
push edx
call fcn.0061d790
push 0
lea ecx, [esp + 0x4c]
mov byte [esp + 0x2ac], 6
call fcn.0061d7b0
lea ecx, [esp + 0x14]
mov byte [esp + 0x2a8], 7
xor ebx, ebx
call fcn.0061dc40
movsx eax, ax
dec eax
test eax, eax
jle 0x6591af
push ebx
lea ecx, [esp + 0x18]
call fcn.0061daa0
push eax
lea ecx, [esp + 0x4c]
call fcn.0061dc20
lea ecx, [esp + 0x14]
inc ebx
call fcn.0061dc40
movsx ecx, ax
dec ecx
cmp ebx, ecx
jl 0x659189
mov ecx, dword [esp + 0x24]
lea eax, [ecx - 4]
push eax
add eax, 4
push ecx
push eax
call fcn.00414d10
mov eax, dword [esp + 0x30]
add esp, 0xc
lea ecx, [esp + 0x1c]
push eax
add eax, 0xfffffffc
push eax
call fcn.00413d20
mov eax, dword [esp + 0x24]
lea edx, [esp + 0x48]
sub eax, 4
push edx
push 1
push eax
lea ecx, [esp + 0x28]
mov dword [esp + 0x30], eax
call fcn.00414350
lea ecx, [esp + 0x48]
mov byte [esp + 0x2a8], 6
call fcn.0061d8c0
lea ecx, [esp + 0x14]
mov byte [esp + 0x2a8], 5
call fcn.0061d8c0
xor ebx, ebx
mov eax, dword [esp + 0x34]
lea ecx, [eax + edi*4]
call fcn.0061dc40
movsx ecx, ax
cmp esi, ecx
jge 0x659254
mov edx, dword [esp + 0x34]
push esi
lea ecx, [edx + edi*4]
call fcn.0061daa0
push eax
lea ecx, [esp + 0x44]
call fcn.0061dc20
mov eax, dword [esp + 0x34]
inc esi
lea ecx, [eax + edi*4]
call fcn.0061dc40
movsx ecx, ax
cmp esi, ecx
jl 0x659229
mov eax, dword [esp + 0x24]
lea edx, [esp + 0x40]
push edx
push 1
push eax
lea ecx, [esp + 0x28]
call fcn.00414350
lea ecx, [esp + 0x40]
mov byte [esp + 0x2a8], 3
call fcn.0061d8c0
inc edi
cmp edi, ebp
jl 0x6590f7
mov ecx, dword [esp + 0x34]
mov eax, dword [esp + 0x38]
push ecx
push eax
push eax
call fcn.00414d10
mov edx, dword [esp + 0x44]
add esp, 0xc
mov esi, eax
lea ecx, [esp + 0x30]
push edx
push esi
call fcn.00413d20
mov eax, dword [esp + 0x20]
mov edx, esi
cmp eax, ebx
mov dword [esp + 0x38], edx
je 0x65945e
mov ecx, dword [esp + 0x24]
sub ecx, eax
sar ecx, 2
je 0x65945e
mov ebx, dword [esp + 0x2c8]
mov ebp, dword [esp + 0x2c]
xor edi, edi
xor esi, esi
test eax, eax
je 0x65937b
mov ecx, dword [esp + 0x24]
sub ecx, eax
sar ecx, 2
cmp esi, ecx
jae 0x65937b
cmp bl, 0xff
lea ecx, [eax + esi*4]
jne 0x659310
call fcn.0061dc40
mov edx, dword [esp + 0x20]
mov ecx, dword [esp + 0x38]
add ebp, eax
lea eax, [edx + esi*4]
push eax
push 1
push ecx
jmp 0x659364
call fcn.0061dc40
test ax, ax
jle 0x65936d
mov edx, dword [esp + 0x20]
push 0
lea ecx, [edx + esi*4]
call fcn.0061daa0
mov ecx, ebx
and eax, 0xff
and ecx, 0xff
add ecx, 0x40
cmp eax, ecx
jne 0x659343
mov edi, 1
jmp 0x659347
test edi, edi
je 0x65936d
mov edx, dword [esp + 0x20]
lea ecx, [edx + esi*4]
call fcn.0061dc40
mov edx, dword [esp + 0x38]
add ebp, eax
mov eax, dword [esp + 0x20]
lea ecx, [eax + esi*4]
push ecx
push 1
push edx
lea ecx, [esp + 0x3c]
call fcn.00414350
mov eax, dword [esp + 0x20]
mov edx, dword [esp + 0x38]
inc esi
jmp 0x6592d7
mov ecx, dword [esp + 0x34]
test ecx, ecx
je 0x6593a8
sub edx, ecx
sar edx, 2
je 0x6593a8
mov esi, dword [esp + 0x2b0]
mov ecx, esi
call fcn.0061b090
lea eax, [esp + 0x30]
mov ecx, esi
push eax
call fcn.0061ae00
mov eax, dword [esp + 0x20]
xor ebx, ebx
push eax
mov eax, dword [esp + 0x28]
push eax
push eax
call fcn.00414d10
mov ecx, dword [esp + 0x30]
add esp, 0xc
mov esi, eax
push ecx
push esi
lea ecx, [esp + 0x24]
call fcn.00413d20
mov eax, dword [esp + 0x38]
mov dword [esp + 0x24], esi
mov esi, dword [esp + 0x34]
mov byte [esp + 0x2a8], 2
cmp esi, eax
mov edi, eax
je 0x6593f7
push ebx
mov ecx, esi
call fcn.00415c90
add esi, 4
cmp esi, edi
jne 0x6593e4
mov esi, dword [esp + 0x34]
push esi
call fcn.006a64d0
add esp, 4
lea ecx, [esp + 0x10]
mov dword [esp + 0x34], ebx
mov dword [esp + 0x38], ebx
mov dword [esp + 0x3c], ebx
mov byte [esp + 0x2a8], 1
call fcn.0061d8c0
mov edi, dword [esp + 0x24]
mov esi, dword [esp + 0x20]
cmp esi, edi
mov byte [esp + 0x2a8], 0
je 0x659444
push ebx
mov ecx, esi
call fcn.00415c90
add esi, 4
cmp esi, edi
jne 0x659431
mov esi, dword [esp + 0x20]
push esi
call fcn.006a64d0
add esp, 4
mov dword [esp + 0x20], ebx
mov dword [esp + 0x24], ebx
mov dword [esp + 0x28], ebx
jmp 0x6597e2
mov ebp, dword [esp + 0x2c]
jmp 0x6593aa
mov ecx, dword [ebx + 0x60]
call fcn.006926e0
dec eax
cmp eax, 0x27
ja case.0x659481.11
xor edx, edx
mov dl, byte [eax + 0x65ae58]
jmp dword [edx*4 + 0x65ae2c]
lea eax, [esp + 0x14]
mov ecx, esi
push eax
call fcn.0061afb0
lea ecx, [esp + 0x14]
mov byte [esp + 0x2a8], 8
call fcn.0061dc40
push eax
lea ecx, [esp + 0xa4]
push edi
push ecx
lea ecx, [esp + 0x20]
call fcn.0061dc70
mov al, byte [esp + 0xa0]
cmp al, 0x80
jne 0x6594ef
movzx bx, byte [esp + 0xa3]
mov ebp, dword [esp + 0x2cc]
mov ecx, ebx
and ecx, 0xffff
lea esi, [esp + 0xa4]
mov edx, ecx
mov edi, ebp
shr ecx, 2
rep movsd dword es:[edi], dword [esi]
mov ecx, edx
jmp 0x659563
jbe 0x65950d
xor bx, bx
lea esi, [esp + 0xa3]
mov bl, al
sub ebx, 0x80
mov ecx, ebx
and ecx, 0xffff
jmp 0x659551
test al, al
jne 0x65953d
movzx bx, byte [esp + 0xa1]
mov ebp, dword [esp + 0x2cc]
mov ecx, ebx
and ecx, 0xffff
lea esi, [esp + 0xa2]
mov edx, ecx
mov edi, ebp
shr ecx, 2
rep movsd dword es:[edi], dword [esi]
mov ecx, edx
jmp 0x659563
xor bx, bx
lea esi, [esp + 0xa1]
mov bl, al
mov ecx, ebx
and ecx, 0xffff
mov ebp, dword [esp + 0x2cc]
mov eax, ecx
mov edi, ebp
shr ecx, 2
rep movsd dword es:[edi], dword [esi]
mov ecx, eax
and ecx, 3
rep movsb byte es:[edi], byte [esi]
mov cl, byte [esp + 0x1b]
xor edi, edi
mov byte [esp + 0x30], cl
mov dword [esp + 0x34], edi
mov dword [esp + 0x38], edi
mov dword [esp + 0x3c], edi
push edi
push edi
push edi
mov byte [esp + 0x2b4], 9
call fcn.00414d10
mov edx, dword [esp + 0x44]
add esp, 0xc
mov esi, eax
lea ecx, [esp + 0x30]
push edx
push esi
call fcn.00413d20
push ebx
push ebp
lea ecx, [esp + 0x80]
mov dword [esp + 0x40], esi
call fcn.0061d820
push eax
mov eax, dword [esp + 0x3c]
push 1
push eax
lea ecx, [esp + 0x3c]
mov byte [esp + 0x2b4], 0xa
call fcn.00414350
lea ecx, [esp + 0x78]
mov byte [esp + 0x2a8], 9
call fcn.0061d8c0
mov esi, dword [esp + 0x2b0]
mov ecx, esi
call fcn.0061b090
lea ecx, [esp + 0x30]
push ecx
mov ecx, esi
call fcn.0061ae00
mov eax, dword [esp + 0x38]
mov esi, dword [esp + 0x34]
cmp esi, eax
mov byte [esp + 0x2a8], 8
mov ebp, eax
je 0x659621
push edi
mov ecx, esi
call fcn.00415c90
add esi, 4
cmp esi, ebp
jne 0x65960e
mov esi, dword [esp + 0x34]
push esi
call fcn.006a64d0
add esp, 4
lea ecx, [esp + 0x14]
mov dword [esp + 0x34], edi
mov dword [esp + 0x38], edi
mov dword [esp + 0x3c], edi
mov byte [esp + 0x2a8], 0
call fcn.0061d8c0
jmp 0x65a945
push edi
mov ecx, esi
call fcn.0061b060
mov ecx, dword [eax + 4]
cmp ecx, edi
jne 0x659661
mov dword [esp + 0x48], edi
jmp 0x65966d
mov eax, dword [eax + 8]
sub eax, ecx
sar eax, 2
mov dword [esp + 0x48], eax
mov dl, byte [esp + 0x1b]
mov dword [esp + 0x54], 0
mov byte [esp + 0x50], dl
mov dword [esp + 0x58], 0
mov dword [esp + 0x5c], 0
mov eax, dword [esp + 0x48]
xor ebp, ebp
xor ebx, ebx
mov byte [esp + 0x2a8], 0xb
test eax, eax
jle 0x6597d8
mov esi, dword [esp + 0x2b0]
push 0
mov ecx, esi
call fcn.0061b060
mov eax, dword [eax + 4]
lea ecx, [esp + 0x14]
lea eax, [eax + ebx*4]
push eax
call fcn.0061d790
mov esi, dword [esp + 0x4c]
lea ecx, [esp + 0x14]
mov byte [esp + 0x2a8], 0xc
mov edi, dword [esi + 0x2014]
call fcn.0061dc40
mov bp, ax
mov ecx, esi
sub ebp, edi
call fcn.0064ffa0
mov esi, dword [esi + 0x2014]
xor cx, cx
mov cl, al
lea edx, [esp + 0x1a0]
sub ebp, ecx
lea ecx, [esp + 0x14]
push ebp
push esi
push edx
call fcn.0061dc70
call fcn.00633db0
test al, al
je 0x659733
mov edi, dword [esp + 0x2cc]
mov ecx, 0xc
lea esi, [esp + 0x1a0]
mov ebp, 0x32
rep movsd dword es:[edi], dword [esi]
movsw word es:[edi], word [esi]
jmp 0x659757
mov edi, dword [esp + 0x2cc]
mov ecx, ebp
and ecx, 0xffff
lea esi, [esp + 0x1a0]
mov eax, ecx
shr ecx, 2
rep movsd dword es:[edi], dword [esi]
mov ecx, eax
and ecx, 3
rep movsb byte es:[edi], byte [esi]
mov ecx, dword [esp + 0x2cc]
push ebp
push ecx
lea ecx, [esp + 0x48]
call fcn.0061d820
push ecx
lea edx, [esp + 0x44]
mov ecx, esp
mov dword [esp + 0x48], esp
push edx
mov byte [esp + 0x2b0], 0xd
call fcn.0061d790
mov esi, dword [esp + 0x2b4]
push ebx
push 0
mov ecx, esi
mov byte [esp + 0x2b4], 0xd
call fcn.0061b060
mov ecx, eax
call fcn.00690c60
mov ecx, eax
call fcn.0061dab0
lea ecx, [esp + 0x40]
mov byte [esp + 0x2a8], 0xc
call fcn.0061d8c0
lea ecx, [esp + 0x14]
mov byte [esp + 0x2a8], 0xb
call fcn.0061d8c0
mov eax, dword [esp + 0x48]
inc ebx
cmp ebx, eax
jl 0x6596ac
push 0
call fcn.006a64d0
add esp, 4
lea ecx, [esp + 0x2b4]
mov dword [esp + 0x2a8], 0xffffffff
call fcn.0062d500
mov ax, bp
jmp 0x659f83
mov ecx, dword [esp + 0x2b0]
lea eax, [esp + 0x14]
push eax
call fcn.0061afb0
lea ecx, [esp + 0x14]
mov byte [esp + 0x2a8], 0xf
call fcn.0061dc40
push eax
lea ecx, [esp + 0xa4]
push 0
push ecx
lea ecx, [esp + 0x20]
call fcn.0061dc70
mov dl, byte [esp + 0xa0]
xor ax, ax
shr dl, 4
mov al, dl
mov edi, dword [esp + 0x2cc]
mov ecx, eax
lea esi, [esp + 0xa3]
and ecx, 0xffff
mov byte [esp + 0x2a8], 0
sub ecx, 3
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]
lea esi, [eax - 3]
lea ecx, [esp + 0x14]
jmp 0x65ac43
mov ecx, esi
call fcn.0061b070
mov edi, eax
mov al, byte [esp + 0x1b]
xor ebp, ebp
mov byte [esp + 0x1c], al
mov dword [esp + 0x20], ebp
mov dword [esp + 0x24], ebp
mov dword [esp + 0x28], ebp
lea ecx, [esp + 0x10]
mov byte [esp + 0x2a8], 0x10
call fcn.0061d780
mov cl, byte [esp + 0x1b]
mov dword [esp + 0x34], ebp
mov byte [esp + 0x30], cl
mov dword [esp + 0x38], ebp
mov dword [esp + 0x3c], ebp
mov ecx, dword [ebx + 0x60]
mov byte [esp + 0x2a8], 0x12
mov dword [esp + 0x40], ebp
mov byte [esp + 0x2c], 4
call fcn.006926e0
cmp eax, 5
jne 0x6598e9
mov byte [esp + 0x2c], al
jmp 0x659908
mov ecx, dword [ebx + 0x60]
call fcn.006926e0
cmp eax, 6
je 0x659903
mov ecx, dword [ebx + 0x60]
call fcn.006926e0
cmp eax, 7
jne 0x659908
mov byte [esp + 0x2c], 6
mov ecx, dword [ebx + 0x60]
call fcn.006926e0
cmp eax, 9
je 0x65992b
mov ecx, dword [ebx + 0x60]
call fcn.006926e0
cmp eax, 8
jne 0x65999c
mov esi, dword [esp + 0x2b0]
xor ebp, ebp
lea ebx, [edi - 1]
mov ecx, esi
push ebx
call fcn.0061b060
mov ecx, dword [eax + 4]
cmp ecx, ebp
jne 0x659941
xor eax, eax
jmp 0x659949
mov eax, dword [eax + 8]
sub eax, ecx
sar eax, 2
mov ebp, eax
xor esi, esi
and ebp, 0xffff
mov dword [esp + 0x48], esi
jle 0x65999c
mov ecx, dword [esp + 0x2b0]
push esi
push ebx
call fcn.0061b060
mov ecx, eax
call fcn.00690c60
push ecx
mov ecx, esp
mov dword [esp + 0x48], esp
push eax
call fcn.0061d790
lea ecx, [esp + 0x14]
call fcn.0061dab0
push 1
lea ecx, [esp + 0x14]
call fcn.0061daa0
cmp al, 5
je 0x659ae1
inc esi
cmp esi, ebp
jl 0x659959
lea ecx, [esp + 0x64]
call fcn.0063bb20
mov dl, byte [esp + 0x2b4]
sub esp, 0x10
mov esi, esp
lea ecx, [esp + 0x2c4]
mov byte [esp + 0x2b8], 0x17
mov dword [esp + 0x54], esp
mov byte [esi], dl
call fcn.006738a0
xor ebx, ebx
cmp eax, ebx
jge 0x6599d3
xor eax, eax
shl eax, 3
push eax
call fcn.006a6832
add esp, 4
mov dword [esi + 4], eax
mov ecx, dword [esp + 0x2cc]
mov edx, dword [esp + 0x2c8]
push eax
push ecx
push edx
mov ecx, esi
call fcn.00555e70
lea ecx, [esp + 0x74]
mov dword [esi + 8], eax
mov dword [esi + 0xc], eax
call fcn.0062d540
mov ebp, dword [esp + 0x2b0]
mov al, byte [esp + 0x2c8]
sub esp, 0x10
lea edx, [esp + 0x74]
mov dword [esp + 0x54], esp
mov ecx, esp
push edx
mov byte [esp + 0x88], al
lea esi, [ebp + 0x10]
call fcn.00413240
mov ecx, esi
call fcn.0062d540
mov al, byte [esp + 0x74]
lea ecx, [esp + 0x2b4]
mov byte [esi + 0x10], al
call fcn.0062db10
cmp di, bx
jne 0x659ebb
lea ecx, [esp + 0x64]
mov byte [esp + 0x2a8], 0x12
call fcn.0062d500
mov edi, dword [esp + 0x38]
mov esi, dword [esp + 0x34]
cmp esi, edi
mov byte [esp + 0x2a8], 0x11
je 0x659a8f
push ebx
mov ecx, esi
call fcn.00415c90
add esi, 4
cmp esi, edi
jne 0x659a7c
mov esi, dword [esp + 0x34]
push esi
call fcn.006a64d0
add esp, 4
lea ecx, [esp + 0x10]
mov dword [esp + 0x34], ebx
mov dword [esp + 0x38], ebx
mov dword [esp + 0x3c], ebx
mov byte [esp + 0x2a8], 0x10
call fcn.0061d8c0
mov edi, dword [esp + 0x24]
mov esi, dword [esp + 0x20]
cmp esi, edi
mov byte [esp + 0x2a8], 0
je 0x659f54
push ebx
mov ecx, esi
call fcn.00415c90
add esi, 4
cmp esi, edi
jne 0x659acd
jmp 0x659f50
mov edx, dword [esp + 0x2c4]
mov edi, dword [esp + 0x2b0]
xor ebp, ebp
xor esi, esi
mov dword [edx], 1
mov dword [esp + 0x2c], esi
push ebx
mov ecx, edi
call fcn.0061b060
mov ecx, dword [eax + 4]
cmp ecx, ebp
je 0x659beb
mov eax, dword [eax + 8]
sub eax, ecx
sar eax, 2
cmp esi, eax
jae 0x659beb
push esi
push ebx
mov ecx, edi
call fcn.0061b060
mov ecx, eax
call fcn.00690c60
push ecx
mov ecx, esp
mov dword [esp + 0x48], esp
push eax
call fcn.0061d790
lea ecx, [esp + 0x14]
call fcn.0061dab0
push 1
lea ecx, [esp + 0x14]
call fcn.0061daa0
cmp al, 5
je 0x659be1
mov edi, dword [esp + 0x2b0]
push ebx
mov ecx, edi
call fcn.0061b060
mov ecx, dword [eax + 4]
mov edx, dword [esp + 0x2c]
push ebx
lea esi, [ecx + edx*4]
mov ecx, edi
call fcn.0061b060
mov edi, eax
add esi, 4
mov ebp, dword [edi + 8]
cmp esi, ebp
je 0x659bb5
lea eax, [esi - 4]
mov dword [esp + 0x14], eax
push ecx
mov ecx, esp
mov dword [esp + 0x48], esp
push esi
call fcn.0061d790
mov ecx, dword [esp + 0x18]
call fcn.0061dab0
mov ecx, dword [esp + 0x14]
add esi, 4
add ecx, 4
cmp esi, ebp
mov dword [esp + 0x14], ecx
jne 0x659b8d
mov eax, dword [edi + 8]
mov ecx, edi
push eax
add eax, 0xfffffffc
push eax
call fcn.00413d20
mov ecx, dword [edi + 8]
mov eax, dword [esp + 0x2c]
add ecx, 0xfffffffc
dec eax
mov dword [edi + 8], ecx
mov edi, dword [esp + 0x2b0]
mov dword [esp + 0x2c], eax
mov esi, eax
xor ebp, ebp
inc esi
mov dword [esp + 0x2c], esi
jmp 0x659afd
push ebx
mov ecx, edi
call fcn.0061b060
mov ecx, dword [eax + 4]
cmp ecx, ebp
jne 0x659bfe
xor esi, esi
jmp 0x659c06
mov esi, dword [eax + 8]
sub esi, ecx
sar esi, 2
lea ecx, [esp + 0x7c]
call fcn.0061aaa0
mov cl, byte [esp + 0x1b]
mov dword [esp + 0x54], ebp
mov byte [esp + 0x50], cl
mov dword [esp + 0x58], ebp
mov dword [esp + 0x5c], ebp
and esi, 0xffff
mov byte [esp + 0x2a8], 0x14
mov dword [esp + 0x2c], ebp
mov dword [esp + 0x14], esi
jle 0x659d34
mov edx, dword [esp + 0x2c]
mov ecx, dword [esp + 0x2b0]
push edx
push ebx
call fcn.0061b060
mov ecx, eax
call fcn.00690c60
push ecx
mov ecx, esp
mov dword [esp + 0x48], esp
push eax
call fcn.0061d790
lea ecx, [esp + 0x14]
call fcn.0061dab0
mov ecx, 0x3f
xor eax, eax
lea edi, [esp + 0x1a0]
push 0
rep stosd dword es:[edi], eax
stosw word es:[edi], ax
lea ecx, [esp + 0x14]
stosb byte es:[edi], al
call fcn.0061daa0
and eax, 0xff
lea ecx, [esp + 0x1a0]
mov ebp, eax
mov eax, dword [esp + 0x4c]
push ebp
mov eax, dword [eax + 0x2014]
dec eax
push eax
push ecx
lea ecx, [esp + 0x1c]
call fcn.0061dc70
mov eax, dword [esp + 0x2cc]
test eax, eax
je 0x659cd5
mov ecx, ebp
lea esi, [esp + 0x1a0]
mov edx, ecx
mov edi, eax
shr ecx, 2
rep movsd dword es:[edi], dword [esi]
mov ecx, edx
and ecx, 3
rep movsb byte es:[edi], byte [esi]
lea eax, [esp + 0x1a0]
push ebp
push eax
lea ecx, [esp + 0x48]
call fcn.0061d820
mov edx, dword [esp + 0x58]
lea ecx, [esp + 0x40]
push ecx
push 1
push edx
lea ecx, [esp + 0x5c]
mov byte [esp + 0x2b4], 0x15
call fcn.00414350
mov esi, dword [esp + 0x48]
lea ecx, [esp + 0x40]
add esi, ebp
mov byte [esp + 0x2a8], 0x14
mov dword [esp + 0x48], esi
call fcn.0061d8c0
mov eax, dword [esp + 0x2c]
mov ecx, dword [esp + 0x14]
inc eax
cmp eax, ecx
mov dword [esp + 0x2c], eax
jl 0x659c3f
lea eax, [esp + 0x50]
lea ecx, [esp + 0x7c]
push eax
call fcn.0061ae00
mov cl, byte [esp + 0x7c]
sub esp, 0x24
mov esi, esp
mov dword [esp + 0x68], esp
mov dword [esp + 0x68], esi
mov byte [esi], cl
lea ecx, [esp + 0xa0]
call fcn.00648110
xor ebx, ebx
cmp eax, ebx
jge 0x659d69
xor eax, eax
shl eax, 4
push eax
call fcn.006a6832
add esp, 4
mov dword [esi + 4], eax
mov edx, dword [esp + 0xa8]
mov ecx, esi
push eax
mov eax, dword [esp + 0xa8]
push edx
push eax
call fcn.00413b00
mov dword [esi + 8], eax
mov dword [esi + 0xc], eax
lea ecx, [esp + 0xb0]
mov byte [esp + 0x2cc], 0x16
push ecx
lea ecx, [esi + 0x10]
call fcn.004066c0
mov ecx, dword [esp + 0x2d4]
mov byte [esp + 0x2cc], 0x14
call fcn.0061ac40
mov eax, dword [esp + 0x58]
mov esi, dword [esp + 0x54]
cmp esi, eax
mov byte [esp + 0x2a8], 0x13
mov edi, eax
je 0x659deb
push ebx
mov ecx, esi
call fcn.00415c90
add esi, 4
cmp esi, edi
jne 0x659dd8
mov esi, dword [esp + 0x54]
push esi
call fcn.006a64d0
add esp, 4
lea ecx, [esp + 0x7c]
mov dword [esp + 0x54], ebx
mov dword [esp + 0x58], ebx
mov dword [esp + 0x5c], ebx
mov byte [esp + 0x2a8], 0x12
call fcn.0061ab90
mov edi, dword [esp + 0x38]
mov esi, dword [esp + 0x34]
cmp esi, edi
mov byte [esp + 0x2a8], 0x11
je 0x659e38
push ebx
mov ecx, esi
call fcn.00415c90
add esi, 4
cmp esi, edi
jne 0x659e25
mov esi, dword [esp + 0x34]
push esi
call fcn.006a64d0
add esp, 4
lea ecx, [esp + 0x10]
mov dword [esp + 0x34], ebx
mov dword [esp + 0x38], ebx
mov dword [esp + 0x3c], ebx
mov byte [esp + 0x2a8], 0x10
call fcn.0061d8c0
mov edi, dword [esp + 0x24]
mov esi, dword [esp + 0x20]
cmp esi, edi
mov byte [esp + 0x2a8], 0
je 0x659e85
push ebx
mov ecx, esi
call fcn.00415c90
add esi, 4
cmp esi, edi
jne 0x659e72
mov esi, dword [esp + 0x20]
push esi
call fcn.006a64d0
add esp, 4
lea ecx, [esp + 0x2b4]
mov dword [esp + 0x20], ebx
mov dword [esp + 0x24], ebx
mov dword [esp + 0x28], ebx
mov dword [esp + 0x2a8], 0xffffffff
call fcn.0062d500
mov ax, word [esp + 0x48]
jmp 0x659f83
cmp ax, 1
jbe 0x659f9e
cmp di, 1
jae 0x659f9e
lea ecx, [esp + 0x64]
mov byte [esp + 0x2a8], 0x12
call fcn.0062d500
mov edi, dword [esp + 0x38]
mov esi, dword [esp + 0x34]
cmp esi, edi
mov byte [esp + 0x2a8], 0x11
je 0x659f07
push ebx
mov ecx, esi
call fcn.00415c90
add esi, 4
cmp esi, edi
jne 0x659ef4
mov esi, dword [esp + 0x34]
push esi
call fcn.006a64d0
add esp, 4
lea ecx, [esp + 0x10]
mov dword [esp + 0x34], ebx
mov dword [esp + 0x38], ebx
mov dword [esp + 0x3c], ebx
mov byte [esp + 0x2a8], 0x10
call fcn.0061d8c0
mov edi, dword [esp + 0x24]
mov esi, dword [esp + 0x20]
cmp esi, edi
mov byte [esp + 0x2a8], 0
je 0x659f54
push ebx
mov ecx, esi
call fcn.00415c90
add esi, 4
cmp esi, edi
jne 0x659f41
mov esi, dword [esp + 0x20]
push esi
call fcn.006a64d0
add esp, 4
mov dword [esp + 0x20], ebx
mov dword [esp + 0x24], ebx
mov dword [esp + 0x28], ebx
lea ecx, [esp + 0x2b4]
mov dword [esp + 0x2a8], 0xffffffff
call fcn.0062d500
xor ax, ax
mov ecx, dword [esp + 0x2a0]
pop edi
pop esi
pop ebp
mov dword fs:[0], ecx
pop ebx
add esp, 0x29c
ret 0x20
lea ebx, [edi - 1]
mov ecx, ebp
push ebx
call fcn.0061b060
mov ecx, dword [eax + 4]
test ecx, ecx
jne 0x659fb4
xor esi, esi
jmp 0x659fbc
mov esi, dword [eax + 8]
sub esi, ecx
sar esi, 2
test si, si
mov dword [esp + 0x4c], 0
jbe 0x65a2f2
mov ecx, esi
and ecx, 0xffff
dec ecx
push ecx
push ebx
mov ecx, ebp
call fcn.0061b060
mov ecx, eax
call fcn.00690c60
push ecx
mov ecx, esp
mov dword [esp + 0x48], esp
push eax
call fcn.0061d790
lea ecx, [esp + 0x14]
call fcn.0061dab0
movzx di, byte [esp + 0x2c]
push edi
lea ecx, [esp + 0x14]
mov word [esp + 0x4c], di
call fcn.0061daa0
cmp al, 0x7f
jne 0x65a2ea
dec edi
lea ecx, [esp + 0x10]
push edi
call fcn.0061daa0
and al, 0x30
cmp al, 0x10
jne 0x65a2ea
mov edx, dword [esp + 0x20]
mov eax, dword [esp + 0x24]
push edx
push eax
push eax
mov esi, 1
call fcn.00414d10
mov ebp, dword [esp + 0x30]
mov ebx, eax
add esp, 0xc
cmp ebx, ebp
mov edi, ebx
je 0x65a062
push 0
mov ecx, edi
call fcn.00415c90
add edi, 4
cmp edi, ebp
jne 0x65a052
lea eax, [esp + 0x10]
lea ecx, [esp + 0x1c]
push eax
push 1
push ebx
mov dword [esp + 0x30], ebx
call fcn.00414350
mov al, byte [esp + 0x1b]
mov byte [esp + 0x50], al
xor eax, eax
mov dword [esp + 0x54], eax
mov dword [esp + 0x58], eax
mov dword [esp + 0x5c], eax
xor ebp, ebp
and esi, 0xffff
mov byte [esp + 0x2a8], 0x1a
mov dword [esp + 0x60], ebp
mov dword [esp + 0x14], esi
jle 0x65a1f2
push ebp
lea ecx, [esp + 0x20]
call fcn.00690c60
push ecx
mov ecx, esp
mov dword [esp + 0x48], esp
push eax
call fcn.0061d790
lea ecx, [esp + 0x14]
call fcn.0061dab0
mov ecx, dword [esp + 0x48]
lea eax, [ecx - 1]
lea ecx, [esp + 0x10]
push eax
call fcn.0061daa0
xor bx, bx
mov bl, al
cmp bx, 7
mov dword [esp + 0x40], ebx
jbe 0x65a0f4
mov ebx, 7
mov dword [esp + 0x40], ebx
lea ecx, [esp + 0x10]
call fcn.0061dc40
movsx edx, ax
xor esi, esi
and ebx, 0xffff
mov dword [esp + 0x44], edx
jle 0x65a14e
mov ebp, dword [esp + 0x2c]
lea eax, [esp + 0xa0]
and ebp, 0xff
sub ebp, eax
mov eax, dword [esp + 0x44]
lea edi, [esp + esi + 0xa0]
lea ecx, [edi + ebp]
cmp ecx, eax
jge 0x65a14a
mov edx, dword [esp + 0x48]
lea ecx, [esp + 0x10]
add edx, esi
push edx
call fcn.0061daa0
inc esi
mov byte [edi], al
cmp esi, ebx
jl 0x65a121
mov ebp, dword [esp + 0x60]
mov eax, dword [esp + 0x40]
lea ecx, [esp + 0xa0]
push eax
push ecx
lea ecx, [esp + 0x54]
call fcn.0061d820
mov eax, dword [esp + 0x58]
lea edx, [esp + 0x4c]
push edx
push 1
push eax
lea ecx, [esp + 0x5c]
mov byte [esp + 0x2b4], 0x1b
call fcn.00414350
mov edi, dword [esp + 0x2cc]
mov ecx, ebx
mov edx, ecx
lea esi, [esp + 0xa0]
shr ecx, 2
rep movsd dword es:[edi], dword [esi]
mov ecx, edx
mov byte [esp + 0x2a8], 0x1a
and ecx, 3
rep movsb byte es:[edi], byte [esi]
lea ecx, [esp + 0x4c]
call fcn.0061d8c0
mov eax, dword [esp + 0x14]
inc ebp
cmp ebp, eax
mov dword [esp + 0x60], ebp
jl 0x65a0ab
mov eax, dword [esp + 0x54]
test eax, eax
je 0x65a1f2
mov ecx, dword [esp + 0x58]
sub ecx, eax
sar ecx, 2
je 0x65a1f2
mov esi, dword [esp + 0x2b0]
mov ecx, esi
call fcn.0061b090
lea edx, [esp + 0x50]
mov ecx, esi
push edx
call fcn.0061ae00
mov eax, dword [esp + 0x54]
mov edi, dword [esp + 0x58]
mov byte [esp + 0x2a8], 0x17
cmp eax, edi
mov esi, eax
je 0x65a216
mov ecx, esi
call fcn.0061d8c0
add esi, 4
cmp esi, edi
jne 0x65a204
mov eax, dword [esp + 0x54]
push eax
call fcn.006a64d0
xor edi, edi
add esp, 4
lea ecx, [esp + 0x64]
mov dword [esp + 0x54], edi
mov dword [esp + 0x58], edi
mov dword [esp + 0x5c], edi
mov byte [esp + 0x2a8], 0x12
call fcn.0062d500
mov eax, dword [esp + 0x38]
mov esi, dword [esp + 0x34]
cmp esi, eax
mov byte [esp + 0x2a8], 0x11
mov ebx, eax
je 0x65a266
mov ecx, esi
call fcn.0061d8c0
add esi, 4
cmp esi, ebx
jne 0x65a254
mov esi, dword [esp + 0x34]
push esi
call fcn.006a64d0
add esp, 4
lea ecx, [esp + 0x10]
mov dword [esp + 0x34], edi
mov dword [esp + 0x38], edi
mov dword [esp + 0x3c], edi
mov byte [esp + 0x2a8], 0x10
call fcn.0061d8c0
mov eax, dword [esp + 0x24]
mov esi, dword [esp + 0x20]
cmp esi, eax
mov byte [esp + 0x2a8], 0
mov ebx, eax
je 0x65a2b4
mov ecx, esi
call fcn.0061d8c0
add esi, 4
cmp esi, ebx
jne 0x65a2a2
mov esi, dword [esp + 0x20]
push esi
call fcn.006a64d0
add esp, 4
lea ecx, [esp + 0x2b4]
mov dword [esp + 0x20], edi
mov dword [esp + 0x24], edi
mov dword [esp + 0x28], edi
mov dword [esp + 0x2a8], 0xffffffff
call fcn.0062d500
mov ax, word [esp + 0x40]
jmp 0x659f83
mov dword [esp + 0x4c], 1
xor edi, edi
and esi, 0xffff
mov dword [esp + 0x14], esi
jle 0x65a39b
movzx si, byte [esp + 0x2c]
mov word [esp + 0x48], si
dec esi
push edi
push ebx
mov ecx, ebp
call fcn.0061b060
mov ecx, eax
call fcn.00690c60
push ecx
mov ecx, esp
mov dword [esp + 0x48], esp
push eax
call fcn.0061d790
lea ecx, [esp + 0x14]
call fcn.0061dab0
push esi
lea ecx, [esp + 0x14]
call fcn.0061daa0
and al, 0x30
cmp al, 0x10
jne 0x65a350
mov dword [esp + 0x4c], 1
jmp 0x65a357
cmp dword [esp + 0x4c], 1
jne 0x65a379
push esi
lea ecx, [esp + 0x14]
call fcn.0061daa0
and al, 0x20
cmp al, 0x20
je 0x65a379
mov ecx, dword [esp + 0x48]
push ecx
lea ecx, [esp + 0x14]
call fcn.0061daa0
cmp al, 0x7f
je 0x65a38e
mov eax, dword [esp + 0x24]
lea edx, [esp + 0x10]
push edx
push 1
push eax
lea ecx, [esp + 0x28]
call fcn.00414350
mov eax, dword [esp + 0x14]
inc edi
cmp edi, eax
jl 0x65a310
mov eax, dword [esp + 0x20]
test eax, eax
je 0x65a3b3
mov edi, dword [esp + 0x24]
mov ecx, edi
sub ecx, eax
test ecx, 0xfffffffc
jne 0x65a3fc
mov edx, dword [esp + 0x14]
mov ecx, ebp
dec edx
push edx
push 0
call fcn.0061b060
mov ecx, eax
call fcn.00690c60
push ecx
mov ecx, esp
mov dword [esp + 0x48], esp
push eax
call fcn.0061d790
lea ecx, [esp + 0x14]
call fcn.0061dab0
mov ecx, dword [esp + 0x24]
lea eax, [esp + 0x10]
push eax
push 1
push ecx
lea ecx, [esp + 0x28]
call fcn.00414350
mov eax, dword [esp + 0x20]
mov edi, dword [esp + 0x24]
test eax, eax
jne 0x65a404
xor edi, edi
jmp 0x65a409
sub edi, eax
sar edi, 2
push 0
lea ecx, [esp + 0x20]
call fcn.00690c60
push ecx
mov ecx, esp
mov dword [esp + 0x48], esp
push eax
call fcn.0061d790
lea ecx, [esp + 0x14]
call fcn.0061dab0
mov edx, dword [esp + 0x38]
mov eax, dword [esp + 0x34]
push edx
push eax
lea ecx, [esp + 0x38]
mov esi, eax
call fcn.00413d20
xor bl, bl
xor ebp, ebp
and edi, 0xffff
mov dword [esp + 0x38], esi
jle 0x65a4fe
push ebp
lea ecx, [esp + 0x20]
call fcn.00690c60
push ecx
mov ecx, esp
mov dword [esp + 0x48], esp
push eax
call fcn.0061d790
lea ecx, [esp + 0x14]
call fcn.0061dab0
test bl, bl
jne 0x65a4e0
movzx si, byte [esp + 0x2c]
push esi
lea ecx, [esp + 0x14]
call fcn.0061daa0
cmp al, 0x7f
jne 0x65a499
mov ecx, dword [esp + 0x38]
lea eax, [esp + 0x10]
push eax
push 1
push ecx
jmp 0x65a4ec
lea edx, [esi - 1]
lea ecx, [esp + 0x10]
push edx
call fcn.0061daa0
and al, 0x30
cmp al, 0x10
jne 0x65a4ad
inc esi
push esi
lea ecx, [esp + 0x14]
call fcn.0061daa0
mov ecx, dword [esp + 0x2c8]
and eax, 0xff
and ecx, 0xff
add ecx, 0x40
cmp eax, ecx
jne 0x65a4f5
mov eax, dword [esp + 0x38]
lea edx, [esp + 0x10]
push edx
push 1
mov bl, 1
push eax
jmp 0x65a4ec
mov edx, dword [esp + 0x38]
lea ecx, [esp + 0x10]
push ecx
push 1
push edx
lea ecx, [esp + 0x3c]
call fcn.00414350
inc ebp
cmp ebp, edi
jl 0x65a453
mov ecx, dword [esp + 0x24]
mov eax, dword [esp + 0x20]
push ecx
push eax
lea ecx, [esp + 0x24]
mov esi, eax
call fcn.00413d20
mov eax, esi
xor esi, esi
mov dword [esp + 0x24], eax
mov ecx, dword [esp + 0x34]
test ecx, ecx
je 0x65a547
mov edx, dword [esp + 0x38]
sub edx, ecx
sar edx, 2
cmp esi, edx
jae 0x65a547
lea ecx, [ecx + esi*4]
push ecx
push 1
push eax
lea ecx, [esp + 0x28]
call fcn.00414350
mov eax, dword [esp + 0x24]
inc esi
jmp 0x65a51b
mov ecx, dword [esp + 0x20]
test ecx, ecx
jne 0x65a553
xor esi, esi
jmp 0x65a55a
sub eax, ecx
sar eax, 2
mov esi, eax
push 0
lea ecx, [esp + 0x20]
call fcn.00690c60
push ecx
mov ecx, esp
mov dword [esp + 0x48], esp
push eax
call fcn.0061d790
lea ecx, [esp + 0x14]
call fcn.0061dab0
movzx bx, byte [esp + 0x2c]
lea ecx, [esp + 0x10]
mov word [esp + 0x48], bx
lea edi, [ebx - 1]
push edi
call fcn.0061daa0
and al, 0x30
cmp al, 0x10
jne 0x65a077
push edi
lea ecx, [esp + 0x14]
call fcn.0061daa0
and al, 0xf
push ebx
movzx di, al
lea ecx, [esp + 0x14]
shl edi, 8
call fcn.0061daa0
xor dx, dx
mov ebx, 6
mov dl, al
mov al, byte [esp + 0x2c]
add edi, edx
cmp al, 5
mov dword [esp + 0x40], edi
jne 0x65a5d7
mov ebx, 5
mov ebp, dword [esp + 0x40]
lea edi, [ebx + 1]
sub ebp, ebx
mov dword [esp + 0x40], ebp
and ebp, 0xffff
mov eax, ebp
cdq
idiv edi
mov ecx, eax
mov eax, ebp
cdq
idiv edi
test edx, edx
je 0x65a5fb
inc ecx
and esi, 0xffff
and ecx, 0xffff
dec esi
cmp ecx, esi
je 0x65a743
mov eax, dword [0x72c0c8]
inc eax
cmp eax, 3
mov dword [0x72c0c8], eax
jle 0x65a6b8
xor ebx, ebx
lea ecx, [esp + 0x64]
mov dword [0x72c0c8], ebx
mov byte [esp + 0x2a8], 0x12
call fcn.0062d500
mov eax, dword [esp + 0x38]
mov esi, dword [esp + 0x34]
cmp esi, eax
mov byte [esp + 0x2a8], 0x11
mov edi, eax
je 0x65a665
mov ecx, esi
call fcn.0061d8c0
add esi, 4
cmp esi, edi
jne 0x65a653
mov esi, dword [esp + 0x34]
push esi
call fcn.006a64d0
add esp, 4
lea ecx, [esp + 0x10]
mov dword [esp + 0x34], ebx
mov dword [esp + 0x38], ebx
mov dword [esp + 0x3c], ebx
mov byte [esp + 0x2a8], 0x10
call fcn.0061d8c0
mov eax, dword [esp + 0x24]
mov esi, dword [esp + 0x20]
cmp esi, eax
mov byte [esp + 0x2a8], 0
mov edi, eax
je 0x659f54
mov ecx, esi
call fcn.0061d8c0
add esi, 4
cmp esi, edi
jne 0x65a6a5
jmp 0x659f50
lea ecx, [esp + 0x64]
mov byte [esp + 0x2a8], 0x12
call fcn.0062d500
mov edi, dword [esp + 0x38]
mov esi, dword [esp + 0x34]
cmp esi, edi
mov byte [esp + 0x2a8], 0x11
je 0x65a6ef
mov ecx, esi
call fcn.0061d8c0
add esi, 4
cmp esi, edi
jne 0x65a6dd
mov esi, dword [esp + 0x34]
push esi
call fcn.006a64d0
xor ebx, ebx
add esp, 4
lea ecx, [esp + 0x10]
mov dword [esp + 0x34], ebx
mov dword [esp + 0x38], ebx
mov dword [esp + 0x3c], ebx
mov byte [esp + 0x2a8], 0x10
call fcn.0061d8c0
mov eax, dword [esp + 0x24]
mov esi, dword [esp + 0x20]
cmp esi, eax
mov byte [esp + 0x2a8], bl
mov edi, eax
je 0x659f54
mov ecx, esi
call fcn.0061d8c0
add esi, 4
cmp esi, edi
jne 0x65a730
jmp 0x659f50
xor esi, esi
test ebx, ebx
jle 0x65a767
mov eax, dword [esp + 0x48]
lea ecx, [eax + esi + 1]
push ecx
lea ecx, [esp + 0x14]
call fcn.0061daa0
mov byte [esp + esi + 0xa0], al
inc esi
cmp esi, ebx
jl 0x65a749
xor esi, esi
test ebp, ebp
jle 0x65a7d7
mov eax, dword [esp + 0x2c]
and eax, 0xff
mov dword [esp + 0x60], eax
mov eax, esi
lea ecx, [esp + 0x1c]
cdq
idiv edi
and eax, 0xffff
inc eax
push eax
call fcn.00690c60
push ecx
mov ecx, esp
mov dword [esp + 0x48], esp
push eax
call fcn.0061d790
lea ecx, [esp + 0x14]
call fcn.0061dab0
lea ecx, [esp + 0x10]
call fcn.0061dc40
movsx ecx, ax
mov eax, esi
cdq
idiv edi
add edx, dword [esp + 0x60]
cmp edx, ecx
jge 0x65a7d7
push edx
lea ecx, [esp + 0x14]
call fcn.0061daa0
lea edx, [ebx + esi]
inc esi
cmp esi, ebp
mov byte [esp + edx + 0xa0], al
jl 0x65a77a
mov edi, dword [esp + 0x2cc]
lea ecx, [ebx + ebp]
mov eax, ecx
lea esi, [esp + 0xa0]
shr ecx, 2
rep movsd dword es:[edi], dword [esi]
mov ecx, eax
lea edx, [esp + 0xa0]
and ecx, 3
rep movsb byte es:[edi], byte [esi]
mov ecx, dword [esp + 0x40]
add ebx, ecx
lea ecx, [esp + 0x4c]
push ebx
push edx
call fcn.0061d820
mov al, byte [esp + 0x1b]
mov byte [esp + 0x50], al
xor eax, eax
mov dword [esp + 0x54], eax
mov dword [esp + 0x58], eax
mov dword [esp + 0x5c], eax
lea ecx, [esp + 0x4c]
mov byte [esp + 0x2a8], 0x19
push ecx
push 1
push eax
lea ecx, [esp + 0x5c]
call fcn.00414350
mov esi, dword [esp + 0x2b0]
mov ecx, esi
call fcn.0061b090
lea edx, [esp + 0x50]
mov ecx, esi
push edx
call fcn.0061ae00
mov ecx, dword [esp + 0x58]
mov eax, dword [esp + 0x54]
cmp eax, ecx
mov byte [esp + 0x2a8], 0x18
mov edi, ecx
mov esi, eax
je 0x65a881
mov ecx, esi
call fcn.0061d8c0
add esi, 4
cmp esi, edi
jne 0x65a86f
mov eax, dword [esp + 0x54]
push eax
call fcn.006a64d0
xor edi, edi
add esp, 4
lea ecx, [esp + 0x4c]
mov dword [esp + 0x54], edi
mov dword [esp + 0x58], edi
mov dword [esp + 0x5c], edi
mov byte [esp + 0x2a8], 0x17
call fcn.0061d8c0
lea ecx, [esp + 0x64]
mov byte [esp + 0x2a8], 0x12
call fcn.0062d500
mov eax, dword [esp + 0x38]
mov esi, dword [esp + 0x34]
cmp esi, eax
mov byte [esp + 0x2a8], 0x11
mov ebp, eax
je 0x65a8e2
mov ecx, esi
call fcn.0061d8c0
add esi, 4
cmp esi, ebp
jne 0x65a8d0
mov esi, dword [esp + 0x34]
push esi
call fcn.006a64d0
add esp, 4
lea ecx, [esp + 0x10]
mov dword [esp + 0x34], edi
mov dword [esp + 0x38], edi
mov dword [esp + 0x3c], edi
mov byte [esp + 0x2a8], 0x10
call fcn.0061d8c0
mov eax, dword [esp + 0x24]
mov esi, dword [esp + 0x20]
cmp esi, eax
mov byte [esp + 0x2a8], 0
mov ebp, eax
je 0x65a930
mov ecx, esi
call fcn.0061d8c0
add esi, 4
cmp esi, ebp
jne 0x65a91e
mov esi, dword [esp + 0x20]
push esi
call fcn.006a64d0
add esp, 4
mov dword [esp + 0x20], edi
mov dword [esp + 0x24], edi
mov dword [esp + 0x28], edi
lea ecx, [esp + 0x2b4]
mov dword [esp + 0x2a8], 0xffffffff
call fcn.0062d500
mov ax, bx
jmp 0x659f83
mov ecx, dword [esp + 0x2b0]
call fcn.0061b070
xor ebp, ebp
test ax, ax
jbe case.0x659481.11
xor edi, edi
and eax, 0xffff
mov dword [esp + 0x44], eax
jle 0x6597e2
xor ebx, ebx
mov ecx, dword [esp + 0x2b0]
push edi
call fcn.0061b060
mov ecx, dword [eax + 4]
test ecx, ecx
je 0x65aa28
mov eax, dword [eax + 8]
sub eax, ecx
sar eax, 2
cmp ebx, eax
jae 0x65aa28
mov ecx, dword [esp + 0x2b0]
push edi
xor esi, esi
call fcn.0061b060
mov eax, dword [eax + 4]
lea ecx, [eax + ebx*4]
call fcn.0061dc40
test ax, ax
jle 0x65aa22
mov ecx, dword [esp + 0x2b0]
push edi
call fcn.0061b060
mov eax, dword [eax + 4]
push esi
lea ecx, [eax + ebx*4]
call fcn.0061daa0
mov ecx, dword [esp + 0x2cc]
inc ebp
cmp ebp, 0xff
mov byte [ecx + ebp - 1], al
jg 0x6597e2
mov ecx, dword [esp + 0x2b0]
push edi
inc esi
call fcn.0061b060
mov eax, dword [eax + 4]
lea ecx, [eax + ebx*4]
call fcn.0061dc40
movsx edx, ax
cmp esi, edx
jl 0x65a9d1
inc ebx
jmp 0x65a98e
mov eax, dword [esp + 0x44]
inc edi
cmp edi, eax
jl 0x65a98c
jmp 0x6597e2
lea eax, [esp + 0x14]
mov ecx, esi
push eax
call fcn.0061afb0
lea ecx, [esp + 0x14]
mov byte [esp + 0x2a8], 0x1c
call fcn.0061dc40
cmp ax, 2
jge 0x65aa73
lea ecx, [esp + 0x14]
mov byte [esp + 0x2a8], 0
call fcn.0061d8c0
jmp case.0x659481.11
push 1
lea ecx, [esp + 0x18]
call fcn.0061daa0
and eax, 0xff
xor esi, esi
sub eax, 0x55
mov edi, eax
test edi, edi
jle 0x65aaaa
mov ebx, dword [esp + 0x2cc]
lea ecx, [esi + 2]
push ecx
lea ecx, [esp + 0x18]
call fcn.0061daa0
mov byte [esi + ebx], al
inc esi
cmp esi, edi
jl 0x65aa95
lea ecx, [esp + 0x14]
mov byte [esp + 0x2a8], 0
call fcn.0061d8c0
lea ecx, [esp + 0x2b4]
mov dword [esp + 0x2a8], 0xffffffff
call fcn.0062d500
mov ax, di
jmp 0x659f83
mov ecx, esi
call fcn.0061b070
test ax, ax
jle case.0x659481.11
mov ecx, dword [esp + 0x2b0]
lea edx, [esp + 0x4c]
push edx
call fcn.0061afb0
push 0
lea ecx, [esp + 0x50]
mov byte [esp + 0x2ac], 0x1d
call fcn.0061daa0
mov bl, al
xor esi, esi
dec bl
mov byte [esp + 0x44], bl
mov edi, dword [esp + 0x44]
and edi, 0xff
jle 0x65ab40
mov ebp, dword [esp + 0x2cc]
lea eax, [esi + 1]
lea ecx, [esp + 0x4c]
push eax
call fcn.0061daa0
mov byte [esi + ebp], al
inc esi
cmp esi, edi
jl 0x65ab2b
movzx si, bl
mov byte [esp + 0x2a8], 0
lea ecx, [esp + 0x4c]
jmp 0x65ac43
lea ecx, [esp + 0x14]
push ecx
mov ecx, dword [esp + 0x2b4]
call fcn.0061afb0
lea ecx, [esp + 0x14]
mov byte [esp + 0x2a8], 0x1e
xor esi, esi
call fcn.0061dc40
test ax, ax
jle 0x65aba3
mov edi, dword [esp + 0x2cc]
push esi
lea ecx, [esp + 0x18]
call fcn.0061daa0
mov byte [esi + edi], al
lea ecx, [esp + 0x14]
inc esi
call fcn.0061dc40
movsx edx, ax
cmp esi, edx
jl 0x65ab85
lea ecx, [esp + 0x14]
call fcn.0061dc40
mov esi, eax
mov byte [esp + 0x2a8], 0
lea ecx, [esp + 0x14]
jmp 0x65ac43
lea eax, [esp + 0x40]
mov ecx, esi
push eax
call fcn.0061afb0
lea ecx, [esp + 0x40]
mov byte [esp + 0x2a8], 0x1f
call fcn.0061dc40
test ax, ax
jge 0x65abf7
lea ecx, [esp + 0x40]
mov byte [esp + 0x2a8], 0
call fcn.0061d8c0
jmp case.0x659481.11
lea ecx, [esp + 0x40]
xor esi, esi
call fcn.0061dc40
test ax, ax
jle 0x65ac2c
mov edi, dword [esp + 0x2cc]
push esi
lea ecx, [esp + 0x44]
call fcn.0061daa0
mov byte [esi + edi], al
lea ecx, [esp + 0x40]
inc esi
call fcn.0061dc40
movsx ecx, ax
cmp esi, ecx
jl 0x65ac0e
lea ecx, [esp + 0x40]
call fcn.0061dc40
mov esi, eax
mov byte [esp + 0x2a8], 0
lea ecx, [esp + 0x40]
call fcn.0061d8c0
lea ecx, [esp + 0x2b4]
mov dword [esp + 0x2a8], 0xffffffff
call fcn.0062d500
mov ax, si
jmp 0x659f83
mov dword [esp + 0x14], edi
xor ebx, ebx
push edi
mov ecx, esi
call fcn.0061b060
mov ecx, dword [eax + 4]
cmp ecx, edi
je 0x65ae0b
mov edx, dword [eax + 8]
sub edx, ecx
sar edx, 2
cmp ebx, edx
jae 0x65ae0b
push edi
mov ecx, esi
call fcn.0061b060
mov eax, dword [eax + 4]
lea ecx, [esp + 0x2c]
lea eax, [eax + ebx*4]
push eax
call fcn.0061d790
lea ecx, [esp + 0x2c]
mov byte [esp + 0x2a8], 0x20
call fcn.0061dc40
cmp ax, 4
jl 0x65adf5
mov ecx, 0x3f
xor eax, eax
lea edi, [esp + 0x1a1]
mov byte [esp + 0x1a0], 0
rep stosd dword es:[edi], eax
test ebx, ebx
stosw word es:[edi], ax
lea ecx, [esp + 0x2c]
jne 0x65acfd
call fcn.0061dc40
mov bp, ax
lea ecx, [esp + 0x1a0]
sub ebp, 4
push ebp
push 3
push ecx
jmp 0x65ad13
call fcn.0061dc40
mov bp, ax
lea edx, [esp + 0x1a0]
sub ebp, 5
push ebp
push 4
push edx
lea ecx, [esp + 0x38]
call fcn.0061dc70
call fcn.00633db0
test al, al
je 0x65ad46
mov edi, dword [esp + 0x2cc]
mov ecx, 0xc
lea esi, [esp + 0x1a0]
mov dword [esp + 0x14], 0x32
rep movsd dword es:[edi], dword [esi]
movsw word es:[edi], word [esi]
jmp 0x65ad6a
mov edi, dword [esp + 0x2cc]
mov ecx, ebp
and ecx, 0xffff
lea esi, [esp + 0x1a0]
mov eax, ecx
shr ecx, 2
rep movsd dword es:[edi], dword [esi]
mov ecx, eax
and ecx, 3
rep movsb byte es:[edi], byte [esi]
mov ecx, dword [esp + 0x2cc]
push ebp
push ecx
lea ecx, [esp + 0x68]
call fcn.0061d820
push ecx
lea edx, [esp + 0x64]
mov ecx, esp
mov dword [esp + 0x48], esp
push edx
mov byte [esp + 0x2b0], 0x21
call fcn.0061d790
mov ecx, dword [esp + 0x2b4]
push ebx
push 0
mov byte [esp + 0x2b4], 0x21
call fcn.0061b060
mov ecx, eax
call fcn.00690c60
mov ecx, eax
call fcn.0061dab0
mov ecx, dword [esp + 0x14]
mov byte [esp + 0x2a8], 0x20
add ecx, ebp
mov dword [esp + 0x14], ecx
lea ecx, [esp + 0x60]
call fcn.0061d8c0
lea ecx, [esp + 0x2c]
mov byte [esp + 0x2a8], 0
call fcn.0061d8c0
mov esi, dword [esp + 0x2b0]
inc ebx
xor edi, edi
jmp 0x65ac6d
lea ecx, [esp + 0x2c]
mov byte [esp + 0x2a8], 0
call fcn.0061d8c0
jmp case.0x659481.11
lea ecx, [esp + 0x2b4]
mov dword [esp + 0x2a8], 0xffffffff
call fcn.0062d500
mov ax, word [esp + 0x14]
jmp 0x659f83