Function at 0x4150f0
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 0x4151ae
cmp ecx, 0x7c
je 0x4151ae
cmp ecx, 0x29
jne 0x4151b5
cmp dword [esi + 0x10], 0
jne 0x4151ae
cmp ecx, ecx
jne 0x4151b5
test dword [esi + 0x50], 0x10000000
je 0x41565f
lea edi, [esi + 0x50]
cmp ecx, 0x5d
jne 0x41514c
test dword [edi], 0x10000000
je 0x415666
movzx eax, byte [esi + 0x48]
lea ecx, [esi + 0x24]
push eax
call fcn.00416360
mov eax, dword [esi]
mov ecx, dword [esi + 8]
cmp eax, ecx
je 0x415192
cmp byte [eax], 0x5c
jne 0x415190
inc eax
cmp eax, ecx
je 0x415190
mov edx, dword [edi]
test dl, 8
jne 0x41517f
mov cl, byte [eax]
cmp cl, 0x28
je 0x41518e
cmp cl, 0x29
je 0x41518e
test dl, 0x10
jne 0x415190
mov al, byte [eax]
cmp al, 0x7b
je 0x41518e
cmp al, 0x7d
jne 0x415190
inc dword [esi]
inc dword [esi]
mov ecx, esi
call fcn.00414490
mov ecx, esi
call fcn.00416130
mov ecx, dword [esi + 0x4c]
mov al, 1
cmp ecx, 0xffffffff
jne 0x415107
pop edi
pop esi
pop ebx
mov esp, ebp
pop ebp
ret
cmp ecx, 0x2e
jne 0x415271
push 0x14
call fcn.0052e124
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 0x41520b
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 0x415192
cmp byte [eax], 0x5c
jne 0x415269
lea edi, [eax + 1]
mov ecx, eax
cmp edi, edx
je 0x415267
mov ebx, dword [esi + 0x50]
test bl, 8
jne 0x415247
mov cl, byte [edi]
mov edx, eax
cmp cl, 0x28
je 0x41525c
cmp cl, 0x29
je 0x41525c
mov ecx, eax
test bl, 0x10
jne 0x415267
mov bl, byte [edi]
mov edx, eax
cmp bl, 0x7b
je 0x41525c
mov edx, ecx
cmp bl, 0x7d
jne 0x415267
lea eax, [edx + 1]
inc eax
mov dword [esi], eax
jmp 0x415192
mov eax, ecx
inc eax
mov dword [esi], eax
jmp 0x415192
cmp ecx, 0x5c
jne 0x41541e
mov eax, dword [esi]
mov edx, dword [esi + 8]
cmp eax, edx
je 0x4152c7
cmp byte [eax], cl
jne 0x4152c4
lea edi, [eax + 1]
mov ecx, eax
cmp edi, edx
je 0x4152c2
mov ebx, dword [esi + 0x50]
test bl, 8
jne 0x4152a8
mov cl, byte [edi]
mov edx, eax
cmp cl, 0x28
je 0x4152bd
cmp cl, 0x29
je 0x4152bd
mov ecx, eax
test bl, 0x10
jne 0x4152c2
mov bl, byte [edi]
mov edx, eax
cmp bl, 0x7b
je 0x4152bd
mov edx, ecx
cmp bl, 0x7d
jne 0x4152c2
lea eax, [edx + 1]
jmp 0x4152c4
mov eax, ecx
inc eax
mov dword [esi], eax
mov ecx, esi
call fcn.00414490
mov eax, dword [esi + 0x50]
and eax, 0x80
je 0x4153a7
cmp byte [esi + 0x48], 0x62
jne 0x4153a7
push 0x14
call fcn.0052e124
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 0x415333
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 0x415617
cmp byte [eax], 0x5c
jne 0x415398
lea edi, [eax + 1]
mov ecx, eax
cmp edi, edx
je 0x415396
mov ebx, dword [esi + 0x50]
test bl, 8
jne 0x41536f
mov cl, byte [edi]
mov edx, eax
cmp cl, 0x28
je 0x415384
cmp cl, 0x29
je 0x415384
mov ecx, eax
test bl, 0x10
jne 0x415396
mov bl, byte [edi]
mov edx, eax
cmp bl, 0x7b
je 0x415384
mov edx, ecx
cmp bl, 0x7d
jne 0x415396
lea eax, [edx + 1]
mov ecx, esi
inc eax
mov dword [esi], eax
call fcn.00414490
jmp 0x4151a0
mov eax, ecx
inc eax
mov ecx, esi
mov dword [esi], eax
call fcn.00414490
jmp 0x4151a0
test eax, eax
je 0x415412
cmp byte [esi + 0x48], 0x42
jne 0x415412
push 0x14
call fcn.0052e124
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 0x4153fe
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 0x4155dd
mov ecx, esi
call fcn.00415d90
jmp 0x415199
cmp ecx, 0x5b
jne 0x4154bc
mov eax, dword [esi]
mov ecx, dword [esi + 8]
cmp eax, ecx
je 0x415461
cmp byte [eax], 0x5c
jne 0x41545f
inc eax
cmp eax, ecx
je 0x41545f
mov edx, dword [esi + 0x50]
test dl, 8
jne 0x41544e
mov cl, byte [eax]
cmp cl, 0x28
je 0x41545d
cmp cl, 0x29
je 0x41545d
test dl, 0x10
jne 0x41545f
mov al, byte [eax]
cmp al, 0x7b
je 0x41545d
cmp al, 0x7d
jne 0x41545f
inc dword [esi]
inc dword [esi]
mov ecx, esi
call fcn.00414490
mov ecx, esi
call fcn.00415c50
cmp dword [esi + 0x4c], 0x5d
jne 0x415666
mov eax, dword [esi]
mov ecx, dword [esi + 8]
cmp eax, ecx
je 0x415192
cmp byte [eax], 0x5c
jne 0x415190
inc eax
cmp eax, ecx
je 0x415190
mov ecx, dword [esi + 0x50]
test cl, 8
jne 0x4154b4
mov dl, byte [eax]
cmp dl, 0x28
je 0x41518e
cmp dl, 0x29
je 0x41518e
test cl, 0x10
jmp 0x415182
cmp ecx, 0x28
jne 0x415567
mov eax, dword [esi]
mov ecx, dword [esi + 8]
cmp eax, ecx
je 0x4154ff
cmp byte [eax], 0x5c
jne 0x4154fd
inc eax
cmp eax, ecx
je 0x4154fd
mov ecx, dword [esi + 0x50]
test cl, 8
jne 0x4154ec
mov dl, byte [eax]
cmp dl, 0x28
je 0x4154fb
cmp dl, 0x29
je 0x4154fb
test cl, 0x10
jne 0x4154fd
mov al, byte [eax]
cmp al, 0x7b
je 0x4154fb
cmp al, 0x7d
jne 0x4154fd
inc dword [esi]
inc dword [esi]
mov ecx, esi
call fcn.00414490
mov ecx, esi
call fcn.00415ee0
cmp dword [esi + 0x4c], 0x29
mov bl, al
jne 0x41565f
mov eax, dword [esi]
mov ecx, dword [esi + 8]
cmp eax, ecx
je 0x415553
cmp byte [eax], 0x5c
jne 0x415551
inc eax
cmp eax, ecx
je 0x415551
mov ecx, dword [esi + 0x50]
test cl, 8
jne 0x415540
mov dl, byte [eax]
cmp dl, 0x28
je 0x41554f
cmp dl, 0x29
je 0x41554f
test cl, 0x10
jne 0x415551
mov al, byte [eax]
cmp al, 0x7b
je 0x41554f
cmp al, 0x7d
jne 0x415551
inc dword [esi]
inc dword [esi]
mov ecx, esi
call fcn.00414490
test bl, bl
je 0x4151a0
jmp 0x415199
cmp ecx, 0x5e
jne 0x41557e
push 0x14
call fcn.0052e124
mov ecx, eax
mov dword [ecx + 4], 2
jmp 0x415597
cmp ecx, 0x24
jne 0x415623
push 0x14
call fcn.0052e124
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 0x4155d4
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 0x415617
cmp byte [eax], 0x5c
jne 0x415615
inc eax
cmp eax, ecx
je 0x415615
mov ecx, dword [esi + 0x50]
test cl, 8
jne 0x415604
mov dl, byte [eax]
cmp dl, 0x28
je 0x415613
cmp dl, 0x29
je 0x415613
test cl, 0x10
jne 0x415615
mov al, byte [eax]
cmp al, 0x7b
je 0x415613
cmp al, 0x7d
jne 0x415615
inc dword [esi]
inc dword [esi]
mov ecx, esi
call fcn.00414490
jmp 0x4151a0
cmp ecx, 0x2a
je 0x415651
cmp ecx, 0x2b
je 0x415651
cmp ecx, 0x3f
je 0x415651
cmp ecx, 0x7b
je 0x415651
cmp ecx, 0x7d
jne 0x415138
test dword [esi + 0x50], 0x10000000
lea edi, [esi + 0x50]
je 0x415658
jmp 0x41514c
push 0xa
call fcn.00414480
push 6
call fcn.00414480
push 5
call fcn.00414480
push 4
call fcn.00414480
int3