Function at 0x4061f0
Capabilities:
Encode data using base64
Parse credit card information
Resolve function by parsing pe exports

Disassembly:
push ebp
push edi
push esi
push ebx
mov ebx, edx
sub esp, 0x12c
mov ebp, dword [esp + 0x140]
mov dword [esp + 0x28], eax
mov dword [esp + 0x9c], eax
mov dword [esp + 0x14], ecx
mov eax, dword [ebp + 0x14]
mov dword [esp], 0x280
mov dword [esp + 0x18], eax
call sub.msvcrt.dll_malloc
test eax, eax
mov dword [esp + 0x30], eax
je 0x406300
mov eax, dword [esp + 0x14]
and byte [ebp + 0x1c], 0x97
mov dword [ebp + 8], 0
mov dword [ebp + 0xc], eax
mov eax, dword [0x420120]
mov dword [ebp + 0x18], 0
test eax, eax
je 0x406347
mov eax, dword [ebp + 4]
test eax, eax
je 0x406310
mov ecx, dword [esp + 0x28]
mov edi, dword [ebp]
mov esi, dword [esp + 0x14]
add ebx, dword [esp + 0x28]
mov dword [esp + 0xc], edi
mov dword [esp + 0x38], 0
mov eax, esi
and eax, 2
mov dword [esp + 0x34], eax
mov eax, esi
mov dword [esp + 0x1c], ebx
and eax, 0x200
xor ebx, ebx
mov dword [esp + 0x40], 0x20
mov dword [esp + 0x3c], 0
mov dword [esp + 0x10], 0
mov dword [esp + 0x2c], 0
mov dword [esp + 0x44], eax
mov dword [esp + 0x20], ebx
cmp dword [esp + 0x1c], ecx
je 0x40756c
mov eax, dword [esp + 0x18]
lea edx, [ecx + 1]
mov dword [esp + 0x9c], edx
movzx ebx, byte [ecx]
test eax, eax
je 0x4062de
movzx ebx, byte [eax + ebx]
lea eax, [ebx - 0xa]
cmp al, 0x72
ja case.0x4062ec.1
movzx eax, al
jmp dword [eax*4 + 0x41ee34]
mov eax, dword [esp + 0x30]
mov dword [esp], eax
call sub.msvcrt.dll_free
nop
mov eax, 0xc
add esp, 0x12c
pop ebx
pop esi
pop edi
pop ebp
ret
mov eax, dword [ebp]
test eax, eax
je 0x407368
mov dword [esp + 4], 0x20
mov dword [esp], eax
call sub.msvcrt.dll_realloc
mov dword [ebp], eax
test eax, eax
je 0x4062f3
mov dword [ebp + 4], 0x20
mov ecx, dword [esp + 0x9c]
mov edi, eax
jmp 0x406269
mov esi, dword [sym.imp.msvcrt.dll_isalnum]
mov edx, 0x420180
mov ecx, 0x40
xor eax, eax
mov edi, edx
rep stosd dword es:[edi], eax
xor edi, edi
nop
mov dword [esp], edi
call esi
test eax, eax
je 0x406370
mov byte [edi + 0x420180], 1
add edi, 1
cmp edi, 0x100
jne 0x406360
mov byte [0x4201df], 1
mov eax, dword [ebp + 4]
mov dword [0x420120], 1
test eax, eax
je 0x406310
jmp 0x406262
mov dword [esp + 0x10], edi
mov edi, dword [esp + 0x20]
mov dword [esp + 0x2c], esi
mov dword [esp + 0x20], ebx
mov eax, edi
add edi, 1
sub eax, ebx
sub eax, 3
mov byte [edi - 1], 0x14
mov byte [ebx + 1], al
sar eax, 8
mov byte [ebx], 0xe
mov byte [ebx + 2], al
mov eax, dword [esp + 0x38]
test eax, eax
jne 0x407ba6
test dword [esp + 0x14], 0x20000
je 0x406da3
mov ebx, 0x29
mov esi, dword [esp + 0x2c]
test esi, esi
je 0x4063ff
movzx eax, byte [esi]
movzx edx, al
lea esi, [esi + edx + 1]
cmp esi, edi
je 0x40737c
mov byte [esp + 0x24], bl
mov edx, edi
mov ebx, edi
mov esi, dword [ebp]
mov edi, dword [esp + 0x20]
nop
mov eax, dword [ebp + 4]
mov ecx, edx
sub ecx, esi
add ecx, 2
cmp ecx, eax
jbe 0x4065d9
cmp eax, 0x10000
je 0x406483
add eax, eax
cmp eax, 0x10000
ja 0x406475
mov dword [ebp + 4], eax
mov dword [esp + 4], eax
mov dword [esp], esi
mov dword [esp + 0x10], edx
call sub.msvcrt.dll_realloc
test eax, eax
mov dword [ebp], eax
je 0x406300
cmp eax, esi
mov edx, dword [esp + 0x10]
je 0x406471
mov ecx, eax
sub ecx, esi
add edx, ecx
add dword [esp + 0xc], ecx
test edi, edi
lea esi, [edi + ecx]
cmovne edi, esi
add ecx, ebx
test ebx, ebx
cmovne ebx, ecx
mov esi, eax
jmp 0x406410
mov dword [ebp + 4], 0x10000
mov eax, 0x10000
jmp 0x406435
add esp, 0x12c
mov eax, 0xf
pop ebx
pop esi
pop edi
pop ebp
ret
test dword [esp + 0x14], 0x402
jne case.0x4062ec.1
mov eax, dword [esp + 0x10]
test eax, eax
je 0x407644
mov eax, dword [esp + 0x9c]
xor ecx, ecx
xor esi, esi
mov dword [esp + 0x24], edi
lea esi, [esi]
cmp bl, 0x2b
setne dl
or esi, edx
cmp bl, 0x3f
setne dl
or ecx, edx
cmp dword [esp + 0x1c], eax
je 0x407563
mov edi, dword [esp + 0x18]
lea edx, [eax + 1]
mov dword [esp + 0x9c], edx
movzx ebx, byte [eax]
test edi, edi
je 0x4064f3
movzx ebx, byte [edi + ebx]
cmp bl, 0x2a
je 0x40652e
mov edi, dword [esp + 0x34]
test edi, edi
je 0x406529
cmp bl, 0x5c
jne 0x406537
cmp dword [esp + 0x1c], edx
je 0x407b6f
mov edi, dword [esp + 0x18]
lea edx, [eax + 2]
mov dword [esp + 0x9c], edx
movzx ebx, byte [eax + 1]
test edi, edi
je 0x406529
movzx ebx, byte [edi + ebx]
cmp bl, 0x3f
jne 0x406532
mov eax, edx
jmp 0x4064c0
cmp bl, 0x2b
je 0x40652e
mov edi, dword [esp + 0x24]
mov dword [esp + 0x9c], eax
mov eax, dword [esp + 0x10]
test eax, eax
je 0x406caf
test cl, cl
je 0x4073db
mov eax, esi
mov edx, edi
mov ebx, dword [ebp]
mov edi, dword [esp + 0x20]
mov esi, dword [esp + 0x10]
mov byte [esp + 0x24], al
mov eax, dword [ebp + 4]
mov ecx, edx
sub ecx, ebx
add ecx, 3
cmp ecx, eax
jbe 0x4079ef
cmp eax, 0x10000
je 0x406483
add eax, eax
cmp eax, 0x10000
ja 0x407346
mov dword [ebp + 4], eax
mov ecx, dword [ebp]
mov dword [esp + 4], eax
mov dword [esp + 0x10], edx
mov dword [esp], ecx
call sub.msvcrt.dll_realloc
test eax, eax
mov dword [ebp], eax
je 0x406300
cmp eax, ebx
mov edx, dword [esp + 0x10]
je 0x4065d5
mov ecx, eax
sub ecx, ebx
add edx, ecx
add dword [esp + 0xc], ecx
test edi, edi
lea ebx, [edi + ecx]
cmovne edi, ebx
add ecx, esi
test esi, esi
cmovne esi, ecx
mov ebx, eax
jmp 0x406569
mov dword [esp + 0x10], ebx
movzx ebx, byte [esp + 0x24]
lea eax, [edx + 1]
mov dword [esp + 0x20], edi
lea esi, [edx + 2]
mov byte [edx], 2
mov byte [edx + 1], 0
mov dword [esp + 0x2c], eax
mov edi, dword [ebp]
mov byte [esp + 0x48], bl
mov ebx, dword [esp + 0x2c]
mov dword [esp + 0x24], esi
mov esi, dword [esp + 0x10]
mov edx, edi
mov edi, dword [esp + 0x20]
mov ecx, dword [esp + 0x24]
mov eax, dword [ebp + 4]
sub ecx, edx
add ecx, 1
cmp ecx, eax
jbe 0x406c90
cmp eax, 0x10000
je 0x406483
add eax, eax
cmp eax, 0x10000
ja 0x406687
mov dword [ebp + 4], eax
mov dword [esp + 4], eax
mov dword [esp], edx
mov dword [esp + 0x10], edx
call sub.msvcrt.dll_realloc
test eax, eax
mov dword [ebp], eax
je 0x406300
mov edx, dword [esp + 0x10]
cmp eax, edx
je 0x406683
mov ecx, eax
sub ecx, edx
mov edx, ecx
add dword [esp + 0x24], ecx
add dword [esp + 0xc], ecx
test edi, edi
lea ecx, [edi + ecx]
cmovne edi, ecx
test esi, esi
lea ecx, [esi + edx]
cmovne esi, ecx
add edx, ebx
test ebx, ebx
cmovne ebx, edx
mov edx, eax
jmp 0x406610
mov dword [ebp + 4], 0x10000
mov eax, 0x10000
jmp 0x40663b
test dword [esp + 0x14], 0x2000
je case.0x4062ec.1
mov eax, dword [esp + 0x20]
test eax, eax
je 0x4063c6
mov ebx, dword [ebp]
mov dword [esp + 0x20], edi
mov esi, dword [esp + 0x2c]
mov edi, dword [esp + 0x10]
mov edx, ebx
mov ebx, eax
mov ecx, dword [esp + 0x20]
mov eax, dword [ebp + 4]
sub ecx, edx
add ecx, 1
cmp ecx, eax
jbe 0x40639c
cmp eax, 0x10000
je 0x406483
add eax, eax
cmp eax, 0x10000
ja 0x407335
mov dword [ebp + 4], eax
mov ecx, dword [ebp]
mov dword [esp + 4], eax
mov dword [esp + 0x10], edx
mov dword [esp], ecx
call sub.msvcrt.dll_realloc
test eax, eax
mov dword [ebp], eax
je 0x406300
mov edx, dword [esp + 0x10]
cmp eax, edx
je 0x40673c
mov ecx, eax
sub ecx, edx
mov edx, ecx
add dword [esp + 0x20], ecx
add dword [esp + 0xc], ecx
test ebx, ebx
lea ecx, [ebx + ecx]
cmovne ebx, ecx
test edi, edi
lea ecx, [edi + edx]
cmovne edi, ecx
add edx, esi
test esi, esi
cmovne esi, edx
mov edx, eax
jmp 0x4066c2
mov ebx, dword [ebp]
mov esi, dword [esp + 0x2c]
mov dword [esp + 0x24], edi
mov edx, ebx
mov ebx, dword [esp + 0x20]
mov ecx, dword [esp + 0x24]
mov eax, dword [ebp + 4]
sub ecx, edx
add ecx, 1
cmp ecx, eax
jbe 0x4074aa
cmp eax, 0x10000
je 0x406483
add eax, eax
cmp eax, 0x10000
ja 0x4072e0
mov dword [ebp + 4], eax
mov dword [esp + 4], eax
mov dword [esp], edx
mov dword [esp + 0x10], edx
call sub.msvcrt.dll_realloc
test eax, eax
mov dword [ebp], eax
je 0x406300
mov edx, dword [esp + 0x10]
cmp eax, edx
je 0x4067c8
mov ecx, eax
sub ecx, edx
mov edx, ecx
add dword [esp + 0x24], ecx
add dword [esp + 0xc], ecx
test ebx, ebx
lea ecx, [ebx + ecx]
cmovne ebx, ecx
test edi, edi
lea ecx, [edi + edx]
cmovne edi, ecx
add edx, esi
test esi, esi
cmovne esi, edx
mov edx, eax
jmp 0x406751
cmp dword [esp + 0x1c], edx
je 0x408045
mov ecx, edi
mov ebx, dword [ebp]
mov esi, dword [esp + 0x2c]
mov edi, dword [esp + 0x20]
mov edx, dword [ebp + 4]
mov eax, ecx
sub eax, ebx
add eax, 0x22
cmp eax, edx
jbe 0x4074cc
cmp edx, 0x10000
je 0x406483
add edx, edx
cmp edx, 0x10000
ja 0x4072f1
mov dword [ebp + 4], edx
mov dword [esp + 4], edx
mov dword [esp], ebx
mov dword [esp + 0x10], ecx
call sub.msvcrt.dll_realloc
test eax, eax
mov dword [ebp], eax
je 0x406300
cmp eax, ebx
mov ecx, dword [esp + 0x10]
je 0x40684e
mov edx, eax
sub edx, ebx
add ecx, edx
add dword [esp + 0xc], edx
test edi, edi
lea ebx, [edi + edx]
cmovne edi, ebx
add edx, esi
test esi, esi
cmovne esi, edx
mov ebx, eax
jmp 0x4067e3
cmp dword [esp + 0x1c], edx
je 0x407b6f
lea edx, [ecx + 2]
mov dword [esp + 0x9c], edx
movzx ebx, byte [ecx + 1]
lea eax, [ebx - 0x27]
cmp al, 0x55
ja case.0x406878.3
movzx eax, al
jmp dword [eax*4 + 0x41f000]
mov eax, dword [esp + 0x28]
add eax, 1
cmp edx, eax
je 0x4068cb
test byte [esp + 0x14], 8
jne 0x4068cb
lea edx, [ecx - 1]
xor eax, eax
cmp dword [esp + 0x28], edx
jae 0x4068a3
cmp byte [ecx - 2], 0x5c
sete al
movzx edx, byte [ecx - 1]
cmp dl, 0x28
je 0x407b5c
cmp dl, 0x7c
jne case.0x4062ec.1
test dword [esp + 0x14], 0x8000
jne 0x4068cb
test al, al
je case.0x4062ec.1
mov ebx, dword [ebp]
mov dword [esp + 0x24], edi
mov esi, dword [esp + 0x2c]
mov edi, dword [esp + 0x10]
mov edx, ebx
mov ebx, dword [esp + 0x20]
mov ecx, dword [esp + 0x24]
mov eax, dword [ebp + 4]
sub ecx, edx
add ecx, 1
cmp ecx, eax
jbe 0x407622
cmp eax, 0x10000
je 0x406483
add eax, eax
cmp eax, 0x10000
ja 0x407313
mov dword [ebp + 4], eax
mov ecx, dword [ebp]
mov dword [esp + 4], eax
mov dword [esp + 0x10], edx
mov dword [esp], ecx
call sub.msvcrt.dll_realloc
test eax, eax
mov dword [ebp], eax
je 0x406300
mov edx, dword [esp + 0x10]
cmp eax, edx
je 0x40695a
mov ecx, eax
sub ecx, edx
mov edx, ecx
add dword [esp + 0x24], ecx
add dword [esp + 0xc], ecx
test ebx, ebx
lea ecx, [ebx + ecx]
cmovne ebx, ecx
test edi, edi
lea ecx, [edi + edx]
cmovne edi, ecx
add edx, esi
test esi, esi
cmovne esi, edx
mov edx, eax
jmp 0x4068e0
test dword [esp + 0x14], 0x8000
je case.0x4062ec.1
mov ebx, 0x7c
test dword [esp + 0x14], 0x400
jne case.0x4062ec.1
mov esi, edi
mov ebx, dword [ebp]
mov edi, dword [esp + 0x20]
mov eax, dword [ebp + 4]
mov ecx, esi
sub ecx, ebx
add ecx, 3
cmp ecx, eax
jbe 0x40770d
cmp eax, 0x10000
je 0x406483
add eax, eax
cmp eax, 0x10000
ja 0x407324
mov dword [ebp + 4], eax
mov ecx, dword [ebp]
mov dword [esp + 4], eax
mov dword [esp], ecx
call sub.msvcrt.dll_realloc
test eax, eax
mov dword [ebp], eax
je 0x406300
cmp eax, ebx
je 0x4069e4
mov ecx, eax
sub ecx, ebx
add esi, ecx
add dword [esp + 0xc], ecx
add ecx, edi
test edi, edi
cmovne edi, ecx
mov ebx, eax
jmp 0x406988
test dword [esp + 0x14], 0x800
jne 0x406971
jmp case.0x4062ec.1
cmp dword [esp + 0x1c], edx
je 0x406a45
mov esi, dword [esp + 0x14]
and esi, 8
jne 0x406a45
movzx eax, byte [ecx + 1]
cmp al, 0x5c
sete dl
add ecx, 2
cmp dword [esp + 0x1c], ecx
cmovbe ecx, esi
test dword [esp + 0x14], 0x2000
je 0x40765f
cmp al, 0x29
je 0x406a45
test dword [esp + 0x14], 0x8000
je 0x407a47
cmp al, 0x7c
jne case.0x4062ec.1
mov ebx, dword [ebp]
mov dword [esp + 0x24], edi
mov esi, dword [esp + 0x2c]
mov edi, dword [esp + 0x10]
mov edx, ebx
mov ebx, dword [esp + 0x20]
lea esi, [esi]
mov ecx, dword [esp + 0x24]
mov eax, dword [ebp + 4]
sub ecx, edx
add ecx, 1
cmp ecx, eax
jbe 0x407600
cmp eax, 0x10000
je 0x406483
add eax, eax
cmp eax, 0x10000
ja 0x407302
mov dword [ebp + 4], eax
mov dword [esp + 4], eax
mov dword [esp], edx
mov dword [esp + 0x10], edx
call sub.msvcrt.dll_realloc
test eax, eax
mov dword [ebp], eax
je 0x406300
mov edx, dword [esp + 0x10]
cmp eax, edx
je 0x406ad7
mov ecx, eax
sub ecx, edx
mov edx, ecx
add dword [esp + 0x24], ecx
add dword [esp + 0xc], ecx
test ebx, ebx
lea ecx, [ebx + ecx]
cmovne ebx, ecx
test edi, edi
lea ecx, [edi + edx]
cmovne edi, ecx
add edx, esi
test esi, esi
cmovne esi, edx
mov edx, eax
jmp 0x406a60
test dword [esp + 0x14], 0x2000
je case.0x4062ec.1
mov eax, dword [esp + 0x40]
add dword [ebp + 0x18], 1
add dword [esp + 0x3c], 1
cmp dword [esp + 0x38], eax
je 0x407cd8
mov eax, dword [esp + 0x38]
mov ebx, dword [esp + 0x30]
mov edx, dword [esp + 0xc]
lea eax, [eax + eax*4]
lea eax, [ebx + eax*4]
mov ebx, dword [ebp]
sub edx, ebx
mov dword [eax], edx
mov edx, dword [esp + 0x20]
test edx, edx
je 0x407c87
sub edx, ebx
add edx, 1
mov esi, dword [esp + 0x3c]
mov dword [eax + 4], edx
mov edx, edi
sub edx, ebx
mov dword [eax + 0xc], edx
cmp esi, 0xff
mov dword [eax + 0x10], esi
ja 0x40747d
add edx, 2
mov dword [eax + 8], edx
mov eax, dword [ebp + 4]
mov edx, edi
sub edx, ebx
add edx, 3
cmp edx, eax
jbe 0x40746a
cmp eax, 0x10000
je 0x406483
add eax, eax
cmp eax, 0x10000
ja 0x407357
mov dword [ebp + 4], eax
mov edx, dword [ebp]
mov dword [esp + 4], eax
mov dword [esp], edx
call sub.msvcrt.dll_realloc
test eax, eax
mov dword [ebp], eax
je 0x406300
cmp eax, ebx
je 0x406b9e
mov edx, eax
sub edx, ebx
add edi, edx
mov ebx, eax
jmp 0x406b4d
mov eax, dword [esp + 0x14]
and eax, 0x1200
cmp eax, 0x1200
jne case.0x4062ec.1
mov dword [esp + 0x48], edx
mov eax, dword [esp + 0x48]
cmp dword [esp + 0x1c], eax
je 0x407685
mov edx, dword [esp + 0x48]
mov esi, 0xffffffff
mov ecx, dword [esp + 0x18]
jmp 0x406bfc
cmp esi, 0x7fff
jg 0x406bf2
xor ebx, ebx
cmp esi, 0xffffffff
je 0x406beb
lea ebx, [esi + esi*4]
add ebx, ebx
movzx esi, al
lea esi, [ebx + esi - 0x30]
cmp dword [esp + 0x1c], edx
je 0x4078ee
add edx, 1
test ecx, ecx
mov dword [esp + 0x9c], edx
movzx eax, byte [edx - 1]
je 0x406c12
movzx eax, byte [ecx + eax]
lea ebx, [eax - 0x30]
cmp bl, 9
jbe 0x406bd7
cmp al, 0x2c
mov ebx, 0xffffffff
jne 0x4078ee
cmp edx, dword [esp + 0x1c]
je 0x406c70
mov ecx, dword [esp + 0x18]
add edx, 1
mov dword [esp + 0x9c], edx
movzx eax, byte [edx - 1]
test ecx, ecx
je 0x406c47
movzx eax, byte [ecx + eax]
lea ecx, [eax - 0x30]
cmp cl, 9
ja 0x406c70
cmp ebx, 0x7fff
jg 0x406c27
xor ecx, ecx
cmp ebx, 0xffffffff
je 0x406c63
lea ecx, [ebx + ebx*4]
add ecx, ecx
cmp edx, dword [esp + 0x1c]
movzx ebx, al
lea ebx, [ecx + ebx - 0x30]
jne 0x406c2d
cmp ebx, 0xffffffff
je 0x407fc3
cmp ebx, esi
mov dword [esp + 0x24], esi
setl cl
mov esi, ebx
jmp 0x4078f4
mov eax, ebx
mov dword [esp + 0x2c], ebx
movzx ebx, byte [esp + 0x48]
mov dword [esp + 0x10], esi
mov esi, dword [esp + 0x24]
mov dword [esp + 0x20], edi
mov byte [esi], bl
lea edi, [esi + 1]
add byte [eax], 1
mov ecx, dword [esp + 0x9c]
jmp 0x4062bb
mov eax, dword [esp + 0x14]
and eax, 0x1200
cmp eax, 0x200
je 0x406bb6
mov ebx, 0x7b
mov eax, dword [esp + 0x18]
test eax, eax
je case.0x4062ec.1
movzx ebx, byte [eax + ebx]
jmp case.0x4062ec.1
test dword [esp + 0x14], 0x80000
jne case.0x4062ec.1
mov ebx, dword [ebp]
mov esi, dword [esp + 0x10]
mov eax, dword [ebp + 4]
mov ecx, edi
sub ecx, ebx
add ecx, 1
cmp ecx, eax
jbe 0x40811a
cmp eax, 0x10000
je 0x406483
add eax, eax
cmp eax, 0x10000
ja 0x4076da
mov dword [ebp + 4], eax
mov dword [esp + 4], eax
mov dword [esp], ebx
call sub.msvcrt.dll_realloc
test eax, eax
mov dword [ebp], eax
je 0x406300
cmp eax, ebx
je 0x406d77
mov edx, eax
sub edx, ebx
mov ebx, dword [esp + 0x20]
add edi, edx
add dword [esp + 0xc], edx
lea ecx, [ebx + edx]
test ebx, ebx
cmove ecx, ebx
mov ebx, dword [esp + 0x2c]
test esi, esi
mov dword [esp + 0x20], ecx
lea ecx, [esi + edx]
cmovne esi, ecx
add edx, ebx
test ebx, ebx
cmove edx, ebx
mov dword [esp + 0x2c], edx
mov ebx, eax
jmp 0x406cfe
test dword [esp + 0x14], 0x2000
jne case.0x406878.3
mov eax, dword [esp + 0x38]
test eax, eax
jne 0x4066a3
test dword [esp + 0x14], 0x20000
jne case.0x406878.3
mov eax, dword [esp + 0x30]
mov dword [esp], eax
call sub.msvcrt.dll_free
mov eax, 0x10
jmp 0x406305
test dword [esp + 0x14], 0x2000
jne case.0x406878.3
jmp 0x406ae9
test dword [esp + 0x14], 0x80000
jne case.0x4062ec.1
mov ebx, dword [ebp]
mov esi, dword [esp + 0x10]
mov eax, dword [ebp + 4]
mov ecx, edi
sub ecx, ebx
add ecx, 1
cmp ecx, eax
jbe 0x408071
cmp eax, 0x10000
je 0x406483
add eax, eax
cmp eax, 0x10000
ja 0x4077cd
mov dword [ebp + 4], eax
mov dword [esp + 4], eax
mov dword [esp], ebx
call sub.msvcrt.dll_realloc
test eax, eax
mov dword [ebp], eax
je 0x406300
cmp eax, ebx
je 0x406e61
mov edx, eax
sub edx, ebx
mov ebx, dword [esp + 0x20]
add edi, edx
add dword [esp + 0xc], edx
lea ecx, [ebx + edx]
test ebx, ebx
cmove ecx, ebx
mov ebx, dword [esp + 0x2c]
test esi, esi
mov dword [esp + 0x20], ecx
lea ecx, [esi + edx]
cmovne esi, ecx
add edx, ebx
test ebx, ebx
cmove edx, ebx
mov dword [esp + 0x2c], edx
mov ebx, eax
jmp 0x406de8
test dword [esp + 0x14], 0x80000
jne case.0x4062ec.1
mov ebx, dword [ebp]
mov esi, dword [esp + 0x10]
mov eax, dword [ebp + 4]
mov ecx, edi
sub ecx, ebx
add ecx, 1
cmp ecx, eax
jbe 0x4080c2
cmp eax, 0x10000
je 0x406483
add eax, eax
cmp eax, 0x10000
ja 0x4076b8
mov dword [ebp + 4], eax
mov dword [esp + 4], eax
mov dword [esp], ebx
call sub.msvcrt.dll_realloc
test eax, eax
mov dword [ebp], eax
je 0x406300
cmp eax, ebx
je 0x406ef3
mov edx, eax
sub edx, ebx
mov ebx, dword [esp + 0x20]
add edi, edx
add dword [esp + 0xc], edx
lea ecx, [ebx + edx]
test ebx, ebx
cmove ecx, ebx
mov ebx, dword [esp + 0x2c]
test esi, esi
mov dword [esp + 0x20], ecx
lea ecx, [esi + edx]
cmovne esi, ecx
add edx, ebx
test ebx, ebx
cmove edx, ebx
mov dword [esp + 0x2c], edx
mov ebx, eax
jmp 0x406e7a
test dword [esp + 0x14], 0x4000
jne case.0x4062ec.1
lea esi, [ebx - 0x30]
mov eax, esi
movzx ecx, al
cmp dword [esp + 0x3c], ecx
jb 0x408009
mov eax, dword [esp + 0x38]
sub eax, 1
js 0x406f53
lea edx, [eax + eax*4]
mov dword [esp + 0x24], eax
mov eax, dword [esp + 0x30]
shl edx, 2
cmp ecx, dword [eax + edx + 0x10]
je case.0x4062ec.1
lea edx, [eax + edx + 0x14]
mov eax, dword [esp + 0x24]
jmp 0x406f4e
sub edx, 0x14
cmp ecx, dword [edx - 4]
je case.0x4062ec.1
sub eax, 1
jns 0x406f42
mov ebx, dword [ebp]
mov dword [esp + 0x10], edi
mov eax, dword [ebp + 4]
mov ecx, edi
sub ecx, ebx
add ecx, 2
cmp ecx, eax
jbe 0x407ff1
cmp eax, 0x10000
je 0x406483
add eax, eax
cmp eax, 0x10000
ja 0x407fe0
mov dword [ebp + 4], eax
mov dword [esp + 4], eax
mov dword [esp], ebx
call sub.msvcrt.dll_realloc
test eax, eax
mov dword [ebp], eax
je 0x406300
cmp eax, ebx
je 0x406fdb
mov edx, eax
sub edx, ebx
mov ebx, dword [esp + 0x20]
add edi, edx
add dword [esp + 0xc], edx
lea ecx, [ebx + edx]
test ebx, ebx
cmove ecx, ebx
mov ebx, dword [esp + 0x10]
mov dword [esp + 0x20], ecx
test ebx, ebx
lea ecx, [ebx + edx]
cmove ecx, ebx
mov ebx, dword [esp + 0x2c]
mov dword [esp + 0x10], ecx
add edx, ebx
test ebx, ebx
cmove edx, ebx
mov dword [esp + 0x2c], edx
mov ebx, eax
jmp 0x406f5a
mov eax, dword [esp + 0x34]
test eax, eax
jne case.0x4062ec.32
jmp case.0x406878.3
test dword [esp + 0x14], 0x8400
jne case.0x406878.3
jmp 0x40696c
test dword [esp + 0x14], 0x80000
jne case.0x4062ec.1
mov ebx, dword [ebp]
mov esi, edi
mov eax, dword [ebp + 4]
mov ecx, edi
sub ecx, ebx
add ecx, 1
cmp ecx, eax
jbe 0x408104
cmp eax, 0x10000
je 0x406483
add eax, eax
cmp eax, 0x10000
ja 0x4077ef
mov dword [ebp + 4], eax
mov ecx, dword [ebp]
mov dword [esp + 4], eax
mov dword [esp], ecx
call sub.msvcrt.dll_realloc
test eax, eax
mov dword [ebp], eax
je 0x406300
cmp eax, ebx
je 0x407095
mov edx, eax
sub edx, ebx
mov ebx, dword [esp + 0x20]
add edi, edx
add dword [esp + 0xc], edx
lea ecx, [ebx + edx]
test ebx, ebx
cmove ecx, ebx
mov ebx, dword [esp + 0x2c]
test esi, esi
mov dword [esp + 0x20], ecx
lea ecx, [esi + edx]
cmovne esi, ecx
add edx, ebx
test ebx, ebx
cmove edx, ebx
mov dword [esp + 0x2c], edx
mov ebx, eax
jmp 0x407019
test dword [esp + 0x14], 0x80000
jne case.0x4062ec.1
mov ebx, dword [ebp]
mov esi, dword [esp + 0x10]
mov eax, dword [ebp + 4]
mov ecx, edi
sub ecx, ebx
add ecx, 1
cmp ecx, eax
jbe 0x40805b
cmp eax, 0x10000
je 0x406483
add eax, eax
cmp eax, 0x10000
ja 0x4076fc
mov dword [ebp + 4], eax
mov dword [esp + 4], eax
mov dword [esp], ebx
call sub.msvcrt.dll_realloc
test eax, eax
mov dword [ebp], eax
je 0x406300
cmp eax, ebx
je 0x407127
mov edx, eax
sub edx, ebx
mov ebx, dword [esp + 0x20]
add edi, edx
add dword [esp + 0xc], edx
lea ecx, [ebx + edx]
test ebx, ebx
cmove ecx, ebx
mov ebx, dword [esp + 0x2c]
test esi, esi
mov dword [esp + 0x20], ecx
lea ecx, [esi + edx]
cmovne esi, ecx
add edx, ebx
test ebx, ebx
cmove edx, ebx
mov dword [esp + 0x2c], edx
mov ebx, eax
jmp 0x4070ae
test dword [esp + 0x14], 0x80000
jne case.0x4062ec.1
mov ebx, dword [ebp]
mov esi, dword [esp + 0x10]
mov eax, dword [ebp + 4]
mov ecx, edi
sub ecx, ebx
add ecx, 1
cmp ecx, eax
jbe 0x4080d8
cmp eax, 0x10000
je 0x406483
add eax, eax
cmp eax, 0x10000
ja 0x4076eb
mov dword [ebp + 4], eax
mov dword [esp + 4], eax
mov dword [esp], ebx
call sub.msvcrt.dll_realloc
test eax, eax
mov dword [ebp], eax
je 0x406300
cmp eax, ebx
je 0x4071b9
mov edx, eax
sub edx, ebx
mov ebx, dword [esp + 0x20]
add edi, edx
add dword [esp + 0xc], edx
lea ecx, [ebx + edx]
test ebx, ebx
cmove ecx, ebx
mov ebx, dword [esp + 0x2c]
test esi, esi
mov dword [esp + 0x20], ecx
lea ecx, [esi + edx]
cmovne esi, ecx
add edx, ebx
test ebx, ebx
cmove edx, ebx
mov dword [esp + 0x2c], edx
mov ebx, eax
jmp 0x407140
test dword [esp + 0x14], 0x80000
jne case.0x4062ec.1
mov ebx, dword [ebp]
mov esi, edi
mov eax, dword [ebp + 4]
mov ecx, edi
sub ecx, ebx
add ecx, 1
cmp ecx, eax
jbe 0x4080ee
cmp eax, 0x10000
je 0x406483
add eax, eax
cmp eax, 0x10000
ja 0x4077de
mov dword [ebp + 4], eax
mov dword [esp + 4], eax
mov dword [esp], ebx
call sub.msvcrt.dll_realloc
test eax, eax
mov dword [ebp], eax
je 0x406300
cmp eax, ebx
je 0x407249
mov edx, eax
sub edx, ebx
mov ebx, dword [esp + 0x20]
add edi, edx
add dword [esp + 0xc], edx
lea ecx, [ebx + edx]
test ebx, ebx
cmove ecx, ebx
mov ebx, dword [esp + 0x2c]
test esi, esi
mov dword [esp + 0x20], ecx
lea ecx, [esi + edx]
cmovne esi, ecx
add edx, ebx
test ebx, ebx
cmove edx, ebx
mov dword [esp + 0x2c], edx
mov ebx, eax
jmp 0x4071d0
test dword [esp + 0x14], 0x80000
jne case.0x4062ec.1
mov ebx, dword [ebp]
mov esi, dword [esp + 0x10]
mov eax, dword [ebp + 4]
mov ecx, edi
sub ecx, ebx
add ecx, 1
cmp ecx, eax
jbe 0x4080ac
cmp eax, 0x10000
je 0x406483
add eax, eax
cmp eax, 0x10000
ja 0x4076c9
mov dword [ebp + 4], eax
mov dword [esp + 4], eax
mov dword [esp], ebx
call sub.msvcrt.dll_realloc
test eax, eax
mov dword [ebp], eax
je 0x406300
cmp eax, ebx
je 0x4072db
mov edx, eax
sub edx, ebx
mov ebx, dword [esp + 0x20]
add edi, edx
add dword [esp + 0xc], edx
lea ecx, [ebx + edx]
test ebx, ebx
cmove ecx, ebx
mov ebx, dword [esp + 0x2c]
test esi, esi
mov dword [esp + 0x20], ecx
lea ecx, [esi + edx]
cmovne esi, ecx
add edx, ebx
test ebx, ebx
cmove edx, ebx
mov dword [esp + 0x2c], edx
mov ebx, eax
jmp 0x407262
mov dword [ebp + 4], 0x10000
mov eax, 0x10000
jmp 0x406780
mov dword [ebp + 4], 0x10000
mov edx, 0x10000
jmp 0x406812
mov dword [ebp + 4], 0x10000
mov eax, 0x10000
jmp 0x406a8f
mov dword [ebp + 4], 0x10000
mov eax, 0x10000
jmp 0x40690f
mov dword [ebp + 4], 0x10000
mov eax, 0x10000
jmp 0x4069b5
mov dword [ebp + 4], 0x10000
mov eax, 0x10000
jmp 0x4066f1
mov dword [ebp + 4], 0x10000
mov eax, 0x10000
jmp 0x406596
mov dword [ebp + 4], 0x10000
mov eax, 0x10000
jmp 0x406b7a
mov dword [esp], 0x20
call sub.msvcrt.dll_malloc
mov dword [ebp], eax
jmp 0x40632e
cmp al, 0xff
je 0x4063ff
mov edx, dword [esp + 0x9c]
movzx eax, byte [edx]
cmp al, 0x2a
je 0x4063ff
cmp al, 0x5e
je 0x4063ff
mov edi, dword [esp + 0x34]
test edi, edi
je 0x407b45
cmp al, 0x5c
je 0x407d66
mov ecx, dword [esp + 0x44]
test ecx, ecx
je 0x4065f7
test dword [esp + 0x14], 0x1000
je 0x407efa
cmp al, 0x7b
jne 0x4065f7
mov edi, esi
jmp 0x4063ff
mov byte [esp + 0x24], 0
mov eax, esi
mov edx, edi
mov ebx, dword [ebp]
mov edi, dword [esp + 0x20]
mov esi, dword [esp + 0x10]
mov byte [esp + 0x2c], al
mov eax, dword [ebp + 4]
mov ecx, edx
sub ecx, ebx
add ecx, 3
cmp ecx, eax
jbe 0x407816
cmp eax, 0x10000
je 0x406483
add eax, eax
cmp eax, 0x10000
ja 0x40745c
mov dword [ebp + 4], eax
mov dword [esp + 4], eax
mov dword [esp], ebx
mov dword [esp + 0x10], edx
call sub.msvcrt.dll_realloc
test eax, eax
mov dword [ebp], eax
je 0x406300
cmp eax, ebx
mov edx, dword [esp + 0x10]
je 0x407458
mov ecx, eax
sub ecx, ebx
add edx, ecx
add dword [esp + 0xc], ecx
test edi, edi
lea ebx, [edi + ecx]
cmovne edi, ebx
add ecx, esi
test esi, esi
cmovne esi, ecx
mov ebx, eax
jmp 0x4073f3
mov dword [ebp + 4], 0x10000
mov eax, 0x10000
jmp 0x40741c
movzx eax, byte [esp + 0x3c]
add edi, 3
mov byte [edi - 3], 6
mov byte [edi - 1], 0
mov byte [edi - 2], al
add dword [esp + 0x38], 1
mov ecx, dword [esp + 0x9c]
mov dword [esp + 0xc], edi
mov dword [esp + 0x20], 0
mov dword [esp + 0x10], 0
mov dword [esp + 0x2c], 0
jmp 0x4062bb
mov dword [esp + 0x10], edi
mov edi, dword [esp + 0x24]
mov dword [esp + 0x2c], esi
mov dword [esp + 0x20], ebx
mov byte [edi], 3
add edi, 1
mov ecx, dword [esp + 0x9c]
jmp 0x4062bb
mov dword [esp + 0x20], edi
mov edi, esi
mov esi, ecx
mov dword [esp + 0x10], ecx
mov ecx, ebx
mov ebx, dword [esp + 0x20]
jmp 0x40752e
mov dword [ebp + 4], edx
mov dword [esp + 4], edx
mov dword [esp], ecx
mov dword [esp + 0x20], ecx
call sub.msvcrt.dll_realloc
test eax, eax
mov dword [ebp], eax
je 0x406300
mov ecx, dword [esp + 0x20]
cmp eax, ecx
je 0x407529
mov edx, eax
sub edx, ecx
lea ecx, [ebx + edx]
add dword [esp + 0x10], edx
add dword [esp + 0xc], edx
test ebx, ebx
cmovne ebx, ecx
test esi, esi
lea ecx, [esi + edx]
cmovne esi, ecx
add edx, edi
test edi, edi
cmovne edi, edx
mov edx, dword [ebp + 4]
mov ecx, eax
mov eax, dword [esp + 0x10]
sub eax, ecx
add eax, 1
cmp eax, edx
jbe 0x407a65
cmp edx, 0x10000
je 0x406483
add edx, edx
cmp edx, 0x10000
jbe 0x4074e0
mov dword [ebp + 4], 0x10000
mov edx, 0x10000
jmp 0x4074e3
mov edi, dword [esp + 0x24]
jmp 0x406542
mov ebx, dword [esp + 0x20]
test ebx, ebx
je 0x407587
mov eax, edi
sub eax, ebx
sub eax, 3
mov byte [ebx + 1], al
sar eax, 8
mov byte [ebx], 0xe
mov byte [ebx + 2], al
mov eax, dword [esp + 0x38]
test eax, eax
jne 0x407800
test dword [esp + 0x14], 0x40000
je 0x407b8b
mov ebx, dword [ebp]
mov eax, dword [ebp + 4]
mov edx, edi
sub edx, ebx
add edx, 1
cmp edx, eax
jbe 0x407b85
cmp eax, 0x10000
je 0x406483
add eax, eax
cmp eax, 0x10000
ja 0x4075f2
mov dword [ebp + 4], eax
mov dword [esp + 4], eax
mov dword [esp], ebx
call sub.msvcrt.dll_realloc
test eax, eax
mov dword [ebp], eax
je 0x406300
cmp eax, ebx
je 0x4075ee
mov edx, eax
sub edx, ebx
add edi, edx
mov ebx, eax
jmp 0x4075a4
mov dword [ebp + 4], 0x10000
mov eax, 0x10000
jmp 0x4075cd
mov dword [esp + 0x10], edi
mov edi, dword [esp + 0x24]
mov dword [esp + 0x2c], esi
mov dword [esp + 0x20], ebx
mov byte [edi], 0xa
add edi, 1
mov ecx, dword [esp + 0x9c]
jmp 0x4062bb
mov dword [esp + 0x10], edi
mov edi, dword [esp + 0x24]
mov dword [esp + 0x2c], esi
mov dword [esp + 0x20], ebx
mov byte [edi], 9
add edi, 1
mov ecx, dword [esp + 0x9c]
jmp 0x4062bb
test byte [esp + 0x14], 0x20
jne 0x40813d
test byte [esp + 0x14], 0x10
je case.0x4062ec.1
jmp 0x4064ad
test ecx, ecx
je 0x406a2f
test dl, dl
lea esi, [esi]
je 0x406a2f
cmp byte [ecx], 0x29
jne 0x406a2f
nop
jmp 0x406a45
mov ecx, dword [esp + 0x14]
test ecx, 0x200000
je 0x408087
and ecx, 0x1000
mov eax, dword [esp + 0x48]
test ecx, ecx
mov ebx, 0x7b
mov dword [esp + 0x9c], eax
jne case.0x4062ec.1
jmp 0x406ccf
mov dword [ebp + 4], 0x10000
mov eax, 0x10000
jmp 0x406ea7
mov dword [ebp + 4], 0x10000
mov eax, 0x10000
jmp 0x40728f
mov dword [ebp + 4], 0x10000
mov eax, 0x10000
jmp 0x406d2b
mov dword [ebp + 4], 0x10000
mov eax, 0x10000
jmp 0x40716d
mov dword [ebp + 4], 0x10000
mov eax, 0x10000
jmp 0x4070db
mov ebx, dword [esp + 0xc]
mov eax, esi
mov dword [esp + 0x20], edi
mov edi, esi
mov ecx, dword [esp + 0xc]
lea esi, [esi + 3]
sub eax, ebx
cmp edi, ebx
lea edx, [eax + 3]
je 0x407736
sub edi, 1
movzx eax, byte [edi]
cmp edi, ecx
mov byte [edi + 3], al
jne 0x407729
mov eax, dword [esp + 0xc]
mov byte [eax + 1], dl
sar edx, 8
mov byte [eax], 0xf
mov byte [eax + 2], dl
mov eax, dword [esp + 0x20]
test eax, eax
je 0x407765
mov ebx, dword [esp + 0x20]
mov eax, esi
sub eax, ebx
sub eax, 3
mov byte [ebx + 1], al
sar eax, 8
mov byte [ebx], 0xe
mov byte [ebx + 2], al
mov ebx, dword [ebp]
mov edi, esi
mov eax, dword [ebp + 4]
mov edx, esi
sub edx, ebx
add edx, 3
cmp edx, eax
jbe 0x407d0b
cmp eax, 0x10000
je 0x406483
add eax, eax
cmp eax, 0x10000
ja 0x4077bf
mov dword [ebp + 4], eax
mov dword [esp + 4], eax
mov dword [esp], ebx
call sub.msvcrt.dll_realloc
test eax, eax
mov dword [ebp], eax
je 0x406300
cmp eax, ebx
je 0x4077bb
mov edx, eax
sub edx, ebx
add esi, edx
add edx, edi
test edi, edi
cmovne edi, edx
mov ebx, eax
jmp 0x40776a
mov dword [ebp + 4], 0x10000
mov eax, 0x10000
jmp 0x407793
mov dword [ebp + 4], 0x10000
mov eax, 0x10000
jmp 0x406e15
mov dword [ebp + 4], 0x10000
mov eax, 0x10000
jmp 0x4071fd
mov dword [ebp + 4], 0x10000
mov eax, 0x10000
jmp 0x407046
mov eax, dword [esp + 0x30]
mov dword [esp], eax
call sub.msvcrt.dll_free
mov eax, 8
jmp 0x406305
mov ecx, esi
mov eax, edx
sub eax, ecx
cmp byte [esp + 0x24], 1
mov dword [esp + 0x20], edi
lea ebx, [edx + 3]
mov edi, edx
mov dword [esp + 0x10], esi
movzx esi, byte [esp + 0x2c]
sbb edx, edx
add edx, 0x10
cmp edi, ecx
je 0x407855
mov ecx, dword [esp + 0x10]
mov dword [esp + 0x24], eax
sub edi, 1
movzx eax, byte [edi]
cmp edi, ecx
mov byte [edi + 3], al
jne 0x407844
mov eax, dword [esp + 0x24]
mov edi, dword [esp + 0x10]
mov byte [edi + 1], al
sar eax, 8
mov byte [edi + 2], al
mov eax, esi
test al, al
mov byte [edi], dl
jne 0x407cc2
mov edi, ebx
mov esi, dword [ebp]
mov ebx, dword [esp + 0x20]
mov eax, dword [ebp + 4]
mov ecx, edi
sub ecx, esi
add ecx, 3
cmp ecx, eax
jbe 0x407f15
cmp eax, 0x10000
je 0x406483
add eax, eax
cmp eax, 0x10000
ja 0x4078e0
mov dword [ebp + 4], eax
mov dword [esp + 4], eax
mov dword [esp], esi
call sub.msvcrt.dll_realloc
test eax, eax
mov dword [ebp], eax
je 0x406300
cmp eax, esi
je 0x4078dc
mov ecx, eax
sub ecx, esi
lea esi, [ebx + ecx]
add edi, ecx
add dword [esp + 0xc], ecx
test ebx, ebx
cmovne ebx, esi
mov esi, dword [esp + 0x10]
add ecx, esi
test esi, esi
cmove ecx, esi
mov dword [esp + 0x10], ecx
mov esi, eax
jmp 0x407877
mov dword [ebp + 4], 0x10000
mov eax, 0x10000
jmp 0x4078a0
mov dword [esp + 0x24], esi
xor ecx, ecx
mov edx, dword [esp + 0x24]
shr edx, 0x1f
test dl, dl
jne 0x407685
test cl, cl
jne 0x407685
mov ecx, dword [esp + 0x14]
and ecx, 0x1000
jne 0x407949
cmp al, 0x5c
jne 0x407685
mov eax, dword [esp + 0x9c]
cmp eax, dword [esp + 0x1c]
je 0x407685
mov ebx, dword [esp + 0x18]
lea edx, [eax + 1]
mov dword [esp + 0x9c], edx
movzx eax, byte [eax]
test ebx, ebx
je 0x407949
movzx eax, byte [ebx + eax]
cmp al, 0x7d
jne 0x407685
mov eax, dword [esp + 0x10]
test eax, eax
je 0x40801f
cmp esi, 0x7fff
jg 0x408b8f
test esi, esi
jne 0x408a01
mov esi, edi
mov ebx, dword [ebp]
mov edi, dword [esp + 0x20]
mov eax, dword [ebp + 4]
mov ecx, esi
sub ecx, ebx
add ecx, 3
cmp ecx, eax
jbe 0x407c8e
cmp eax, 0x10000
je 0x406483
add eax, eax
cmp eax, 0x10000
mov dword [ebp + 4], eax
jbe 0x4079af
mov dword [ebp + 4], 0x10000
mov eax, 0x10000
mov dword [esp + 4], eax
mov dword [esp], ebx
call sub.msvcrt.dll_realloc
test eax, eax
mov dword [ebp], eax
je 0x406300
cmp eax, ebx
je 0x4079eb
mov ecx, eax
sub ecx, ebx
lea ebx, [edi + ecx]
add esi, ecx
add dword [esp + 0xc], ecx
test edi, edi
cmovne edi, ebx
mov ebx, dword [esp + 0x10]
add ecx, ebx
test ebx, ebx
cmove ecx, ebx
mov dword [esp + 0x10], ecx
mov ebx, eax
jmp 0x40797a
mov ebx, dword [esp + 0x18]
mov dword [esp + 0x10], esi
mov eax, dword [esp + 0x9c]
mov dword [esp + 0x20], edi
movzx esi, byte [esp + 0x24]
mov edi, edx
test ebx, ebx
je 0x407fb5
movzx edx, byte [eax - 2]
movsx ecx, byte [ebx + edx]
movsx edx, byte [ebx + 0x2e]
cmp ecx, edx
je 0x407f56
mov eax, dword [esp + 0x10]
mov byte [edi], 0x12
mov byte [esp + 0x24], 0
sub eax, edi
sub eax, 6
mov byte [edi + 1], al
sar eax, 8
mov byte [edi + 2], al
add edi, 3
jmp 0x4073e0
test ecx, ecx
je case.0x4062ec.1
test dl, dl
je case.0x4062ec.1
cmp byte [ecx], 0x7c
jne case.0x4062ec.1
jmp 0x406a45
mov dword [esp + 0x2c], edi
mov edi, dword [esp + 0x10]
mov dword [esp + 0x20], ebx
mov dword [esp + 0x10], esi
lea eax, [edi + 1]
mov dword [esp + 0x48], eax
mov eax, dword [esp + 0x9c]
cmp byte [eax], 0x5e
sete al
add eax, 4
mov byte [edi], al
mov eax, dword [esp + 0x9c]
cmp byte [eax], 0x5e
mov dword [esp + 0x58], eax
jne 0x407aac
add eax, 1
mov dword [esp + 0x9c], eax
mov dword [esp + 0x58], eax
mov ebx, dword [ebp]
mov esi, dword [esp + 0x2c]
mov edi, dword [esp + 0x10]
mov edx, ebx
mov ebx, dword [esp + 0x20]
mov ecx, dword [esp + 0x48]
mov eax, dword [ebp + 4]
sub ecx, edx
add ecx, 1
cmp ecx, eax
jbe 0x407d83
cmp eax, 0x10000
je 0x406483
add eax, eax
cmp eax, 0x10000
ja 0x407b37
mov dword [ebp + 4], eax
mov ecx, dword [ebp]
mov dword [esp + 4], eax
mov dword [esp + 0x10], edx
mov dword [esp], ecx
call sub.msvcrt.dll_realloc
test eax, eax
mov dword [ebp], eax
je 0x406300
mov edx, dword [esp + 0x10]
cmp eax, edx
je 0x407b33
mov ecx, eax
sub ecx, edx
mov edx, ecx
add dword [esp + 0x48], ecx
add dword [esp + 0xc], ecx
test ebx, ebx
lea ecx, [ebx + ecx]
cmovne ebx, ecx
test edi, edi
lea ecx, [edi + edx]
cmovne edi, ecx
add edx, esi
test esi, esi
cmovne esi, edx
mov edx, eax
jmp 0x407abd
mov dword [ebp + 4], 0x10000
mov eax, 0x10000
jmp 0x407ae8
cmp al, 0x3f
je 0x4073d4
cmp al, 0x2b
jne 0x4073b2
mov edi, esi
jmp 0x4063ff
test dword [esp + 0x14], 0x2000
je 0x4068c3
jmp 0x4068cb
mov eax, dword [esp + 0x30]
mov dword [esp], eax
call sub.msvcrt.dll_free
mov eax, 5
jmp 0x406305
mov byte [edi], 1
add edi, 1
mov eax, dword [esp + 0x30]
mov dword [esp], eax
call sub.msvcrt.dll_free
mov eax, edi
sub eax, dword [ebp]
mov dword [ebp + 8], eax
xor eax, eax
jmp 0x406305
sub dword [esp + 0x38], 1
mov esi, 0
mov eax, dword [esp + 0x38]
mov ebx, dword [esp + 0x30]
mov edx, dword [ebp]
lea eax, [eax + eax*4]
lea eax, [ebx + eax*4]
mov ebx, dword [eax]
mov ecx, dword [eax + 4]
add ebx, edx
mov dword [esp + 0xc], ebx
test ecx, ecx
lea ebx, [edx + ecx - 1]
cmove ebx, esi
mov esi, dword [eax + 0x10]
mov dword [esp + 0x20], ebx
mov ebx, dword [eax + 0xc]
add ebx, edx
cmp esi, 0xff
mov dword [esp + 0x10], ebx
ja 0x407d52
movzx ebx, byte [esp + 0x3c]
mov ecx, esi
mov eax, dword [eax + 8]
sub ebx, ecx
mov byte [esp + 0x24], bl
mov byte [edx + eax], bl
mov ebx, dword [ebp]
mov eax, dword [ebp + 4]
mov ecx, edi
sub ecx, ebx
add ecx, 3
cmp ecx, eax
jbe 0x408ba5
cmp eax, 0x10000
je 0x406483
add eax, eax
cmp eax, 0x10000
ja 0x407c79
mov dword [ebp + 4], eax
mov dword [esp + 4], eax
mov dword [esp], ebx
call sub.msvcrt.dll_realloc
test eax, eax
mov dword [ebp], eax
je 0x406300
cmp eax, ebx
je 0x407c75
mov edx, dword [esp + 0x20]
mov ecx, eax
sub ecx, ebx
add edi, ecx
add dword [esp + 0xc], ecx
mov ebx, edx
add ebx, ecx
test edx, edx
cmove ebx, edx
mov dword [esp + 0x20], ebx
mov ebx, dword [esp + 0x10]
add ecx, ebx
test ebx, ebx
cmove ecx, ebx
mov dword [esp + 0x10], ecx
mov ebx, eax
jmp 0x407c07
mov dword [ebp + 4], 0x10000
mov eax, 0x10000
jmp 0x407c30
xor edx, edx
jmp 0x406b2a
mov eax, esi
mov dword [esp + 0x20], edi
lea ebx, [esi + 3]
mov edi, esi
mov esi, dword [esp + 0x10]
sub eax, esi
cmp edi, esi
je 0x407cb2
sub edi, 1
movzx edx, byte [edi]
cmp edi, dword [esp + 0x10]
mov byte [edi + 3], dl
jne 0x407ca3
mov esi, dword [esp + 0x10]
mov byte [esi + 1], al
sar eax, 8
mov byte [esi], 0xd
mov byte [esi + 2], al
mov ecx, dword [esp + 0x9c]
mov edi, ebx
mov dword [esp + 0x2c], 0
jmp 0x4062bb
mov ebx, dword [esp + 0x38]
lea eax, [ebx + ebx*4]
shl eax, 3
mov dword [esp + 4], eax
mov eax, dword [esp + 0x30]
mov dword [esp], eax
call sub.msvcrt.dll_realloc
test eax, eax
mov dword [esp + 0x30], eax
je 0x406300
mov eax, ebx
add eax, eax
mov dword [esp + 0x40], eax
jmp 0x406b00
mov dword [esp + 0x20], edi
lea edi, [esi + 3]
mov ecx, dword [esp + 0x9c]
mov dword [esp + 0xc], edi
mov dword [esp + 0x10], 0
mov dword [esp + 0x2c], 0
jmp 0x4062bb
mov ecx, dword [esp + 0x2c]
mov edx, dword [esp + 0x24]
mov esi, dword [esp + 0x10]
mov eax, edx
sar eax, 8
mov byte [esi], 0x17
mov byte [esi + 1], dl
mov byte [esi + 2], al
mov byte [esi + 3], bl
mov byte [esi + 4], cl
mov ecx, dword [esp + 0x9c]
mov dword [esp + 0x2c], 0
jmp 0x4062bb
movzx ecx, byte [edx + 1]
cmp cl, 0x3f
je 0x4073d4
cmp cl, 0x2b
jne 0x4073b2
mov edi, esi
jmp 0x4063ff
mov dword [esp + 0x20], ebx
mov ebx, dword [esp + 0x48]
mov edx, 0x20
mov dword [esp + 0x2c], esi
mov dword [esp + 0x10], edi
mov eax, ebx
add eax, 1
mov byte [ebx], 0x20
mov ebx, eax
and ebx, 1
mov dword [esp + 0x50], eax
jne 0x4083ed
test al, 2
jne 0x4083dc
mov ebx, edx
xor ecx, ecx
and ebx, 0xfffffffc
mov dword [eax + ecx], 0
add ecx, 4
cmp ecx, ebx
jb 0x407dbe
add eax, ecx
test dl, 2
je 0x407ddc
xor ebx, ebx
add eax, 2
mov word [eax - 2], bx
and edx, 1
je 0x407de4
mov byte [eax], 0
mov eax, dword [esp + 0x48]
cmp byte [eax - 1], 5
je 0x4083c5
mov esi, dword [esp + 0x14]
xor ebx, ebx
mov dword [esp + 0x140], ebp
mov edx, dword [esp + 0x9c]
mov edi, ebx
mov ebp, dword [esp + 0x1c]
mov dword [esp + 0x4c], 0xffffffff
mov eax, esi
and eax, 1
mov dword [esp + 0x88], eax
mov eax, esi
and eax, 4
mov dword [esp + 0x8c], eax
mov eax, dword [esp + 0x50]
mov dword [esp + 0x24], eax
cmp ebp, edx
je 0x408045
mov ebx, dword [esp + 0x18]
lea esi, [edx + 1]
mov dword [esp + 0x9c], esi
movzx eax, byte [edx]
test ebx, ebx
je 0x407e55
movzx eax, byte [ebx + eax]
mov ecx, dword [esp + 0x88]
test ecx, ecx
je 0x407e68
cmp al, 0x5c
je 0x408378
cmp al, 0x5d
je 0x4081d1
cmp al, 0x2d
jne 0x408153
mov ebx, edi
test bl, bl
jne 0x4081bd
movzx ecx, byte [edx + 1]
lea ebx, [edx - 1]
cmp dword [esp + 0x28], ebx
ja 0x407e99
cmp byte [edx - 1], 0x5b
je 0x408157
lea ebx, [edx - 2]
cmp dword [esp + 0x28], ebx
ja 0x407eac
cmp byte [edx - 2], 0x5b
je 0x408c52
cmp cl, 0x5d
jne 0x408332
mov ecx, 0x5d
mov ebx, dword [esp + 0x8c]
test ebx, ebx
je 0x407ecd
cmp al, 0x5b
je 0x408238
mov ebx, dword [esp + 0x24]
mov edx, eax
mov ecx, eax
shr dl, 3
and ecx, 7
movzx esi, dl
mov edx, 1
shl edx, cl
xor edi, edi
or byte [ebx + esi], dl
mov edx, dword [esp + 0x9c]
mov dword [esp + 0x4c], eax
jmp 0x407e34
cmp al, 0x5c
jne 0x4065f7
cmp byte [edx + 1], 0x7b
jne 0x4065f7
mov edi, esi
nop
jmp 0x4063ff
mov dword [esp + 0x20], ebx
mov ebx, edi
cmp ebx, dword [esp + 0x10]
lea edi, [edi + 3]
je 0x407f33
sub ebx, 1
movzx eax, byte [ebx]
cmp ebx, dword [esp + 0x10]
mov byte [ebx + 3], al
jne 0x407f24
mov eax, dword [esp + 0x10]
mov dword [esp + 0x2c], 0
mov byte [eax], 0x13
mov byte [eax + 1], 3
mov byte [eax + 2], 0
mov ecx, dword [esp + 0x9c]
jmp 0x4062bb
test esi, 1
je 0x407a25
cmp eax, dword [esp + 0x1c]
jae 0x407a25
mov ebx, dword [esp + 0x18]
test ebx, ebx
je 0x408130
movzx eax, byte [eax]
movsx edx, byte [ebx + eax]
movsx eax, byte [ebx + 0xa]
cmp edx, eax
jne 0x407a25
test byte [esp + 0x14], 0x40
jne 0x407a25
mov eax, dword [esp + 0x10]
mov byte [edi], 0xd
mov byte [esp + 0x24], 1
sub eax, edi
sub eax, 3
mov byte [edi + 1], al
sar eax, 8
mov byte [edi + 2], al
jmp 0x407a3f
movsx ecx, byte [eax - 2]
mov edx, 0x2e
jmp 0x407a1d
cmp esi, 0x7fff
mov dword [esp + 0x24], esi
setg cl
mov esi, 0x7fff
jmp 0x4078f4
mov dword [ebp + 4], 0x10000
mov eax, 0x10000
jmp 0x406f87
mov eax, esi
add edi, 2
mov byte [edi - 2], 8
mov byte [edi - 1], al
mov ecx, dword [esp + 0x9c]
jmp 0x4062bb
mov eax, dword [esp + 0x30]
mov dword [esp], eax
call sub.msvcrt.dll_free
mov eax, 6
jmp 0x406305
mov eax, dword [esp + 0x14]
and eax, 0x200020
cmp eax, 0x20
je 0x40813d
test byte [esp + 0x14], 0x10
je 0x40769b
mov dword [esp + 0x10], edi
jmp 0x40795d
mov eax, dword [esp + 0x30]
mov dword [esp], eax
call sub.msvcrt.dll_free
mov eax, 7
jmp 0x406305
mov byte [edi], 0x1c
add edi, 1
mov ecx, dword [esp + 0x9c]
mov dword [esp + 0x10], esi
jmp 0x4062bb
mov byte [edi], 0x1b
add edi, 1
mov ecx, dword [esp + 0x9c]
mov dword [esp + 0x10], esi
jmp 0x4062bb
mov eax, dword [esp + 0x30]
mov dword [esp], eax
call sub.msvcrt.dll_free
mov eax, dword [esp + 0x1c]
cmp dword [esp + 0x9c], eax
setne al
movzx eax, al
add eax, 9
jmp 0x406305
mov byte [edi], 0x1d
add edi, 1
mov ecx, dword [esp + 0x9c]
mov dword [esp + 0x10], esi
jmp 0x4062bb
mov byte [edi], 0x1a
add edi, 1
mov ecx, dword [esp + 0x9c]
mov dword [esp + 0x10], esi
jmp 0x4062bb
mov byte [edi], 0xb
add edi, 1
mov ecx, dword [esp + 0x9c]
mov dword [esp + 0x10], esi
jmp 0x4062bb
mov byte [edi], 0x19
add edi, 1
mov ecx, dword [esp + 0x9c]
mov dword [esp + 0x10], esi
jmp 0x4062bb
mov byte [edi], 0x18
add edi, 1
mov ecx, dword [esp + 0x9c]
mov dword [esp + 0x10], esi
jmp 0x4062bb
mov byte [edi], 0xc
add edi, 1
mov ecx, dword [esp + 0x9c]
mov dword [esp + 0x10], esi
jmp 0x4062bb
movsx edx, byte [eax]
mov eax, 0xa
jmp 0x407f83
mov eax, dword [esp + 0x30]
mov dword [esp], eax
call sub.msvcrt.dll_free
mov eax, 0xd
jmp 0x406305
movzx ecx, byte [edx + 1]
cmp cl, 0x2d
jne 0x407eba
cmp byte [edx + 2], 0x5d
je 0x407eba
cmp ebp, esi
je 0x408be3
mov ebx, dword [esp + 0x24]
add edx, 2
mov ecx, ebp
mov dword [esp + 0x9c], edx
lea edx, [esp + 0x9c]
mov dword [esp + 8], ebx
mov ebx, dword [esp + 0x14]
mov dword [esp + 4], ebx
mov ebx, dword [esp + 0x18]
mov dword [esp], ebx
call fcn.004036a0
test eax, eax
jne 0x408363
mov edx, dword [esp + 0x9c]
mov dword [esp + 0x4c], 0xffffffff
jmp 0x407e34
cmp byte [edx + 1], 0x5d
jne 0x408bcd
mov ecx, 0x5d
jmp 0x407e86
mov ebx, dword [esp + 0x58]
lea ecx, [ebx + 1]
cmp esi, ecx
je 0x408153
mov eax, dword [esp + 0x48]
mov ebp, dword [esp + 0x140]
movzx eax, byte [eax]
test al, al
je 0x4089f8
mov ebx, dword [esp + 0x50]
movzx edi, al
sub eax, 1
mov ecx, esi
cmp byte [ebx + edi - 1], 0
jne 0x40822f
mov ebx, dword [esp + 0x48]
test al, al
mov byte [ebx], al
je 0x4089ea
mov ebx, dword [esp + 0x50]
movzx edi, al
sub eax, 1
cmp byte [ebx + edi - 1], 0
je 0x408209
mov ecx, dword [esp + 0x9c]
add edi, dword [esp + 0x50]
jmp 0x4062bb
cmp cl, 0x3a
je 0x40857b
cmp cl, 0x3d
je 0x408456
cmp cl, 0x2e
jne 0x407ecd
cmp ebp, esi
je 0x408be3
add edx, 2
cmp ebp, edx
mov dword [esp + 0x9c], edx
je 0x408045
mov esi, dword [esp + 0x18]
xor eax, eax
mov edi, edx
mov ebx, dword [esp + 0x24]
mov ecx, eax
lea edx, [edi + 1]
test esi, esi
mov dword [esp + 0x9c], edx
movzx eax, byte [edx - 1]
je 0x408291
movzx eax, byte [esi + eax]
cmp al, 0x2e
je 0x4082be
cmp ebp, edx
je 0x4083ff
test cl, cl
js 0x4082b2
movzx edi, cl
add ecx, 1
mov byte [esp + edi + 0xa0], al
mov edi, edx
jmp 0x40827b
mov byte [esp + 0xa0], 0
mov edi, edx
jmp 0x40827b
cmp byte [edx], 0x5d
jne 0x408295
mov eax, ecx
mov ecx, edi
movzx edi, al
mov esi, edx
mov dword [esp + 0x24], ebx
mov byte [esp + edi + 0xa0], 0
movzx ebx, byte [esp + 0xa0]
test bl, bl
je 0x408c77
cmp al, 1
jne 0x408c61
cmp ebp, esi
je 0x408be3
mov esi, dword [esp + 0x24]
add ecx, 2
mov edx, ebx
mov dword [esp + 0x9c], ecx
shr dl, 3
mov ecx, ebx
movzx edx, dl
and ecx, 7
mov eax, 1
xor edi, edi
shl eax, cl
or byte [esi + edx], al
movzx eax, bl
mov edx, dword [esp + 0x9c]
mov dword [esp + 0x4c], eax
jmp 0x407e34
mov eax, dword [esp + 0x24]
mov ecx, ebp
lea edx, [esp + 0x9c]
mov dword [esp + 8], eax
mov eax, dword [esp + 0x14]
mov dword [esp + 4], eax
mov eax, dword [esp + 0x18]
mov dword [esp], eax
mov eax, dword [esp + 0x4c]
call fcn.004036a0
test eax, eax
je 0x4081a9
mov edi, eax
mov eax, dword [esp + 0x30]
mov dword [esp], eax
call sub.msvcrt.dll_free
mov eax, edi
jmp 0x406305
cmp ebp, esi
je 0x407b6f
mov ebx, dword [esp + 0x18]
lea eax, [edx + 2]
mov dword [esp + 0x9c], eax
movzx eax, byte [edx + 1]
test ebx, ebx
je 0x40839a
movzx eax, byte [ebx + eax]
mov ebx, dword [esp + 0x24]
mov edx, eax
mov ecx, eax
shr dl, 3
and ecx, 7
movzx esi, dl
mov edx, 1
shl edx, cl
or byte [ebx + esi], dl
mov edx, dword [esp + 0x9c]
mov dword [esp + 0x4c], eax
jmp 0x407e34
test dword [esp + 0x14], 0x100
je 0x407df2
or byte [eax + 2], 4
jmp 0x407df2
xor esi, esi
add eax, 2
mov word [eax - 2], si
sub edx, 2
jmp 0x407db7
mov eax, dword [esp + 0x48]
mov dl, 0x1f
mov byte [eax + 1], 0
add eax, 2
jmp 0x407daf
mov byte [esp + 0x4c], al
mov eax, ecx
mov ecx, edi
cmp byte [esp + 0x4c], 0x2e
movzx edi, al
mov dword [esp + 0x24], ebx
mov esi, ebp
mov byte [esp + edi + 0xa0], 0
je 0x40844b
cmp al, 0xff
je 0x408430
mov edx, edi
not edx
add edx, esi
mov dword [esp + 0x9c], edx
mov eax, dword [esp + 0x48]
xor edi, edi
mov dword [esp + 0x4c], 0x2e
or byte [eax + 0xc], 8
or byte [eax + 6], 0x40
jmp 0x407e34
cmp byte [ecx + 1], 0x5d
jne 0x40841f
jmp 0x4082d8
cmp ebp, esi
je 0x408be3
add edx, 2
cmp ebp, edx
mov dword [esp + 0x9c], edx
je 0x408045
mov edi, dword [esp + 0x18]
mov esi, edx
xor eax, eax
mov ebx, dword [esp + 0x24]
lea edx, [esi + 1]
test edi, edi
mov dword [esp + 0x9c], edx
movzx ecx, byte [edx - 1]
je 0x408492
movzx ecx, byte [edi + ecx]
cmp cl, 0x3d
je 0x4084c0
cmp ebp, edx
je 0x40852a
cmp al, 4
ja 0x4084b4
movzx esi, al
add eax, 1
mov byte [esp + esi + 0xa0], cl
mov esi, edx
jmp 0x40847c
mov byte [esp + 0xa0], 0
mov esi, edx
jmp 0x40847c
cmp byte [edx], 0x5d
jne 0x408497
movzx edi, al
mov dword [esp + 0x24], ebx
mov ebx, edx
mov byte [esp + edi + 0xa0], 0
movzx ecx, byte [esp + 0xa0]
test cl, cl
je 0x408577
cmp al, 1
jne 0x408c61
cmp ebp, ebx
je 0x408be3
mov ebx, dword [esp + 0x24]
mov edx, ecx
add esi, 2
shr dl, 3
and ecx, 7
movzx edx, dl
mov eax, 1
mov dword [esp + 0x9c], esi
shl eax, cl
mov edi, 1
or byte [ebx + edx], al
mov edx, dword [esp + 0x9c]
jmp 0x407e34
movzx edi, al
cmp cl, 0x3d
mov dword [esp + 0x24], ebx
mov ebx, ebp
mov byte [esp + edi + 0xa0], 0
je 0x40856c
cmp al, 0xff
je 0x408551
mov edx, edi
not edx
add edx, ebx
mov dword [esp + 0x9c], edx
mov eax, dword [esp + 0x48]
xor edi, edi
mov dword [esp + 0x4c], 0x3d
or byte [eax + 0xc], 8
or byte [eax + 8], 0x20
jmp 0x407e34
cmp byte [esi + 1], 0x5d
jne 0x408540
jmp 0x4084d6
mov ebx, edx
jmp 0x408540
cmp ebp, esi
lea esi, [esi]
je 0x408be3
add edx, 2
cmp ebp, edx
mov dword [esp + 0x9c], edx
je 0x408045
mov esi, dword [esp + 0x18]
xor eax, eax
mov edi, edx
mov ebx, dword [esp + 0x24]
lea edx, [edi + 1]
test esi, esi
mov dword [esp + 0x9c], edx
movzx ecx, byte [edx - 1]
je 0x4085ba
movzx ecx, byte [esi + ecx]
cmp cl, 0x3a
je 0x4085e8
cmp ebp, edx
je 0x408bed
cmp al, 5
ja 0x4085dc
movzx edi, al
add eax, 1
mov byte [esp + edi + 0xa0], cl
mov edi, edx
jmp 0x4085a4
mov byte [esp + 0xa0], 0
mov edi, edx
jmp 0x4085a4
cmp byte [edx], 0x5d
jne 0x4085bf
movzx eax, al
mov dword [esp + 0x24], ebx
mov dword [esp + 0x54], edi
mov byte [esp + eax + 0xa0], 0
lea eax, [esp + 0xa0]
mov edi, str.alnum
mov esi, eax
mov ecx, 6
repe cmpsb byte [esi], byte es:[edi]
mov esi, eax
mov edi, str.alpha
setb cl
seta bl
sub ebx, ecx
mov ecx, 6
repe cmpsb byte [esi], byte es:[edi]
movsx ebx, bl
mov esi, eax
mov dword [esp + 0x5c], ebx
mov edi, str.blank
setb cl
seta bl
sub ebx, ecx
mov ecx, 6
repe cmpsb byte [esi], byte es:[edi]
movsx ebx, bl
mov edi, str.cntrl
mov dword [esp + 0x60], ebx
setb cl
seta bl
sub ebx, ecx
mov ecx, 6
movsx esi, bl
mov dword [esp + 0x64], esi
mov esi, eax
repe cmpsb byte [esi], byte es:[edi]
mov edi, str.digit
setb cl
seta bl
sub ebx, ecx
mov ecx, 6
movsx esi, bl
mov dword [esp + 0x68], esi
mov esi, eax
repe cmpsb byte [esi], byte es:[edi]
mov edi, str.graph
setb cl
seta bl
sub ebx, ecx
mov ecx, 6
movsx esi, bl
mov dword [esp + 0x6c], esi
mov esi, eax
repe cmpsb byte [esi], byte es:[edi]
mov edi, str.lower
setb cl
seta bl
sub ebx, ecx
mov ecx, 6
movsx esi, bl
mov dword [esp + 0x70], esi
mov esi, eax
repe cmpsb byte [esi], byte es:[edi]
mov edi, str.print
setb cl
seta bl
sub ebx, ecx
mov ecx, 6
movsx esi, bl
test esi, esi
mov dword [esp + 0x84], esi
mov esi, eax
sete byte [esp + 0x82]
repe cmpsb byte [esi], byte es:[edi]
mov edi, str.punct
setb cl
seta bl
sub ebx, ecx
mov ecx, 6
movsx esi, bl
mov dword [esp + 0x74], esi
mov esi, eax
repe cmpsb byte [esi], byte es:[edi]
mov edi, str.space
setb cl
seta bl
sub ebx, ecx
mov ecx, 6
movsx esi, bl
mov dword [esp + 0x78], esi
mov esi, eax
repe cmpsb byte [esi], byte es:[edi]
mov edi, str.upper
setb cl
seta bl
sub ebx, ecx
mov ecx, 6
movsx esi, bl
mov dword [esp + 0x7c], esi
mov esi, eax
repe cmpsb byte [esi], byte es:[edi]
mov edi, str.xdigit
setb cl
seta bl
sub ebx, ecx
mov ecx, 7
movsx esi, bl
test esi, esi
mov ebx, esi
mov esi, eax
sete byte [esp + 0x83]
repe cmpsb byte [esi], byte es:[edi]
seta cl
setb al
sub ecx, eax
movsx esi, cl
mov ecx, dword [esp + 0x60]
test ecx, ecx
je 0x4087d3
test ebx, ebx
je 0x4087d3
mov eax, dword [esp + 0x84]
test eax, eax
je 0x4087d3
mov eax, dword [esp + 0x6c]
test eax, eax
je 0x4087d3
mov eax, dword [esp + 0x5c]
test eax, eax
je 0x4087d3
test esi, esi
je 0x4087d3
mov eax, dword [esp + 0x7c]
test eax, eax
je 0x4087d3
mov eax, dword [esp + 0x74]
test eax, eax
je 0x4087d3
mov eax, dword [esp + 0x78]
test eax, eax
je 0x4087d3
mov edi, dword [esp + 0x70]
test edi, edi
je 0x4087d3
mov ebx, dword [esp + 0x68]
test ebx, ebx
je 0x4087d3
mov ecx, dword [esp + 0x64]
test ecx, ecx
jne 0x408c3c
cmp ebp, edx
je 0x408be3
mov eax, dword [esp + 0x54]
add eax, 2
cmp ebp, eax
mov dword [esp + 0x9c], eax
je 0x408045
xor edi, edi
mov ebx, edi
mov edi, dword [esp + 0x24]
jmp 0x4088f6
mov dword [esp], ebx
call dword [sym.imp.msvcrt.dll_isprint]
test eax, eax
je 0x40897e
mov dword [esp], ebx
call dword [sym.imp.msvcrt.dll_isspace]
test eax, eax
jne 0x40897e
mov edx, ebx
mov ecx, ebx
shr dl, 3
and ecx, 7
movzx edx, dl
mov eax, 1
shl eax, cl
or byte [edi + edx], al
mov ecx, dword [esp + 0x78]
test ecx, ecx
jne 0x40884c
mov dword [esp], ebx
call dword [sym.imp.msvcrt.dll_ispunct]
test eax, eax
jne 0x408889
mov edx, dword [esp + 0x7c]
test edx, edx
jne 0x408861
mov dword [esp], ebx
call dword [sym.imp.msvcrt.dll_isspace]
test eax, eax
jne 0x408889
cmp byte [esp + 0x83], 0
je 0x408878
mov dword [esp], ebx
call dword [sym.imp.msvcrt.dll_isupper]
test eax, eax
jne 0x408889
test esi, esi
jne 0x4088a0
mov dword [esp], ebx
call dword [sym.imp.msvcrt.dll_isxdigit]
test eax, eax
je 0x4088a0
mov edx, ebx
mov ecx, ebx
shr dl, 3
and ecx, 7
movzx edx, dl
mov eax, 1
shl eax, cl
or byte [edi + edx], al
mov eax, dword [esp + 0x18]
test eax, eax
je 0x4088e7
cmp byte [esp + 0x83], 0
je 0x4089c0
mov dword [esp], ebx
call dword [sym.imp.msvcrt.dll_isupper]
test eax, eax
jne 0x4088d0
mov dword [esp], ebx
call dword [sym.imp.msvcrt.dll_islower]
test eax, eax
je 0x4088e7
mov edx, ebx
mov ecx, ebx
shr dl, 3
and ecx, 7
movzx edx, dl
mov eax, 1
shl eax, cl
or byte [edi + edx], al
add ebx, 1
cmp ebx, 0x100
je 0x4089d5
mov edx, dword [esp + 0x5c]
test edx, edx
jne 0x40890b
mov dword [esp], ebx
call dword [sym.imp.msvcrt.dll_isalnum]
test eax, eax
jne 0x408947
mov eax, dword [esp + 0x60]
test eax, eax
jne 0x408920
mov dword [esp], ebx
call dword [sym.imp.msvcrt.dll_isalpha]
test eax, eax
jne 0x408947
mov eax, dword [esp + 0x64]
test eax, eax
jne 0x408932
cmp ebx, 9
je 0x408947
cmp ebx, 0x20
je 0x408947
mov eax, dword [esp + 0x68]
test eax, eax
jne 0x40895e
mov dword [esp], ebx
call dword [sym.imp.msvcrt.dll_iscntrl]
test eax, eax
je 0x40895e
mov edx, ebx
mov ecx, ebx
shr dl, 3
and ecx, 7
movzx edx, dl
mov eax, 1
shl eax, cl
or byte [edi + edx], al
mov eax, dword [esp + 0x6c]
test eax, eax
jne 0x408972
lea eax, [ebx - 0x30]
cmp eax, 9
jbe 0x408820
mov eax, dword [esp + 0x70]
test eax, eax
je 0x4087fe
cmp byte [esp + 0x82], 0
je 0x408999
mov dword [esp], ebx
call dword [sym.imp.msvcrt.dll_islower]
test eax, eax
jne 0x408820
mov eax, dword [esp + 0x74]
test eax, eax
jne 0x408837
mov dword [esp], ebx
call dword [sym.imp.msvcrt.dll_isprint]
test eax, eax
je 0x408837
jmp 0x408820
cmp byte [esp + 0x82], 0
je 0x4088e7
nop
jmp 0x4088b6
mov dword [esp + 0x24], edi
mov edx, dword [esp + 0x9c]
mov edi, 1
jmp 0x407e34
mov ecx, dword [esp + 0x9c]
xor edi, edi
jmp 0x40822f
mov ecx, esi
xor edi, edi
jmp 0x40822f
mov ebx, 0x14
cmp esi, 2
mov eax, 0xa
cmovge eax, ebx
mov ebx, dword [ebp]
mov dword [esp + 0x2c], eax
mov eax, dword [ebp + 4]
mov ecx, edi
sub ecx, ebx
add ecx, dword [esp + 0x2c]
cmp ecx, eax
jbe 0x408a95
cmp eax, 0x10000
je 0x406483
add eax, eax
cmp eax, 0x10000
mov dword [ebp + 4], eax
jbe 0x408a4a
mov dword [ebp + 4], 0x10000
mov eax, 0x10000
mov ecx, dword [ebp]
mov dword [esp + 4], eax
mov dword [esp], ecx
call sub.msvcrt.dll_realloc
test eax, eax
mov dword [ebp], eax
je 0x406300
cmp eax, ebx
je 0x408a91
mov edx, eax
sub edx, ebx
mov ebx, dword [esp + 0x20]
add edi, edx
add dword [esp + 0xc], edx
lea ecx, [ebx + edx]
test ebx, ebx
cmove ecx, ebx
mov ebx, dword [esp + 0x10]
mov dword [esp + 0x20], ecx
add edx, ebx
test ebx, ebx
cmove edx, ebx
mov dword [esp + 0x10], edx
mov ebx, eax
jmp 0x408a18
mov ebx, dword [esp + 0x10]
xor edx, edx
cmp esi, 2
setge dl
mov ecx, edi
lea edx, [edx + edx*4 + 5]
mov eax, edi
sub ecx, ebx
cmp edi, ebx
lea ecx, [ecx + edx - 3]
lea edx, [edi + 5]
je 0x408ac5
sub edi, 1
movzx ebx, byte [edi]
cmp edi, dword [esp + 0x10]
mov byte [edi + 5], bl
jne 0x408ab6
mov edi, dword [esp + 0x10]
mov byte [edi + 1], cl
sar ecx, 8
mov byte [edi + 2], cl
mov ecx, dword [esp + 0x24]
mov byte [edi], 0x15
mov ebx, ecx
sar ebx, 8
cmp dword [esp + 0x10], edx
mov byte [edi + 3], cl
mov byte [edi + 4], bl
lea edi, [eax + 0xa]
mov byte [esp + 0x24], cl
mov ecx, edi
je 0x408b0c
mov dword [esp + 0x2c], eax
sub edx, 1
movzx eax, byte [edx]
sub ecx, 1
cmp edx, dword [esp + 0x10]
mov byte [ecx], al
jne 0x408af7
mov eax, dword [esp + 0x2c]
mov edx, dword [esp + 0x10]
cmp esi, 1
movzx ecx, byte [esp + 0x24]
mov byte [edx], 0x17
mov byte [edx + 1], 5
mov byte [edx + 2], 0
mov byte [edx + 3], cl
mov byte [edx + 4], bl
jle 0x407d52
lea ebx, [esi - 1]
mov esi, dword [esp + 0x10]
mov ecx, ebx
sar ecx, 8
mov byte [eax + 0xa], 0x16
mov edx, esi
sub edx, edi
add edx, 2
mov byte [eax + 0xb], dl
sar edx, 8
mov byte [eax + 0xc], dl
lea edx, [eax + 0xf]
mov edi, edx
sub edi, esi
mov esi, ecx
cmp dword [esp + 0x10], edx
mov dword [esp + 0x24], edi
lea edi, [eax + 0x14]
mov byte [eax + 0xd], bl
mov byte [eax + 0xe], cl
mov eax, edi
je 0x407d36
mov dword [esp + 0x2c], ecx
sub eax, 1
sub edx, 1
cmp edx, dword [esp + 0x10]
mov ecx, esi
mov byte [eax], cl
je 0x407d32
movzx esi, byte [edx - 1]
jmp 0x408b75
mov eax, dword [esp + 0x30]
mov dword [esp], eax
call sub.msvcrt.dll_free
mov eax, 0xa
jmp 0x406305
mov eax, esi
add edi, 3
mov byte [edi - 2], al
movzx eax, byte [esp + 0x24]
mov byte [edi - 3], 7
mov dword [esp + 0x2c], 0
mov byte [edi - 1], al
mov ecx, dword [esp + 0x9c]
jmp 0x4062bb
mov eax, dword [esp + 0x30]
mov dword [esp], eax
call sub.msvcrt.dll_free
mov eax, 0xb
jmp 0x406305
mov eax, 0xe
jmp 0x406305
movzx esi, al
cmp cl, 0x3a
mov dword [esp + 0x24], ebx
mov dword [esp + 0x54], edi
mov byte [esp + esi + 0xa0], 0
je 0x408c31
cmp al, 0xff
je 0x408c16
not esi
mov edx, esi
add edx, ebp
mov dword [esp + 0x9c], edx
mov eax, dword [esp + 0x48]
xor edi, edi
mov dword [esp + 0x4c], 0x3a
or byte [eax + 0xc], 8
or byte [eax + 8], 4
jmp 0x407e34
cmp byte [edi + 1], 0x5d
jne 0x408c05
jmp 0x408600
mov eax, dword [esp + 0x30]
mov dword [esp], eax
call sub.msvcrt.dll_free
mov eax, 4
jmp 0x406305
cmp byte [edx - 1], 0x5e
jne 0x407eac
jmp 0x408157
mov eax, dword [esp + 0x30]
mov dword [esp], eax
call sub.msvcrt.dll_free
mov eax, 3
jmp 0x406305
mov esi, edx
jmp 0x40841f