Function at 0x40def8
Capabilities:
Parse credit card information

Disassembly:
mov ecx, 0xffff0000
mov edi, edi
push ebp
mov eax, dword [0x4ac380]
mov ebp, esp
movsx edx, byte [eax]
add esp, 0xffffff70
push ebx
xor ebx, ebx
and dword [ebp - 4], ecx
and dword [ebp - 0xc], ecx
push esi
xor esi, esi
mov dword [ebp - 8], ebx
mov dword [ebp - 0x10], ebx
inc eax
mov dword [0x4ac380], eax
cmp edx, 0x41
jg 0x40e0b4
je 0x40e49e
cmp edx, ebx
je 0x40e09c
cmp edx, 0x2f
jle 0x40e392
cmp edx, 0x31
jle 0x40dfa8
cmp edx, 0x39
jg 0x40e392
movsx eax, byte [eax - 1]
push dword [eax*4 + 0x4242a0]
lea ecx, [ebp - 8]
call fcn.0040ca6a
cmp dword [ebp - 8], ebx
je 0x40df96
lea eax, [ebp - 0x28]
lea esi, [ebp - 8]
lea ecx, [ebp - 0x30]
push esi
push eax
push 0x424288
call fcn.0040c76a
mov ecx, eax
call fcn.0040cbb2
mov eax, dword [ebp - 0x28]
mov dword [ebp - 8], eax
mov ecx, dword [ebp - 0x24]
mov dword [ebp - 4], ecx
mov ecx, dword [ebp - 8]
mov eax, dword [ebp + 8]
mov dword [eax], ecx
mov ecx, dword [ebp - 4]
mov dword [eax + 4], ecx
pop esi
pop ebx
leave
ret
and dword [ebp - 0xc], ecx
mov dword [ebp - 0x10], ebx
cmp byte [ebp + 0xc], bl
je 0x40e02f
lea eax, [ebp - 0x88]
push eax
call fcn.0040dce9
pop esi
lea ecx, [ebp - 0x20]
push eax
lea eax, [ebp - 0x28]
push eax
push 0x3c
call fcn.0040c73d
mov ecx, eax
call fcn.0040cbb2
lea eax, [ebp - 0x28]
lea ecx, [ebp - 0x10]
push eax
call fcn.0040c993
mov ecx, dword [ebp - 0x10]
cmp ecx, ebx
je 0x40dffc
mov eax, dword [ecx]
call dword [eax + 4]
cmp al, 0x3e
jne 0x40dffc
lea ecx, [ebp - 0x10]
push 0x20
call fcn.0040cbfa
push 0x3e
lea ecx, [ebp - 0x10]
call fcn.0040cbfa
mov esi, dword [ebp + 0x10]
cmp esi, ebx
je 0x40e010
mov byte [esi], 1
mov eax, dword [0x4ac380]
cmp byte [eax], bl
jne 0x40e029
mov eax, dword [ebp + 8]
mov ebx, dword [ebp - 0x10]
mov dword [eax], ebx
mov ecx, dword [ebp - 0xc]
jmp 0x40dfa1
inc eax
mov dword [0x4ac380], eax
mov esi, eax
lea eax, [ebp - 0x90]
push ebx
push ebx
push eax
call fcn.0040e625
add esp, 0xc
mov ecx, dword [eax]
cmp ecx, ebx
mov eax, dword [eax + 4]
mov dword [ebp - 8], ecx
mov dword [ebp - 4], eax
mov dword [0x4ac380], esi
je 0x40e082
cmp byte [esi - 1], 0x31
jne 0x40e082
lea eax, [ebp - 8]
lea ecx, [ebp - 0x28]
push eax
lea eax, [ebp - 0x20]
push eax
push 0x7e
call fcn.0040c73d
mov ecx, eax
call fcn.0040cbb2
mov ecx, dword [ebp - 0x20]
mov esi, dword [ebp - 0x1c]
mov dword [ebp - 8], ecx
mov dword [ebp - 4], esi
cmp dword [ebp - 0x10], ebx
je 0x40df99
lea eax, [ebp - 0x10]
push eax
lea ecx, [ebp - 8]
call fcn.0040c993
jmp 0x40df96
dec eax
mov dword [0x4ac380], eax
mov ecx, dword [ebp + 8]
push 1
call fcn.0040c378
mov eax, dword [ebp + 8]
jmp 0x40dfa4
cmp edx, 0x42
je 0x40e49b
jle 0x40e392
cmp edx, 0x5a
jle 0x40e49e
cmp edx, 0x5f
jne 0x40e392
movsx ecx, byte [eax]
inc eax
mov dword [0x4ac380], eax
cmp ecx, 0x4f
jg 0x40e1c0
cmp ecx, 0x44
jge 0x40e47b
cmp ecx, 0x39
jg 0x40e160
je 0x40e137
cmp ecx, ebx
je 0x40e09c
cmp ecx, 0x2f
jle 0x40e392
cmp ecx, 0x36
jle 0x40e127
cmp ecx, 0x38
jg 0x40e392
movsx eax, byte [eax - 1]
push dword [eax*4 + 0x424330]
mov ecx, dword [ebp + 8]
call fcn.0040c76a
jmp 0x40e0ac
movsx eax, byte [eax - 1]
push dword [eax*4 + 0x424330]
jmp 0x40df61
lea ecx, [ebp - 0x20]
movsx eax, byte [eax - 1]
push dword [eax*4 + 0x424330]
call fcn.0040c76a
mov ecx, dword [ebp - 0x1c]
or ecx, 0x8000
mov eax, dword [ebp + 8]
mov edx, dword [ebp - 0x20]
mov dword [eax], edx
jmp 0x40dfa1
cmp ecx, 0x3f
je 0x40e19e
cmp ecx, 0x40
jle 0x40e392
cmp ecx, 0x42
jle 0x40e47b
cmp ecx, 0x43
jne 0x40e392
push 1
push str._string
lea eax, [ebp - 0x20]
push eax
call fcn.0040d7f6
sub esp, 0xfffffff4
mov ecx, dword [ebp - 0x1c]
or ecx, 0x1000
jmp 0x40e153
movsx ecx, byte [eax]
inc eax
mov dword [0x4ac380], eax
cmp ecx, ebx
je 0x40e09c
cmp ecx, 0x30
jne 0x40e392
push ebx
push str._anonymous_namespace
jmp 0x40e187
cmp ecx, 0x54
jg 0x40e3bb
cmp ecx, 0x53
jge 0x40e47b
sub ecx, 0x50
je 0x40e35b
dec ecx
je 0x40df96
dec ecx
jne 0x40e392
lea ecx, [ebp - 8]
movsx eax, byte [eax - 1]
push dword [eax*4 + 0x424314]
call fcn.0040ca6a
mov eax, dword [0x4ac380]
mov al, byte [eax]
cmp al, bl
jne 0x40e219
lea ecx, [ebp - 8]
push 1
push dword [ebp + 8]
call fcn.0040c96f
jmp 0x40e0ac
movsx eax, al
sub eax, 0x30
js 0x40e392
cmp eax, 5
jae 0x40e392
push dword [eax*4 + 0x4244a8]
lea ecx, [ebp - 0x10]
call fcn.0040ca6a
mov eax, dword [0x4ac380]
movsx eax, byte [eax]
inc dword [0x4ac380]
cmp eax, 0x30
je 0x40e31c
cmp eax, 0x31
je 0x40e270
sub eax, 0x32
cmp eax, 2
jbe 0x40e3a7
dec dword [0x4ac380]
jmp 0x40e0a2
mov eax, dword [ebp - 8]
mov dword [ebp - 0x18], eax
lea eax, [ebp - 0x10]
mov esi, dword [ebp - 4]
mov dword [ebp - 0x14], esi
lea ecx, [ebp - 0x18]
push eax
call fcn.0040c993
lea esi, [ebp - 0x48]
lea eax, [ebp - 0x38]
push 0x2c
push esi
push eax
call fcn.0040d8a9
pop ecx
mov ecx, eax
call fcn.0040ce76
lea ecx, [ebp - 0x18]
push eax
call fcn.0040c993
push 0x2c
lea esi, [ebp - 0x58]
lea eax, [ebp - 0x78]
push esi
push eax
call fcn.0040d8a9
pop ecx
mov ecx, eax
call fcn.0040ce76
lea ecx, [ebp - 0x18]
push eax
call fcn.0040c993
lea eax, [ebp - 0x40]
push 0x2c
lea esi, [ebp - 0x68]
push esi
push eax
call fcn.0040d8a9
mov ecx, eax
pop esi
call fcn.0040ce76
push eax
lea ecx, [ebp - 0x18]
call fcn.0040c993
push 0x29
lea esi, [ebp - 0x50]
lea eax, [ebp - 0x60]
push esi
push ebx
push eax
call fcn.0040cebe
mov ecx, eax
pop ebx
pop ebx
call fcn.0040ce76
lea ecx, [ebp - 0x18]
push eax
call fcn.0040c993
push 0x27
push dword [ebp + 8]
lea ecx, [ebp - 0x18]
call fcn.0040ce76
jmp 0x40e0ac
push ebx
lea eax, [ebp - 0x28]
push eax
call fcn.00410fc0
mov ebx, dword [ebp - 0x28]
pop ecx
pop ecx
mov dword [ebp - 0x18], ebx
lea ecx, [ebp - 0x18]
mov eax, dword [ebp - 0x24]
push 0x20
mov dword [ebp - 0x14], eax
call fcn.0040cbfa
mov esi, dword [ebp - 0x18]
lea eax, [ebp - 8]
mov dword [ebp - 0x20], esi
mov ebx, dword [ebp - 0x14]
mov dword [ebp - 0x1c], ebx
push eax
lea ecx, [ebp - 0x20]
call fcn.0040c993
lea ecx, [ebp - 0x20]
jmp 0x40e3aa
movsx eax, byte [eax - 1]
push dword [eax*4 + 0x424314]
lea ecx, [ebp - 8]
call fcn.0040ca6a
lea eax, [ebp - 0x70]
push ebx
push ebx
push eax
call fcn.0040def8
mov ecx, dword [eax]
add esp, 0xc
mov eax, dword [eax + 4]
cmp ecx, ebx
mov dword [ebp - 0x10], ecx
mov dword [ebp - 0xc], eax
je 0x40e3a7
test eax, 0x400
je 0x40e3a7
mov eax, dword [ebp + 8]
and dword [eax + 4], 0xffff00ff
mov byte [eax + 4], 2
mov dword [eax], ebx
jmp 0x40dfa4
lea ecx, [ebp - 8]
lea eax, [ebp - 0x10]
push eax
push dword [ebp + 8]
call fcn.0040cbb2
jmp 0x40e0ac
cmp ecx, 0x55
jl 0x40e392
cmp ecx, 0x56
jle 0x40e48b
cmp ecx, 0x57
jle 0x40e392
cmp ecx, 0x59
jle 0x40e47b
cmp ecx, 0x5f
jne 0x40e392
movsx ecx, byte [eax]
inc eax
cmp ecx, 0x41
mov dword [0x4ac380], eax
jl 0x40e392
cmp ecx, 0x44
jle 0x40e3f9
cmp ecx, 0x46
jle 0x40e409
cmp ecx, 0x4a
jg 0x40e392
movsx eax, byte [eax - 1]
push dword [eax*4 + 0x424378]
jmp 0x40e11d
movsx eax, byte [eax - 1]
push dword [eax*4 + 0x424378]
lea ecx, [ebp - 0x18]
call fcn.0040c76a
mov eax, dword [0x4ac380]
cmp byte [eax], 0x3f
jne 0x40e44b
lea eax, [ebp - 0x80]
push eax
call fcn.0040f7df
pop ebx
push eax
lea ecx, [ebp - 0x18]
call fcn.0040c993
mov eax, dword [0x4ac380]
cmp byte [eax], 0x40
jne 0x40e45e
inc dword [0x4ac380]
jmp 0x40e45e
lea eax, [ebp - 0x30]
push eax
call fcn.0040ea3f
pop ecx
lea ecx, [ebp - 0x18]
push eax
call fcn.0040c993
lea ecx, [ebp - 0x18]
push 0x4245e8
call fcn.0040cc4c
mov eax, dword [ebp + 8]
mov esi, dword [ebp - 0x18]
mov dword [eax], esi
mov ecx, dword [ebp - 0x14]
jmp 0x40dfa1
movsx eax, byte [eax - 1]
push dword [eax*4 + 0x424314]
jmp 0x40e11d
movsx eax, byte [eax - 1]
push dword [eax*4 + 0x424314]
jmp 0x40df61
xor esi, esi
inc esi
movsx eax, byte [eax - 1]
lea ecx, [ebp - 8]
push dword [eax*4 + 0x424284]
call fcn.0040ca6a
cmp esi, ebx
je 0x40df69
cmp dword [ebp - 8], ebx
je 0x40df96
or dword [ebp - 4], 0x200
jmp 0x40df96