Function at 0x4213e4
Capabilities:
Parse credit card information

Disassembly:
mov edi, edi
push ebp
mov ebp, esp
sub esp, 0xa0
mov eax, dword [0x4445a8]
movsx edx, byte [eax]
push ebx
xor ebx, ebx
mov ecx, 0xfffff000
and dword [ebp - 4], ecx
and dword [ebp - 0x14], ecx
push esi
xor esi, esi
inc eax
cmp edx, 0x41
mov dword [ebp - 8], ebx
mov dword [ebp - 0x18], ebx
mov dword [0x4445a8], eax
jg 0x42157f
je 0x421928
cmp edx, ebx
je 0x42156a
cmp edx, 0x2f
jle 0x421671
cmp edx, 0x31
jle 0x421491
cmp edx, 0x39
jg 0x421671
movsx eax, byte [eax - 1]
push dword [eax*4 + 0x43de18]
lea ecx, [ebp - 8]
call fcn.0042014d
lea ecx, [ebp - 8]
call fcn.0041f7b5
test eax, eax
jne 0x42147e
mov eax, ecx
push eax
lea eax, [ebp - 0x20]
push 0x43ddfc
push eax
call fcn.0042053a
add esp, 0xc
push eax
lea ecx, [ebp - 8]
call fcn.0041f45b
lea eax, [ebp - 8]
mov ecx, dword [ebp + 8]
push eax
call fcn.0041f340
mov eax, dword [ebp + 8]
pop esi
pop ebx
leave
ret
and dword [ebp - 0x14], ecx
cmp byte [ebp + 0xc], bl
mov dword [ebp - 0x18], ebx
je 0x4214fe
lea eax, [ebp - 0x58]
push eax
call fcn.0042122a
push eax
lea eax, [ebp - 0xa0]
push 0x3c
push eax
call fcn.004204f2
add esp, 0x10
push eax
lea ecx, [ebp - 0x18]
call fcn.00420035
lea ecx, [ebp - 0x18]
call fcn.0041f827
cmp al, 0x3e
jne 0x4214d6
push 0x20
lea ecx, [ebp - 0x18]
call fcn.004202e3
push 0x3e
lea ecx, [ebp - 0x18]
call fcn.004202e3
mov eax, dword [ebp + 0x10]
cmp eax, ebx
je 0x4214ea
mov byte [eax], 1
mov eax, dword [0x4445a8]
cmp byte [eax], bl
jne 0x4214f8
lea eax, [ebp - 0x18]
jmp 0x421481
inc eax
mov dword [0x4445a8], eax
mov esi, eax
lea eax, [ebp - 0x38]
push ebx
push eax
call fcn.00421ab8
pop ecx
pop ecx
push eax
lea ecx, [ebp - 8]
call fcn.0041f45b
lea ecx, [ebp - 8]
mov dword [0x4445a8], esi
call fcn.0041f7b5
test eax, eax
jne 0x42154a
cmp byte [esi - 1], 0x31
jne 0x42154a
mov eax, ecx
push eax
lea eax, [ebp - 0x88]
push 0x7e
push eax
call fcn.004204f2
add esp, 0xc
push eax
lea ecx, [ebp - 8]
call fcn.0041f45b
lea ecx, [ebp - 0x18]
call fcn.0041f7b5
test eax, eax
jne 0x42147e
mov eax, ecx
push eax
lea ecx, [ebp - 8]
call fcn.00420035
jmp 0x42147e
dec eax
mov dword [0x4445a8], eax
push 2
mov ecx, dword [ebp + 8]
call fcn.0041f738
jmp 0x42148a
cmp edx, 0x42
je 0x421925
jle 0x421671
cmp edx, 0x5a
jle 0x421928
cmp edx, 0x5f
jne 0x421671
movsx ecx, byte [eax]
inc eax
cmp ecx, 0x4f
mov dword [0x4445a8], eax
jg 0x421680
cmp ecx, 0x44
jge 0x421905
cmp ecx, 0x39
jg 0x421627
je 0x421605
cmp ecx, ebx
je 0x42156a
cmp ecx, 0x2f
jle 0x421671
cmp ecx, 0x36
jle 0x4215f5
cmp ecx, 0x38
jg 0x421671
movsx eax, byte [eax - 1]
push dword [eax*4 + 0x43dea8]
mov ecx, dword [ebp + 8]
call fcn.0041fdf8
jmp 0x42148a
movsx eax, byte [eax - 1]
push dword [eax*4 + 0x43dea8]
jmp 0x42144d
movsx eax, byte [eax - 1]
push dword [eax*4 + 0x43dea8]
lea ecx, [ebp - 0x10]
call fcn.0041fdf8
or dword [ebp - 0xc], 0x800
lea eax, [ebp - 0x10]
jmp 0x421481
cmp ecx, 0x3f
je 0x42165b
cmp ecx, 0x40
jle 0x421671
cmp ecx, 0x42
jle 0x421905
cmp ecx, 0x43
jne 0x421671
push 1
push str._string
lea eax, [ebp - 0x10]
push eax
call fcn.00420d6e
add esp, 0xc
or dword [ebp - 0xc], 0x100
jmp 0x42161f
movsx ecx, byte [eax]
inc eax
cmp ecx, ebx
mov dword [0x4445a8], eax
je 0x42156a
cmp ecx, 0x30
je 0x421678
push 1
jmp 0x421572
push ebx
push str._anonymous_namespace
jmp 0x421646
cmp ecx, 0x54
jg 0x421839
cmp ecx, 0x53
jge 0x421905
sub ecx, 0x50
je 0x4217f0
dec ecx
je 0x421455
dec ecx
jne 0x421671
movsx eax, byte [eax - 1]
push dword [eax*4 + str.__cdecl]
lea ecx, [ebp - 8]
call fcn.0042014d
mov eax, dword [0x4445a8]
movsx eax, byte [eax]
push dword [eax*4 + 0x43de0c]
lea ecx, [ebp - 0x18]
call fcn.0042014d
mov eax, dword [0x4445a8]
movsx eax, byte [eax]
inc dword [0x4445a8]
cmp eax, 0x30
je 0x4217b9
cmp eax, 0x31
je 0x421712
add eax, 0xffffffce
cmp eax, 2
ja 0x421707
lea eax, [ebp - 0x18]
push eax
push dword [ebp + 8]
lea ecx, [ebp - 8]
call fcn.0042025d
jmp 0x42148a
dec dword [0x4445a8]
jmp 0x421570
lea eax, [ebp - 0x18]
push eax
lea eax, [ebp - 0x10]
push eax
lea ecx, [ebp - 8]
call fcn.0042025d
push 0x2c
lea eax, [ebp - 0x48]
push eax
lea eax, [ebp - 0x78]
push eax
call fcn.00420e10
pop ecx
mov ecx, eax
call fcn.0042055e
push eax
lea ecx, [ebp - 0x10]
call fcn.00420035
push 0x2c
lea eax, [ebp - 0x28]
push eax
lea eax, [ebp - 0x98]
push eax
call fcn.00420e10
pop ecx
mov ecx, eax
call fcn.0042055e
push eax
lea ecx, [ebp - 0x10]
call fcn.00420035
push 0x2c
lea eax, [ebp - 0x68]
push eax
lea eax, [ebp - 0x30]
push eax
call fcn.00420e10
pop ecx
mov ecx, eax
call fcn.0042055e
push eax
lea ecx, [ebp - 0x10]
call fcn.00420035
push 0x29
lea eax, [ebp - 0x40]
push eax
lea eax, [ebp - 0x50]
push ebx
push eax
call fcn.004205c2
pop ecx
pop ecx
mov ecx, eax
call fcn.0042055e
push eax
lea ecx, [ebp - 0x10]
call fcn.00420035
push 0x27
push dword [ebp + 8]
lea ecx, [ebp - 0x10]
call fcn.0042055e
jmp 0x42148a
lea eax, [ebp - 0x10]
push ebx
push eax
call fcn.00423fe9
pop ecx
pop ecx
lea eax, [ebp - 0x18]
push eax
push dword [ebp + 8]
lea eax, [ebp - 8]
push eax
lea eax, [ebp - 0x60]
push eax
push 0x20
lea eax, [ebp - 0x70]
push eax
lea ecx, [ebp - 0x10]
call fcn.0042055e
mov ecx, eax
call fcn.0042025d
mov ecx, eax
jmp 0x4216fd
movsx eax, byte [eax - 1]
push dword [eax*4 + str.__cdecl]
lea ecx, [ebp - 8]
call fcn.0042014d
push ebx
lea eax, [ebp - 0x80]
push ebx
push eax
call fcn.004213e4
add esp, 0xc
push eax
lea ecx, [ebp - 0x18]
call fcn.0041f45b
lea ecx, [ebp - 0x18]
call fcn.0041f7b5
test eax, eax
jne 0x4216f3
test byte [ebp - 0x14], 0x40
je 0x4216f3
jmp 0x421671
cmp ecx, 0x55
jl 0x421671
cmp ecx, 0x56
jle 0x421915
cmp ecx, 0x57
jle 0x421671
cmp ecx, 0x59
jle 0x421905
cmp ecx, 0x5f
jne 0x421671
movsx ecx, byte [eax]
inc eax
cmp ecx, 0x41
mov dword [0x4445a8], eax
jl 0x421671
cmp ecx, 0x44
jle 0x42188b
cmp ecx, 0x46
jle 0x42189b
cmp ecx, 0x4a
jg 0x421671
movsx eax, byte [eax - 1]
push dword [eax*4 + 0x43def0]
jmp 0x4215e8
movsx eax, byte [eax - 1]
push dword [eax*4 + 0x43def0]
lea ecx, [ebp - 0x10]
call fcn.0041fdf8
mov eax, dword [0x4445a8]
cmp byte [eax], 0x3f
jne 0x4218e0
lea eax, [ebp - 0x90]
push eax
call fcn.00422a6a
pop ecx
push eax
lea ecx, [ebp - 0x10]
call fcn.00420035
mov eax, dword [0x4445a8]
cmp byte [eax], 0x40
jne 0x4218f3
inc dword [0x4445a8]
jmp 0x4218f3
lea eax, [ebp - 0x20]
push eax
call fcn.00421e71
pop ecx
push eax
lea ecx, [ebp - 0x10]
call fcn.00420035
push 0x43e140
lea ecx, [ebp - 0x10]
call fcn.0042034e
jmp 0x42161f
movsx eax, byte [eax - 1]
push dword [eax*4 + str.__cdecl]
jmp 0x4215e8
movsx eax, byte [eax - 1]
push dword [eax*4 + str.__cdecl]
jmp 0x42144d
xor esi, esi
inc esi
movsx eax, byte [eax - 1]
push dword [eax*4 + 0x43ddfc]
lea ecx, [ebp - 8]
call fcn.0042014d
cmp esi, ebx
je 0x421455
lea ecx, [ebp - 8]
call fcn.0041f7b5
test eax, eax
jne 0x42147e
or dword [ebp - 4], 0x20
jmp 0x42147e