Function at 0x46f53c
Capabilities:
Parse credit card information

Disassembly:
push ebx
push esi
push edi
push ebp
add esp, 0xfffffbe0
mov dword [esp + 4], ecx
mov esi, edx
mov dword [esp], eax
xor eax, eax
mov dword [esp + 8], eax
xor ebp, ebp
mov eax, esi
call fcn.004084e4
xor edx, edx
mov dword [esp + 0x18], edx
dec eax
test eax, eax
jl 0x46f595
inc eax
mov dword [esp + 0x1c], eax
xor edi, edi
mov bl, byte [esi + edi]
cmp bl, 0x20
je 0x46f58e
cmp bl, 0xd
je 0x46f58e
cmp bl, 0xa
je 0x46f58e
mov eax, ebx
call fcn.0046f4d8
mov byte [esp + ebp + 0x20], al
inc ebp
inc edi
dec dword [esp + 0x1c]
jne 0x46f570
mov byte [esp + ebp + 0x20], 0
xor edi, edi
xor ebp, ebp
xor ebx, ebx
mov eax, dword [esp]
mov word [eax], 0
jmp 0x46f791
mov eax, ebx
cmp eax, 5
ja case.default.0x46f5b8
jmp dword [eax*4 + 0x46f5bf]
mov al, byte [esp + edi + 0x20]
cmp al, 0x41
jb 0x46f5f8
cmp al, 0x48
ja 0x46f5f8
and eax, 0xff
sub ax, 0x41
mov edx, dword [esp]
shl eax, 0xd
mov word [edx + ebp*2], ax
jmp 0x46f600
mov dword [esp + 0x18], 0x14
inc ebx
jmp case.default.0x46f5b8
cmp dl, 0x3d
je 0x46f613
mov dword [esp + 0x18], 0x14
inc ebx
jmp case.default.0x46f5b8
mov al, byte [esp + edi + 0x20]
cmp al, 0x41
jb 0x46f63a
cmp al, 0x48
ja 0x46f63a
and eax, 0xff
sub ax, 0x41
mov edx, dword [esp]
shl eax, 0xa
or word [edx + ebp*2], ax
jmp 0x46f642
mov dword [esp + 0x18], 0x14
inc ebx
jmp case.default.0x46f5b8
mov eax, 0xffff
cmp dl, 0x2b
jne 0x46f654
xor eax, eax
cmp dl, 0x2d
jne 0x46f65e
mov eax, 1
cmp dl, 0x3c
jne 0x46f668
mov eax, 2
cmp dl, 0x2a
jne 0x46f672
mov eax, 3
cmp dl, 0x5e
jne 0x46f67c
mov eax, 4
cmp dl, 0x26
jne 0x46f686
mov eax, 5
cmp dl, 0x7c
jne 0x46f690
mov eax, 6
cmp dl, 0x3f
jne 0x46f69a
mov eax, 7
cmp eax, 0xffff
jne 0x46f6a9
mov dword [esp + 0x18], 0x15
mov edx, dword [esp]
shl eax, 7
or word [edx + ebp*2], ax
inc ebx
jmp case.default.0x46f5b8
mov eax, 0xffff
mov dl, byte [esp + edi + 0x20]
cmp dl, 0x30
jb 0x46f731
cmp dl, 0x39
ja 0x46f731
test ebp, ebp
jne 0x46f6d8
mov dword [esp + 0x18], 0x16
mov eax, dword [esp]
or word [eax + ebp*2], 0x40
lea eax, [esp + 0xc]
xor ecx, ecx
mov edx, 0xa
call fcn.00402b8c
xor edx, edx
jmp 0x46f6fa
mov byte [esp + edx + 0xc], al
inc edx
inc edi
mov al, byte [esp + edi + 0x20]
cmp al, 0x30
jb 0x46f706
cmp al, 0x39
jbe 0x46f6f4
dec edi
mov byte [esp + edx + 0xc], 0
lea eax, [esp + 0xc]
call fcn.0046f4e4
cmp eax, 0x40
jb 0x46f722
mov dword [esp + 0x18], 0x18
mov edx, dword [esp]
or word [edx + ebp*2], ax
mov dword [esp + 8], 1
mov dl, byte [esp + edi + 0x20]
cmp dl, 0x41
jb 0x46f765
cmp dl, 0x48
ja 0x46f765
xor eax, eax
mov al, dl
sub ax, 0x41
mov edx, dword [esp]
shl eax, 3
or word [edx + ebp*2], ax
test ebp, ebp
jne 0x46f75d
mov eax, dword [esp]
or word [eax + ebp*2], 1
xor eax, eax
mov dword [esp + 8], eax
jmp 0x46f774
cmp eax, 0xffff
jne 0x46f774
mov dword [esp + 0x18], 0x14
inc ebx
jmp case.default.0x46f5b8
cmp dl, 0x2c
je 0x46f784
mov dword [esp + 0x18], 0x14
xor ebx, ebx
inc ebp
mov eax, dword [esp]
mov word [eax + ebp*2], 0
inc edi
mov dl, byte [esp + edi + 0x20]
test dl, dl
je 0x46f7a4
cmp dword [esp + 0x18], 0
je 0x46f5ad
cmp ebx, 5
je 0x46f7b1
mov dword [esp + 0x18], 0x14
cmp dword [esp + 8], 0
je 0x46f7c0
mov dword [esp + 0x18], 0x17
mov eax, dword [esp]
or word [eax + ebp*2], 4
lea eax, [ebp + 1]
mov edx, dword [esp + 4]
mov dword [edx], eax
cmp eax, 0x80
jbe 0x46f7e0
mov dword [esp + 0x18], 7
mov eax, dword [esp + 0x18]
add esp, 0x420
pop ebp
pop edi
pop esi
pop ebx
ret