Function at 0x40dba0
Capabilities:
Parse credit card information

Disassembly:
sub esp, 0x418
mov eax, dword [0x427da0]
xor eax, esp
mov dword [esp + 0x414], eax
mov eax, dword [esp + 0x424]
push ebx
mov ebx, dword [esp + 0x424]
push ebp
push esi
mov dword [esp + 0x10], eax
xor esi, esi
mov eax, ebx
push edi
mov edi, dword [esp + 0x42c]
mov dword [esp + 0x10], esi
lea edx, [eax + 1]
lea esp, [esp]
mov cl, byte [eax]
add eax, 1
test cl, cl
jne 0x40dbe0
sub eax, edx
mov ebp, eax
xor edx, edx
test ebp, ebp
jle 0x40dc1a
movzx eax, byte [edx + ebx]
cmp al, 0x20
je 0x40dc13
cmp al, 0xd
je 0x40dc13
cmp al, 0xa
je 0x40dc13
push eax
call fcn.0040db20
add esp, 4
mov byte [esp + esi + 0x24], al
add esi, 1
add edx, 1
cmp edx, ebp
jl 0x40dbf3
mov byte [esp + esi + 0x24], 0
xor eax, eax
xor ebp, ebp
xor esi, esi
cmp byte [esp + 0x24], al
mov word [edi], ax
je 0x40de2e
mov bl, 0x2c
cmp eax, 5
ja case.default.0x40dc3d
jmp dword [eax*4 + 0x40de80]
mov al, byte [esp + ebp + 0x24]
cmp al, 0x41
jl 0x40de2e
cmp al, 0x48
jg 0x40de2e
movsx cx, al
sub cx, 1
shl cx, 0xd
mov word [edi + esi*2], cx
mov eax, 1
jmp case.default.0x40dc3d
cmp byte [esp + ebp + 0x24], 0x3d
jne 0x40de2e
mov eax, 2
jmp case.default.0x40dc3d
mov al, byte [esp + ebp + 0x24]
cmp al, 0x41
jl 0x40de2e
cmp al, 0x48
jg 0x40de2e
movsx dx, al
sub dx, 1
shl dx, 0xa
or word [edi + esi*2], dx
mov eax, 3
jmp case.default.0x40dc3d
mov cl, byte [esp + ebp + 0x24]
cmp cl, 0x2b
mov eax, 0xffff
jne 0x40dcc5
xor eax, eax
cmp cl, 0x2d
jne 0x40dccf
mov eax, 1
cmp cl, 0x3c
jne 0x40dcd9
mov eax, 2
cmp cl, 0x2a
jne 0x40dce3
mov eax, 3
cmp cl, 0x5e
jne 0x40dced
mov eax, 4
cmp cl, 0x26
jne 0x40dcf7
mov eax, 5
cmp cl, 0x7c
jne 0x40dd01
mov eax, 6
cmp cl, 0x3f
jne 0x40dd1c
mov eax, 7
shl eax, 7
or word [edi + esi*2], ax
mov eax, 4
jmp case.default.0x40dc3d
cmp eax, 0xffff
je 0x40de35
shl eax, 7
or word [edi + esi*2], ax
mov eax, 4
jmp case.default.0x40dc3d
mov cl, byte [esp + ebp + 0x24]
cmp cl, 0x30
mov eax, 0xffff
jl 0x40ddb0
cmp cl, 0x39
jg 0x40ddb0
test esi, esi
je 0x40de3c
or word [edi + esi*2], 0x40
xor eax, eax
cmp cl, 0x30
mov dword [esp + 0x18], eax
mov dword [esp + 0x1c], eax
mov word [esp + 0x20], ax
jl 0x40dd8a
lea esp, [esp]
mov cl, byte [esp + ebp + 0x24]
cmp cl, 0x39
jg 0x40dd8a
mov byte [esp + eax + 0x18], cl
add ebp, 1
add eax, 1
cmp byte [esp + ebp + 0x24], 0x30
jge 0x40dd70
lea edx, [esp + 0x18]
sub ebp, 1
mov byte [esp + eax + 0x18], 0
call fcn.0040db40
cmp eax, 0x40
jae 0x40de43
or word [edi + esi*2], ax
mov dword [esp + 0x10], 1
mov cl, byte [esp + ebp + 0x24]
cmp cl, 0x41
jl 0x40ddf0
cmp cl, 0x48
jg 0x40ddf0
movsx ax, cl
sub ax, 0x41
add ax, ax
add ax, ax
add ax, ax
or word [edi + esi*2], ax
test esi, esi
movzx eax, word [edi + esi*2]
jne 0x40dde1
or eax, 1
mov word [edi], ax
mov dword [esp + 0x10], 0
mov eax, 5
jmp case.default.0x40dc3d
cmp eax, 0xffff
je 0x40de2e
mov eax, 5
jmp case.default.0x40dc3d
cmp byte [esp + ebp + 0x24], bl
jne 0x40de2e
xor eax, eax
add esi, 1
mov word [edi + esi*2], ax
add ebp, 1
cmp byte [esp + ebp + 0x24], 0
jne 0x40dc34
cmp eax, 5
jne 0x40de2e
cmp dword [esp + 0x10], 0
je 0x40de4a
mov eax, 0x17
jmp 0x40de64
mov eax, 0x14
jmp 0x40de64
mov eax, 0x15
jmp 0x40de64
mov eax, 0x16
jmp 0x40de64
mov eax, 0x18
jmp 0x40de64
or word [edi + esi*2], 4
mov ecx, dword [esp + 0x14]
lea eax, [esi + 1]
mov edx, 0x80
cmp edx, eax
mov dword [ecx], eax
sbb eax, eax
and eax, 7
mov ecx, dword [esp + 0x424]
pop edi
pop esi
pop ebp
pop ebx
xor ecx, esp
call fcn.0040fac6
add esp, 0x418
ret 0xc