Function at 0x40eaa0
Capabilities:
Parse credit card information

Disassembly:
push ebp
mov ebp, esp
push ecx
push ebx
push esi
mov esi, ecx
xor al, al
push edi
mov ecx, dword [esi + 0x4c]
cmp ecx, 0xffffffff
je 0x40eb5e
cmp ecx, 0x7c
je 0x40eb5e
cmp ecx, 0x29
jne 0x40eb65
cmp dword [esi + 0x10], 0
jne 0x40eb5e
cmp ecx, ecx
jne 0x40eb65
test dword [esi + 0x50], 0x10000000
je 0x40f00f
lea edi, [esi + 0x50]
cmp ecx, 0x5d
jne 0x40eafc
test dword [edi], 0x10000000
je 0x40f016
movzx eax, byte [esi + 0x48]
lea ecx, [esi + 0x24]
push eax
call fcn.004100b0
mov eax, dword [esi]
mov ecx, dword [esi + 8]
cmp eax, ecx
je 0x40eb42
cmp byte [eax], 0x5c
jne 0x40eb40
inc eax
cmp eax, ecx
je 0x40eb40
mov edx, dword [edi]
test dl, 8
jne 0x40eb2f
mov cl, byte [eax]
cmp cl, 0x28
je 0x40eb3e
cmp cl, 0x29
je 0x40eb3e
test dl, 0x10
jne 0x40eb40
mov al, byte [eax]
cmp al, 0x7b
je 0x40eb3e
cmp al, 0x7d
jne 0x40eb40
inc dword [esi]
inc dword [esi]
mov ecx, esi
call fcn.0040db40
mov ecx, esi
call fcn.0040fe80
mov ecx, dword [esi + 0x4c]
mov al, 1
cmp ecx, 0xffffffff
jne 0x40eab7
pop edi
pop esi
pop ebx
mov esp, ebp
pop ebp
ret
cmp ecx, 0x2e
jne 0x40ec21
push 0x14
call fcn.00415d49
mov ecx, eax
add esp, 4
mov dword [ebp - 4], ecx
mov dword [ecx + 0x10], 0
mov dword [ecx], vtable.std::_Node_base.0
mov dword [ecx + 4], 5
mov dword [ecx + 8], 0
mov dword [ecx + 0xc], 0
mov eax, dword [esi + 0x28]
mov dword [ecx + 0x10], eax
mov eax, dword [esi + 0x28]
mov eax, dword [eax + 0xc]
test eax, eax
je 0x40ebbb
mov dword [ecx + 0xc], eax
mov eax, dword [esi + 0x28]
mov eax, dword [eax + 0xc]
mov dword [eax + 0x10], ecx
mov eax, dword [esi + 0x28]
mov dword [eax + 0xc], ecx
mov dword [esi + 0x28], ecx
mov eax, dword [esi]
mov edx, dword [esi + 8]
cmp eax, edx
je 0x40eb42
cmp byte [eax], 0x5c
jne 0x40ec19
lea edi, [eax + 1]
mov ecx, eax
cmp edi, edx
je 0x40ec17
mov ebx, dword [esi + 0x50]
test bl, 8
jne 0x40ebf7
mov cl, byte [edi]
mov edx, eax
cmp cl, 0x28
je 0x40ec0c
cmp cl, 0x29
je 0x40ec0c
mov ecx, eax
test bl, 0x10
jne 0x40ec17
mov bl, byte [edi]
mov edx, eax
cmp bl, 0x7b
je 0x40ec0c
mov edx, ecx
cmp bl, 0x7d
jne 0x40ec17
lea eax, [edx + 1]
inc eax
mov dword [esi], eax
jmp 0x40eb42
mov eax, ecx
inc eax
mov dword [esi], eax
jmp 0x40eb42
cmp ecx, 0x5c
jne 0x40edce
mov eax, dword [esi]
mov edx, dword [esi + 8]
cmp eax, edx
je 0x40ec77
cmp byte [eax], cl
jne 0x40ec74
lea edi, [eax + 1]
mov ecx, eax
cmp edi, edx
je 0x40ec72
mov ebx, dword [esi + 0x50]
test bl, 8
jne 0x40ec58
mov cl, byte [edi]
mov edx, eax
cmp cl, 0x28
je 0x40ec6d
cmp cl, 0x29
je 0x40ec6d
mov ecx, eax
test bl, 0x10
jne 0x40ec72
mov bl, byte [edi]
mov edx, eax
cmp bl, 0x7b
je 0x40ec6d
mov edx, ecx
cmp bl, 0x7d
jne 0x40ec72
lea eax, [edx + 1]
jmp 0x40ec74
mov eax, ecx
inc eax
mov dword [esi], eax
mov ecx, esi
call fcn.0040db40
mov eax, dword [esi + 0x50]
and eax, 0x80
je 0x40ed57
cmp byte [esi + 0x48], 0x62
jne 0x40ed57
push 0x14
call fcn.00415d49
mov ecx, eax
add esp, 4
mov dword [ebp - 4], ecx
mov dword [ecx + 0x10], 0
mov dword [ecx], vtable.std::_Node_base.0
mov dword [ecx + 4], 4
mov dword [ecx + 8], 0
mov dword [ecx + 0xc], 0
mov eax, dword [esi + 0x28]
mov dword [ecx + 0x10], eax
mov eax, dword [esi + 0x28]
mov eax, dword [eax + 0xc]
test eax, eax
je 0x40ece3
mov dword [ecx + 0xc], eax
mov eax, dword [esi + 0x28]
mov eax, dword [eax + 0xc]
mov dword [eax + 0x10], ecx
mov eax, dword [esi + 0x28]
mov dword [eax + 0xc], ecx
mov dword [esi + 0x28], ecx
mov eax, dword [esi]
mov edx, dword [esi + 8]
cmp eax, edx
je 0x40efc7
cmp byte [eax], 0x5c
jne 0x40ed48
lea edi, [eax + 1]
mov ecx, eax
cmp edi, edx
je 0x40ed46
mov ebx, dword [esi + 0x50]
test bl, 8
jne 0x40ed1f
mov cl, byte [edi]
mov edx, eax
cmp cl, 0x28
je 0x40ed34
cmp cl, 0x29
je 0x40ed34
mov ecx, eax
test bl, 0x10
jne 0x40ed46
mov bl, byte [edi]
mov edx, eax
cmp bl, 0x7b
je 0x40ed34
mov edx, ecx
cmp bl, 0x7d
jne 0x40ed46
lea eax, [edx + 1]
mov ecx, esi
inc eax
mov dword [esi], eax
call fcn.0040db40
jmp 0x40eb50
mov eax, ecx
inc eax
mov ecx, esi
mov dword [esi], eax
call fcn.0040db40
jmp 0x40eb50
test eax, eax
je 0x40edc2
cmp byte [esi + 0x48], 0x42
jne 0x40edc2
push 0x14
call fcn.00415d49
mov ecx, eax
add esp, 4
mov dword [ebp - 4], ecx
mov dword [ecx + 0x10], 0
mov dword [ecx], vtable.std::_Node_base.0
mov dword [ecx + 4], 4
mov dword [ecx + 8], 0
mov dword [ecx + 0xc], 0
mov eax, dword [esi + 0x28]
mov dword [ecx + 0x10], eax
mov eax, dword [esi + 0x28]
mov eax, dword [eax + 0xc]
test eax, eax
je 0x40edae
mov dword [ecx + 0xc], eax
mov eax, dword [esi + 0x28]
mov eax, dword [eax + 0xc]
mov dword [eax + 0x10], ecx
mov eax, dword [esi + 0x28]
mov dword [eax + 0xc], ecx
mov eax, ecx
mov dword [esi + 0x28], ecx
xor dword [eax + 8], 1
jmp 0x40ef8d
mov ecx, esi
call fcn.0040fb40
jmp 0x40eb49
cmp ecx, 0x5b
jne 0x40ee6c
mov eax, dword [esi]
mov ecx, dword [esi + 8]
cmp eax, ecx
je 0x40ee11
cmp byte [eax], 0x5c
jne 0x40ee0f
inc eax
cmp eax, ecx
je 0x40ee0f
mov edx, dword [esi + 0x50]
test dl, 8
jne 0x40edfe
mov cl, byte [eax]
cmp cl, 0x28
je 0x40ee0d
cmp cl, 0x29
je 0x40ee0d
test dl, 0x10
jne 0x40ee0f
mov al, byte [eax]
cmp al, 0x7b
je 0x40ee0d
cmp al, 0x7d
jne 0x40ee0f
inc dword [esi]
inc dword [esi]
mov ecx, esi
call fcn.0040db40
mov ecx, esi
call fcn.0040fa00
cmp dword [esi + 0x4c], 0x5d
jne 0x40f016
mov eax, dword [esi]
mov ecx, dword [esi + 8]
cmp eax, ecx
je 0x40eb42
cmp byte [eax], 0x5c
jne 0x40eb40
inc eax
cmp eax, ecx
je 0x40eb40
mov ecx, dword [esi + 0x50]
test cl, 8
jne 0x40ee64
mov dl, byte [eax]
cmp dl, 0x28
je 0x40eb3e
cmp dl, 0x29
je 0x40eb3e
test cl, 0x10
jmp 0x40eb32
cmp ecx, 0x28
jne 0x40ef17
mov eax, dword [esi]
mov ecx, dword [esi + 8]
cmp eax, ecx
je 0x40eeaf
cmp byte [eax], 0x5c
jne 0x40eead
inc eax
cmp eax, ecx
je 0x40eead
mov ecx, dword [esi + 0x50]
test cl, 8
jne 0x40ee9c
mov dl, byte [eax]
cmp dl, 0x28
je 0x40eeab
cmp dl, 0x29
je 0x40eeab
test cl, 0x10
jne 0x40eead
mov al, byte [eax]
cmp al, 0x7b
je 0x40eeab
cmp al, 0x7d
jne 0x40eead
inc dword [esi]
inc dword [esi]
mov ecx, esi
call fcn.0040db40
mov ecx, esi
call fcn.0040fc90
cmp dword [esi + 0x4c], 0x29
mov bl, al
jne 0x40f00f
mov eax, dword [esi]
mov ecx, dword [esi + 8]
cmp eax, ecx
je 0x40ef03
cmp byte [eax], 0x5c
jne 0x40ef01
inc eax
cmp eax, ecx
je 0x40ef01
mov ecx, dword [esi + 0x50]
test cl, 8
jne 0x40eef0
mov dl, byte [eax]
cmp dl, 0x28
je 0x40eeff
cmp dl, 0x29
je 0x40eeff
test cl, 0x10
jne 0x40ef01
mov al, byte [eax]
cmp al, 0x7b
je 0x40eeff
cmp al, 0x7d
jne 0x40ef01
inc dword [esi]
inc dword [esi]
mov ecx, esi
call fcn.0040db40
test bl, bl
je 0x40eb50
jmp 0x40eb49
cmp ecx, 0x5e
jne 0x40ef2e
push 0x14
call fcn.00415d49
mov ecx, eax
mov dword [ecx + 4], 2
jmp 0x40ef47
cmp ecx, 0x24
jne 0x40efd3
push 0x14
call fcn.00415d49
mov ecx, eax
mov dword [ecx + 4], 3
mov dword [ecx], vtable.std::_Node_base.0
add esp, 4
mov dword [ecx + 8], 0
mov dword [ecx + 0xc], 0
mov dword [ecx + 0x10], 0
mov eax, dword [esi + 0x28]
mov dword [ecx + 0x10], eax
mov eax, dword [esi + 0x28]
mov dword [ebp - 4], ecx
mov eax, dword [eax + 0xc]
test eax, eax
je 0x40ef84
mov dword [ecx + 0xc], eax
mov eax, dword [esi + 0x28]
mov eax, dword [eax + 0xc]
mov dword [eax + 0x10], ecx
mov eax, dword [esi + 0x28]
mov dword [eax + 0xc], ecx
mov dword [esi + 0x28], ecx
mov ecx, dword [esi + 8]
mov eax, dword [esi]
cmp eax, ecx
je 0x40efc7
cmp byte [eax], 0x5c
jne 0x40efc5
inc eax
cmp eax, ecx
je 0x40efc5
mov ecx, dword [esi + 0x50]
test cl, 8
jne 0x40efb4
mov dl, byte [eax]
cmp dl, 0x28
je 0x40efc3
cmp dl, 0x29
je 0x40efc3
test cl, 0x10
jne 0x40efc5
mov al, byte [eax]
cmp al, 0x7b
je 0x40efc3
cmp al, 0x7d
jne 0x40efc5
inc dword [esi]
inc dword [esi]
mov ecx, esi
call fcn.0040db40
jmp 0x40eb50
cmp ecx, 0x2a
je 0x40f001
cmp ecx, 0x2b
je 0x40f001
cmp ecx, 0x3f
je 0x40f001
cmp ecx, 0x7b
je 0x40f001
cmp ecx, 0x7d
jne 0x40eae8
test dword [esi + 0x50], 0x10000000
lea edi, [esi + 0x50]
je 0x40f008
jmp 0x40eafc
push 0xa
call fcn.0040db30
push 6
call fcn.0040db30
push 5
call fcn.0040db30
push 4
call fcn.0040db30
int3