Function at 0x410340
Capabilities:
Parse credit card information

Disassembly:
push ebp
push edi
mov edi, edx
push esi
mov esi, ecx
push ebx
mov ebx, eax
sub esp, 0x4c
mov dword [esp], ecx
call fcn.00419630
mov dword [esp], ebx
mov dword [esp + 4], edi
call fcn.00419730
mov ebx, eax
mov eax, dword [edi + 4]
cmp ebx, eax
jae 0x410471
lea edx, [ebx + 2]
cmp eax, edx
mov eax, dword [edi]
ja 0x410480
movzx eax, byte [eax + ebx]
cmp al, 0x25
je 0x4106a8
cmp al, 0x22
je 0x410507
cmp al, 0x3c
je 0x410440
mov ecx, dword [0x5194e0]
test ecx, ecx
je 0x4103a9
cmp al, 0x27
je 0x410515
mov dword [esp], 1
call fcn.004a0a50
mov byte [eax], 0
cmp ebx, dword [edi + 4]
mov dword [esp + 0x1c], eax
jae 0x410625
mov eax, dword [esp + 0x1c]
mov dword [esp + 0x14], eax
xor eax, eax
nop
mov edx, dword [edi]
test al, al
movzx ebp, byte [edx + ebx]
jne 0x4103ee
mov edx, ebp
cmp dl, 9
je 0x410625
cmp dl, 0x20
je 0x410625
mov ecx, ebp
cmp cl, 0x2c
je 0x410625
cmp cl, 0x3c
je 0x410640
lea edx, [ebp - 0x22]
cmp dl, 0x3b
jbe 0x410561
mov eax, ebp
movsx ebp, al
mov dword [esp + 0x18], ebp
mov eax, dword [esp + 0x18]
add ebx, 1
mov dword [esp], esi
mov dword [esp + 4], eax
call fcn.00419640
cmp dword [edi + 4], ebx
jbe 0x410625
mov edx, dword [esp + 0x14]
movzx eax, byte [edx]
jmp 0x4103d0
mov edx, dword [0x5194e0]
test edx, edx
jne 0x410515
mov ebp, dword [0x5194e4]
test ebp, ebp
je 0x4103a9
lea esi, [esi]
mov eax, ebx
mov edx, edi
lea ecx, [edi + 4]
mov dword [esp], esi
call fcn.00410180
mov ebx, eax
add esp, 0x4c
mov eax, ebx
pop ebx
pop esi
pop edi
pop ebp
ret
cmp byte [eax + ebx + 1], 0x27
movzx eax, byte [eax + ebx]
jne 0x41037f
cmp al, 0x42
jne 0x410705
cmp al, 0x20
je 0x410471
cmp al, 9
lea esi, [esi]
jne 0x4104fe
jmp 0x410471
cmp al, 0x22
je 0x410471
cmp al, 0x3b
lea esi, [esi]
je 0x410471
cmp al, 0x29
je 0x410471
cmp al, 0x28
je 0x410471
mov ecx, dword [0x5194e0]
test ecx, ecx
jne 0x4104ce
mov edx, dword [0x5194e4]
test edx, edx
je 0x4104d6
cmp al, 0x3e
je 0x410471
cmp al, 0x3c
je 0x410471
movsx eax, al
add ebx, 1
mov dword [esp + 4], eax
mov dword [esp], esi
call fcn.00419640
mov eax, dword [edi]
movzx eax, byte [eax + ebx]
cmp al, 9
je 0x410471
cmp al, 0x20
je 0x410471
cmp al, 0x2c
jne 0x4104a4
jmp 0x410471
mov ecx, dword [0x5194e0]
test ecx, ecx
je 0x410460
mov edx, dword [0x5194e8]
test edx, edx
jne 0x410460
cmp al, 0x3c
je 0x410460
mov dword [esp + 4], 0x22
mov dword [esp], esi
call fcn.00419640
lea ecx, [edi + 4]
mov edx, edi
mov eax, ebx
mov dword [esp], esi
call fcn.00410180
mov dword [esp + 4], 0x22
mov dword [esp], esi
mov ebx, eax
call fcn.00419640
jmp 0x410471
movzx edx, dl
jmp dword [edx*4 + 0x4c6258]
cmp al, 0x5b
sete al
movzx eax, al
mov dword [esp + 0x18], 0x5d
add dword [esp + 0x14], eax
jmp 0x410417
cmp al, 0x28
sete al
movzx eax, al
mov dword [esp + 0x18], 0x29
add dword [esp + 0x14], eax
jmp 0x410417
mov eax, dword [esp + 0x1c]
cmp dword [esp + 0x14], eax
jbe 0x410661
sub dword [esp + 0x14], 1
mov ecx, dword [esp + 0x14]
mov edx, ebp
movsx ebp, dl
mov dword [esp + 0x18], ebp
mov byte [ecx], dl
jmp 0x410417
mov edx, ebp
add ebx, 1
movsx edx, dl
mov dword [esp + 0x18], edx
mov dword [esp + 4], edx
mov dword [esp], esi
call fcn.00419640
mov edx, dword [edi + 4]
cmp ebx, edx
jb 0x410611
jmp 0x41061d
movsx eax, al
add ebx, 1
mov dword [esp + 4], eax
mov dword [esp], esi
call fcn.00419640
mov edx, dword [edi + 4]
cmp edx, ebx
jbe 0x41061d
mov eax, dword [edi]
mov ecx, ebp
movzx eax, byte [eax + ebx]
cmp cl, al
jne 0x4105f8
cmp ebx, edx
jne 0x410417
mov eax, dword [esp + 0x1c]
mov dword [esp], eax
call sub.msvcrt.dll_free
add esp, 0x4c
mov eax, ebx
pop ebx
pop esi
pop edi
pop ebp
ret
mov ebp, dword [0x5194e0]
test ebp, ebp
jne 0x410625
mov ecx, dword [0x5194e4]
test ecx, ecx
jne 0x410625
mov dword [esp + 0x18], 0x3c
jmp 0x410417
mov edx, dword [esp + 0x14]
mov dword [esp], edx
call sub.msvcrt.dll_strlen
add eax, 2
mov dword [esp], eax
call fcn.004a0a50
mov ecx, dword [esp + 0x14]
mov dword [esp + 4], ecx
mov dword [esp + 0x1c], eax
add eax, 1
mov dword [esp], eax
call sub.msvcrt.dll_strcpy
mov edx, dword [esp + 0x14]
mov dword [esp], edx
call sub.msvcrt.dll_free
mov eax, dword [esp + 0x1c]
mov dword [esp + 0x14], eax
jmp 0x4105c3
mov ebp, dword [0x5194e0]
test ebp, ebp
je 0x4103a9
add ebx, 1
lea eax, [esp + 0x3c]
mov dword [esp + 8], edi
lea edi, [esp + 0x28]
mov dword [esp + 4], ebx
mov dword [esp + 0xc], eax
mov dword [esp], str.__operator_needs_absolute_expression
call dword [0x5194ec]
mov dword [esp + 4], 0x4c6251
mov dword [esp], edi
mov ebx, eax
mov eax, dword [esp + 0x3c]
mov dword [esp + 8], eax
call sub.msvcrt.dll_sprintf
mov dword [esp + 4], edi
mov dword [esp], esi
call fcn.00419670
jmp 0x410471
cmp al, 0x62
je 0x410497
cmp al, 0x71
nop
je 0x4104a4
cmp al, 0x51
je 0x4104a4
cmp al, 0x68
je 0x4104a4
cmp al, 0x48
je 0x4104a4
cmp al, 0x64
je 0x4104a4
cmp al, 0x44
jne 0x41037f
nop
jmp 0x4104a4