Function at 0x4222b0
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 0x42236d
cmp ecx, 0x7c
je 0x42236d
cmp ecx, 0x29
jne 0x422374
cmp dword [esi + 0x10], 0
jne 0x42236d
cmp ecx, ecx
jne 0x422374
test dword [esi + 0x50], 0x10000000
je 0x422822
lea edi, [esi + 0x50]
cmp ecx, 0x5d
jne 0x42230b
test dword [edi], 0x10000000
je 0x422829
movzx eax, byte [esi + 0x48]
lea ecx, [esi + 0x24]
push eax
call fcn.004238d0
mov eax, dword [esi]
mov ecx, dword [esi + 8]
cmp eax, ecx
je 0x422351
cmp byte [eax], 0x5c
jne 0x42234f
inc eax
cmp eax, ecx
je 0x42234f
mov edx, dword [edi]
test dl, 8
jne 0x42233e
mov cl, byte [eax]
cmp cl, 0x28
je 0x42234d
cmp cl, 0x29
je 0x42234d
test dl, 0x10
jne 0x42234f
mov al, byte [eax]
cmp al, 0x7b
je 0x42234d
cmp al, 0x7d
jne 0x42234f
inc dword [esi]
inc dword [esi]
mov ecx, esi
call fcn.00420f20
mov ecx, esi
call fcn.004236b0
mov ecx, dword [esi + 0x4c]
mov al, 1
cmp ecx, 0xffffffff
jne 0x4222c6
pop edi
pop esi
pop ebx
add esp, 8
ret
cmp ecx, 0x2e
jne 0x422431
push 0x14
call fcn.0046ef4b
mov ecx, eax
add esp, 4
mov dword [esp + 0x10], ecx
mov dword [ecx + 0x10], 0
mov dword [ecx], 0x54005c
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 0x4223cb
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 0x422351
cmp byte [eax], 0x5c
jne 0x422429
lea edi, [eax + 1]
mov ecx, eax
cmp edi, edx
je 0x422427
mov ebx, dword [esi + 0x50]
test bl, 8
jne 0x422407
mov cl, byte [edi]
mov edx, eax
cmp cl, 0x28
je 0x42241c
cmp cl, 0x29
je 0x42241c
mov ecx, eax
test bl, 0x10
jne 0x422427
mov bl, byte [edi]
mov edx, eax
cmp bl, 0x7b
je 0x42241c
mov edx, ecx
cmp bl, 0x7d
jne 0x422427
lea eax, [edx + 1]
inc eax
mov dword [esi], eax
jmp 0x422351
mov eax, ecx
inc eax
mov dword [esi], eax
jmp 0x422351
cmp ecx, 0x5c
jne 0x4225e0
mov eax, dword [esi]
mov edx, dword [esi + 8]
cmp eax, edx
je 0x422487
cmp byte [eax], cl
jne 0x422484
lea edi, [eax + 1]
mov ecx, eax
cmp edi, edx
je 0x422482
mov ebx, dword [esi + 0x50]
test bl, 8
jne 0x422468
mov cl, byte [edi]
mov edx, eax
cmp cl, 0x28
je 0x42247d
cmp cl, 0x29
je 0x42247d
mov ecx, eax
test bl, 0x10
jne 0x422482
mov bl, byte [edi]
mov edx, eax
cmp bl, 0x7b
je 0x42247d
mov edx, ecx
cmp bl, 0x7d
jne 0x422482
lea eax, [edx + 1]
jmp 0x422484
mov eax, ecx
inc eax
mov dword [esi], eax
mov ecx, esi
call fcn.00420f20
mov eax, dword [esi + 0x50]
and eax, 0x80
je 0x422568
cmp byte [esi + 0x48], 0x62
jne 0x422568
push 0x14
call fcn.0046ef4b
mov ecx, eax
add esp, 4
mov dword [esp + 0x10], ecx
mov dword [ecx + 0x10], 0
mov dword [ecx], 0x54005c
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 0x4224f4
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 0x4227da
cmp byte [eax], 0x5c
jne 0x422559
lea edi, [eax + 1]
mov ecx, eax
cmp edi, edx
je 0x422557
mov ebx, dword [esi + 0x50]
test bl, 8
jne 0x422530
mov cl, byte [edi]
mov edx, eax
cmp cl, 0x28
je 0x422545
cmp cl, 0x29
je 0x422545
mov ecx, eax
test bl, 0x10
jne 0x422557
mov bl, byte [edi]
mov edx, eax
cmp bl, 0x7b
je 0x422545
mov edx, ecx
cmp bl, 0x7d
jne 0x422557
lea eax, [edx + 1]
mov ecx, esi
inc eax
mov dword [esi], eax
call fcn.00420f20
jmp 0x42235f
mov eax, ecx
inc eax
mov ecx, esi
mov dword [esi], eax
call fcn.00420f20
jmp 0x42235f
test eax, eax
je 0x4225d4
cmp byte [esi + 0x48], 0x42
jne 0x4225d4
push 0x14
call fcn.0046ef4b
mov ecx, eax
add esp, 4
mov dword [esp + 0x10], ecx
mov dword [ecx + 0x10], 0
mov dword [ecx], 0x54005c
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 0x4225c0
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 0x4227a0
mov ecx, esi
call fcn.00423390
jmp 0x422358
cmp ecx, 0x5b
jne 0x42267e
mov eax, dword [esi]
mov ecx, dword [esi + 8]
cmp eax, ecx
je 0x422623
cmp byte [eax], 0x5c
jne 0x422621
inc eax
cmp eax, ecx
je 0x422621
mov edx, dword [esi + 0x50]
test dl, 8
jne 0x422610
mov cl, byte [eax]
cmp cl, 0x28
je 0x42261f
cmp cl, 0x29
je 0x42261f
test dl, 0x10
jne 0x422621
mov al, byte [eax]
cmp al, 0x7b
je 0x42261f
cmp al, 0x7d
jne 0x422621
inc dword [esi]
inc dword [esi]
mov ecx, esi
call fcn.00420f20
mov ecx, esi
call fcn.00423260
cmp dword [esi + 0x4c], 0x5d
jne 0x422829
mov eax, dword [esi]
mov ecx, dword [esi + 8]
cmp eax, ecx
je 0x422351
cmp byte [eax], 0x5c
jne 0x42234f
inc eax
cmp eax, ecx
je 0x42234f
mov ecx, dword [esi + 0x50]
test cl, 8
jne 0x422676
mov dl, byte [eax]
cmp dl, 0x28
je 0x42234d
cmp dl, 0x29
je 0x42234d
test cl, 0x10
jmp 0x422341
cmp ecx, 0x28
jne 0x422729
mov eax, dword [esi]
mov ecx, dword [esi + 8]
cmp eax, ecx
je 0x4226c1
cmp byte [eax], 0x5c
jne 0x4226bf
inc eax
cmp eax, ecx
je 0x4226bf
mov ecx, dword [esi + 0x50]
test cl, 8
jne 0x4226ae
mov dl, byte [eax]
cmp dl, 0x28
je 0x4226bd
cmp dl, 0x29
je 0x4226bd
test cl, 0x10
jne 0x4226bf
mov al, byte [eax]
cmp al, 0x7b
je 0x4226bd
cmp al, 0x7d
jne 0x4226bf
inc dword [esi]
inc dword [esi]
mov ecx, esi
call fcn.00420f20
mov ecx, esi
call fcn.004234d0
cmp dword [esi + 0x4c], 0x29
mov bl, al
jne 0x422822
mov eax, dword [esi]
mov ecx, dword [esi + 8]
cmp eax, ecx
je 0x422715
cmp byte [eax], 0x5c
jne 0x422713
inc eax
cmp eax, ecx
je 0x422713
mov ecx, dword [esi + 0x50]
test cl, 8
jne 0x422702
mov dl, byte [eax]
cmp dl, 0x28
je 0x422711
cmp dl, 0x29
je 0x422711
test cl, 0x10
jne 0x422713
mov al, byte [eax]
cmp al, 0x7b
je 0x422711
cmp al, 0x7d
jne 0x422713
inc dword [esi]
inc dword [esi]
mov ecx, esi
call fcn.00420f20
test bl, bl
je 0x42235f
jmp 0x422358
cmp ecx, 0x5e
jne 0x422740
push 0x14
call fcn.0046ef4b
mov ecx, eax
mov dword [ecx + 4], 2
jmp 0x422759
cmp ecx, 0x24
jne 0x4227e6
push 0x14
call fcn.0046ef4b
mov ecx, eax
mov dword [ecx + 4], 3
mov dword [ecx], 0x54005c
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 0x422797
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 0x4227da
cmp byte [eax], 0x5c
jne 0x4227d8
inc eax
cmp eax, ecx
je 0x4227d8
mov ecx, dword [esi + 0x50]
test cl, 8
jne 0x4227c7
mov dl, byte [eax]
cmp dl, 0x28
je 0x4227d6
cmp dl, 0x29
je 0x4227d6
test cl, 0x10
jne 0x4227d8
mov al, byte [eax]
cmp al, 0x7b
je 0x4227d6
cmp al, 0x7d
jne 0x4227d8
inc dword [esi]
inc dword [esi]
mov ecx, esi
call fcn.00420f20
jmp 0x42235f
cmp ecx, 0x2a
je 0x422814
cmp ecx, 0x2b
je 0x422814
cmp ecx, 0x3f
je 0x422814
cmp ecx, 0x7b
je 0x422814
cmp ecx, 0x7d
jne 0x4222f7
test dword [esi + 0x50], 0x10000000
lea edi, [esi + 0x50]
je 0x42281b
jmp 0x42230b
push 0xa
call fcn.00420f10
push 6
call fcn.00420f10
push 5
call fcn.00420f10
push 4
call fcn.00420f10
int3