Function at 0x10012640
Capabilities:
Parse credit card information

Disassembly:
push ebp
mov ebp, esp
sub esp, 8
push ebx
push esi
mov esi, ecx
xor cl, cl
mov eax, dword [esi + 0x4c]
cmp eax, 0xffffffff
je 0x10012700
nop dword [eax + eax]
cmp eax, 0x7c
je 0x10012700
cmp eax, 0x29
jne 0x10012708
cmp dword [esi + 0x10], 0
jne 0x10012700
test dword [esi + 0x50], 0x10000000
je 0x10012b20
cmp eax, 0x5d
jne 0x1001269b
test dword [esi + 0x50], 0x10000000
je 0x10012b12
movzx eax, byte [esi + 0x48]
lea ecx, [esi + 0x24]
push eax
call fcn.10013d70
mov ecx, dword [esi + 8]
mov eax, dword [esi]
cmp eax, ecx
je 0x100126e4
cmp byte [eax], 0x5c
jne 0x100126e2
inc eax
cmp eax, ecx
je 0x100126e2
mov ecx, dword [esi + 0x50]
test cl, 8
jne 0x100126cf
mov dl, byte [eax]
cmp dl, 0x28
je 0x100126e0
cmp dl, 0x29
je 0x100126e0
test cl, 0x10
jne 0x100126e2
mov cl, byte [eax]
cmp cl, 0x7b
je 0x100126e0
cmp cl, 0x7d
jne 0x100126e2
mov dword [esi], eax
inc dword [esi]
mov ecx, esi
call fcn.100111d0
mov ecx, esi
call fcn.10013b40
mov eax, dword [esi + 0x4c]
mov cl, 1
cmp eax, 0xffffffff
jne 0x10012660
pop esi
mov al, cl
pop ebx
mov esp, ebp
pop ebp
ret
cmp eax, 0x2e
jne 0x10012775
push 0x14
call fcn.10084d74
mov ecx, eax
xorps xmm0, xmm0
add esp, 4
mov dword [ebp - 4], ecx
movups xmmword [ecx], xmm0
mov dword [ecx + 0x10], 0
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 edx, dword [eax + 0xc]
test edx, edx
je 0x1001276a
mov dword [ecx + 0xc], edx
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
jmp 0x100126a8
cmp eax, 0x5c
jne 0x100128fb
mov eax, dword [esi]
mov ecx, dword [esi + 8]
cmp eax, ecx
je 0x100127ba
cmp byte [eax], 0x5c
jne 0x100127b8
inc eax
cmp eax, ecx
je 0x100127b8
mov ecx, dword [esi + 0x50]
test cl, 8
jne 0x100127a5
mov dl, byte [eax]
cmp dl, 0x28
je 0x100127b6
cmp dl, 0x29
je 0x100127b6
test cl, 0x10
jne 0x100127b8
mov cl, byte [eax]
cmp cl, 0x7b
je 0x100127b6
cmp cl, 0x7d
jne 0x100127b8
mov dword [esi], eax
inc dword [esi]
mov ecx, esi
call fcn.100111d0
test byte [esi + 0x50], 0x80
je 0x100128ef
cmp byte [esi + 0x48], 0x62
jne 0x1001287b
push 0x14
call fcn.10084d74
mov ecx, eax
xorps xmm0, xmm0
add esp, 4
mov dword [ebp - 4], ecx
movups xmmword [ecx], xmm0
mov dword [ecx + 0x10], 0
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 edx, dword [eax + 0xc]
test edx, edx
je 0x10012832
mov dword [ecx + 0xc], edx
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 ecx, dword [esi + 8]
cmp eax, ecx
je 0x10012ad4
cmp byte [eax], 0x5c
jne 0x10012ad2
inc eax
cmp eax, ecx
je 0x10012ad2
mov edx, dword [esi + 0x50]
test dl, 8
jne 0x10012873
mov cl, byte [eax]
cmp cl, 0x28
je 0x10012ad0
cmp cl, 0x29
je 0x10012ad0
test dl, 0x10
jmp 0x10012ac2
cmp byte [esi + 0x48], 0x42
jne 0x100128ef
push 0x14
call fcn.10084d74
mov ecx, eax
xorps xmm0, xmm0
add esp, 4
mov dword [ebp - 4], ecx
movups xmmword [ecx], xmm0
mov dword [ecx + 0x10], 0
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 edx, dword [eax + 0xc]
test edx, edx
je 0x100128de
mov dword [ecx + 0xc], edx
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 0x10012838
mov ecx, esi
call fcn.10013810
jmp 0x100126eb
cmp eax, 0x5b
jne 0x10012959
mov eax, dword [esi]
mov ecx, dword [esi + 8]
cmp eax, ecx
je 0x1001293c
cmp byte [eax], 0x5c
jne 0x1001293a
inc eax
cmp eax, ecx
je 0x1001293a
mov ecx, dword [esi + 0x50]
test cl, 8
jne 0x10012927
mov dl, byte [eax]
cmp dl, 0x28
je 0x10012938
cmp dl, 0x29
je 0x10012938
test cl, 0x10
jne 0x1001293a
mov cl, byte [eax]
cmp cl, 0x7b
je 0x10012938
cmp cl, 0x7d
jne 0x1001293a
mov dword [esi], eax
inc dword [esi]
mov ecx, esi
call fcn.100111d0
mov ecx, esi
call fcn.100136f0
cmp dword [esi + 0x4c], 0x5d
jne 0x10012b12
jmp 0x100126a8
cmp eax, 0x28
jne 0x10012a08
mov eax, dword [esi]
mov ecx, dword [esi + 8]
cmp eax, ecx
je 0x1001299e
cmp byte [eax], 0x5c
jne 0x1001299c
inc eax
cmp eax, ecx
je 0x1001299c
mov ecx, dword [esi + 0x50]
test cl, 8
jne 0x10012989
mov dl, byte [eax]
cmp dl, 0x28
je 0x1001299a
cmp dl, 0x29
je 0x1001299a
test cl, 0x10
jne 0x1001299c
mov cl, byte [eax]
cmp cl, 0x7b
je 0x1001299a
cmp cl, 0x7d
jne 0x1001299c
mov dword [esi], eax
inc dword [esi]
mov ecx, esi
call fcn.100111d0
mov ecx, esi
call fcn.10013960
cmp dword [esi + 0x4c], 0x29
mov bl, al
jne 0x10012b20
mov eax, dword [esi]
mov ecx, dword [esi + 8]
cmp eax, ecx
je 0x100129f4
cmp byte [eax], 0x5c
jne 0x100129f2
inc eax
cmp eax, ecx
je 0x100129f2
mov ecx, dword [esi + 0x50]
test cl, 8
jne 0x100129df
mov dl, byte [eax]
cmp dl, 0x28
je 0x100129f0
cmp dl, 0x29
je 0x100129f0
test cl, 0x10
jne 0x100129f2
mov cl, byte [eax]
cmp cl, 0x7b
je 0x100129f0
cmp cl, 0x7d
jne 0x100129f2
mov dword [esi], eax
inc dword [esi]
mov ecx, esi
call fcn.100111d0
test bl, bl
je 0x100126f2
jmp 0x100126eb
cmp eax, 0x5e
jne 0x10012a2c
push 0x14
call fcn.10084d74
mov ecx, eax
xorps xmm0, xmm0
movups xmmword [ecx], xmm0
mov dword [ecx + 0x10], 0
mov dword [ecx + 4], 2
jmp 0x10012a52
cmp eax, 0x24
jne 0x10012ae0
push 0x14
call fcn.10084d74
mov ecx, eax
xorps xmm0, xmm0
movups xmmword [ecx], xmm0
mov dword [ecx + 0x10], 0
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 edx, dword [eax + 0xc]
test edx, edx
je 0x10012a92
mov dword [ecx + 0xc], edx
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 0x10012ad4
cmp byte [eax], 0x5c
jne 0x10012ad2
inc eax
cmp eax, ecx
je 0x10012ad2
mov ecx, dword [esi + 0x50]
test cl, 8
jne 0x10012abf
mov dl, byte [eax]
cmp dl, 0x28
je 0x10012ad0
cmp dl, 0x29
je 0x10012ad0
test cl, 0x10
jne 0x10012ad2
mov cl, byte [eax]
cmp cl, 0x7b
je 0x10012ad0
cmp cl, 0x7d
jne 0x10012ad2
mov dword [esi], eax
inc dword [esi]
mov ecx, esi
call fcn.100111d0
jmp 0x100126f2
cmp eax, 0x2a
je 0x10012b0b
cmp eax, 0x2b
je 0x10012b0b
cmp eax, 0x3f
je 0x10012b0b
cmp eax, 0x7b
je 0x10012b0b
cmp eax, 0x7d
jne 0x10012689
test dword [esi + 0x50], 0x10000000
je 0x10012b19
jmp 0x1001269b
push 0xa
call fcn.100111c0
push 4
call fcn.100111c0
push 6
call fcn.100111c0
push 5
call fcn.100111c0
int3