Function at 0x40d180
Capabilities:
Parse credit card information

Disassembly:
push ecx
push ebx
push ebp
push esi
mov esi, ecx
xor cl, cl
push edi
mov eax, dword [esi + 0x4c]
cmp eax, 0xffffffff
je 0x40d72f
cmp eax, 0x7c
je 0x40d72f
lea edi, [esi + 8]
cmp eax, 0x29
jne 0x40d1c5
cmp dword [esi + 0x10], 0
jne 0x40d72f
test dword [esi + 0x50], 0x10000000
je 0x40d73e
nop dword [eax]
jmp 0x40d6ba
cmp eax, 0x2e
jne 0x40d23d
push 5
lea ecx, [esi + 0x24]
call fcn.0040d760
mov eax, dword ds:[esi]
mov ecx, dword [edi]
cmp eax, ecx
je 0x40d70b
cmp word [eax], 0x5c
jne 0x40d49b
lea edx, [eax + 2]
cmp edx, ecx
je 0x40d49b
mov ebx, dword [esi + 0x50]
test bl, 8
jne 0x40d214
movzx edi, word [edx]
mov ecx, eax
cmp edi, 0x28
je 0x40d230
cmp edi, 0x29
je 0x40d230
test bl, 0x10
jne 0x40d49b
movzx edx, word [edx]
mov ecx, eax
cmp edx, 0x7b
je 0x40d230
cmp edx, 0x7d
jne 0x40d49b
lea eax, [ecx + 2]
add eax, 2
mov dword [esi], eax
jmp 0x40d70b
nop dword [eax]
cmp eax, 0x5c
jne 0x40d3b8
mov eax, dword [esi]
mov ecx, dword [edi]
cmp eax, ecx
je 0x40d292
cmp word [eax], 0x5c
jne 0x40d28d
lea edx, [eax + 2]
cmp edx, ecx
je 0x40d28d
mov ebx, dword [esi + 0x50]
test bl, 8
jne 0x40d275
movzx ebp, word [edx]
mov ecx, eax
cmp ebp, 0x28
je 0x40d28a
cmp ebp, 0x29
je 0x40d28a
test bl, 0x10
jne 0x40d28d
movzx edx, word ds:[edx]
mov ecx, eax
cmp edx, 0x7b
je 0x40d28a
cmp edx, 0x7d
jne 0x40d28d
lea eax, [ecx + 2]
add eax, 2
mov dword [esi], eax
mov ecx, esi
call fcn.0040c720
test byte ds:[esi + 0x50], 0x80
je 0x40d3ac
movzx eax, word [esi + 0x48]
mov ecx, eax
cmp eax, 0x62
jne 0x40d319
push 4
lea ecx, [esi + 0x24]
call fcn.0040d760
mov eax, dword ds:[esi]
mov ecx, dword [edi]
cmp eax, ecx
je 0x40d30d
cmp word [eax], 0x5c
jne 0x40d308
lea edx, [eax + 2]
cmp edx, ecx
je 0x40d308
mov ecx, dword [esi + 0x50]
test cl, 8
jne 0x40d2ed
movzx ebx, word ds:[edx]
mov ecx, eax
cmp ebx, 0x28
je 0x40d305
cmp ebx, 0x29
je 0x40d305
mov ecx, dword [esi + 0x50]
test cl, 0x10
jne 0x40d308
movzx edx, word [edx]
mov ecx, eax
cmp edx, 0x7b
je 0x40d305
nop dword [eax]
cmp edx, 0x7d
jne 0x40d308
lea eax, [ecx + 2]
add eax, 2
mov dword [esi], eax
mov ecx, esi
call fcn.0040c720
jmp 0x40d71c
nop dword [eax]
cmp ecx, 0x42
jne 0x40d3ac
push 4
lea ecx, [esi + 0x24]
call fcn.0040d760
mov eax, dword ds:[esi + 0x28]
xor dword [eax + 8], 1
mov eax, dword [esi]
mov edx, dword [edi]
cmp eax, edx
je 0x40d3a0
cmp word [eax], 0x5c
jne 0x40d39b
lea ebx, [eax + 2]
mov ecx, eax
cmp ebx, edx
je 0x40d399
test byte [esi + 0x50], 8
jne 0x40d36c
movzx ecx, word ds:[ebx]
mov edx, eax
cmp ecx, 0x28
je 0x40d385
cmp ecx, 0x29
je 0x40d385
mov ecx, eax
test byte [esi + 0x50], 0x10
jne 0x40d399
movzx ebx, word [ebx]
mov edx, eax
cmp ebx, 0x7b
je 0x40d385
mov edx, ecx
cmp ebx, 0x7d
jne 0x40d399
lea eax, [edx + 2]
mov ecx, esi
add eax, 2
mov dword [esi], eax
call fcn.0040c720
jmp 0x40d71c
mov eax, ecx
add eax, 2
mov dword [esi], eax
mov ecx, esi
call fcn.0040c720
jmp 0x40d71c
mov ecx, esi
call fcn.0040e100
jmp 0x40d712
nop dword [eax + eax]
cmp eax, 0x5b
jne 0x40d4a5
mov eax, dword [esi]
mov edx, dword [edi]
cmp eax, edx
je 0x40d425
cmp word [eax], 0x5c
jne 0x40d41d
lea edi, ds:[eax + 2]
mov ecx, eax
cmp edi, edx
je 0x40d41b
mov ebx, dword [esi + 0x50]
test bl, 8
jne 0x40d3fd
movzx ecx, word [edi]
mov edx, eax
cmp ecx, 0x28
je 0x40d416
cmp ecx, 0x29
je 0x40d416
mov ecx, eax
nop dword [eax]
test bl, 0x10
jne 0x40d41b
movzx edi, word [edi]
mov edx, eax
cmp edi, 0x7b
je 0x40d416
mov edx, ecx
cmp edi, 0x7d
jne 0x40d41b
lea eax, [edx + 2]
jmp 0x40d41d
mov eax, ecx
add eax, 2
lea edi, [esi + 8]
mov dword [esi], eax
mov ecx, esi
call fcn.0040c720
mov ecx, esi
call fcn.0040dfa0
cmp dword [esi + 0x4c], 0x5d
jne 0x40d74c
mov eax, dword [esi]
mov edx, dword [edi]
cmp eax, edx
je 0x40d70b
cmp word [eax], 0x5c
jne 0x40d49b
lea edi, [eax + 2]
mov ecx, eax
cmp edi, edx
je 0x40d499
mov ebx, dword ds:[esi + 0x50]
test bl, 8
jne 0x40d476
movzx ecx, word [edi]
mov edx, eax
cmp ecx, 0x28
je 0x40d48c
cmp ecx, 0x29
je 0x40d48c
mov ecx, eax
test bl, 0x10
jne 0x40d499
movzx edi, word [edi]
mov edx, eax
cmp edi, 0x7b
je 0x40d48c
mov edx, ecx
cmp edi, 0x7d
jne 0x40d499
lea eax, [edx + 2]
add eax, 2
mov dword [esi], eax
jmp 0x40d70b
mov eax, ecx
add eax, 2
mov dword [esi], eax
jmp 0x40d70b
cmp eax, 0x28
jne 0x40d58d
mov eax, dword [esi]
mov edx, dword [edi]
cmp eax, edx
je 0x40d4ff
cmp word [eax], 0x5c
jne 0x40d4fa
lea ebx, [eax + 2]
mov ecx, eax
cmp ebx, edx
je 0x40d4f8
test byte [esi + 0x50], 8
jne 0x40d4dc
movzx ecx, word [ebx]
mov edx, eax
cmp ecx, 0x28
je 0x40d4f3
cmp ecx, 0x29
je 0x40d4f3
mov ecx, eax
test byte [esi + 0x50], 0x10
jne 0x40d4f8
movzx ebx, word [ebx]
mov edx, eax
cmp ebx, 0x7b
je 0x40d4f3
mov edx, ecx
cmp ebx, 0x7d
jne 0x40d4f8
lea eax, [edx + 2]
jmp 0x40d4fa
mov eax, ecx
add eax, 2
mov dword [esi], eax
mov ecx, esi
call fcn.0040c720
mov ecx, esi
call fcn.0040e260
cmp dword [esi + 0x4c], 0x29
mov bl, al
mov byte [esp + 0x13], bl
jne 0x40d73e
mov eax, dword [esi]
mov edx, dword [esi + 8]
cmp eax, edx
je 0x40d575
cmp word [eax], 0x5c
jne 0x40d570
lea ebx, [eax + 2]
mov ecx, eax
cmp ebx, edx
je 0x40d56a
test byte [esi + 0x50], 8
jne 0x40d54c
movzx ecx, word [ebx]
mov edx, eax
cmp ecx, 0x28
je 0x40d565
cmp ecx, 0x29
je 0x40d565
mov ecx, eax
test byte [esi + 0x50], 0x10
jne 0x40d56a
movzx ebx, word [ebx]
mov edx, eax
cmp ebx, 0x7b
je 0x40d565
mov edx, ecx
cmp ebx, 0x7d
jne 0x40d56a
lea eax, [edx + 2]
jmp 0x40d56c
mov eax, ecx
mov bl, byte [esp + 0x13]
add eax, 2
mov dword [esi], eax
mov ecx, esi
call fcn.0040c720
nop dword [eax]
test bl, bl
je 0x40d71c
jmp 0x40d712
cmp eax, 0x5e
jne 0x40d5f7
push 2
lea ecx, [esi + 0x24]
call fcn.0040d760
mov eax, dword [esi]
mov ecx, dword [edi]
cmp eax, ecx
je 0x40d5eb
cmp word [eax], 0x5c
jne 0x40d5e8
add eax, 2
cmp eax, ecx
je 0x40d5e8
mov ecx, dword ds:[esi + 0x50]
test cl, 8
jne 0x40d5d2
movzx edx, word [eax]
cmp edx, 0x28
je 0x40d5e5
cmp edx, 0x29
je 0x40d5e5
test cl, 0x10
jne 0x40d5e8
movzx eax, word [eax]
cmp eax, 0x7b
je 0x40d5e5
nop
cmp eax, 0x7d
jne 0x40d5e8
add dword [esi], 2
add dword [esi], 2
mov ecx, esi
call fcn.0040c720
jmp 0x40d71c
nop word [eax + eax]
cmp eax, 0x24
jne 0x40d66a
push 3
lea ecx, [esi + 0x24]
call fcn.0040d760
mov eax, dword [esi]
lea edi, [esi + 8]
mov ecx, dword [edi]
cmp eax, ecx
je 0x40d65d
cmp word [eax], 0x5c
jne 0x40d65a
add eax, 2
cmp eax, ecx
je 0x40d65a
mov ecx, dword [esi + 0x50]
test cl, 8
jne 0x40d645
movzx edx, word [eax]
cmp edx, 0x28
je 0x40d657
nop dword [eax + eax]
cmp edx, 0x29
je 0x40d657
test cl, 0x10
jne 0x40d65a
movzx eax, word [eax]
cmp eax, 0x7b
je 0x40d657
cmp eax, 0x7d
jne 0x40d65a
add dword [esi], 2
add dword [esi], 2
mov ecx, esi
call fcn.0040c720
jmp 0x40d71c
cmp eax, 0x2a
je 0x40d737
cmp eax, 0x2b
je 0x40d737
nop dword [eax]
cmp eax, 0x3f
je 0x40d737
cmp eax, 0x7b
je 0x40d737
cmp eax, 0x7d
jne 0x40d6a8
test dword ds:[esi + 0x50], 0x10000000
je 0x40d745
jmp 0x40d6ba
cmp eax, 0x5d
jne 0x40d6ba
test dword [esi + 0x50], 0x10000000
je 0x40d74c
movzx eax, word [esi + 0x48]
lea ecx, [esi + 0x24]
push eax
call fcn.0040e840
mov eax, dword [esi]
mov ecx, dword [esi + 8]
cmp eax, ecx
je 0x40d70b
cmp word [eax], 0x5c
jne 0x40d708
add eax, 2
cmp eax, ecx
je 0x40d708
mov ecx, dword [esi + 0x50]
test cl, 8
jne 0x40d6f2
movzx edx, word [eax]
cmp edx, 0x28
je 0x40d705
cmp edx, 0x29
je 0x40d705
test cl, 0x10
jne 0x40d708
movzx eax, word [eax]
cmp eax, 0x7b
je 0x40d705
nop
cmp eax, 0x7d
jne 0x40d708
add dword [esi], 2
add dword [esi], 2
mov ecx, esi
call fcn.0040c720
mov ecx, esi
call fcn.0040e5e0
lea edi, [esi + 8]
mov eax, dword [esi + 0x4c]
mov cl, 1
cmp eax, 0xffffffff
je 0x40d72f
cmp eax, 0x7c
jne 0x40d1a1
pop edi
pop esi
pop ebp
mov al, cl
pop ebx
pop ecx
ret
push 0xa
call fcn.0040c710
push 5
call fcn.0040c710
push 6
call fcn.0040c710
push 4
call fcn.0040c710
int3