Function at 0x409a84
Capabilities:
Parse credit card information

Disassembly:
mov edi, edi
push ebx
mov ebx, eax
movzx ecx, byte [ebx]
cmp ecx, 0x2e
push edi
mov dl, 4
jg 0x409bcf
je 0x409bbb
cmp ecx, 0x26
jg 0x409b3e
je 0x409b36
cmp ecx, 0x21
jg 0x409b14
je 0x409afc
cmp ecx, 9
jl 0x409c06
cmp ecx, 0xa
jle 0x409ad9
cmp ecx, 0xb
jle 0x409c06
cmp ecx, 0xd
jle 0x409ad9
cmp ecx, 0x20
jne 0x409c06
movzx edx, byte [ebx + 1]
xor ecx, ecx
inc ecx
mov eax, ecx
jmp 0x409ae9
inc eax
movzx edx, byte [eax + ebx]
test byte [edx + 0x4d67b0], cl
jne 0x409ae4
mov dword [esi], 0x97
jmp 0x409f67
cmp byte [ebx + 1], 0x3d
push 2
pop eax
jne 0x409f61
mov dword [esi], 0x4e
jmp 0x409f67
mov eax, ecx
sub eax, 0x22
je 0x409e45
dec eax
je 0x409f34
dec eax
dec eax
jne 0x409c06
mov dword [esi], 0x5d
jmp 0x409b8b
mov dword [esi], 0x55
jmp 0x409b8b
mov eax, ecx
sub eax, 0x27
je 0x409e45
dec eax
je 0x409bb3
dec eax
je 0x409bab
dec eax
je 0x409ba3
dec eax
je 0x409b9b
dec eax
je 0x409b93
dec eax
jne 0x409c06
cmp byte [ebx + 1], 0x2d
jne 0x409b85
movzx ecx, byte [ebx + 2]
push 2
pop eax
jmp 0x409b7c
cmp ecx, 0xa
je 0x409af1
inc eax
movzx ecx, byte [eax + ebx]
test ecx, ecx
jne 0x409b6e
jmp 0x409af1
mov dword [esi], 0x5a
xor eax, eax
inc eax
jmp 0x409f67
mov dword [esi], 0x1a
jmp 0x409b8b
mov dword [esi], 0x59
jmp 0x409b8b
mov dword [esi], 0x5b
jmp 0x409b8b
mov dword [esi], 0x17
jmp 0x409b8b
mov dword [esi], 0x16
jmp 0x409b8b
movzx eax, byte [ebx + 1]
test byte [eax + 0x4d67b0], dl
jne 0x409c1b
mov dword [esi], 0x7a
jmp 0x409b8b
cmp ecx, 0x3f
jg 0x409de6
je 0x409dc3
cmp ecx, 0x3b
jg 0x409d38
je 0x409d2c
cmp ecx, 0x2f
je 0x409cee
jle 0x409c06
cmp ecx, 0x39
jle 0x409c1b
cmp ecx, 0x3a
je 0x409f34
test byte [ecx + 0x4d67b0], 0x46
jne 0x409f12
xor eax, eax
inc eax
jmp 0x409f61
mov dword [esi], 0x84
mov cl, byte [ebx]
cmp cl, 0x30
jne 0x409c5c
mov al, byte [ebx + 1]
cmp al, 0x78
je 0x409c33
cmp al, 0x58
jne 0x409c5c
movzx eax, byte [ebx + 2]
test byte [eax + 0x4d67b0], 8
je 0x409c5c
movzx ecx, byte [ebx + 3]
push 3
pop eax
jmp 0x409c4e
inc eax
movzx ecx, byte [eax + ebx]
test byte [ecx + 0x4d67b0], 8
jne 0x409c49
jmp 0x409f67
xor eax, eax
movzx ecx, cl
jmp 0x409c68
inc eax
movzx ecx, byte [eax + ebx]
test byte [ecx + 0x4d67b0], dl
jne 0x409c63
cmp byte [eax + ebx], 0x2e
jne 0x409c89
inc eax
movzx ecx, byte [eax + ebx]
test byte [ecx + 0x4d67b0], dl
jne 0x409c76
mov dword [esi], 0x85
mov cl, byte [eax + ebx]
cmp cl, 0x65
je 0x409c96
cmp cl, 0x45
jne 0x409cdc
mov cl, byte [eax + ebx + 1]
movzx edi, cl
test byte [edi + 0x4d67b0], dl
jne 0x409cbc
cmp cl, 0x2b
je 0x409caf
cmp cl, 0x2d
jne 0x409cdc
movzx ecx, byte [eax + ebx + 2]
test byte [ecx + 0x4d67b0], dl
je 0x409cdc
inc eax
inc eax
jmp 0x409cc1
inc eax
movzx ecx, byte [eax + ebx]
test byte [ecx + 0x4d67b0], dl
jne 0x409cc0
mov dword [esi], 0x85
jmp 0x409cdc
mov dword [esi], 0x96
inc eax
movzx ecx, byte [eax + ebx]
test byte [ecx + 0x4d67b0], 0x46
jne 0x409cd5
jmp 0x409f67
cmp byte [ebx + 1], 0x2a
jne 0x409d21
mov cl, byte [ebx + 2]
test cl, cl
je 0x409d21
push 3
pop eax
movzx ecx, cl
cmp ecx, 0x2a
jne 0x409d0c
cmp byte [eax + ebx], 0x2f
je 0x409d1b
movzx ecx, byte [eax + ebx]
test ecx, ecx
je 0x409af1
inc eax
jmp 0x409d01
inc eax
jmp 0x409af1
mov dword [esi], 0x5c
jmp 0x409b8b
xor ecx, ecx
inc ecx
mov dword [esi], ecx
mov eax, ecx
jmp 0x409f67
mov eax, ecx
sub eax, 0x3c
je 0x409d87
dec eax
je 0x409d72
dec eax
jne 0x409c06
movzx eax, byte [ebx + 1]
cmp eax, 0x3d
jne 0x409d5a
mov dword [esi], 0x53
jmp 0x409d96
cmp eax, 0x3e
jne 0x409d67
mov dword [esi], 0x58
jmp 0x409d96
mov dword [esi], 0x50
jmp 0x409b8b
xor eax, eax
mov dword [esi], 0x4f
cmp byte [ebx + 1], 0x3d
sete al
inc eax
jmp 0x409f67
movzx eax, byte [ebx + 1]
cmp eax, 0x3d
jne 0x409d9e
mov dword [esi], 0x51
push 2
pop eax
jmp 0x409f67
cmp eax, 0x3e
jne 0x409dab
mov dword [esi], 0x4e
jmp 0x409d96
cmp eax, 0x3c
jne 0x409db8
mov dword [esi], 0x57
jmp 0x409d96
mov dword [esi], 0x52
jmp 0x409b8b
xor eax, eax
mov dword [esi], 0x87
movzx ecx, byte [ebx + 1]
inc eax
mov dl, 4
jmp 0x409dd9
inc eax
movzx ecx, byte [eax + ebx]
test byte [ecx + 0x4d67b0], dl
jne 0x409dd4
jmp 0x409f67
mov eax, ecx
sub eax, 0x40
je 0x409f34
sub eax, 0x18
je 0x409eb4
sub eax, 3
je 0x409e88
sub eax, 5
je 0x409e45
sub eax, 0x18
je 0x409eb4
sub eax, 4
je 0x409e29
dec eax
dec eax
jne 0x409c06
mov dword [esi], 0x60
jmp 0x409b8b
cmp byte [ebx + 1], 0x7c
je 0x409e3a
mov dword [esi], 0x56
jmp 0x409b8b
mov dword [esi], 0x5e
jmp 0x409d96
movzx edx, byte [ebx + 1]
xor eax, eax
inc eax
jmp 0x409e61
cmp edx, ecx
jne 0x409e5c
movzx edi, byte [ebx + eax + 1]
cmp edi, ecx
jne 0x409e65
inc eax
inc eax
movzx edx, byte [eax + ebx]
test edx, edx
jne 0x409e4e
cmp edx, 0x27
jne 0x409e75
mov dword [esi], 0x61
jmp 0x409d81
test edx, edx
je 0x409f61
mov dword [esi], 0x1b
jmp 0x409d81
xor eax, eax
inc eax
jmp 0x409e96
movzx ecx, byte [eax + ebx]
test ecx, ecx
je 0x409e9b
inc eax
cmp ecx, 0x5d
jne 0x409e8d
xor edx, edx
cmp ecx, 0x5d
setne dl
dec edx
and edx, 0xffffff85
add edx, 0x96
mov dword [esi], edx
jmp 0x409f67
cmp byte [ebx + 1], 0x27
jne 0x409c06
push 2
mov dword [esi], 0x86
movzx ecx, byte [ebx + 2]
pop eax
jmp 0x409ed2
inc eax
movzx ecx, byte [eax + ebx]
test byte [ecx + 0x4d67b0], 8
jne 0x409ecd
cmp byte [eax + ebx], 0x27
jne 0x409ef2
mov ecx, eax
and ecx, 0x80000001
jns 0x409ef0
dec ecx
or ecx, 0xfffffffe
inc ecx
je 0x409f07
mov dword [esi], 0x96
jmp 0x409f00
cmp cl, 0x27
je 0x409f07
inc eax
mov cl, byte [eax + ebx]
test cl, cl
jne 0x409efa
cmp byte [eax + ebx], 0
je 0x409f67
jmp 0x409d81
movzx eax, byte [ebx + 1]
xor edi, edi
inc edi
jmp 0x409f20
inc edi
movzx eax, byte [edi + ebx]
test byte [eax + 0x4d67b0], 0x46
jne 0x409f1b
call fcn.00409a0c
mov dword [esi], eax
mov eax, edi
jmp 0x409f67
mov dword [esi], 0x87
movzx ecx, byte [ebx + 1]
xor eax, eax
xor edx, edx
inc eax
test ecx, ecx
je 0x409f61
movzx ecx, cl
test byte [ecx + 0x4d67b0], 0x46
je 0x409f5d
inc edx
inc eax
movzx ecx, byte [eax + ebx]
test ecx, ecx
jne 0x409f47
test edx, edx
jne 0x409f67
mov dword [esi], 0x96
pop edi
pop ebx
ret