Function at 0x4129b0
Capabilities:
Parse credit card information

Disassembly:
push ebp
mov ecx, eax
mov ebp, esp
push edi
push esi
mov esi, edx
push ebx
sub esp, 0x1c
mov ebx, eax
movzx eax, byte [eax]
cmp al, 0x20
sete dl
cmp al, 9
sete al
or eax, edx
test al, 1
je 0x412ad5
lea esi, [esi]
lea edi, [edi]
inc ebx
movzx ecx, byte [ebx]
cmp cl, 0x20
sete al
cmp cl, 9
sete dl
or eax, edx
test al, 1
jne 0x4129e0
mov byte [ebp - 0x11], cl
movsx eax, cl
mov edi, ebx
mov dword [ebp - 0x10], 6
inc ebx
cmp eax, 0x3b
je 0x412ab0
jg 0x412add
cmp eax, 0x2b
je 0x412af2
jg 0x412b05
mov dword [ebp - 0x10], 1
test eax, eax
je 0x412ab0
test esi, esi
je 0x412a4e
mov dword [esp + 4], eax
mov dword [esp], esi
call sub.msvcrt.dll_strchr
mov dword [ebp - 0x10], 2
test eax, eax
jne 0x412ab0
mov dword [ebp - 0x10], 2
movsx eax, byte [ebp - 0x11]
cmp eax, 0x2b
je 0x412a9e
nop
jg 0x412b28
cmp eax, 0x20
je 0x412aa6
jg 0x412bf3
test eax, eax
je 0x412aa6
cmp eax, 9
je 0x412aa6
test esi, esi
je 0x412a8e
mov dword [esp + 4], eax
mov dword [esp], esi
call sub.msvcrt.dll_strchr
test eax, eax
jne 0x412aa6
movzx ecx, byte [ebx]
mov byte [ebp - 0x11], cl
inc ebx
movsx eax, byte [ebp - 0x11]
cmp eax, 0x2b
jne 0x412a60
movzx ecx, byte [ebx]
cmp cl, 0x3d
jne 0x412a91
dec ebx
mov esi, esi
lea edi, [edi]
mov eax, dword [ebp + 8]
test eax, eax
je 0x412abc
mov eax, dword [ebp + 8]
mov dword [eax], edi
mov esi, dword [ebp + 0xc]
test esi, esi
je 0x412aca
mov eax, dword [ebp + 0xc]
sub ebx, edi
mov dword [eax], ebx
mov eax, dword [ebp - 0x10]
add esp, 0x1c
pop ebx
pop esi
pop edi
pop ebp
ret
movzx ecx, byte [ecx]
jmp 0x4129f6
mov dword [ebp - 0x10], 7
cmp eax, 0x3d
je 0x412ab0
cmp eax, 0x3f
jne 0x412a33
cmp byte [ebx], 0x3d
jne 0x412a33
mov dword [ebp - 0x10], 7
inc ebx
jmp 0x412ab0
cmp eax, 0x3a
jne 0x412a33
mov dword [ebp - 0x10], 4
movsx eax, byte [ebx]
cmp eax, 0x3a
je 0x412c5a
cmp eax, 0x3d
jne 0x412ab0
jmp 0x412afb
cmp eax, 0x3d
je 0x412aa6
jg 0x412c00
cmp eax, 0x3a
jne 0x412a7a
mov eax, ebx
sub eax, edi
dec eax
jle 0x412aa6
movzx eax, byte [ebx]
cmp al, 0x2f
setne dl
cmp al, 0x5c
setne al
movzx eax, al
test edx, eax
jne 0x412aa6
movzx edx, byte [ebx - 2]
mov eax, dword [sym.imp.msvcrt.dll___mb_cur_max]
cmp dword [eax], 1
jne 0x412c44
mov eax, dword [sym.imp.msvcrt.dll__pctype]
mov eax, dword [eax]
movzx eax, word [eax + edx*2]
and eax, 0x103
test eax, eax
je 0x412aa6
mov eax, ebx
sub eax, edi
cmp eax, 2
je 0x412ba0
cmp byte [ebx - 3], 0x28
jne 0x412aa6
movzx edx, byte [ebx]
inc ebx
cmp dl, 0x24
mov byte [ebp - 0x11], dl
je 0x412a8e
mov dword [ebp - 0x10], 3
cmp dl, 0x28
mov byte [ebp - 0x12], 0x29
je 0x412bce
cmp byte [ebp - 0x11], 0x7b
jne 0x412a8e
mov byte [ebp - 0x12], 0x7d
xor eax, eax
movzx ecx, byte [ebx]
test cl, cl
je 0x412a91
cmp cl, dl
je 0x412c40
cmp cl, byte [ebp - 0x12]
je 0x412be7
inc ebx
jmp 0x412bd0
dec eax
jns 0x412be4
inc ebx
movzx ecx, byte [ebx]
jmp 0x412a91
cmp eax, 0x24
jne 0x412a7a
jmp 0x412ba0
cmp eax, 0x3f
je 0x412a9e
cmp eax, 0x5c
jne 0x412a7a
movzx ecx, byte [ebx]
movsx eax, cl
cmp eax, 0x3a
jl 0x412a91
cmp eax, 0x3b
jle 0x412bea
cmp eax, 0x3d
je 0x412bea
cmp eax, 0x5c
je 0x412bea
mov byte [ebp - 0x11], cl
inc ebx
jmp 0x412a95
inc eax
inc ebx
jmp 0x412bd0
mov dword [esp], edx
mov eax, 0x103
mov dword [esp + 4], eax
call sub.msvcrt.dll__isctype
jmp 0x412b85
mov dword [ebp - 0x10], 5
inc ebx
jmp 0x412ab0