Function at 0x40f790
Capabilities:
Parse credit card information

Disassembly:
push ebp
mov ebp, esp
push edi
push esi
push ebx
sub esp, 0x5c
mov esi, eax
mov ebx, edx
mov dword [ebp - 0x3c], ecx
mov dword [esp], ecx
call fcn.00418138
mov dword [esp + 4], ebx
mov dword [esp], esi
call fcn.00418214
mov esi, eax
mov eax, dword [ebx + 4]
cmp esi, eax
jge 0x40f87f
lea edx, [esi + 2]
cmp eax, edx
jg 0x40f88c
mov eax, dword [ebx]
mov dl, byte [eax + esi]
cmp dl, 0x25
je 0x40fb20
cmp dl, 0x22
je 0x40fb7c
cmp dl, 0x3c
je 0x40f948
mov ecx, dword [0x4fe480]
test ecx, ecx
je 0x40f7ff
cmp dl, 0x27
je 0x40f951
mov dword [esp], 1
call fcn.00488278
mov dword [ebp - 0x48], eax
mov byte [eax], 0
cmp esi, dword [ebx + 4]
jge 0x40f874
mov dword [ebp - 0x40], eax
xor eax, eax
jmp 0x40f85e
mov edx, dword [ebx]
mov dl, byte [edx + esi]
cmp dl, 0x2c
je 0x40f874
cmp dl, 0x3c
je 0x40fa88
lea ecx, [edx - 0x22]
cmp cl, 0x3b
jbe 0x40f9cc
movsx edi, dl
nop
mov dword [esp + 4], edi
mov edx, dword [ebp - 0x3c]
mov dword [esp], edx
call fcn.00418148
inc esi
cmp dword [ebx + 4], esi
jle 0x40f874
mov edx, dword [ebp - 0x40]
mov al, byte [edx]
test al, al
jne 0x40f820
mov edx, dword [ebx]
mov dl, byte [edx + esi]
cmp dl, 0x20
je 0x40f874
cmp dl, 9
jne 0x40f825
lea esi, [esi]
mov eax, dword [ebp - 0x48]
mov dword [esp], eax
call sub.msvcrt.dll_free
mov eax, esi
add esp, 0x5c
pop ebx
pop esi
pop edi
leave
ret
mov eax, dword [ebx]
cmp byte [eax + esi + 1], 0x27
jne 0x40f7ce
mov dl, byte [eax + esi]
mov al, dl
cmp dl, 0x62
je 0x40f8cf
cmp dl, 0x42
je 0x40f8ca
cmp dl, 0x71
je 0x40f8ca
cmp dl, 0x51
je 0x40f8ca
cmp dl, 0x68
je 0x40f8ca
cmp dl, 0x48
je 0x40f8ca
cmp dl, 0x64
je 0x40f8ca
cmp dl, 0x44
jne 0x40f7d1
cmp dl, 0x2c
je 0x40f87f
cmp dl, 0x22
je 0x40f87f
cmp dl, 0x3b
je 0x40f87f
cmp dl, 0x29
je 0x40f87f
cmp dl, 0x28
je 0x40f87f
mov edi, dword [ebp - 0x3c]
jmp 0x40f904
cmp al, 9
je 0x40f87f
cmp al, 0x2c
je 0x40f87f
cmp al, 0x22
je 0x40f87f
cmp al, 0x3b
je 0x40f87f
cmp al, 0x29
je 0x40f87f
cmp al, 0x28
je 0x40f87f
mov ecx, dword [0x4fe480]
test ecx, ecx
jne 0x40f918
mov edx, dword [0x4fe484]
test edx, edx
je 0x40f928
cmp al, 0x3c
je 0x40f87f
cmp al, 0x3e
je 0x40f87f
inc esi
movsx eax, al
mov dword [esp + 4], eax
mov dword [esp], edi
call fcn.00418148
mov eax, dword [ebx]
mov al, byte [eax + esi]
cmp al, 0x20
jne 0x40f8e8
jmp 0x40f87f
mov eax, dword [0x4fe480]
test eax, eax
je 0x40f99e
mov eax, dword [0x4fe48c]
test eax, eax
jne 0x40f9ac
cmp dl, 0x3c
je 0x40f9ac
mov dword [esp + 4], 0x22
mov edx, dword [ebp - 0x3c]
mov dword [esp], edx
call fcn.00418148
lea ecx, [ebx + 4]
mov eax, dword [ebp - 0x3c]
mov dword [esp], eax
mov edx, ebx
mov eax, esi
call fcn.0040f520
mov esi, eax
mov dword [esp + 4], 0x22
mov edx, dword [ebp - 0x3c]
mov dword [esp], edx
call fcn.00418148
jmp 0x40f87f
mov edi, dword [0x4fe484]
test edi, edi
je 0x40f7ff
lea ecx, [ebx + 4]
mov eax, dword [ebp - 0x3c]
mov dword [esp], eax
mov edx, ebx
mov eax, esi
call fcn.0040f520
mov esi, eax
mov eax, esi
add esp, 0x5c
pop ebx
pop esi
pop edi
leave
ret
movzx ecx, cl
jmp dword [ecx*4 + 0x4a3df0]
cmp al, 0x5b
je 0x40fb10
mov edi, 0x5d
jmp 0x40f844
cmp al, 0x28
je 0x40fb00
mov edi, 0x29
jmp 0x40f844
mov eax, dword [ebp - 0x48]
cmp dword [ebp - 0x40], eax
jbe 0x40fab8
dec dword [ebp - 0x40]
mov eax, dword [ebp - 0x40]
mov byte [eax], dl
jmp case.0x40f9cf.1
movsx edi, dl
inc esi
mov dword [esp + 4], edi
mov eax, dword [ebp - 0x3c]
mov dword [esp], eax
mov byte [ebp - 0x50], dl
call fcn.00418148
mov eax, dword [ebx + 4]
cmp eax, esi
mov dl, byte [ebp - 0x50]
jle 0x40fa78
mov eax, dword [ebx]
mov al, byte [eax + esi]
cmp dl, al
je 0x40f844
mov byte [ebp - 0x41], dl
mov dword [ebp - 0x4c], edi
mov edi, dword [ebp - 0x3c]
jmp 0x40fa5e
mov eax, dword [ebx]
mov al, byte [eax + esi]
cmp byte [ebp - 0x41], al
je 0x40fab0
inc esi
movsx eax, al
mov dword [esp + 4], eax
mov dword [esp], edi
call fcn.00418148
mov eax, dword [ebx + 4]
cmp eax, esi
jg 0x40fa54
mov edi, dword [ebp - 0x4c]
cmp eax, esi
jne 0x40f844
jmp 0x40f87f
mov edi, dword [0x4fe480]
test edi, edi
jne 0x40f874
mov ecx, dword [0x4fe484]
test ecx, ecx
jne 0x40f874
mov edi, 0x3c
jmp 0x40f844
mov edi, dword [ebp - 0x4c]
jmp 0x40f844
mov ecx, 0xffffffff
mov edi, dword [ebp - 0x40]
xor eax, eax
repne scasb al, byte es:[edi]
neg ecx
mov dword [esp], ecx
mov byte [ebp - 0x50], dl
call fcn.00488278
mov dword [ebp - 0x48], eax
mov eax, dword [ebp - 0x40]
mov dword [esp + 4], eax
mov eax, dword [ebp - 0x48]
inc eax
mov dword [esp], eax
call sub.msvcrt.dll_strcpy
mov eax, dword [ebp - 0x40]
mov dword [esp], eax
call sub.msvcrt.dll_free
mov eax, dword [ebp - 0x48]
mov dword [ebp - 0x40], eax
mov dl, byte [ebp - 0x50]
jmp 0x40fa0f
inc dword [ebp - 0x40]
mov edi, 0x29
jmp 0x40f844
inc dword [ebp - 0x40]
mov edi, 0x5d
jmp 0x40f844
mov edi, dword [0x4fe480]
test edi, edi
je 0x40f7ff
inc esi
lea eax, [ebp - 0x1c]
mov dword [esp + 0xc], eax
mov dword [esp + 8], ebx
mov dword [esp + 4], esi
mov dword [esp], str.__operator_needs_absolute_expression
call dword [0x4fe488]
mov esi, eax
mov eax, dword [ebp - 0x1c]
mov dword [esp + 8], eax
mov dword [esp + 4], 0x4a3ded
lea ebx, [ebp - 0x30]
mov dword [esp], ebx
call fcn.0040f76c
mov dword [esp + 4], ebx
mov eax, dword [ebp - 0x3c]
mov dword [esp], eax
call fcn.00418174
jmp 0x40f87f
mov ecx, dword [0x4fe480]
test ecx, ecx
jne 0x40f951
jmp 0x40f9ac