Function at 0x409c90
Capabilities:
Parse credit card information

Disassembly:
sub esp, 0x410
push ebx
mov ebx, dword [esp + 0x41c]
push ebp
push esi
push edi
mov edi, ebx
or ecx, 0xffffffff
xor eax, eax
xor esi, esi
xor ebp, ebp
repne scasb al, byte es:[edi]
not ecx
dec ecx
mov dword [esp + 0x10], esi
mov edi, ecx
cmp edi, 0x400
jle 0x409cc4
mov edi, 0x400
cmp edi, esi
jle 0x409cea
mov al, byte [esi + ebx]
cmp al, 0x20
je 0x409ce5
cmp al, 0xd
je 0x409ce5
cmp al, 0xa
je 0x409ce5
push eax
call fcn.00409c80
add esp, 4
mov byte [esp + ebp + 0x20], al
inc ebp
inc esi
cmp esi, edi
jl 0x409cc8
mov edi, dword [esp + 0x424]
mov byte [esp + ebp + 0x20], 0
mov cl, byte [esp + 0x20]
xor ebp, ebp
xor esi, esi
xor eax, eax
test cl, cl
mov word [edi], ax
je 0x409ed9
mov ebx, 1
cmp eax, 5
ja case.default.0x409d19
jmp dword [eax*4 + 0x409f58]
mov al, byte [esp + ebp + 0x20]
cmp al, 0x41
jl 0x409ed9
cmp al, 0x48
jg 0x409ed9
movsx ax, al
add eax, 7
shl eax, 0xd
mov word [edi + esi*2], ax
mov eax, ebx
jmp case.default.0x409d19
cmp byte [esp + ebp + 0x20], 0x3d
jne 0x409ed9
mov eax, 2
jmp case.default.0x409d19
mov al, byte [esp + ebp + 0x20]
cmp al, 0x41
jl 0x409ed9
cmp al, 0x48
jg 0x409ed9
movsx cx, al
add ecx, 0x3f
mov eax, 3
shl ecx, 0xa
or word [edi + esi*2], cx
jmp case.default.0x409d19
mov cl, byte [esp + ebp + 0x20]
mov eax, 0xffff
cmp cl, 0x2b
jne 0x409d9a
xor eax, eax
cmp cl, 0x2d
jne 0x409da1
mov eax, ebx
cmp cl, 0x3c
jne 0x409dab
mov eax, 2
cmp cl, 0x2a
jne 0x409db5
mov eax, 3
cmp cl, 0x5e
jne 0x409dbf
mov eax, 4
cmp cl, 0x26
jne 0x409dc9
mov eax, 5
cmp cl, 0x7c
jne 0x409dd3
mov eax, 6
cmp cl, 0x3f
jne 0x409dee
mov eax, 7
shl eax, 7
or word [edi + esi*2], ax
mov eax, 4
jmp case.default.0x409d19
cmp eax, 0xffff
je 0x409ee9
shl eax, 7
or word [edi + esi*2], ax
mov eax, 4
jmp case.default.0x409d19
mov cl, byte [esp + ebp + 0x20]
mov eax, 0xffff
cmp cl, 0x30
jl 0x409e72
cmp cl, 0x39
jg 0x409e72
test esi, esi
je 0x409ef9
or byte [edi + esi*2], 0x40
xor edx, edx
mov dword [esp + 0x14], edx
xor eax, eax
mov dword [esp + 0x18], edx
mov word [esp + 0x1c], dx
cmp cl, 0x39
jg 0x409e4e
mov byte [esp + eax + 0x14], cl
mov cl, byte [esp + ebp + 0x21]
inc eax
inc ebp
cmp cl, 0x30
jge 0x409e3a
mov byte [esp + eax + 0x14], 0
lea eax, [esp + 0x14]
push eax
dec ebp
call fcn.00409f70
add esp, 4
cmp eax, 0x40
jae 0x409f09
or word [edi + esi*2], ax
mov dword [esp + 0x10], ebx
mov cl, byte [esp + ebp + 0x20]
cmp cl, 0x41
jl 0x409eab
cmp cl, 0x48
jg 0x409eab
movsx cx, cl
lea edx, [ecx*8 + 0xfdf8]
or word [edi + esi*2], dx
mov ax, word [edi + esi*2]
test esi, esi
jne 0x409e9c
or eax, ebx
mov word [edi], ax
mov dword [esp + 0x10], 0
mov eax, 5
jmp case.default.0x409d19
cmp eax, 0xffff
je 0x409ed9
mov eax, 5
jmp case.default.0x409d19
cmp byte [esp + ebp + 0x20], 0x2c
jne 0x409ed9
xor eax, eax
inc esi
mov word [edi + esi*2], ax
mov cl, byte [esp + ebp + 0x21]
inc ebp
test cl, cl
jne 0x409d10
cmp eax, 5
je 0x409f19
pop edi
pop esi
pop ebp
mov eax, 0x14
pop ebx
add esp, 0x410
ret
pop edi
pop esi
pop ebp
mov eax, 0x15
pop ebx
add esp, 0x410
ret
pop edi
pop esi
pop ebp
mov eax, 0x16
pop ebx
add esp, 0x410
ret
pop edi
pop esi
pop ebp
mov eax, 0x18
pop ebx
add esp, 0x410
ret
mov eax, dword [esp + 0x10]
test eax, eax
je 0x409f31
pop edi
pop esi
pop ebp
mov eax, 0x17
pop ebx
add esp, 0x410
ret
mov ecx, dword [esp + 0x42c]
or byte [edi + esi*2], 4
lea eax, [esi + 1]
mov edx, 0x80
cmp edx, eax
mov dword [ecx], eax
pop edi
pop esi
sbb eax, eax
pop ebp
and eax, 7
pop ebx
add esp, 0x410
ret