Function at 0x4200e0
Capabilities:
Parse credit card information

Disassembly:
sub esp, 8
xor al, al
push ebx
push esi
mov esi, ecx
push edi
mov ecx, dword [esi + 0x4c]
cmp ecx, 0xffffffff
je 0x42019d
cmp ecx, 0x7c
je 0x42019d
cmp ecx, 0x29
jne 0x4201a4
cmp dword [esi + 0x10], 0
jne 0x42019d
cmp ecx, ecx
jne 0x4201a4
test dword [esi + 0x50], 0x10000000
je 0x420652
lea edi, [esi + 0x50]
cmp ecx, 0x5d
jne 0x42013b
test dword [edi], 0x10000000
je 0x420659
movzx eax, byte [esi + 0x48]
lea ecx, [esi + 0x24]
push eax
call fcn.004216f0
mov eax, dword [esi]
mov ecx, dword [esi + 8]
cmp eax, ecx
je 0x420181
cmp byte [eax], 0x5c
jne 0x42017f
inc eax
cmp eax, ecx
je 0x42017f
mov edx, dword [edi]
test dl, 8
jne 0x42016e
mov cl, byte [eax]
cmp cl, 0x28
je 0x42017d
cmp cl, 0x29
je 0x42017d
test dl, 0x10
jne 0x42017f
mov al, byte [eax]
cmp al, 0x7b
je 0x42017d
cmp al, 0x7d
jne 0x42017f
inc dword [esi]
inc dword [esi]
mov ecx, esi
call fcn.0041ecf0
mov ecx, esi
call fcn.004214d0
mov ecx, dword [esi + 0x4c]
mov al, 1
cmp ecx, 0xffffffff
jne 0x4200f6
pop edi
pop esi
pop ebx
add esp, 8
ret
cmp ecx, 0x2e
jne 0x420261
push 0x14
call fcn.0046c2a3
mov ecx, eax
add esp, 4
mov dword [esp + 0x10], 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 0x4201fb
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 0x420181
cmp byte [eax], 0x5c
jne 0x420259
lea edi, [eax + 1]
mov ecx, eax
cmp edi, edx
je 0x420257
mov ebx, dword [esi + 0x50]
test bl, 8
jne 0x420237
mov cl, byte [edi]
mov edx, eax
cmp cl, 0x28
je 0x42024c
cmp cl, 0x29
je 0x42024c
mov ecx, eax
test bl, 0x10
jne 0x420257
mov bl, byte [edi]
mov edx, eax
cmp bl, 0x7b
je 0x42024c
mov edx, ecx
cmp bl, 0x7d
jne 0x420257
lea eax, [edx + 1]
inc eax
mov dword [esi], eax
jmp 0x420181
mov eax, ecx
inc eax
mov dword [esi], eax
jmp 0x420181
cmp ecx, 0x5c
jne 0x420410
mov eax, dword [esi]
mov edx, dword [esi + 8]
cmp eax, edx
je 0x4202b7
cmp byte [eax], cl
jne 0x4202b4
lea edi, [eax + 1]
mov ecx, eax
cmp edi, edx
je 0x4202b2
mov ebx, dword [esi + 0x50]
test bl, 8
jne 0x420298
mov cl, byte [edi]
mov edx, eax
cmp cl, 0x28
je 0x4202ad
cmp cl, 0x29
je 0x4202ad
mov ecx, eax
test bl, 0x10
jne 0x4202b2
mov bl, byte [edi]
mov edx, eax
cmp bl, 0x7b
je 0x4202ad
mov edx, ecx
cmp bl, 0x7d
jne 0x4202b2
lea eax, [edx + 1]
jmp 0x4202b4
mov eax, ecx
inc eax
mov dword [esi], eax
mov ecx, esi
call fcn.0041ecf0
mov eax, dword [esi + 0x50]
and eax, 0x80
je 0x420398
cmp byte [esi + 0x48], 0x62
jne 0x420398
push 0x14
call fcn.0046c2a3
mov ecx, eax
add esp, 4
mov dword [esp + 0x10], 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 0x420324
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 0x42060a
cmp byte [eax], 0x5c
jne 0x420389
lea edi, [eax + 1]
mov ecx, eax
cmp edi, edx
je 0x420387
mov ebx, dword [esi + 0x50]
test bl, 8
jne 0x420360
mov cl, byte [edi]
mov edx, eax
cmp cl, 0x28
je 0x420375
cmp cl, 0x29
je 0x420375
mov ecx, eax
test bl, 0x10
jne 0x420387
mov bl, byte [edi]
mov edx, eax
cmp bl, 0x7b
je 0x420375
mov edx, ecx
cmp bl, 0x7d
jne 0x420387
lea eax, [edx + 1]
mov ecx, esi
inc eax
mov dword [esi], eax
call fcn.0041ecf0
jmp 0x42018f
mov eax, ecx
inc eax
mov ecx, esi
mov dword [esi], eax
call fcn.0041ecf0
jmp 0x42018f
test eax, eax
je 0x420404
cmp byte [esi + 0x48], 0x42
jne 0x420404
push 0x14
call fcn.0046c2a3
mov ecx, eax
add esp, 4
mov dword [esp + 0x10], 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 0x4203f0
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 0x4205d0
mov ecx, esi
call fcn.004211b0
jmp 0x420188
cmp ecx, 0x5b
jne 0x4204ae
mov eax, dword [esi]
mov ecx, dword [esi + 8]
cmp eax, ecx
je 0x420453
cmp byte [eax], 0x5c
jne 0x420451
inc eax
cmp eax, ecx
je 0x420451
mov edx, dword [esi + 0x50]
test dl, 8
jne 0x420440
mov cl, byte [eax]
cmp cl, 0x28
je 0x42044f
cmp cl, 0x29
je 0x42044f
test dl, 0x10
jne 0x420451
mov al, byte [eax]
cmp al, 0x7b
je 0x42044f
cmp al, 0x7d
jne 0x420451
inc dword [esi]
inc dword [esi]
mov ecx, esi
call fcn.0041ecf0
mov ecx, esi
call fcn.00421080
cmp dword [esi + 0x4c], 0x5d
jne 0x420659
mov eax, dword [esi]
mov ecx, dword [esi + 8]
cmp eax, ecx
je 0x420181
cmp byte [eax], 0x5c
jne 0x42017f
inc eax
cmp eax, ecx
je 0x42017f
mov ecx, dword [esi + 0x50]
test cl, 8
jne 0x4204a6
mov dl, byte [eax]
cmp dl, 0x28
je 0x42017d
cmp dl, 0x29
je 0x42017d
test cl, 0x10
jmp 0x420171
cmp ecx, 0x28
jne 0x420559
mov eax, dword [esi]
mov ecx, dword [esi + 8]
cmp eax, ecx
je 0x4204f1
cmp byte [eax], 0x5c
jne 0x4204ef
inc eax
cmp eax, ecx
je 0x4204ef
mov ecx, dword [esi + 0x50]
test cl, 8
jne 0x4204de
mov dl, byte [eax]
cmp dl, 0x28
je 0x4204ed
cmp dl, 0x29
je 0x4204ed
test cl, 0x10
jne 0x4204ef
mov al, byte [eax]
cmp al, 0x7b
je 0x4204ed
cmp al, 0x7d
jne 0x4204ef
inc dword [esi]
inc dword [esi]
mov ecx, esi
call fcn.0041ecf0
mov ecx, esi
call fcn.004212f0
cmp dword [esi + 0x4c], 0x29
mov bl, al
jne 0x420652
mov eax, dword [esi]
mov ecx, dword [esi + 8]
cmp eax, ecx
je 0x420545
cmp byte [eax], 0x5c
jne 0x420543
inc eax
cmp eax, ecx
je 0x420543
mov ecx, dword [esi + 0x50]
test cl, 8
jne 0x420532
mov dl, byte [eax]
cmp dl, 0x28
je 0x420541
cmp dl, 0x29
je 0x420541
test cl, 0x10
jne 0x420543
mov al, byte [eax]
cmp al, 0x7b
je 0x420541
cmp al, 0x7d
jne 0x420543
inc dword [esi]
inc dword [esi]
mov ecx, esi
call fcn.0041ecf0
test bl, bl
je 0x42018f
jmp 0x420188
cmp ecx, 0x5e
jne 0x420570
push 0x14
call fcn.0046c2a3
mov ecx, eax
mov dword [ecx + 4], 2
jmp 0x420589
cmp ecx, 0x24
jne 0x420616
push 0x14
call fcn.0046c2a3
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 [esp + 0x10], ecx
mov eax, dword [eax + 0xc]
test eax, eax
je 0x4205c7
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 0x42060a
cmp byte [eax], 0x5c
jne 0x420608
inc eax
cmp eax, ecx
je 0x420608
mov ecx, dword [esi + 0x50]
test cl, 8
jne 0x4205f7
mov dl, byte [eax]
cmp dl, 0x28
je 0x420606
cmp dl, 0x29
je 0x420606
test cl, 0x10
jne 0x420608
mov al, byte [eax]
cmp al, 0x7b
je 0x420606
cmp al, 0x7d
jne 0x420608
inc dword [esi]
inc dword [esi]
mov ecx, esi
call fcn.0041ecf0
jmp 0x42018f
cmp ecx, 0x2a
je 0x420644
cmp ecx, 0x2b
je 0x420644
cmp ecx, 0x3f
je 0x420644
cmp ecx, 0x7b
je 0x420644
cmp ecx, 0x7d
jne 0x420127
test dword [esi + 0x50], 0x10000000
lea edi, [esi + 0x50]
je 0x42064b
jmp 0x42013b
push 0xa
call fcn.0041ece0
push 6
call fcn.0041ece0
push 5
call fcn.0041ece0
push 4
call fcn.0041ece0
int3