Function at 0x4093e0
Capabilities:
Parse credit card information

Disassembly:
push ebp
xor ecx, ecx
push edi
push esi
push ebx
sub esp, 0xac
mov ebx, eax
mov byte [esp + 0x8e], cl
xor eax, eax
mov dword [esp + 0x98], eax
xor eax, eax
mov dword [esp + 0x94], eax
xor eax, eax
mov byte [esp + 0x90], al
xor eax, eax
mov byte [esp + 0x8f], al
mov byte [esp + 0x70], 0
mov byte [esp + 0x6f], 1
mov byte [esp + 0x6e], 0
mov byte [esp + 0x50], 0
cmp byte [esp + 0x90], 0
jne 0x409586
xor eax, eax
xor edx, edx
mov byte [esp + 0x92], al
xor eax, eax
mov byte [esp + 0x91], dl
mov byte [esp + 0x93], al
jmp 0x409459
inc ebx
movzx ecx, byte [ebx]
cmp cl, 0x20
sete al
cmp cl, 9
sete dl
or eax, edx
test al, 1
jne 0x409458
cmp cl, 0x21
je 0x409505
cmp cl, 0x20
sete al
cmp cl, 9
sete dl
or eax, edx
test al, 1
je 0x40949f
inc ebx
movzx ecx, byte [ebx]
cmp cl, 0x20
sete al
cmp cl, 9
sete dl
or eax, edx
test al, 1
jne 0x409489
cmp cl, 0x2e
je 0x4094f6
mov dword [esp + 0x9c], ebx
nop
lea esi, [esi]
movzx eax, cl
movzx eax, word [eax + eax + 0x417650]
test eax, 0x204
jne 0x4094f0
cmp cl, 0x2d
je 0x4094f0
cmp cl, 0x2b
je 0x4094f0
cmp cl, 0x3d
je 0x4094f0
cmp cl, 0x2c
je 0x4094f0
cmp cl, 0x2e
je 0x4094f0
cmp cl, 0x40
jne 0x409590
lea esi, [esi]
lea edi, [edi]
inc ebx
movzx ecx, byte [ebx]
jmp 0x4094b0
mov al, 1
inc ebx
mov byte [esp + 0x93], al
movzx ecx, byte [ebx]
jmp 0x4094a4
mov al, 1
inc ebx
mov byte [esp + 0x91], al
movzx ecx, byte [ebx]
jmp 0x40948d
movzx ebp, byte [esp + 0x6f]
xor eax, eax
lea esi, [ebx + 1]
cmp byte [esp + 0x70], 0
mov dword [esp + 0x2c], eax
je 0x40953c
cmp byte [esp + 0x50], 0
jne 0x40953c
mov eax, 1
mov dword [esp + 0x2c], eax
mov byte [esp + 0x27], 0
mov edi, 1
mov dword [esp + 0x28], esi
movzx ecx, byte [esi]
cmp cl, 0x7b
je 0x409877
cmp cl, 0x7d
je 0x40987b
cmp cl, 0x3b
sete dl
xor ebx, ebx
cmp edi, 1
sete bl
test edx, ebx
jne 0x40987e
cmp cl, 0x25
je 0x40985a
test cl, cl
jne 0x40986a
call sub.msvcrt.dll_abort
nop
lea esi, [esi]
cmp cl, 0x2a
mov edi, ebx
je 0x409835
cmp cl, 0x20
sete al
cmp cl, 9
sete dl
or eax, edx
test al, 1
je 0x4095c3
inc ebx
movzx ecx, byte [ebx]
cmp cl, 0x20
sete al
cmp cl, 9
sete dl
or eax, edx
test al, 1
jne 0x4095ad
cmp cl, 0x26
sete al
cmp cl, 0x7d
sete dl
or eax, edx
test al, 1
je 0x40972f
cmp byte [esp + 0x8e], 0
mov al, 1
mov byte [esp + 0x8f], al
jne 0x409586
cmp byte [esp + 0x6e], 0
jne 0x409586
cmp byte [esp + 0x91], 0
jne 0x409586
test byte [esp + 0x93], 1
setne al
cmp dword [esp + 0x9c], edi
sete dl
or eax, edx
test al, 1
jne 0x409586
movzx eax, byte [esp + 0x92]
mov edx, dword [esp + 0x9c]
sub edi, edx
mov dword [esp + 0x4c], eax
test eax, eax
mov dword [esp + 0x48], edi
mov dword [esp + 0x44], edi
jne 0x409646
mov eax, 0xffffffff
mov dword [esp + 0x44], eax
mov edx, dword [0x418460]
xor ebp, ebp
cmp ebp, edx
mov dword [esp + 0x1c], edx
jl 0x409672
jmp 0x4096d7
mov eax, dword [0x418450]
mov byte [esi + eax + 0xd], 1
mov eax, dword [0x418460]
mov dword [esp + 0x1c], eax
inc ebp
cmp ebp, dword [esp + 0x1c]
jge 0x4096d4
mov eax, dword [esp + 0x48]
mov esi, ebp
mov edx, dword [esp + 0x9c]
mov edi, dword [0x418450]
shl esi, 4
mov dword [esp + 8], eax
mov dword [esp + 4], edx
mov eax, dword [esi + edi]
mov dword [esp], eax
call sub.msvcrt.dll_strncmp
test eax, eax
jne 0x40966b
mov eax, dword [esp + 0x4c]
test eax, eax
jne 0x4096b4
mov eax, dword [esi + edi]
mov edx, dword [esp + 0x48]
cmp byte [edx + eax], 0
jne 0x40966b
mov edx, dword [esp + 0x44]
mov eax, ebp
call fcn.00402c30
test eax, eax
jne 0x409658
mov edx, dword [0x418460]
inc ebp
mov dword [esp + 0x1c], edx
cmp ebp, dword [esp + 0x1c]
jl 0x409672
movzx ecx, byte [ebx]
cmp cl, 0x7d
jne 0x40981e
xor esi, esi
cmp esi, dword [esp + 0x1c]
jl 0x4096f7
jmp 0x40981e
inc esi
cmp esi, dword [esp + 0x1c]
jge 0x409727
mov edx, dword [0x418450]
mov eax, esi
shl eax, 4
cmp byte [eax + edx + 0xd], 1
jne 0x4096f0
mov byte [eax + edx + 0xd], 0
mov eax, esi
xor edx, edx
call fcn.00409250
mov eax, dword [0x418460]
inc esi
mov dword [esp + 0x1c], eax
cmp esi, dword [esp + 0x1c]
jl 0x4096f7
movzx ecx, byte [ebx]
jmp 0x40981e
cmp cl, 0x7c
sete al
cmp cl, 0x3a
sete dl
or eax, edx
test al, 1
je 0x409586
cmp byte [esp + 0x8f], 0
mov al, 1
mov byte [esp + 0x8e], al
jne 0x409586
cmp dword [esp + 0x9c], edi
je 0x409910
cmp byte [esp + 0x93], 0
je 0x409847
cmp byte [esp + 0x92], 0
jne 0x409586
mov byte [esp + 0x6f], 0
cmp byte [esp + 0x70], 0
jne 0x409815
cmp byte [esp + 0x50], 0
jne 0x409815
cmp byte [esp + 0x93], 0
je 0x409976
mov byte [esp + 0x43], 0
mov esi, dword [0x418500]
test esi, esi
je 0x4097ed
mov dword [esp], esi
mov eax, dword [esp + 0x9c]
mov ebp, edi
mov edx, dword [esp + 0x9c]
sub ebp, eax
mov dword [esp + 8], ebp
mov dword [esp + 4], edx
call sub.msvcrt.dll_strncmp
test eax, eax
jne 0x4097ea
cmp byte [esi + ebp], 0
jne 0x4097ea
mov byte [esp + 0x43], 1
movzx ecx, byte [ebx]
movzx eax, byte [esp + 0x43]
cmp byte [esp + 0x91], al
je 0x409815
mov byte [esp + 0x70], 1
mov edx, dword [esp + 0x9c]
mov dword [esp + 0x94], edi
mov dword [esp + 0x98], edx
cmp cl, 0x3a
je 0x409517
inc ebx
cmp cl, 0x7d
jne 0x40942d
mov eax, ebx
add esp, 0xac
pop ebx
pop esi
pop edi
pop ebp
ret
mov al, 1
inc ebx
mov byte [esp + 0x92], al
movzx ecx, byte [ebx]
jmp 0x4095b1
cmp byte [esp + 0x92], 0
jne 0x40978a
jmp 0x409785
cmp byte [esi + 1], 0x2a
sete al
test eax, ebx
je 0x40986a
mov byte [esp + 0x27], 1
inc esi
movzx ecx, byte [esi]
cmp cl, 0x7b
jne 0x409556
inc edi
inc esi
jmp 0x40986b
dec edi
jne 0x40986a
movzx eax, byte [esi - 1]
mov ecx, esi
jmp 0x40988b
dec ecx
movzx eax, byte [ecx - 1]
cmp al, 0x20
sete dl
cmp al, 9
sete al
or eax, edx
test al, 1
jne 0x409886
test byte [esp + 0x27], 1
setne al
xor edx, edx
test ebp, ebp
sete dl
test eax, edx
jne 0x409586
mov eax, dword [esp + 0x2c]
test eax, eax
jne 0x409a2c
mov edx, esi
test edx, edx
mov ebx, edx
je 0x409b27
movzx eax, byte [edx]
cmp al, 0x3b
mov cl, al
jne 0x40981e
movzx eax, byte [esp + 0x70]
movzx edx, byte [esp + 0x50]
mov byte [esp + 0x6e], 1
mov byte [esp + 0x70], 0
mov byte [esp + 0x6f], 1
or eax, edx
test al, 1
setne byte [esp + 0x50]
xor edi, edi
xor esi, esi
mov dword [esp + 0x94], edi
mov dword [esp + 0x98], esi
jmp 0x40981e
cmp byte [esp + 0x6e], 0
je 0x409586
cmp byte [esp + 0x70], 0
jne 0x409586
cmp cl, 0x7c
je 0x409586
cmp byte [esp + 0x91], 0
jne 0x409586
cmp byte [esp + 0x93], 0
jne 0x409586
cmp byte [esp + 0x92], 0
jne 0x409586
test byte [esp + 0x50], 1
mov al, 1
mov byte [esp + 0x90], al
mov byte [esp + 0x6f], 0
sete byte [esp + 0x70]
jmp 0x409815
movzx eax, byte [esp + 0x92]
mov edx, edi
mov esi, dword [esp + 0x9c]
mov dword [esp + 0x3c], eax
sub edx, esi
test eax, eax
mov dword [esp + 0x38], edx
mov dword [esp + 0x34], edx
jne 0x4099a2
mov edx, 0xffffffff
mov dword [esp + 0x34], edx
mov eax, dword [0x418460]
xor ebp, ebp
cmp ebp, eax
mov dword [esp + 0x1c], eax
jge 0x409a25
mov edx, dword [0x418450]
mov esi, ebp
mov eax, dword [esp + 0x38]
shl esi, 4
mov dword [esp + 0x30], edx
mov edx, dword [esp + 0x9c]
mov dword [esp + 8], eax
mov dword [esp + 4], edx
mov edx, dword [esp + 0x30]
mov eax, dword [esi + edx]
mov dword [esp], eax
call sub.msvcrt.dll_strncmp
test eax, eax
jne 0x409a1b
mov eax, dword [esp + 0x3c]
test eax, eax
jne 0x4099ff
mov edx, dword [esp + 0x30]
mov eax, dword [esi + edx]
mov edx, dword [esp + 0x38]
cmp byte [edx + eax], 0
jne 0x409a1b
mov edx, dword [esp + 0x34]
mov eax, ebp
call fcn.00402c30
test eax, eax
jne 0x409b1a
mov eax, dword [0x418460]
mov dword [esp + 0x1c], eax
inc ebp
cmp ebp, dword [esp + 0x1c]
jl 0x4099b1
movzx ecx, byte [ebx]
xor eax, eax
jmp 0x4097f2
mov eax, dword [esp + 0x28]
sub ecx, eax
mov eax, dword [esp + 0x28]
mov edx, ecx
call fcn.00401620
cmp byte [esp + 0x27], 0
mov dword [esp + 0x20], eax
je 0x409ab9
mov eax, dword [esp + 0x98]
xor ebx, ebx
mov edi, dword [esp + 0x94]
sub edi, eax
mov eax, dword [0x418460]
cmp ebx, eax
mov dword [esp + 0x1c], eax
jge 0x4098be
mov dword [esp + 8], edi
mov edx, dword [esp + 0x98]
mov ebp, ebx
mov eax, dword [0x418450]
shl ebp, 4
mov dword [esp + 4], edx
mov eax, dword [ebp + eax]
mov dword [esp], eax
call sub.msvcrt.dll_strncmp
test eax, eax
je 0x409a9b
inc ebx
cmp ebx, dword [esp + 0x1c]
jmp 0x409a65
mov edx, edi
mov eax, ebx
call fcn.00402c30
test eax, eax
jne 0x409ad6
mov edx, dword [0x418460]
inc ebx
mov dword [esp + 0x1c], edx
cmp ebx, dword [esp + 0x1c]
jmp 0x409a65
mov dword [esp], 0
xor edx, edx
call fcn.00407000
xor edx, edx
test eax, eax
jns 0x4098be
jmp 0x4098c0
mov eax, dword [0x418450]
xor edx, edx
mov eax, dword [ebp + eax]
add eax, edi
mov dword [esp], eax
mov eax, dword [esp + 0x20]
call fcn.00407000
test eax, eax
js 0x409b2e
mov eax, ebx
mov edx, 1
inc ebx
call fcn.00409250
mov eax, dword [0x418460]
xor ebp, ebp
mov dword [0x418580], ebp
mov dword [esp + 0x1c], eax
cmp ebx, dword [esp + 0x1c]
jmp 0x409a65
movzx ecx, byte [ebx]
mov eax, 1
jmp 0x4097f2
xor eax, eax
jmp 0x40982a
xor edx, edx
jmp 0x4098c0