Function at 0x413019
Capabilities:
Parse credit card information

Disassembly:
push ebp
mov ebp, esp
sub esp, 0x28
mov eax, dword [0x4a44e4]
push ebx
push esi
push edi
mov cl, byte [eax]
lea esi, [eax + 1]
xor edi, edi
mov dword [0x4a44e4], esi
mov dword [ebp - 8], edi
mov dword [ebp - 4], edi
mov dword [ebp - 0x18], edi
mov dword [ebp - 0x14], edi
cmp cl, 0x41
jg 0x4131da
je 0x41366c
test cl, cl
je 0x4131c0
cmp cl, 0x2f
jle case.default.0x413545
cmp cl, 0x31
jle 0x4130d0
cmp cl, 0x39
jg case.default.0x413545
movsx eax, byte [esi - 1]
lea eax, [eax*8 + 0x458e90]
push eax
lea ecx, [ebp - 8]
call fcn.0040fa0b
cmp dword [ebp - 8], 0
je 0x4130bd
lea eax, [ebp - 0x20]
mov dword [ebp - 0x20], str.operator
push eax
lea ecx, [ebp - 0x28]
mov dword [ebp - 0x1c], 8
call fcn.0040f746
lea ecx, [ebp - 8]
push ecx
lea ecx, [ebp - 0x20]
push ecx
mov ecx, eax
call fcn.0040fbb1
mov eax, dword [ebp - 0x20]
mov dword [ebp - 8], eax
mov eax, dword [ebp - 0x1c]
mov dword [ebp - 4], eax
mov eax, dword [ebp + 8]
mov ecx, dword [ebp - 8]
mov dword [eax], ecx
mov ecx, dword [ebp - 4]
mov dword [eax + 4], ecx
pop edi
pop esi
pop ebx
leave
ret
mov ebx, edi
mov dword [ebp - 0xc], edi
mov dword [ebp - 0x10], ebx
cmp byte [ebp + 0xc], bl
je 0x413161
lea eax, [ebp - 0x20]
push eax
call fcn.0041450b
push eax
lea eax, [ebp - 0x18]
push 0x3c
push eax
call fcn.0040fb42
add esp, 0x10
lea ecx, [ebp - 0x10]
push eax
call fcn.0040fcab
mov ebx, dword [ebp - 0x10]
test ebx, ebx
je 0x413128
mov eax, dword [ebx]
mov esi, dword [eax + 8]
mov ecx, esi
call dword [0x4551d8]
mov ecx, ebx
call esi
cmp al, 0x3e
jne 0x413128
push 0x20
lea ecx, [ebp - 0x10]
call fcn.0040fd02
push 0x3e
lea ecx, [ebp - 0x10]
call fcn.0040fd02
mov eax, dword [ebp + 0x10]
test eax, eax
je 0x41313c
mov byte [eax], 1
mov esi, dword [0x4a44e4]
cmp byte [esi], 0
jne 0x413157
mov eax, dword [ebp + 8]
mov ecx, dword [ebp - 0x10]
mov dword [eax], ecx
mov ecx, dword [ebp - 0xc]
jmp 0x4130c8
mov ebx, dword [ebp - 0x10]
inc esi
mov dword [0x4a44e4], esi
push edi
lea eax, [ebp - 0x20]
push edi
push eax
call fcn.00415480
add esp, 0xc
mov ecx, dword [eax]
mov eax, dword [eax + 4]
mov dword [ebp - 8], ecx
mov dword [ebp - 4], eax
mov dword [0x4a44e4], esi
test ecx, ecx
je 0x4131a7
cmp byte [esi - 1], 0x31
jne 0x4131a7
lea eax, [ebp - 8]
push eax
lea eax, [ebp - 0x20]
push 0x7e
push eax
call fcn.0040fb42
add esp, 0xc
mov ecx, dword [eax]
mov eax, dword [eax + 4]
mov dword [ebp - 8], ecx
mov dword [ebp - 4], eax
test ebx, ebx
je 0x4130bd
lea eax, [ebp - 0x10]
push eax
lea ecx, [ebp - 8]
call fcn.0040fcab
jmp 0x4130bd
lea eax, [esi - 1]
mov dword [0x4a44e4], eax
mov ecx, dword [ebp + 8]
push 1
call fcn.0040f7e6
mov eax, dword [ebp + 8]
jmp 0x4130cb
cmp cl, 0x42
je 0x413669
jle case.default.0x413545
cmp cl, 0x5a
jle 0x41366c
cmp cl, 0x5f
jne case.default.0x413545
movsx eax, byte [esi]
lea ecx, [esi + 1]
mov dword [0x4a44e4], ecx
cmp eax, 0x4f
jg 0x41331d
cmp eax, 0x44
jge 0x413638
cmp eax, 0x39
jg 0x413299
je 0x41326c
test eax, eax
je 0x413261
cmp eax, 0x2f
jle case.default.0x413545
cmp eax, 0x36
jle 0x413251
cmp eax, 0x38
jg case.default.0x413545
movsx eax, byte [ecx - 1]
lea eax, [eax*8 + 0x458fb0]
mov ecx, dword [ebp + 8]
push eax
call fcn.0040f746
jmp 0x4131d2
movsx eax, byte [ecx - 1]
lea eax, [eax*8 + 0x458fb0]
jmp 0x413079
mov dword [0x4a44e4], esi
jmp 0x4131c8
movsx eax, byte [ecx - 1]
lea ecx, [ebp - 0x18]
lea eax, [eax*8 + 0x458fb0]
push eax
call fcn.0040f746
mov edx, dword [ebp - 0x14]
or edx, 0x8000
mov eax, dword [ebp + 8]
mov ecx, dword [ebp - 0x18]
mov dword [eax], ecx
mov dword [eax + 4], edx
jmp 0x4130cb
cmp eax, 0x3f
je 0x4132ca
cmp eax, 0x40
jle case.default.0x413545
cmp eax, 0x42
jle 0x413638
push 1
lea eax, [ebp - 0x18]
push edi
push eax
call fcn.0041438a
mov edx, dword [ebp - 0x14]
add esp, 0xc
or edx, 0x1000
jmp 0x413289
mov dl, byte [ecx]
lea eax, [ecx + 1]
mov dword [0x4a44e4], eax
test dl, dl
je 0x413312
mov esi, dword [ebp + 8]
cmp dl, 0x30
je 0x4132eb
mov dword [esi + 4], edi
mov byte [esi + 4], 2
mov dword [esi], edi
jmp 0x41330b
push edi
lea eax, [ebp - 0x18]
push 1
push eax
call fcn.0041438a
mov ecx, dword [ebp - 0x14]
add esp, 0xc
mov eax, dword [ebp - 0x18]
or ecx, 0x1000
mov dword [esi], eax
mov dword [esi + 4], ecx
mov eax, esi
jmp 0x4130cb
mov dword [0x4a44e4], ecx
jmp 0x4131c8
cmp eax, 0x54
jg 0x413502
cmp eax, 0x53
jge 0x413638
sub eax, 0x50
je 0x4134b2
sub eax, 1
je 0x413082
sub eax, 1
jne case.default.0x413545
movsx eax, byte [ecx - 1]
lea ecx, [ebp - 8]
lea eax, [eax*8 + str.____F_END__WARN______s]
push eax
call fcn.0040fa0b
mov eax, dword [0x4a44e4]
mov al, byte [eax]
test al, al
jne 0x41337b
push 1
push dword [ebp + 8]
lea ecx, [ebp - 8]
call fcn.0040fc17
jmp 0x4131d2
movsx eax, al
sub eax, 0x30
js case.default.0x413545
cmp eax, 5
jae case.default.0x413545
lea eax, [eax*8 + 0x4592b8]
push eax
lea ecx, [ebp - 0x18]
call fcn.0040fa0b
mov eax, dword [0x4a44e4]
mov cl, byte [eax]
inc eax
mov dword [0x4a44e4], eax
cmp cl, 0x30
je 0x413478
cmp cl, 0x31
je 0x4133cc
jle 0x4133c6
cmp cl, 0x34
jle 0x4134ee
dec eax
jmp 0x4131c3
mov eax, dword [ebp - 8]
lea ecx, [ebp - 0x10]
mov dword [ebp - 0x10], eax
mov eax, dword [ebp - 4]
mov dword [ebp - 0xc], eax
lea eax, [ebp - 0x18]
push eax
call fcn.0040fcab
lea eax, [ebp - 0x20]
push eax
call fcn.004141d3
pop ecx
push 0x2c
lea ecx, [ebp - 0x18]
push ecx
mov ecx, eax
call fcn.0040fbd3
push eax
lea ecx, [ebp - 0x10]
call fcn.0040fcab
lea eax, [ebp - 0x20]
push eax
call fcn.004141d3
pop ecx
push 0x2c
lea ecx, [ebp - 0x18]
push ecx
mov ecx, eax
call fcn.0040fbd3
push eax
lea ecx, [ebp - 0x10]
call fcn.0040fcab
lea eax, [ebp - 0x20]
push eax
call fcn.004141d3
pop ecx
push 0x2c
lea ecx, [ebp - 0x18]
push ecx
mov ecx, eax
call fcn.0040fbd3
push eax
lea ecx, [ebp - 0x10]
call fcn.0040fcab
lea eax, [ebp - 0x20]
push edi
push eax
call fcn.00412313
pop ecx
pop ecx
push 0x29
lea ecx, [ebp - 0x18]
push ecx
mov ecx, eax
call fcn.0040fbd3
push eax
lea ecx, [ebp - 0x10]
call fcn.0040fcab
push 0x27
push dword [ebp + 8]
lea ecx, [ebp - 0x10]
call fcn.0040fbd3
jmp 0x4131d2
lea eax, [ebp - 0x20]
push edi
push eax
call fcn.00411fd2
mov eax, dword [ebp - 0x20]
pop ecx
pop ecx
mov dword [ebp - 0x10], eax
lea ecx, [ebp - 0x10]
mov eax, dword [ebp - 0x1c]
push 0x20
mov dword [ebp - 0xc], eax
call fcn.0040fd02
lea eax, [ebp - 8]
push eax
lea eax, [ebp - 0x28]
push eax
lea ecx, [ebp - 0x10]
call fcn.0040fbb1
lea ecx, [ebp - 0x18]
push ecx
mov ecx, eax
jmp 0x4134f5
movsx eax, byte [ecx - 1]
lea ecx, [ebp - 8]
lea eax, [eax*8 + str.____F_END__WARN______s]
push eax
call fcn.0040fa0b
push edi
lea eax, [ebp - 0x28]
push edi
push eax
call fcn.00413019
add esp, 0xc
mov ecx, dword [eax]
mov eax, dword [eax + 4]
mov dword [ebp - 0x18], ecx
mov dword [ebp - 0x14], eax
test ecx, ecx
je 0x4134ee
test eax, 0x400
jne case.default.0x413545
lea eax, [ebp - 0x18]
push eax
lea ecx, [ebp - 8]
push dword [ebp + 8]
call fcn.0040fbb1
jmp 0x4131d2
cmp eax, 0x56
jle 0x413648
cmp eax, 0x57
jle case.default.0x413545
cmp eax, 0x59
jle 0x413638
cmp eax, 0x5f
jne case.default.0x413545
movsx eax, byte [ecx]
lea edx, [ecx + 1]
sub eax, 0x41
mov dword [0x4a44e4], edx
cmp eax, 0xd
ja case.default.0x413545
movzx eax, byte [eax + 0x4136b1]
jmp dword [eax*4 + 0x4136a1]
movsx eax, byte [edx - 1]
lea eax, [eax*8 + 0x459040]
jmp 0x413246
movsx eax, byte [edx - 1]
lea ecx, [ebp - 0x18]
lea eax, [eax*8 + 0x459040]
push eax
call fcn.0040f746
mov eax, dword [0x4a44e4]
cmp byte [eax], 0x3f
lea eax, [ebp - 0x28]
push eax
jne 0x41359f
call fcn.004120a9
pop ecx
push eax
lea ecx, [ebp - 0x18]
call fcn.0040fcab
mov eax, dword [0x4a44e4]
cmp byte [eax], 0x40
jne 0x4135ae
inc eax
mov dword [0x4a44e4], eax
jmp 0x4135ae
call fcn.004144c3
pop ecx
push eax
lea ecx, [ebp - 0x18]
call fcn.0040fcab
lea eax, [ebp - 0x20]
mov dword [ebp - 0x20], 0x4560f0
push eax
lea ecx, [ebp - 0x18]
mov dword [ebp - 0x1c], 2
call fcn.0040fc53
mov eax, dword [ebp + 8]
mov ecx, dword [ebp - 0x18]
mov dword [eax], ecx
mov ecx, dword [ebp - 0x14]
jmp 0x4130c8
movsx eax, byte [edx - 1]
lea ecx, [ebp - 0x18]
lea eax, [eax*8 + 0x459040]
push eax
call fcn.0040f746
jmp 0x413602
cmp al, 0x40
je 0x413612
inc ecx
mov dword [0x4a44e4], ecx
lea ecx, [ebp - 0x18]
push eax
call fcn.0040fd02
mov ecx, dword [0x4a44e4]
mov al, byte [ecx]
test al, al
jne 0x4135ee
cmp al, 0x40
jne 0x4135c8
inc ecx
mov dword [0x4a44e4], ecx
jmp 0x4135c8
mov cl, byte [edx]
lea eax, [edx + 1]
mov dword [0x4a44e4], eax
cmp cl, 0x32
jne case.default.0x413545
push dword [ebp + 8]
call fcn.004151a6
pop ecx
jmp 0x4131d2
movsx eax, byte [ecx - 1]
lea eax, [eax*8 + str.____F_END__WARN______s]
jmp 0x413246
movsx eax, byte [ecx - 1]
lea eax, [eax*8 + str.____F_END__WARN______s]
jmp 0x413079
mov eax, dword [ebp + 8]
mov dword [eax + 4], edi
mov byte [eax + 4], 2
mov dword [eax], edi
jmp 0x4130cb
xor edi, edi
inc edi
movsx eax, byte [esi - 1]
lea ecx, [ebp - 8]
lea eax, [eax*8 + 0x458e58]
push eax
call fcn.0040fa0b
test edi, edi
je 0x413082
cmp dword [ebp - 8], 0
je 0x4130bd
or dword [ebp - 4], 0x200
jmp 0x4130bd