Function at 0x10023310
Capabilities:
Parse credit card information

Disassembly:
push ebx
push esi
push edi
mov edi, eax
xor ebx, ebx
xor al, al
cmp dword [edi + 0x40], 0xffffffff
je 0x10023673
jmp 0x10023327
xor ebx, ebx
mov ecx, dword [edi + 0x40]
mov esi, dword [sym.imp.MSVCP100.dll_void___cdecl_std::tr1::_Xbad_enum_std::tr1::regex_constants::error_type_]
mov edx, 0x10000000
cmp ecx, 0x7c
je 0x10023673
cmp ecx, 0x29
jne 0x1002335d
cmp dword [edi + 0x10], ebx
jne 0x10023673
test dword [edi + 0x44], edx
jne 0x1002335d
push 5
call esi
add esp, 4
jmp 0x10023660
cmp ecx, 0x2e
jne 0x100233fb
push 0x14
call dword [sym.imp.MSVCR100.dll_void____cdecl_operator_new_unsigned_int_]
add esp, 4
cmp eax, ebx
je 0x1002338d
mov dword [eax], vtable.std::tr1::_Node_base.0
mov dword [eax + 4], 5
mov dword [eax + 8], ebx
mov dword [eax + 0xc], ebx
mov dword [eax + 0x10], ebx
jmp 0x1002338f
xor eax, eax
mov ecx, dword [edi + 0x1c]
mov dword [eax + 0x10], ecx
mov edx, dword [edi + 0x1c]
mov ecx, dword [edx + 0xc]
cmp ecx, ebx
je 0x100233ab
mov dword [eax + 0xc], ecx
mov ecx, dword [edi + 0x1c]
mov edx, dword [ecx + 0xc]
mov dword [edx + 0x10], eax
mov ecx, dword [edi + 0x1c]
mov dword [ecx + 0xc], eax
mov dword [edi + 0x1c], eax
mov eax, dword [edi]
mov ecx, dword [edi + 8]
cmp eax, ecx
je 0x100233ef
cmp byte [eax], 0x5c
jne 0x100233ed
inc eax
cmp eax, ecx
je 0x100233d9
test byte [edi + 0x44], 8
jne 0x100233d9
mov cl, byte [eax]
cmp cl, 0x28
je 0x100233eb
cmp cl, 0x29
je 0x100233eb
test byte [edi + 0x44], 0x10
jne 0x100233ed
mov cl, byte [eax]
cmp cl, 0x7b
je 0x100233eb
cmp cl, 0x7d
jne 0x100233ed
mov dword [edi], eax
inc dword [edi]
mov esi, edi
call fcn.100216b0
jmp 0x10023660
cmp ecx, 0x5c
jne 0x10023511
mov eax, dword [edi]
mov ecx, dword [edi + 8]
cmp eax, ecx
je 0x1002343f
cmp byte [eax], 0x5c
jne 0x1002343d
inc eax
cmp eax, ecx
je 0x10023429
test byte [edi + 0x44], 8
jne 0x10023429
mov cl, byte [eax]
cmp cl, 0x28
je 0x1002343b
cmp cl, 0x29
je 0x1002343b
test byte [edi + 0x44], 0x10
jne 0x1002343d
mov cl, byte [eax]
cmp cl, 0x7b
je 0x1002343b
cmp cl, 0x7d
jne 0x1002343d
mov dword [edi], eax
inc dword [edi]
mov esi, edi
call fcn.100216b0
mov eax, dword [edi + 0x44]
and eax, 0x80
je 0x100234a5
cmp byte [edi + 0x3e], 0x62
jne 0x100234a5
lea esi, [edi + 0x18]
call fcn.10024a70
mov eax, dword [edi]
mov ecx, dword [edi + 8]
cmp eax, ecx
je 0x10023499
cmp byte [eax], 0x5c
jne 0x10023497
inc eax
cmp eax, ecx
je 0x10023483
test byte [edi + 0x44], 8
jne 0x10023483
mov cl, byte [eax]
cmp cl, 0x28
je 0x10023495
cmp cl, 0x29
je 0x10023495
test byte [edi + 0x44], 0x10
jne 0x10023497
mov cl, byte [eax]
cmp cl, 0x7b
je 0x10023495
cmp cl, 0x7d
jne 0x10023497
mov dword [edi], eax
inc dword [edi]
mov esi, edi
call fcn.100216b0
jmp 0x10023667
cmp eax, ebx
je 0x10023505
cmp byte [edi + 0x3e], 0x42
jne 0x10023505
lea esi, [edi + 0x18]
call fcn.10024a70
mov eax, dword [edi + 0x1c]
xor dword [eax + 8], 1
mov eax, dword [edi]
mov ecx, dword [edi + 8]
cmp eax, ecx
je 0x100234f9
cmp byte [eax], 0x5c
jne 0x100234f7
inc eax
cmp eax, ecx
je 0x100234e3
test byte [edi + 0x44], 8
jne 0x100234e3
mov cl, byte [eax]
cmp cl, 0x28
je 0x100234f5
cmp cl, 0x29
je 0x100234f5
test byte [edi + 0x44], 0x10
jne 0x100234f7
mov cl, byte [eax]
cmp cl, 0x7b
je 0x100234f5
cmp cl, 0x7d
jne 0x100234f7
mov dword [edi], eax
inc dword [edi]
mov esi, edi
call fcn.100216b0
jmp 0x10023667
mov eax, edi
call fcn.10024700
jmp 0x10023660
cmp ecx, 0x5b
jne 0x100235b7
mov eax, dword [edi]
mov ecx, dword [edi + 8]
cmp eax, ecx
je 0x10023555
cmp byte [eax], 0x5c
jne 0x10023553
inc eax
cmp eax, ecx
je 0x1002353f
test byte [edi + 0x44], 8
jne 0x1002353f
mov cl, byte [eax]
cmp cl, 0x28
je 0x10023551
cmp cl, 0x29
je 0x10023551
test byte [edi + 0x44], 0x10
jne 0x10023553
mov cl, byte [eax]
cmp cl, 0x7b
je 0x10023551
cmp cl, 0x7d
jne 0x10023553
mov dword [edi], eax
inc dword [edi]
mov esi, edi
call fcn.100216b0
call fcn.10024650
cmp dword [edi + 0x40], 0x5d
je 0x10023572
push 4
call dword [sym.imp.MSVCP100.dll_void___cdecl_std::tr1::_Xbad_enum_std::tr1::regex_constants::error_type_]
add esp, 4
mov eax, dword [edi]
mov ecx, dword [edi + 8]
cmp eax, ecx
je 0x100235ad
cmp byte [eax], 0x5c
jne 0x100235ab
inc eax
cmp eax, ecx
je 0x10023597
test byte [edi + 0x44], 8
jne 0x10023597
mov cl, byte [eax]
cmp cl, 0x28
je 0x100235a9
cmp cl, 0x29
je 0x100235a9
test byte [edi + 0x44], 0x10
jne 0x100235ab
mov cl, byte [eax]
cmp cl, 0x7b
je 0x100235a9
cmp cl, 0x7d
jne 0x100235ab
mov dword [edi], eax
inc dword [edi]
call fcn.100216b0
jmp 0x10023660
cmp ecx, 0x28
jne 0x10023677
mov eax, dword [edi]
mov ecx, dword [edi + 8]
cmp eax, ecx
je 0x100235fb
cmp byte [eax], 0x5c
jne 0x100235f9
inc eax
cmp eax, ecx
je 0x100235e5
test byte [edi + 0x44], 8
jne 0x100235e5
mov cl, byte [eax]
cmp cl, 0x28
je 0x100235f7
cmp cl, 0x29
je 0x100235f7
test byte [edi + 0x44], 0x10
jne 0x100235f9
mov cl, byte [eax]
cmp cl, 0x7b
je 0x100235f7
cmp cl, 0x7d
jne 0x100235f9
mov dword [edi], eax
inc dword [edi]
mov esi, edi
call fcn.100216b0
mov eax, edi
call fcn.100247c0
cmp dword [edi + 0x40], 0x29
mov bl, al
je 0x1002361c
push 5
call dword [sym.imp.MSVCP100.dll_void___cdecl_std::tr1::_Xbad_enum_std::tr1::regex_constants::error_type_]
add esp, 4
mov eax, dword [edi]
mov ecx, dword [edi + 8]
cmp eax, ecx
je 0x10023657
cmp byte [eax], 0x5c
jne 0x10023655
inc eax
cmp eax, ecx
je 0x10023641
test byte [edi + 0x44], 8
jne 0x10023641
mov cl, byte [eax]
cmp cl, 0x28
je 0x10023653
cmp cl, 0x29
je 0x10023653
test byte [edi + 0x44], 0x10
jne 0x10023655
mov cl, byte [eax]
cmp cl, 0x7b
je 0x10023653
cmp cl, 0x7d
jne 0x10023655
mov dword [edi], eax
inc dword [edi]
call fcn.100216b0
test bl, bl
je 0x10023667
mov eax, edi
call fcn.10024870
cmp dword [edi + 0x40], 0xffffffff
mov al, 1
jne 0x10023325
pop edi
pop esi
pop ebx
ret
cmp ecx, 0x5e
jne 0x1002368d
lea esi, [edi + 0x18]
call fcn.100249b0
mov eax, edi
call fcn.100232c0
jmp 0x10023667
cmp ecx, 0x24
jne 0x100236a3
lea esi, [edi + 0x18]
call fcn.10024a10
mov eax, edi
call fcn.100232c0
jmp 0x10023667
cmp ecx, 0x2a
je 0x100236f6
cmp ecx, 0x2b
je 0x100236f6
cmp ecx, 0x3f
je 0x100236f6
cmp ecx, 0x7b
je 0x100236f6
cmp ecx, 0x7d
jne 0x100236ca
test dword [edi + 0x44], edx
jne 0x100236ca
push 6
call esi
add esp, 4
jmp 0x10023660
cmp ecx, 0x5d
jne 0x100236dd
test dword [edi + 0x44], edx
jne 0x100236dd
push 4
call esi
add esp, 4
jmp 0x10023660
movzx edx, byte [edi + 0x3e]
lea eax, [edi + 0x18]
push edx
call fcn.10024ad0
mov eax, edi
call fcn.100232c0
jmp 0x10023660
push 0xa
call esi
add esp, 4
jmp 0x10023660