Function at 0x406900
Capabilities:
Encode data using base64
Parse credit card information

Disassembly:
push ecx
mov eax, dword [esp + 8]
push ebx
push ebp
push esi
push edi
push eax
mov dword [esp + 0x14], 1
call fcn.00408fab
mov edi, dword [esp + 0x20]
mov eax, edi
add esp, 4
lea ecx, [eax + 1]
mov dl, byte [eax]
add eax, 1
test dl, dl
jne 0x406923
sub eax, ecx
add eax, 1
push eax
push 1
call fcn.0040965a
push 0x10
push 1
mov esi, eax
call fcn.0040965a
mov edx, esi
add esp, 0x10
mov ebx, eax
mov eax, edi
sub edx, edi
nop
mov cl, byte [eax]
mov byte [edx + eax], cl
add eax, 1
test cl, cl
jne 0x406950
cmp byte [esi], cl
mov ebp, esi
je 0x4069a0
mov al, byte [esi]
cmp al, 0x3f
jne 0x40696d
mov byte [esi], 0x6c
jmp 0x406998
cmp al, 0x23
jne 0x406976
mov byte [esi], 0x69
jmp 0x406998
cmp al, 0x2d
jne 0x40697f
mov byte [esi], 0x6f
jmp 0x406998
cmp al, 0x2b
jne 0x406988
mov byte [esi], 0x30
jmp 0x406998
cmp al, 0x3d
jne 0x406991
mov byte [esi], 0x40
jmp 0x406998
cmp al, 0x25
jne 0x406998
mov byte [esi], 0x31
add esi, 1
cmp byte [esi], 0
jne 0x406962
cmp byte [ebp], 0
mov ecx, ebp
je 0x4069d6
mov al, byte [ecx]
cmp al, 0x30
jl 0x4069b6
cmp al, 0x39
jg 0x4069b6
sub al, 0x30
jmp 0x4069cc
cmp al, 0x40
jl 0x4069c2
cmp al, 0x5b
jg 0x4069c2
sub al, 0x36
jmp 0x4069cc
cmp al, 0x61
jl 0x4069ce
cmp al, 0x7a
jg 0x4069ce
sub al, 0x3b
mov byte [ecx], al
add ecx, 1
cmp byte [ecx], 0
jne 0x4069a8
mov ecx, edi
xor esi, esi
xor eax, eax
lea edi, [ecx + 1]
nop
mov dl, byte [ecx]
add ecx, 1
test dl, dl
jne 0x4069e0
sub ecx, edi
add ecx, 0xfffffffc
js 0x406a66
cmp esi, 0xd
jae 0x406a66
movzx ecx, byte [eax + ebp + 1]
movzx edx, byte [eax + ebp]
shl cl, 6
and dl, 0x3f
xor cl, dl
mov byte [esi + ebx], cl
movzx ecx, byte [eax + ebp + 1]
movzx edx, byte [eax + ebp + 2]
add eax, 1
sar cl, 2
and cl, 0xf
shl dl, 4
xor cl, dl
mov byte [esi + ebx + 1], cl
movzx ecx, byte [eax + ebp + 1]
movzx edx, byte [eax + ebp + 2]
add esi, 1
add eax, 1
sar cl, 4
add dl, dl
and cl, 3
add dl, dl
add esi, 1
xor cl, dl
mov byte [esi + ebx], cl
mov ecx, dword [esp + 0x1c]
add esi, 1
add eax, 2
lea edi, [ecx + 1]
mov dl, byte [ecx]
add ecx, 1
test dl, dl
jne 0x406a54
sub ecx, edi
add ecx, 0xfffffffc
cmp eax, ecx
jle 0x4069f0
xor edi, edi
xor esi, esi
lea ebx, [ebx]
mov eax, 0xaaaaaaab
mul esi
shr edx, 5
lea eax, [edx + edx*2]
shl eax, 4
mov ecx, esi
sub ecx, eax
push ecx
call fcn.004068e0
cdq
mov ecx, 0xd
idiv ecx
add esi, 1
add esp, 4
add byte [esi + ebx - 1], dl
cmp esi, 0x10
jb 0x406a70
cmp byte [ebx + 1], 5
je 0x406aab
mov dword [esp + 0x10], edi
cmp byte [ebx + 3], 1
je 0x406ab5
mov dword [esp + 0x10], edi
mov eax, dword [ebx + 8]
cmp eax, 0xffffffff
je 0x406acf
cmp eax, 0x3e8
jl 0x406acb
cmp eax, 0x989680
jle 0x406acf
mov dword [esp + 0x10], edi
mov eax, dword [esp + 0x18]
xor ecx, ecx
lea esi, [eax + 1]
mov dl, byte [eax]
add eax, 1
test dl, dl
jne 0x406ad8
sub eax, esi
test eax, eax
jle 0x406b12
jmp 0x406af0
mov eax, dword [esp + 0x18]
movsx edx, byte [ecx + eax]
imul edx, ecx
add edi, edx
add ecx, 1
lea esi, [eax + 1]
mov dl, byte [eax]
add eax, 1
test dl, dl
jne 0x406b03
sub eax, esi
cmp ecx, eax
jl 0x406af0
and edi, 0x800000ff
movzx eax, byte [ebx + 4]
jns 0x406b26
dec edi
or edi, 0xffffff00
inc edi
cmp edi, eax
je 0x406b32
mov dword [esp + 0x10], 0
cmp dword [ebx + 8], 0xffffffff
je 0x406b40
mov dword [esp + 0x10], 0
mov esi, dword [sym.imp.USER32.dll_LoadCursorA]
push 0x7f02
push 0
call esi
mov edi, dword [sym.imp.USER32.dll_SetCursor]
push eax
call edi
push 0x1f4
call dword [sym.imp.KERNEL32.dll_Sleep]
push 0x7f00
push 0
call esi
push eax
call edi
mov esi, dword [esp + 0x10]
cmp esi, 1
jne 0x406bb4
mov eax, dword [0x423514]
mov ecx, dword [ebx]
mov dword [eax + 0x68], ecx
mov edx, dword [ebx + 4]
add eax, 0x68
mov dword [eax + 4], edx
mov ecx, dword [ebx + 8]
mov dword [eax + 8], ecx
mov edx, dword [ebx + 0xc]
mov ecx, dword [esp + 0x18]
mov dword [eax + 0xc], edx
mov edx, dword [0x423514]
add edx, 3
mov al, byte [ecx]
mov byte [edx], al
add ecx, 1
add edx, 1
test al, al
jne 0x406ba4
jmp 0x406bd3
mov eax, dword [0x4226fc]
mov ecx, dword [0x422088]
push 0
push 0x4025b0
push eax
push str.KEYERROR
push ecx
call dword [sym.imp.USER32.dll_DialogBoxParamA]
push ebp
call fcn.004094ae
push ebx
call fcn.004094ae
add esp, 8
pop edi
mov eax, esi
pop esi
pop ebp
pop ebx
pop ecx
ret