Function at 0x4c8154
Capabilities:
Parse credit card information

Disassembly:
push ebp
mov ebp, esp
add esp, 0xffffff9c
push ebx
push esi
push edi
xor ecx, ecx
mov dword [ebp - 0x60], ecx
mov dword [ebp - 0x64], ecx
mov dword [ebp - 0x5c], ecx
mov dword [ebp - 0x58], ecx
mov dword [ebp - 0x54], ecx
mov dword [ebp - 0x50], ecx
mov dword [ebp - 0x4c], ecx
mov dword [ebp - 0x48], ecx
mov dword [ebp - 0xc], edx
mov dword [ebp - 4], eax
xor eax, eax
push ebp
push 0x143ec16
push dword fs:[eax]
mov dword fs:[eax], esp
xor esi, esi
mov eax, dword [ebp - 0xc]
xor edx, edx
mov dword [eax], edx
mov eax, dword [ebp - 4]
inc dword [eax + 0xe0]
mov eax, dword [ebp - 4]
mov eax, dword [eax + 0xe0]
mov edx, eax
dec edx
movzx edx, byte [edx]
cmp edx, 0x2e
jg 0x4c81f1
je 0x4c82b6
cmp edx, 0x28
jg 0x4c81d9
je 0x4c8651
sub edx, 1
jb 0x4c8795
sub edx, 0x23
je 0x4c826e
jmp 0x4c8a2a
sub edx, 0x29
je 0x4c8795
dec edx
sub edx, 2
jb 0x4c87a6
jmp 0x4c8a2a
cmp edx, 0x5c
jg 0x4c8213
je 0x4c87b7
sub edx, 0x3f
je 0x4c87a6
sub edx, 0x1c
je 0x4c82fc
jmp 0x4c8a2a
sub edx, 0x5e
je 0x4c8226
sub edx, 0x1e
je 0x4c8795
jmp 0x4c8a2a
mov eax, dword [ebp - 4]
test byte [eax + 0x110], 0x10
je 0x4c824a
mov eax, dword [ebp - 4]
cmp dword [eax + 0x128], 0
jne 0x4c825c
mov eax, dword [ebp - 4]
cmp byte [eax + 0x12c], 0
jne 0x4c825c
mov dl, 1
mov eax, dword [ebp - 4]
call fcn.004c6e70
mov dword [ebp - 8], eax
jmp 0x4c8bf8
mov dl, 0x22
mov eax, dword [ebp - 4]
call fcn.004c6e70
mov dword [ebp - 8], eax
jmp 0x4c8bf8
mov eax, dword [ebp - 4]
test byte [eax + 0x110], 0x10
je 0x4c8292
mov eax, dword [ebp - 4]
cmp dword [eax + 0x128], 0
jne 0x4c82a4
mov eax, dword [ebp - 4]
cmp byte [eax + 0x12c], 0
jne 0x4c82a4
mov dl, 2
mov eax, dword [ebp - 4]
call fcn.004c6e70
mov dword [ebp - 8], eax
jmp 0x4c8bf8
mov dl, 0x23
mov eax, dword [ebp - 4]
call fcn.004c6e70
mov dword [ebp - 8], eax
jmp 0x4c8bf8
mov eax, dword [ebp - 4]
test byte [eax + 0x110], 4
je 0x4c82e4
mov dl, 3
mov eax, dword [ebp - 4]
call fcn.004c6e70
mov dword [ebp - 8], eax
mov eax, dword [ebp - 0xc]
mov eax, dword [eax]
or eax, 1
or eax, 2
mov edx, dword [ebp - 0xc]
mov dword [edx], eax
jmp 0x4c8bf8
mov dl, 0x24
mov eax, dword [ebp - 4]
call fcn.004c6e70
mov dword [ebp - 8], eax
mov eax, dword [ebp - 0xc]
or dword [eax], 1
jmp 0x4c8bf8
cmp byte [eax], 0x5e
jne 0x4c8332
mov eax, dword [ebp - 4]
test byte [eax + 0x110], 1
je 0x4c831b
push ebp
mov al, 0x16
call fcn.004c7bc8
pop ecx
mov dword [ebp - 8], eax
jmp 0x4c8327
push ebp
mov al, 5
call fcn.004c7bc8
pop ecx
mov dword [ebp - 8], eax
mov eax, dword [ebp - 4]
inc dword [eax + 0xe0]
jmp 0x4c8358
mov eax, dword [ebp - 4]
test byte [eax + 0x110], 1
je 0x4c834c
push ebp
mov al, 0x15
call fcn.004c7bc8
pop ecx
mov dword [ebp - 8], eax
jmp 0x4c8358
push ebp
mov al, 4
call fcn.004c7bc8
pop ecx
mov dword [ebp - 8], eax
mov byte [ebp - 0x3f], 0
mov eax, dword [ebp - 4]
mov eax, dword [eax + 0xe0]
mov al, byte [eax]
cmp al, 0x5d
jne 0x4c85f4
push ebp
call fcn.004c7fb4
pop ecx
mov eax, dword [ebp - 4]
inc dword [eax + 0xe0]
jmp 0x4c85f4
mov eax, dword [ebp - 4]
mov eax, dword [eax + 0xe0]
mov dl, byte [eax]
cmp dl, 0x2d
jne 0x4c854e
mov ecx, eax
inc ecx
cmp byte [ecx], 0
je 0x4c854e
inc eax
cmp byte [eax], 0x5d
je 0x4c854e
cmp byte [ebp - 0x3f], 0
je 0x4c854e
mov eax, dword [ebp - 4]
inc dword [eax + 0xe0]
mov eax, dword [ebp - 4]
mov eax, dword [eax + 0xe0]
mov bl, byte [eax]
cmp bl, 0x5c
jne 0x4c840e
inc eax
mov al, byte [eax]
add al, 0xc0
cmp al, 0x37
ja 0x4c83e4
and eax, 0x7f
bt dword [0x143ec28], eax
jae 0x4c83f4
push ebp
mov al, 0x2d
call fcn.004c7ccc
pop ecx
jmp 0x4c85f4
mov eax, dword [ebp - 4]
inc dword [eax + 0xe0]
push ebp
mov eax, dword [ebp - 4]
add eax, 0xe0
call fcn.004c8004
pop ecx
mov ebx, eax
mov eax, dword [ebp - 4]
test byte [eax + 0x110], 2
je 0x4c845e
lea eax, [ebp - 0x48]
mov dl, byte [ebp - 0x40]
call fcn.00404330
mov eax, dword [ebp - 0x48]
mov edx, 0x143ec38
call fcn.00404564
jne 0x4c845e
lea eax, [ebp - 0x4c]
mov edx, ebx
call fcn.00404330
mov eax, dword [ebp - 0x4c]
mov edx, 0x143ec44
call fcn.00404564
jne 0x4c845e
push ebp
mov eax, 0x143ec50
call fcn.004c7fd0
pop ecx
jmp 0x4c8540
mov eax, dword [ebp - 4]
test byte [eax + 0x110], 2
je 0x4c84ae
lea eax, [ebp - 0x50]
mov dl, byte [ebp - 0x40]
call fcn.00404330
mov eax, dword [ebp - 0x50]
mov edx, 0x143ec9c
call fcn.00404564
jne 0x4c84ae
lea eax, [ebp - 0x54]
mov edx, ebx
call fcn.00404330
mov eax, dword [ebp - 0x54]
mov edx, 0x143eca8
call fcn.00404564
jne 0x4c84ae
push ebp
mov eax, 0x143ecb4
call fcn.004c7fd0
pop ecx
jmp 0x4c8540
mov eax, dword [ebp - 4]
test byte [eax + 0x110], 2
je 0x4c8507
lea eax, [ebp - 0x58]
mov dl, byte [ebp - 0x40]
call fcn.00404330
mov eax, dword [ebp - 0x58]
mov edx, 0x143ec38
call fcn.00404564
jne 0x4c8507
lea eax, [ebp - 0x5c]
mov edx, ebx
call fcn.00404330
mov eax, dword [ebp - 0x5c]
mov edx, 0x143eca8
call fcn.00404564
jne 0x4c8507
push ebp
mov eax, 0x143ec50
call fcn.004c7fd0
pop ecx
push ebp
mov eax, 0x143ecb4
call fcn.004c7fd0
pop ecx
jmp 0x4c8540
cmp bl, byte [ebp - 0x40]
jae 0x4c851d
mov edx, 0x6d
mov eax, dword [ebp - 4]
mov ecx, dword [eax]
call dword [ecx]
jmp 0x4c8bfb
inc byte [ebp - 0x40]
push ebp
mov eax, ebx
call fcn.004c7ccc
pop ecx
cmp bl, byte [ebp - 0x40]
jbe 0x4c8540
push ebp
mov al, byte [ebp - 0x40]
call fcn.004c7ccc
pop ecx
inc byte [ebp - 0x40]
cmp bl, byte [ebp - 0x40]
ja 0x4c852e
mov eax, dword [ebp - 4]
inc dword [eax + 0xe0]
jmp 0x4c85f4
cmp dl, 0x5c
jne 0x4c85e2
mov eax, dword [ebp - 4]
inc dword [eax + 0xe0]
mov eax, dword [ebp - 4]
mov eax, dword [eax + 0xe0]
cmp byte [eax], 0
jne 0x4c857f
mov edx, 0x6e
mov eax, dword [ebp - 4]
mov ecx, dword [eax]
call dword [ecx]
jmp 0x4c8bfb
mov eax, dword [ebp - 4]
mov eax, dword [eax + 0xe0]
mov al, byte [eax]
sub al, 0x64
je 0x4c8598
sub al, 0xf
je 0x4c85b8
sub al, 4
je 0x4c85a6
jmp 0x4c85ca
push ebp
mov eax, 0x143ed00
call fcn.004c7fd0
pop ecx
jmp 0x4c85eb
push ebp
mov eax, dword [ebp - 4]
mov eax, dword [eax + 0x11c]
call fcn.004c7fd0
pop ecx
jmp 0x4c85eb
push ebp
mov eax, dword [ebp - 4]
mov eax, dword [eax + 0x118]
call fcn.004c7fd0
pop ecx
jmp 0x4c85eb
push ebp
push ebp
mov eax, dword [ebp - 4]
add eax, 0xe0
call fcn.004c8004
pop ecx
call fcn.004c7fb4
pop ecx
jmp 0x4c85eb
push ebp
mov eax, edx
call fcn.004c7fb4
pop ecx
mov eax, dword [ebp - 4]
inc dword [eax + 0xe0]
mov eax, dword [ebp - 4]
mov eax, dword [eax + 0xe0]
mov al, byte [eax]
test al, al
je 0x4c860b
cmp al, 0x5d
jne 0x4c8384
push ebp
xor eax, eax
call fcn.004c7ccc
pop ecx
mov eax, dword [ebp - 4]
mov eax, dword [eax + 0xe0]
cmp byte [eax], 0x5d
je 0x4c8633
mov edx, 0x71
mov eax, dword [ebp - 4]
mov ecx, dword [eax]
call dword [ecx]
jmp 0x4c8bfb
mov eax, dword [ebp - 4]
inc dword [eax + 0xe0]
mov eax, dword [ebp - 0xc]
mov eax, dword [eax]
or eax, 1
or eax, 2
mov edx, dword [ebp - 0xc]
mov dword [edx], eax
jmp 0x4c8bf8
cmp byte [eax], 0x3f
jne 0x4c8765
inc eax
cmp byte [eax], 0x23
jne 0x4c86c2
mov eax, dword [ebp - 4]
add dword [eax + 0xe0], 2
jmp 0x4c8675
mov eax, dword [ebp - 4]
inc dword [eax + 0xe0]
mov eax, dword [ebp - 4]
mov eax, dword [eax + 0xe0]
mov al, byte [eax]
test al, al
je 0x4c8688
cmp al, 0x29
jne 0x4c866c
mov eax, dword [ebp - 4]
mov eax, dword [eax + 0xe0]
cmp byte [eax], 0x29
je 0x4c86a7
mov edx, 0x7d
mov eax, dword [ebp - 4]
mov ecx, dword [eax]
call dword [ecx]
jmp 0x4c8bfb
mov eax, dword [ebp - 4]
inc dword [eax + 0xe0]
mov dl, 0x13
mov eax, dword [ebp - 4]
call fcn.004c6e70
mov dword [ebp - 8], eax
jmp 0x4c8bf8
mov eax, dword [ebp - 4]
inc dword [eax + 0xe0]
mov eax, dword [ebp - 4]
mov ebx, dword [eax + 0xe0]
jmp 0x4c86df
mov eax, dword [ebp - 4]
inc dword [eax + 0xe0]
mov eax, dword [ebp - 4]
mov eax, dword [eax + 0xe0]
mov al, byte [eax]
test al, al
je 0x4c86f2
cmp al, 0x29
jne 0x4c86d6
mov eax, dword [ebp - 4]
mov edi, dword [eax + 0xe0]
cmp byte [edi], 0x29
jne 0x4c8739
lea eax, [ebp - 0x60]
push eax
lea eax, [ebp - 0x64]
mov edx, ebx
call fcn.00404350
mov eax, dword [ebp - 0x64]
mov ecx, edi
sub ecx, ebx
mov edx, 1
call fcn.0040467c
mov edx, dword [ebp - 0x60]
mov eax, dword [ebp - 4]
lea ecx, [eax + 0x110]
mov eax, dword [ebp - 4]
mov eax, dword [eax]
call fcn.004c6a54
test al, al
jne 0x4c874a
mov edx, 0x7f
mov eax, dword [ebp - 4]
mov ecx, dword [eax]
call dword [ecx]
jmp 0x4c8bfb
mov eax, dword [ebp - 4]
inc dword [eax + 0xe0]
mov dl, 0x13
mov eax, dword [ebp - 4]
call fcn.004c6e70
mov dword [ebp - 8], eax
jmp 0x4c8bf8
lea ecx, [ebp - 0x44]
mov edx, 1
mov eax, dword [ebp - 4]
call fcn.004c71f8
mov dword [ebp - 8], eax
cmp dword [ebp - 8], 0
jne 0x4c8785
xor esi, esi
jmp 0x4c8bfb
mov eax, dword [ebp - 0x44]
and eax, 5
mov edx, dword [ebp - 0xc]
or dword [edx], eax
jmp 0x4c8bf8
mov edx, 0x72
mov eax, dword [ebp - 4]
mov ecx, dword [eax]
call dword [ecx]
jmp 0x4c8bfb
mov edx, 0x73
mov eax, dword [ebp - 4]
mov ecx, dword [eax]
call dword [ecx]
jmp 0x4c8bfb
cmp byte [eax], 0
jne 0x4c87cd
mov edx, 0x74
mov eax, dword [ebp - 4]
mov ecx, dword [eax]
call dword [ecx]
jmp 0x4c8bfb
mov eax, dword [ebp - 4]
mov eax, dword [eax + 0xe0]
movzx eax, byte [eax]
cmp eax, 0x57
jg 0x4c8818
je 0x4c897f
cmp eax, 0x42
jg 0x4c8801
je 0x4c8857
add eax, 0xffffffcf
sub eax, 9
jb 0x4c89b6
sub eax, 7
je 0x4c8869
jmp 0x4c8a06
sub eax, 0x44
je 0x4c88af
sub eax, 0xf
je 0x4c890b
jmp 0x4c8a06
cmp eax, 0x64
jg 0x4c882e
je 0x4c888d
sub eax, 0x5a
je 0x4c887b
sub eax, 8
je 0x4c8845
jmp 0x4c8a06
sub eax, 0x73
je 0x4c88d1
sub eax, 4
je 0x4c8945
jmp 0x4c8a06
mov dl, 0x25
mov eax, dword [ebp - 4]
call fcn.004c6e70
mov dword [ebp - 8], eax
jmp 0x4c8a1c
mov dl, 0x26
mov eax, dword [ebp - 4]
call fcn.004c6e70
mov dword [ebp - 8], eax
jmp 0x4c8a1c
mov dl, 1
mov eax, dword [ebp - 4]
call fcn.004c6e70
mov dword [ebp - 8], eax
jmp 0x4c8a1c
mov dl, 2
mov eax, dword [ebp - 4]
call fcn.004c6e70
mov dword [ebp - 8], eax
jmp 0x4c8a1c
mov dl, 0xc
mov eax, dword [ebp - 4]
call fcn.004c6e70
mov dword [ebp - 8], eax
mov eax, dword [ebp - 0xc]
mov eax, dword [eax]
or eax, 1
or eax, 2
mov edx, dword [ebp - 0xc]
mov dword [edx], eax
jmp 0x4c8a1c
mov dl, 0xd
mov eax, dword [ebp - 4]
call fcn.004c6e70
mov dword [ebp - 8], eax
mov eax, dword [ebp - 0xc]
mov eax, dword [eax]
or eax, 1
or eax, 2
mov edx, dword [ebp - 0xc]
mov dword [edx], eax
jmp 0x4c8a1c
push ebp
mov al, 4
call fcn.004c7bc8
pop ecx
mov dword [ebp - 8], eax
push ebp
mov eax, dword [ebp - 4]
mov eax, dword [eax + 0x118]
call fcn.004c7fd0
pop ecx
push ebp
xor eax, eax
call fcn.004c7ccc
pop ecx
mov eax, dword [ebp - 0xc]
mov eax, dword [eax]
or eax, 1
or eax, 2
mov edx, dword [ebp - 0xc]
mov dword [edx], eax
jmp 0x4c8a1c
push ebp
mov al, 5
call fcn.004c7bc8
pop ecx
mov dword [ebp - 8], eax
push ebp
mov eax, dword [ebp - 4]
mov eax, dword [eax + 0x118]
call fcn.004c7fd0
pop ecx
push ebp
xor eax, eax
call fcn.004c7ccc
pop ecx
mov eax, dword [ebp - 0xc]
mov eax, dword [eax]
or eax, 1
or eax, 2
mov edx, dword [ebp - 0xc]
mov dword [edx], eax
jmp 0x4c8a1c
push ebp
mov al, 4
call fcn.004c7bc8
jnp 0x4c893d
invalid
call [ecx - 0x77]
inc ebp
clc
push ebp
mov eax, dword [ebp - 4]
mov eax, dword [eax + 0x11c]
call fcn.004c7fd0
pop ecx
push ebp
xor eax, eax
call fcn.004c7ccc
pop ecx
mov eax, dword [ebp - 0xc]
mov eax, dword [eax]
or eax, 1
or eax, 2
mov edx, dword [ebp - 0xc]
mov dword [edx], eax
jmp 0x4c8a1c
add byte [eax], al
invalid
push ebp
mov al, 5
call fcn.004c7bc8
pop ecx
mov dword [ebp - 8], eax
mov eax, dword [ebp - 4]
test byte [eax + 0x110], 1
je 0x4c89d1
mov dl, 0x1d
mov eax, dword [ebp - 4]
call fcn.004c6e70
mov dword [ebp - 8], eax
jmp 0x4c89de
mov dl, 0x1c
mov eax, dword [ebp - 4]
call fcn.004c6e70
mov dword [ebp - 8], eax
mov eax, dword [ebp - 4]
mov eax, dword [eax + 0xe0]
mov dl, byte [eax]
sub dl, 0x30
mov eax, dword [ebp - 4]
call fcn.004c6eac
mov eax, dword [ebp - 0xc]
mov eax, dword [eax]
or eax, 1
or eax, 2
mov edx, dword [ebp - 0xc]
mov dword [edx], eax
jmp 0x4c8a1c
push ebp
push ebp
mov eax, dword [ebp - 4]
add eax, 0xe0
call fcn.004c8004
pop ecx
call fcn.004c7b10
pop ecx
mov eax, dword [ebp - 4]
dec dword [eax + 0xe0]
mov edx, dword [ebp - 4]
test byte [edx + 0x110], 0x20
je 0x4c8ae8
mov eax, dword [ebp - 4]
mov eax, dword [eax + 0xe0]
mov al, byte [eax]
cmp al, 0x23
je 0x4c8a64
add al, 0xf7
sub al, 2
jb 0x4c8a64
sub al, 2
je 0x4c8a64
sub al, 0x13
jne 0x4c8ae8
mov eax, dword [ebp - 4]
mov eax, dword [eax + 0xe0]
cmp byte [eax], 0x23
jne 0x4c8abd
jmp 0x4c8a7d
mov eax, dword [ebp - 4]
inc dword [eax + 0xe0]
mov eax, dword [ebp - 4]
mov eax, dword [eax + 0xe0]
mov al, byte [eax]
test al, al
je 0x4c8a9f
cmp al, 0xd
je 0x4c8a9f
cmp al, 0xa
jne 0x4c8a74
jmp 0x4c8a9f
mov eax, dword [ebp - 4]
inc dword [eax + 0xe0]
mov eax, dword [ebp - 4]
mov eax, dword [eax + 0xe0]
mov al, byte [eax]
cmp al, 0xd
je 0x4c8a96
cmp al, 0xa
je 0x4c8a96
jmp 0x4c8ad6
mov eax, dword [ebp - 4]
inc dword [eax + 0xe0]
mov eax, dword [ebp - 4]
mov eax, dword [eax + 0xe0]
mov al, byte [eax]
add al, 0xf7
sub al, 2
jb 0x4c8ab4
sub al, 2
je 0x4c8ab4
sub al, 0x13
je 0x4c8ab4
mov dl, 0x13
mov eax, dword [ebp - 4]
call fcn.004c6e70
mov dword [ebp - 8], eax
jmp 0x4c8bf8
mov edx, 0x148c1f0
mov eax, dword [ebp - 4]
mov eax, dword [eax + 0xe0]
call fcn.004c6f30
mov ebx, eax
test ebx, ebx
jg 0x4c8b30
mov eax, dword [ebp - 4]
mov ebx, dword [eax + 0xe0]
cmp byte [ebx], 0x7b
je 0x4c8b20
mov edx, 0x77
mov eax, dword [ebp - 4]
mov ecx, dword [eax]
call dword [ecx]
jmp 0x4c8bfb
mov edx, 0x148c1f0
mov eax, ebx
inc eax
call fcn.004c6f30
inc eax
mov ebx, eax
mov eax, dword [ebp - 4]
mov eax, dword [eax + 0xe0]
add eax, ebx
mov al, byte [eax]
cmp ebx, 1
jle 0x4c8b53
cmp al, 0x2a
je 0x4c8b52
cmp al, 0x2b
je 0x4c8b52
cmp al, 0x3f
je 0x4c8b52
cmp al, 0x7b
jne 0x4c8b53
dec ebx
mov eax, dword [ebp - 0xc]
or dword [eax], 1
cmp ebx, 1
jne 0x4c8b64
mov eax, dword [ebp - 0xc]
or dword [eax], 2
mov eax, dword [ebp - 4]
test byte [eax + 0x110], 1
je 0x4c8b7f
mov dl, 0x14
mov eax, dword [ebp - 4]
call fcn.004c6e70
mov dword [ebp - 8], eax
jmp 0x4c8bd0
mov dl, 8
mov eax, dword [ebp - 4]
call fcn.004c6e70
mov dword [ebp - 8], eax
jmp 0x4c8bd0
mov eax, dword [ebp - 4]
test byte [eax + 0x110], 0x20
je 0x4c8bb3
mov eax, dword [ebp - 4]
mov eax, dword [eax + 0xe0]
mov al, byte [eax]
add al, 0xf7
sub al, 2
jb 0x4c8bc6
sub al, 2
je 0x4c8bc6
sub al, 0x13
je 0x4c8bc6
mov eax, dword [ebp - 4]
mov eax, dword [eax + 0xe0]
mov dl, byte [eax]
mov eax, dword [ebp - 4]
call fcn.004c6eac
mov eax, dword [ebp - 4]
inc dword [eax + 0xe0]
dec ebx
test ebx, ebx
jle 0x4c8bee
mov eax, dword [ebp - 4]
test byte [eax + 0x110], 0x20
je 0x4c8b8e
mov eax, dword [ebp - 4]
mov eax, dword [eax + 0xe0]
cmp byte [eax], 0x23
jne 0x4c8b8e
xor edx, edx
mov eax, dword [ebp - 4]
call fcn.004c6eac