Function at 0x10009790
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 0x1000984e
cmp ecx, 0x7c
je 0x1000984e
cmp ecx, 0x29
jne 0x10009855
cmp dword [esi + 0x10], 0
jne 0x1000984e
cmp ecx, ecx
jne 0x10009855
test dword [esi + 0x50], 0x10000000
je 0x10009cc9
lea edi, [esi + 0x50]
cmp ecx, 0x5d
jne 0x100097ec
test dword [edi], 0x10000000
je 0x10009cd0
movzx eax, byte [esi + 0x48]
lea ecx, [esi + 0x24]
push eax
call fcn.1000b090
mov eax, dword [esi]
mov ecx, dword [esi + 8]
cmp eax, ecx
je 0x10009832
cmp byte [eax], 0x5c
jne 0x10009830
inc eax
cmp eax, ecx
je 0x10009830
mov edx, dword [edi]
test dl, 8
jne 0x1000981f
mov cl, byte [eax]
cmp cl, 0x28
je 0x1000982e
cmp cl, 0x29
je 0x1000982e
test dl, 0x10
jne 0x10009830
mov al, byte [eax]
cmp al, 0x7b
je 0x1000982e
cmp al, 0x7d
jne 0x10009830
inc dword [esi]
inc dword [esi]
mov ecx, esi
call fcn.100085b0
mov ecx, esi
call fcn.1000af40
mov ecx, dword [esi + 0x4c]
mov al, 1
cmp ecx, 0xffffffff
jne 0x100097a7
pop edi
pop esi
pop ebx
mov esp, ebp
pop ebp
ret
cmp ecx, 0x2e
jne 0x10009911
push 0x14
call fcn.100bb295
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 0x100098ab
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 0x10009832
cmp byte [eax], 0x5c
jne 0x10009909
lea edi, [eax + 1]
mov ecx, eax
cmp edi, edx
je 0x10009907
mov ebx, dword [esi + 0x50]
test bl, 8
jne 0x100098e7
mov cl, byte [edi]
mov edx, eax
cmp cl, 0x28
je 0x100098fc
cmp cl, 0x29
je 0x100098fc
mov ecx, eax
test bl, 0x10
jne 0x10009907
mov bl, byte [edi]
mov edx, eax
cmp bl, 0x7b
je 0x100098fc
mov edx, ecx
cmp bl, 0x7d
jne 0x10009907
lea eax, [edx + 1]
inc eax
mov dword [esi], eax
jmp 0x10009832
mov eax, ecx
inc eax
mov dword [esi], eax
jmp 0x10009832
cmp ecx, 0x5c
jne 0x10009abe
mov eax, dword [esi]
mov edx, dword [esi + 8]
cmp eax, edx
je 0x10009967
cmp byte [eax], cl
jne 0x10009964
lea edi, [eax + 1]
mov ecx, eax
cmp edi, edx
je 0x10009962
mov ebx, dword [esi + 0x50]
test bl, 8
jne 0x10009948
mov cl, byte [edi]
mov edx, eax
cmp cl, 0x28
je 0x1000995d
cmp cl, 0x29
je 0x1000995d
mov ecx, eax
test bl, 0x10
jne 0x10009962
mov bl, byte [edi]
mov edx, eax
cmp bl, 0x7b
je 0x1000995d
mov edx, ecx
cmp bl, 0x7d
jne 0x10009962
lea eax, [edx + 1]
jmp 0x10009964
mov eax, ecx
inc eax
mov dword [esi], eax
mov ecx, esi
call fcn.100085b0
mov eax, dword [esi + 0x50]
and eax, 0x80
je 0x10009a47
cmp byte [esi + 0x48], 0x62
jne 0x10009a47
push 0x14
call fcn.100bb295
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 0x100099d3
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 0x10009c81
cmp byte [eax], 0x5c
jne 0x10009a38
lea edi, [eax + 1]
mov ecx, eax
cmp edi, edx
je 0x10009a36
mov ebx, dword [esi + 0x50]
test bl, 8
jne 0x10009a0f
mov cl, byte [edi]
mov edx, eax
cmp cl, 0x28
je 0x10009a24
cmp cl, 0x29
je 0x10009a24
mov ecx, eax
test bl, 0x10
jne 0x10009a36
mov bl, byte [edi]
mov edx, eax
cmp bl, 0x7b
je 0x10009a24
mov edx, ecx
cmp bl, 0x7d
jne 0x10009a36
lea eax, [edx + 1]
mov ecx, esi
inc eax
mov dword [esi], eax
call fcn.100085b0
jmp 0x10009840
mov eax, ecx
inc eax
mov ecx, esi
mov dword [esi], eax
call fcn.100085b0
jmp 0x10009840
test eax, eax
je 0x10009ab2
cmp byte [esi + 0x48], 0x42
jne 0x10009ab2
push 0x14
call fcn.100bb295
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 0x10009a9e
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 0x10009c47
mov ecx, esi
call fcn.1000acc0
jmp 0x10009839
cmp ecx, 0x5b
jne 0x10009b64
mov eax, dword [esi]
mov ecx, dword [esi + 8]
cmp eax, ecx
je 0x10009b01
cmp byte [eax], 0x5c
jne 0x10009aff
inc eax
cmp eax, ecx
je 0x10009aff
mov edx, dword [esi + 0x50]
test dl, 8
jne 0x10009aee
mov cl, byte [eax]
cmp cl, 0x28
je 0x10009afd
cmp cl, 0x29
je 0x10009afd
test dl, 0x10
jne 0x10009aff
mov al, byte [eax]
cmp al, 0x7b
je 0x10009afd
cmp al, 0x7d
jne 0x10009aff
inc dword [esi]
inc dword [esi]
mov ecx, esi
call fcn.100085b0
lea ecx, [esi + 0x24]
call fcn.1000c2e0
mov eax, dword [esi + 0x4c]
cmp eax, 0x5e
jne 0x10009b29
mov eax, dword [esi + 0x28]
mov ecx, esi
xor dword [eax + 8], 1
call fcn.10009730
mov eax, dword [esi + 0x4c]
test dword [esi + 0x50], 0x20000000
je 0x10009b47
cmp eax, 0x5d
jne 0x10009b47
push eax
lea ecx, [esi + 0x24]
call fcn.1000c370
mov ecx, esi
call fcn.10009730
mov ecx, esi
call fcn.1000bde0
cmp dword [esi + 0x4c], 0x5d
jne 0x10009cd0
mov ecx, esi
call fcn.10009730
jmp 0x10009839
cmp ecx, 0x28
jne 0x10009bd1
mov eax, dword [esi]
mov ecx, dword [esi + 8]
cmp eax, ecx
je 0x10009ba3
cmp byte [eax], 0x5c
jne 0x10009ba1
inc eax
cmp eax, ecx
je 0x10009ba1
mov ecx, dword [esi + 0x50]
test cl, 8
jne 0x10009b90
mov dl, byte [eax]
cmp dl, 0x28
je 0x10009b9f
cmp dl, 0x29
je 0x10009b9f
test cl, 0x10
jne 0x10009ba1
mov al, byte [eax]
cmp al, 0x7b
je 0x10009b9f
cmp al, 0x7d
jne 0x10009ba1
inc dword [esi]
inc dword [esi]
mov ecx, esi
call fcn.100085b0
mov ecx, esi
call fcn.1000ae10
cmp dword [esi + 0x4c], 0x29
mov bl, al
jne 0x10009cc9
mov ecx, esi
call fcn.10009730
test bl, bl
je 0x10009840
jmp 0x10009839
cmp ecx, 0x5e
jne 0x10009be8
push 0x14
call fcn.100bb295
mov ecx, eax
mov dword [ecx + 4], 2
jmp 0x10009c01
cmp ecx, 0x24
jne 0x10009c8d
push 0x14
call fcn.100bb295
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 0x10009c3e
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 0x10009c81
cmp byte [eax], 0x5c
jne 0x10009c7f
inc eax
cmp eax, ecx
je 0x10009c7f
mov ecx, dword [esi + 0x50]
test cl, 8
jne 0x10009c6e
mov dl, byte [eax]
cmp dl, 0x28
je 0x10009c7d
cmp dl, 0x29
je 0x10009c7d
test cl, 0x10
jne 0x10009c7f
mov al, byte [eax]
cmp al, 0x7b
je 0x10009c7d
cmp al, 0x7d
jne 0x10009c7f
inc dword [esi]
inc dword [esi]
mov ecx, esi
call fcn.100085b0
jmp 0x10009840
cmp ecx, 0x2a
je 0x10009cbb
cmp ecx, 0x2b
je 0x10009cbb
cmp ecx, 0x3f
je 0x10009cbb
cmp ecx, 0x7b
je 0x10009cbb
cmp ecx, 0x7d
jne 0x100097d8
test dword [esi + 0x50], 0x10000000
lea edi, [esi + 0x50]
je 0x10009cc2
jmp 0x100097ec
push 0xa
call fcn.100085a0
push 6
call fcn.100085a0
push 5
call fcn.100085a0
push 4
call fcn.100085a0
int3