Function at 0x4053b0
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 0x40547b
cmp ecx, 0x7c
je 0x40547b
cmp ecx, 0x29
jne 0x405482
cmp dword [esi + 0x10], 0
jne 0x40547b
cmp ecx, ecx
jne 0x405482
test dword [esi + 0x50], 0x10000000
je 0x40596c
lea edi, [esi + 0x50]
cmp ecx, 0x5d
jne 0x40540c
test dword [edi], 0x10000000
je 0x405973
movzx eax, word [esi + 0x48]
lea ecx, [esi + 0x24]
push eax
call fcn.00406a50
mov ecx, dword [esi]
mov eax, dword [esi + 8]
cmp ecx, eax
je 0x40545f
cmp word [ecx], 0x5c
jne 0x40545c
add ecx, 2
cmp ecx, eax
je 0x40545c
mov edx, dword [edi]
test dl, 8
jne 0x405445
movzx eax, word [ecx]
mov edi, eax
cmp eax, 0x28
je 0x405459
cmp edi, 0x29
je 0x405459
test dl, 0x10
jne 0x40545c
movzx eax, word [ecx]
mov ecx, eax
cmp eax, 0x7b
je 0x405459
cmp ecx, 0x7d
jne 0x40545c
add dword [esi], 2
add dword [esi], 2
mov ecx, esi
call fcn.004045a0
mov ecx, esi
call fcn.00406820
mov ecx, dword [esi + 0x4c]
mov al, 1
cmp ecx, 0xffffffff
jne 0x4053c7
pop edi
pop esi
pop ebx
mov esp, ebp
pop ebp
ret
cmp ecx, 0x2e
jne 0x40554a
push 0x14
call fcn.0040b957
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 0x4054d8
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]
mov eax, dword [esi + 8]
cmp ecx, eax
je 0x40545f
cmp word [ecx], 0x5c
jne 0x405540
lea ebx, [ecx + 2]
mov edx, ecx
cmp ebx, eax
je 0x40553e
mov eax, dword [esi + 0x50]
test al, 8
jne 0x40551a
movzx eax, word [ebx]
mov edi, ecx
mov edx, eax
cmp eax, 0x28
je 0x405531
cmp edx, 0x29
je 0x405531
mov eax, dword [esi + 0x50]
mov edx, ecx
test al, 0x10
jne 0x40553e
movzx eax, word [ebx]
mov edi, ecx
mov ebx, eax
cmp eax, 0x7b
je 0x405531
mov edi, edx
cmp ebx, 0x7d
jne 0x40553e
lea ecx, [edi + 2]
lea eax, [ecx + 2]
mov dword [esi], eax
jmp 0x40545f
mov ecx, edx
lea eax, [ecx + 2]
mov dword [esi], eax
jmp 0x40545f
cmp ecx, 0x5c
jne 0x405710
mov ecx, dword [esi]
mov eax, dword [esi + 8]
cmp ecx, eax
je 0x4055ab
cmp word [ecx], 0x5c
jne 0x4055a6
lea ebx, [ecx + 2]
mov edx, ecx
cmp ebx, eax
je 0x4055a4
mov eax, dword [esi + 0x50]
test al, 8
jne 0x405588
movzx eax, word [ebx]
mov edi, ecx
mov edx, eax
cmp eax, 0x28
je 0x40559f
cmp edx, 0x29
je 0x40559f
mov eax, dword [esi + 0x50]
mov edx, ecx
test al, 0x10
jne 0x4055a4
movzx eax, word [ebx]
mov edi, ecx
mov ebx, eax
cmp eax, 0x7b
je 0x40559f
mov edi, edx
cmp ebx, 0x7d
jne 0x4055a4
lea ecx, [edi + 2]
jmp 0x4055a6
mov ecx, edx
lea eax, [ecx + 2]
mov dword [esi], eax
mov ecx, esi
call fcn.004045a0
mov eax, dword [esi + 0x50]
and eax, 0x80
je 0x405698
cmp word [esi + 0x48], 0x62
jne 0x405698
push 0x14
call fcn.0040b957
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 0x405618
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]
mov eax, dword [esi + 8]
cmp ecx, eax
je 0x405924
cmp word [ecx], 0x5c
jne 0x405687
lea ebx, [ecx + 2]
mov edx, ecx
cmp ebx, eax
je 0x405685
mov eax, dword [esi + 0x50]
test al, 8
jne 0x40565a
movzx eax, word [ebx]
mov edi, ecx
mov edx, eax
cmp eax, 0x28
je 0x405671
cmp edx, 0x29
je 0x405671
mov eax, dword [esi + 0x50]
mov edx, ecx
test al, 0x10
jne 0x405685
movzx eax, word [ebx]
mov edi, ecx
mov ebx, eax
cmp eax, 0x7b
je 0x405671
mov edi, edx
cmp ebx, 0x7d
jne 0x405685
lea ecx, [edi + 2]
lea eax, [ecx + 2]
mov ecx, esi
mov dword [esi], eax
call fcn.004045a0
jmp 0x40546d
mov ecx, edx
lea eax, [ecx + 2]
mov ecx, esi
mov dword [esi], eax
call fcn.004045a0
jmp 0x40546d
test eax, eax
je 0x405704
cmp word [esi + 0x48], 0x42
jne 0x405704
push 0x14
call fcn.0040b957
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 0x4056f0
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 0x4058dd
mov ecx, esi
call fcn.00406580
jmp 0x405466
cmp ecx, 0x5b
jne 0x4057a2
mov ecx, dword [esi]
mov eax, dword [esi + 8]
cmp ecx, eax
je 0x405760
cmp word [ecx], 0x5c
jne 0x40575d
add ecx, 2
cmp ecx, eax
je 0x40575d
mov edx, dword [esi + 0x50]
test dl, 8
jne 0x405746
movzx eax, word [ecx]
mov edi, eax
cmp eax, 0x28
je 0x40575a
cmp edi, 0x29
je 0x40575a
test dl, 0x10
jne 0x40575d
movzx eax, word [ecx]
mov ecx, eax
cmp eax, 0x7b
je 0x40575a
cmp ecx, 0x7d
jne 0x40575d
add dword [esi], 2
add dword [esi], 2
mov ecx, esi
call fcn.004045a0
mov ecx, esi
call fcn.00406430
cmp dword [esi + 0x4c], 0x5d
jne 0x405973
mov ecx, dword [esi]
mov eax, dword [esi + 8]
cmp ecx, eax
je 0x40545f
cmp word [ecx], 0x5c
jne 0x40545c
add ecx, 2
cmp ecx, eax
je 0x40545c
mov edx, dword [esi + 0x50]
jmp 0x405431
cmp ecx, 0x28
jne 0x405867
mov ecx, dword [esi]
mov eax, dword [esi + 8]
cmp ecx, eax
je 0x4057f2
cmp word [ecx], 0x5c
jne 0x4057ef
add ecx, 2
cmp ecx, eax
je 0x4057ef
mov edx, dword [esi + 0x50]
test dl, 8
jne 0x4057d8
movzx eax, word [ecx]
mov edi, eax
cmp eax, 0x28
je 0x4057ec
cmp edi, 0x29
je 0x4057ec
test dl, 0x10
jne 0x4057ef
movzx eax, word [ecx]
mov ecx, eax
cmp eax, 0x7b
je 0x4057ec
cmp ecx, 0x7d
jne 0x4057ef
add dword [esi], 2
add dword [esi], 2
mov ecx, esi
call fcn.004045a0
mov ecx, esi
call fcn.004066d0
cmp dword [esi + 0x4c], 0x29
mov bl, al
jne 0x40596c
mov ecx, dword [esi]
mov edx, dword [esi + 8]
cmp ecx, edx
je 0x405853
cmp word [ecx], 0x5c
jne 0x405850
add ecx, 2
cmp ecx, edx
je 0x405850
mov edx, dword [esi + 0x50]
test dl, 8
jne 0x405839
movzx eax, word [ecx]
mov edi, eax
cmp eax, 0x28
je 0x40584d
cmp edi, 0x29
je 0x40584d
test dl, 0x10
jne 0x405850
movzx eax, word [ecx]
mov ecx, eax
cmp eax, 0x7b
je 0x40584d
cmp ecx, 0x7d
jne 0x405850
add dword [esi], 2
add dword [esi], 2
mov ecx, esi
call fcn.004045a0
test bl, bl
je 0x40546d
jmp 0x405466
cmp ecx, 0x5e
jne 0x40587e
push 0x14
call fcn.0040b957
mov ecx, eax
mov dword [ecx + 4], 2
jmp 0x405897
cmp ecx, 0x24
jne 0x405930
push 0x14
call fcn.0040b957
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 0x4058d4
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 + 8]
mov ecx, dword [esi]
cmp ecx, eax
je 0x405924
cmp word [ecx], 0x5c
jne 0x405921
add ecx, 2
cmp ecx, eax
je 0x405921
mov edx, dword [esi + 0x50]
test dl, 8
jne 0x40590a
movzx eax, word [ecx]
mov edi, eax
cmp eax, 0x28
je 0x40591e
cmp edi, 0x29
je 0x40591e
test dl, 0x10
jne 0x405921
movzx eax, word [ecx]
mov ecx, eax
cmp eax, 0x7b
je 0x40591e
cmp ecx, 0x7d
jne 0x405921
add dword [esi], 2
add dword [esi], 2
mov ecx, esi
call fcn.004045a0
jmp 0x40546d
cmp ecx, 0x2a
je 0x40595e
cmp ecx, 0x2b
je 0x40595e
cmp ecx, 0x3f
je 0x40595e
cmp ecx, 0x7b
je 0x40595e
cmp ecx, 0x7d
jne 0x4053f8
test dword [esi + 0x50], 0x10000000
lea edi, [esi + 0x50]
je 0x405965
jmp 0x40540c
push 0xa
call fcn.00404590
push 6
call fcn.00404590
push 5
call fcn.00404590
push 4
call fcn.00404590
int3