Function at 0x403650
Capabilities:
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.00412cec
mov ebp, dword [esp + 0x20]
or ecx, 0xffffffff
mov edi, ebp
xor eax, eax
repne scasb al, byte es:[edi]
not ecx
push ecx
push 1
call fcn.00409b6d
push 0x10
push 1
mov esi, eax
call fcn.00409b6d
mov ecx, esi
add esp, 0x14
mov ebx, eax
mov eax, ebp
sub ecx, ebp
mov dl, byte [eax]
mov byte [ecx + eax], dl
inc eax
test dl, dl
jne 0x403694
mov al, byte [esi]
mov ebp, esi
test al, al
je 0x4036e2
cmp al, 0x3f
jne 0x4036af
mov byte [esi], 0x6c
jmp 0x4036da
cmp al, 0x23
jne 0x4036b8
mov byte [esi], 0x69
jmp 0x4036da
cmp al, 0x2d
jne 0x4036c1
mov byte [esi], 0x6f
jmp 0x4036da
cmp al, 0x2b
jne 0x4036ca
mov byte [esi], 0x30
jmp 0x4036da
cmp al, 0x3d
jne 0x4036d3
mov byte [esi], 0x40
jmp 0x4036da
cmp al, 0x25
jne 0x4036da
mov byte [esi], 0x31
mov al, byte [esi + 1]
inc esi
test al, al
jne 0x4036a6
mov al, byte [ebp]
mov ecx, ebp
test al, al
je 0x403719
mov al, byte [ecx]
cmp al, 0x30
jl 0x4036f9
cmp al, 0x39
jg 0x4036f9
sub al, 0x30
jmp 0x40370f
cmp al, 0x40
jl 0x403705
cmp al, 0x5b
jg 0x403705
sub al, 0x36
jmp 0x40370f
cmp al, 0x61
jl 0x403711
cmp al, 0x7a
jg 0x403711
sub al, 0x3b
mov byte [ecx], al
mov al, byte [ecx + 1]
inc ecx
test al, al
jne 0x4036eb
mov edi, dword [esp + 0x1c]
or ecx, 0xffffffff
xor eax, eax
xor esi, esi
xor edx, edx
repne scasb al, byte es:[edi]
not ecx
dec ecx
sub ecx, 4
js 0x40378e
cmp esi, 0xd
jae 0x40378e
mov cl, byte [edx + ebp + 1]
mov al, byte [edx + ebp]
shl cl, 6
and al, 0x3f
mov edi, dword [esp + 0x1c]
add cl, al
mov byte [esi + ebx], cl
mov cl, byte [edx + ebp + 1]
mov al, byte [edx + ebp + 2]
inc esi
inc edx
sar cl, 2
and cl, 0xf
shl al, 4
add cl, al
mov byte [esi + ebx], cl
mov cl, byte [edx + ebp + 1]
mov al, byte [edx + ebp + 2]
inc esi
inc edx
sar cl, 4
and cl, 3
add edx, 2
shl al, 2
add cl, al
xor eax, eax
mov byte [esi + ebx], cl
or ecx, 0xffffffff
inc esi
repne scasb al, byte es:[edi]
not ecx
add ecx, 0xfffffffb
cmp edx, ecx
jle 0x403730
xor edi, edi
xor esi, esi
mov eax, esi
mov ecx, 0x30
cdq
idiv ecx
push edx
call fcn.00403630
cdq
mov ecx, 0xd
add esp, 4
idiv ecx
mov al, byte [esi + ebx]
add al, dl
mov byte [esi + ebx], al
inc esi
cmp esi, 0x10
jb 0x403792
cmp byte [ebx + 1], 9
je 0x4037c5
mov dword [esp + 0x10], edi
cmp byte [ebx + 3], 1
je 0x4037cf
mov dword [esp + 0x10], edi
mov eax, dword [ebx + 8]
cmp eax, 0xffffffff
je 0x4037e9
cmp eax, 0x3e8
jl 0x4037e5
cmp eax, 0x989680
jle 0x4037e9
mov dword [esp + 0x10], edi
mov edi, dword [esp + 0x18]
or ecx, 0xffffffff
xor eax, eax
xor esi, esi
xor edx, edx
repne scasb al, byte es:[edi]
not ecx
dec ecx
test ecx, ecx
jle 0x40381b
mov edi, dword [esp + 0x18]
or ecx, 0xffffffff
movsx eax, byte [edx + edi]
imul eax, edx
add esi, eax
xor eax, eax
inc edx
repne scasb al, byte es:[edi]
not ecx
dec ecx
cmp edx, ecx
jl 0x4037ff
xor ecx, ecx
and esi, 0x800000ff
mov cl, byte [ebx + 4]
jns 0x403830
dec esi
or esi, 0xffffff00
inc esi
cmp esi, ecx
je 0x40383c
mov dword [esp + 0x10], 0
cmp dword [ebx + 8], 0xffffffff
je 0x40384a
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 0x4038bc
mov edx, dword [0x41975c]
mov eax, ebx
add edx, 0x68
mov ecx, dword [eax]
mov dword [edx], ecx
mov ecx, dword [eax + 4]
mov dword [edx + 4], ecx
mov ecx, dword [eax + 8]
mov dword [edx + 8], ecx
mov ecx, dword [esp + 0x18]
mov eax, dword [eax + 0xc]
mov dword [edx + 0xc], eax
mov edx, dword [0x41975c]
add edx, 3
mov al, byte [ecx]
inc ecx
mov byte [edx], al
inc edx
test al, al
jne 0x4038b0
jmp 0x4038db
mov eax, dword [0x4192b4]
mov ecx, dword [0x419748]
push 0
push 0x401110
push eax
push 0x415e50
push ecx
call dword [sym.imp.USER32.dll_DialogBoxParamA]
push ebp
call fcn.004095d5
push ebx
call fcn.004095d5
add esp, 8
mov eax, esi
pop edi
pop esi
pop ebp
pop ebx
pop ecx
ret