Function at 0x40e9f0
Capabilities:
Parse credit card information

Disassembly:
push ebp
mov ebp, esp
push ecx
push esi
mov esi, ecx
xor cl, cl
mov eax, dword [esi + 0x4c]
cmp eax, 0xffffffff
je 0x40edf9
cmp eax, 0x7c
je 0x40edf9
push edi
lea edi, [esi + 8]
push ebx
cmp eax, 0x29
jne 0x40ea34
cmp dword [esi + 0x10], 0
jne 0x40edf7
test dword [esi + 0x50], 0x10000000
je 0x40ee09
jmp 0x40ed8c
cmp eax, 0x2e
jne 0x40ea94
push 5
lea ecx, [esi + 0x24]
call fcn.00412710
mov eax, dword [esi]
mov ecx, dword [edi]
cmp eax, ecx
je 0x40edd3
cmp byte [eax], 0x5c
jne 0x40ea8c
lea edx, [eax + 1]
cmp edx, ecx
je 0x40ea8c
mov ebx, dword [esi + 0x50]
test bl, 8
jne 0x40ea76
mov cl, byte [edx]
mov byte [ebp - 1], cl
mov ecx, eax
cmp byte [ebp - 1], 0x28
je 0x40ea89
cmp byte [ebp - 1], 0x29
je 0x40ea89
test bl, 0x10
jne 0x40ea8c
mov dl, byte [edx]
mov ecx, eax
cmp dl, 0x7b
je 0x40ea89
cmp dl, 0x7d
jne 0x40ea8c
lea eax, [ecx + 1]
inc eax
mov dword [esi], eax
jmp 0x40edd3
cmp eax, 0x5c
jne 0x40ebdf
mov eax, dword [esi]
mov ecx, dword [edi]
cmp eax, ecx
je 0x40eae5
cmp byte [eax], 0x5c
jne 0x40eae2
lea edx, [eax + 1]
cmp edx, ecx
je 0x40eae2
mov ebx, dword [esi + 0x50]
test bl, 8
jne 0x40eacc
mov cl, byte [edx]
mov byte [ebp - 1], cl
mov ecx, eax
cmp byte [ebp - 1], 0x28
je 0x40eadf
cmp byte [ebp - 1], 0x29
je 0x40eadf
test bl, 0x10
jne 0x40eae2
mov dl, byte [edx]
mov ecx, eax
cmp dl, 0x7b
je 0x40eadf
cmp dl, 0x7d
jne 0x40eae2
lea eax, [ecx + 1]
inc eax
mov dword [esi], eax
mov ecx, esi
call fcn.00413070
test byte [esi + 0x50], 0x80
je 0x40ebd3
mov al, byte [esi + 0x48]
cmp al, 0x62
jne 0x40eb59
push 4
lea ecx, [esi + 0x24]
call fcn.00412710
mov eax, dword [esi]
mov ecx, dword [edi]
cmp eax, ecx
je 0x40eb4d
cmp byte [eax], 0x5c
jne 0x40eb4a
lea edx, [eax + 1]
cmp edx, ecx
je 0x40eb4a
mov ecx, dword [esi + 0x50]
test cl, 8
jne 0x40eb34
mov bl, byte [edx]
mov ecx, eax
cmp bl, 0x28
je 0x40eb47
cmp bl, 0x29
je 0x40eb47
mov ecx, dword [esi + 0x50]
test cl, 0x10
jne 0x40eb4a
mov dl, byte [edx]
mov ecx, eax
cmp dl, 0x7b
je 0x40eb47
cmp dl, 0x7d
jne 0x40eb4a
lea eax, [ecx + 1]
inc eax
mov dword [esi], eax
mov ecx, esi
call fcn.00413070
jmp 0x40ede4
cmp al, 0x42
jne 0x40ebd3
push 4
lea ecx, [esi + 0x24]
call fcn.00412710
mov eax, dword [esi + 0x28]
xor dword [eax + 8], 1
mov edx, dword [edi]
mov eax, dword [esi]
cmp eax, edx
je 0x40ebc7
cmp byte [eax], 0x5c
jne 0x40ebc4
lea ebx, [eax + 1]
mov ecx, eax
cmp ebx, edx
je 0x40ebc2
test byte [esi + 0x50], 8
jne 0x40eb9a
mov cl, byte [ebx]
mov edx, eax
cmp cl, 0x28
je 0x40ebb0
cmp cl, 0x29
je 0x40ebb0
mov ecx, eax
test byte [esi + 0x50], 0x10
jne 0x40ebc2
mov bl, byte [ebx]
mov edx, eax
cmp bl, 0x7b
je 0x40ebb0
mov edx, ecx
cmp bl, 0x7d
jne 0x40ebc2
lea eax, [edx + 1]
mov ecx, esi
inc eax
mov dword [esi], eax
call fcn.00413070
jmp 0x40ede4
mov eax, ecx
inc eax
mov dword [esi], eax
mov ecx, esi
call fcn.00413070
jmp 0x40ede4
mov ecx, esi
call fcn.0040ef20
jmp 0x40edda
cmp eax, 0x5b
jne 0x40ec98
mov eax, dword [esi]
mov edx, dword [edi]
cmp eax, edx
je 0x40ec35
cmp byte [eax], 0x5c
jne 0x40ec32
lea edi, [eax + 1]
mov ecx, eax
cmp edi, edx
je 0x40ec30
mov ebx, dword [esi + 0x50]
test bl, 8
jne 0x40ec16
mov cl, byte [edi]
mov edx, eax
cmp cl, 0x28
je 0x40ec2b
cmp cl, 0x29
je 0x40ec2b
mov ecx, eax
test bl, 0x10
jne 0x40ec30
mov bl, byte [edi]
mov edx, eax
cmp bl, 0x7b
je 0x40ec2b
mov edx, ecx
cmp bl, 0x7d
jne 0x40ec30
lea eax, [edx + 1]
jmp 0x40ec32
mov eax, ecx
inc eax
mov dword [esi], eax
mov ecx, esi
call fcn.00413070
lea ecx, [esi + 0x24]
call fcn.0040e2a0
mov eax, dword [esi + 0x4c]
cmp eax, 0x5e
jne 0x40ec5d
mov eax, dword [esi + 0x28]
mov ecx, esi
xor dword [eax + 8], 1
call fcn.00412780
mov eax, dword [esi + 0x4c]
test dword [esi + 0x50], 0x20000000
je 0x40ec7b
cmp eax, 0x5d
jne 0x40ec7b
push eax
lea ecx, [esi + 0x24]
call fcn.0040e230
mov ecx, esi
call fcn.00412780
mov ecx, esi
call fcn.0040f980
cmp dword [esi + 0x4c], 0x5d
jne 0x40ee1b
mov ecx, esi
call fcn.00412780
jmp 0x40edda
cmp eax, 0x28
jne 0x40ed17
mov eax, dword [esi]
mov edx, dword [edi]
cmp eax, edx
je 0x40ece9
cmp byte [eax], 0x5c
jne 0x40ece6
lea ebx, [eax + 1]
mov ecx, eax
cmp ebx, edx
je 0x40ece4
test byte [esi + 0x50], 8
jne 0x40ecc9
mov cl, byte [ebx]
mov edx, eax
cmp cl, 0x28
je 0x40ecdf
cmp cl, 0x29
je 0x40ecdf
mov ecx, eax
test byte [esi + 0x50], 0x10
jne 0x40ece4
mov bl, byte [ebx]
mov edx, eax
cmp bl, 0x7b
je 0x40ecdf
mov edx, ecx
cmp bl, 0x7d
jne 0x40ece4
lea eax, [edx + 1]
jmp 0x40ece6
mov eax, ecx
inc eax
mov dword [esi], eax
mov ecx, esi
call fcn.00413070
mov ecx, esi
call fcn.00413270
cmp dword [esi + 0x4c], 0x29
mov bl, al
jne 0x40ee09
mov ecx, esi
call fcn.00412780
test bl, bl
je 0x40ede4
jmp 0x40edda
cmp eax, 0x5e
jne 0x40ed2b
push 2
lea ecx, [esi + 0x24]
call fcn.00412710
jmp 0x40eb6e
cmp eax, 0x24
jne 0x40ed42
push 3
lea ecx, [esi + 0x24]
call fcn.00412710
lea edi, [esi + 8]
jmp 0x40eb6e
cmp eax, 0x2a
je 0x40ee00
cmp eax, 0x2b
je 0x40ee00
cmp eax, 0x3f
je 0x40ee00
cmp eax, 0x7b
je 0x40ee00
cmp eax, 0x7d
jne 0x40ed7a
test dword [esi + 0x50], 0x10000000
je 0x40ee12
jmp 0x40ed8c
cmp eax, 0x5d
jne 0x40ed8c
test dword [esi + 0x50], 0x10000000
je 0x40ee1b
movzx eax, byte [esi + 0x48]
lea ecx, [esi + 0x24]
push eax
call fcn.0040e080
mov eax, dword [esi]
mov ecx, dword [esi + 8]
cmp eax, ecx
je 0x40edd3
cmp byte [eax], 0x5c
jne 0x40edd1
inc eax
cmp eax, ecx
je 0x40edd1
mov ecx, dword [esi + 0x50]
test cl, 8
jne 0x40edc0
mov dl, byte [eax]
cmp dl, 0x28
je 0x40edcf
cmp dl, 0x29
je 0x40edcf
test cl, 0x10
jne 0x40edd1
mov al, byte [eax]
cmp al, 0x7b
je 0x40edcf
cmp al, 0x7d
jne 0x40edd1
inc dword [esi]
inc dword [esi]
mov ecx, esi
call fcn.00413070
mov ecx, esi
call fcn.004127e0
lea edi, [esi + 8]
mov eax, dword [esi + 0x4c]
mov cl, 1
cmp eax, 0xffffffff
je 0x40edf7
cmp eax, 0x7c
jne 0x40ea13
pop ebx
pop edi
mov al, cl
pop esi
mov esp, ebp
pop ebp
ret
push 0xa
mov ecx, esi
call fcn.00410e40
push 5
mov ecx, esi
call fcn.00410e40
push 6
mov ecx, esi
call fcn.00410e40
push 4
mov ecx, esi
call fcn.00410e40
int3