Function at 0x40fea0
Capabilities:
Parse credit card information

Disassembly:
push ebp
mov ebp, esp
push ecx
push ebx
push esi
mov esi, ecx
xor cl, cl
push edi
mov eax, dword [esi + 0x4c]
cmp eax, 0xffffffff
je 0x410385
lea edi, [esi + 8]
nop word [eax + eax]
cmp eax, 0x7c
je 0x410385
cmp eax, 0x29
jne 0x40feea
cmp dword [esi + 0x10], 0
jne 0x410385
test dword [esi + 0x50], 0x10000000
je 0x410395
jmp 0x41031f
cmp eax, 0x2e
jne 0x40ff59
push 5
lea ecx, [esi + 0x24]
call fcn.004103b0
mov eax, dword [esi]
mov edx, dword [edi]
cmp eax, edx
je 0x410366
cmp byte [eax], 0x5c
jne 0x41015b
lea edi, [eax + 1]
mov ecx, eax
cmp edi, edx
je 0x40ff4f
mov ebx, dword [esi + 0x50]
test bl, 8
jne 0x40ff2f
mov cl, byte [edi]
mov edx, eax
cmp cl, 0x28
je 0x40ff44
cmp cl, 0x29
je 0x40ff44
mov ecx, eax
test bl, 0x10
jne 0x40ff4f
mov bl, byte [edi]
mov edx, eax
cmp bl, 0x7b
je 0x40ff44
mov edx, ecx
cmp bl, 0x7d
jne 0x40ff4f
lea eax, [edx + 1]
inc eax
mov dword [esi], eax
jmp 0x410366
mov eax, ecx
inc eax
mov dword [esi], eax
jmp 0x410366
cmp eax, 0x5c
jne 0x4100a8
mov eax, dword [esi]
mov edx, dword [edi]
cmp eax, edx
je 0x40ffae
cmp byte [eax], 0x5c
jne 0x40ffab
lea ebx, [eax + 1]
mov ecx, eax
cmp ebx, edx
je 0x40ffa9
test byte [esi + 0x50], 8
jne 0x40ff8e
mov cl, byte [ebx]
mov edx, eax
cmp cl, 0x28
je 0x40ffa4
cmp cl, 0x29
je 0x40ffa4
mov ecx, eax
test byte [esi + 0x50], 0x10
jne 0x40ffa9
mov bl, byte [ebx]
mov edx, eax
cmp bl, 0x7b
je 0x40ffa4
mov edx, ecx
cmp bl, 0x7d
jne 0x40ffa9
lea eax, [edx + 1]
jmp 0x40ffab
mov eax, ecx
inc eax
mov dword [esi], eax
mov ecx, esi
call fcn.0040e570
test byte [esi + 0x50], 0x80
je 0x41009c
mov al, byte [esi + 0x48]
cmp al, 0x62
jne 0x410035
push 4
lea ecx, [esi + 0x24]
call fcn.004103b0
mov eax, dword [esi]
mov edx, dword [edi]
cmp eax, edx
je 0x410029
cmp byte [eax], 0x5c
jne 0x410026
lea ebx, [eax + 1]
mov ecx, eax
cmp ebx, edx
je 0x410024
test byte [esi + 0x50], 8
jne 0x40fffc
mov cl, byte [ebx]
mov edx, eax
cmp cl, 0x28
je 0x410012
cmp cl, 0x29
je 0x410012
mov ecx, eax
test byte [esi + 0x50], 0x10
jne 0x410024
mov bl, byte [ebx]
mov edx, eax
cmp bl, 0x7b
je 0x410012
mov edx, ecx
cmp bl, 0x7d
jne 0x410024
lea eax, [edx + 1]
mov ecx, esi
inc eax
mov dword [esi], eax
call fcn.0040e570
jmp 0x410377
mov eax, ecx
inc eax
mov dword [esi], eax
mov ecx, esi
call fcn.0040e570
jmp 0x410377
cmp al, 0x42
jne 0x41009c
push 4
lea ecx, [esi + 0x24]
call fcn.004103b0
mov eax, dword [esi + 0x28]
xor dword [eax + 8], 1
mov eax, dword [esi]
mov ecx, dword [edi]
cmp eax, ecx
je 0x410090
cmp byte [eax], 0x5c
jne 0x41008d
lea ebx, [eax + 1]
cmp ebx, ecx
je 0x41008d
mov ecx, dword [esi + 0x50]
test cl, 8
jne 0x410077
mov dl, byte [ebx]
mov ecx, eax
cmp dl, 0x28
je 0x41008a
cmp dl, 0x29
je 0x41008a
mov ecx, dword [esi + 0x50]
test cl, 0x10
jne 0x41008d
mov dl, byte [ebx]
mov ecx, eax
cmp dl, 0x7b
je 0x41008a
cmp dl, 0x7d
jne 0x41008d
lea eax, [ecx + 1]
inc eax
mov dword [esi], eax
mov ecx, esi
call fcn.0040e570
jmp 0x410377
mov ecx, esi
call fcn.00411800
jmp 0x41036d
cmp eax, 0x5b
jne 0x410163
mov eax, dword [esi]
mov ecx, dword [edi]
cmp eax, ecx
je 0x4100f9
cmp byte [eax], 0x5c
jne 0x4100f6
lea edx, [eax + 1]
cmp edx, ecx
je 0x4100f6
mov ebx, dword [esi + 0x50]
test bl, 8
jne 0x4100e0
mov cl, byte [edx]
mov byte [ebp - 1], cl
mov ecx, eax
cmp byte [ebp - 1], 0x28
je 0x4100f3
cmp byte [ebp - 1], 0x29
je 0x4100f3
test bl, 0x10
jne 0x4100f6
mov dl, byte [edx]
mov ecx, eax
cmp dl, 0x7b
je 0x4100f3
cmp dl, 0x7d
jne 0x4100f6
lea eax, [ecx + 1]
inc eax
mov dword [esi], eax
mov ecx, esi
call fcn.0040e570
mov ecx, esi
call fcn.004116c0
cmp dword [esi + 0x4c], 0x5d
jne 0x4103a3
mov eax, dword [esi]
mov ecx, dword [esi + 8]
cmp eax, ecx
je 0x410366
cmp byte [eax], 0x5c
jne 0x41015b
lea edx, [eax + 1]
cmp edx, ecx
je 0x41015b
mov ebx, dword [esi + 0x50]
test bl, 8
jne 0x410145
mov cl, byte [edx]
mov byte [ebp - 1], cl
mov ecx, eax
cmp byte [ebp - 1], 0x28
je 0x410158
cmp byte [ebp - 1], 0x29
je 0x410158
test bl, 0x10
jne 0x41015b
mov dl, byte [edx]
mov ecx, eax
cmp dl, 0x7b
je 0x410158
cmp dl, 0x7d
jne 0x41015b
lea eax, [ecx + 1]
inc eax
mov dword [esi], eax
jmp 0x410366
cmp eax, 0x28
jne 0x410227
mov eax, dword [esi]
mov ecx, dword [edi]
cmp eax, ecx
je 0x4101b2
cmp byte [eax], 0x5c
jne 0x4101af
lea edx, [eax + 1]
cmp edx, ecx
je 0x4101af
mov ecx, dword [esi + 0x50]
test cl, 8
jne 0x410199
mov bl, byte [edx]
mov ecx, eax
cmp bl, 0x28
je 0x4101ac
cmp bl, 0x29
je 0x4101ac
mov ecx, dword [esi + 0x50]
test cl, 0x10
jne 0x4101af
mov dl, byte [edx]
mov ecx, eax
cmp dl, 0x7b
je 0x4101ac
cmp dl, 0x7d
jne 0x4101af
lea eax, [ecx + 1]
inc eax
mov dword [esi], eax
mov ecx, esi
call fcn.0040e570
mov ecx, esi
call fcn.00411950
cmp dword [esi + 0x4c], 0x29
mov bh, al
jne 0x410395
mov eax, dword [esi]
mov ecx, dword [esi + 8]
cmp eax, ecx
je 0x410213
cmp byte [eax], 0x5c
jne 0x410210
lea edx, [eax + 1]
cmp edx, ecx
je 0x410210
mov ecx, dword [esi + 0x50]
test cl, 8
jne 0x4101fa
mov bl, byte [edx]
mov ecx, eax
cmp bl, 0x28
je 0x41020d
cmp bl, 0x29
je 0x41020d
mov ecx, dword [esi + 0x50]
test cl, 0x10
jne 0x410210
mov dl, byte [edx]
mov ecx, eax
cmp dl, 0x7b
je 0x41020d
cmp dl, 0x7d
jne 0x410210
lea eax, [ecx + 1]
inc eax
mov dword [esi], eax
mov ecx, esi
call fcn.0040e570
test bh, bh
je 0x410377
jmp 0x41036d
cmp eax, 0x5e
jne 0x41027e
push 2
lea ecx, [esi + 0x24]
call fcn.004103b0
mov eax, dword [esi]
lea edi, [esi + 8]
mov ecx, dword [edi]
cmp eax, ecx
je 0x410272
cmp byte [eax], 0x5c
jne 0x410270
inc eax
cmp eax, ecx
je 0x410270
mov ecx, dword [esi + 0x50]
test cl, 8
jne 0x41025f
mov dl, byte [eax]
cmp dl, 0x28
je 0x41026e
cmp dl, 0x29
je 0x41026e
test cl, 0x10
jne 0x410270
mov al, byte [eax]
cmp al, 0x7b
je 0x41026e
cmp al, 0x7d
jne 0x410270
inc dword [esi]
inc dword [esi]
mov ecx, esi
call fcn.0040e570
jmp 0x410377
cmp eax, 0x24
jne 0x4102d5
push 3
lea ecx, [esi + 0x24]
call fcn.004103b0
mov eax, dword [esi]
lea edi, [esi + 8]
mov ecx, dword [edi]
cmp eax, ecx
je 0x4102c9
cmp byte [eax], 0x5c
jne 0x4102c7
inc eax
cmp eax, ecx
je 0x4102c7
mov ecx, dword [esi + 0x50]
test cl, 8
jne 0x4102b6
mov dl, byte [eax]
cmp dl, 0x28
je 0x4102c5
cmp dl, 0x29
je 0x4102c5
test cl, 0x10
jne 0x4102c7
mov al, byte [eax]
cmp al, 0x7b
je 0x4102c5
cmp al, 0x7d
jne 0x4102c7
inc dword [esi]
inc dword [esi]
mov ecx, esi
call fcn.0040e570
jmp 0x410377
cmp eax, 0x2a
je 0x41038e
cmp eax, 0x2b
je 0x41038e
cmp eax, 0x3f
je 0x41038e
cmp eax, 0x7b
je 0x41038e
cmp eax, 0x7d
jne 0x41030d
test dword [esi + 0x50], 0x10000000
je 0x41039c
jmp 0x41031f
cmp eax, 0x5d
jne 0x41031f
test dword [esi + 0x50], 0x10000000
je 0x4103a3
movzx eax, byte [esi + 0x48]
lea ecx, [esi + 0x24]
push eax
call fcn.00411d00
mov eax, dword [esi]
mov ecx, dword [esi + 8]
cmp eax, ecx
je 0x410366
cmp byte [eax], 0x5c
jne 0x410364
inc eax
cmp eax, ecx
je 0x410364
mov ecx, dword [esi + 0x50]
test cl, 8
jne 0x410353
mov dl, byte [eax]
cmp dl, 0x28
je 0x410362
cmp dl, 0x29
je 0x410362
test cl, 0x10
jne 0x410364
mov al, byte [eax]
cmp al, 0x7b
je 0x410362
cmp al, 0x7d
jne 0x410364
inc dword [esi]
inc dword [esi]
mov ecx, esi
call fcn.0040e570
mov ecx, esi
call fcn.00411ad0
lea edi, [esi + 8]
mov eax, dword [esi + 0x4c]
mov cl, 1
cmp eax, 0xffffffff
jne 0x40fec0
pop edi
pop esi
mov al, cl
pop ebx
mov esp, ebp
pop ebp
ret
push 0xa
call fcn.0040e560
push 5
call fcn.0040e560
push 6
call fcn.0040e560
push 4
call fcn.0040e560
int3