Function at 0x1999228
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 0x12b98ea
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 0x19992c5
je 0x199938a
cmp edx, 0x28
jg 0x19992ad
je 0x1999725
sub edx, 1
jb 0x1999869
sub edx, 0x23
je 0x1999342
jmp 0x1999afe
sub edx, 0x29
je 0x1999869
dec edx
sub edx, 2
jb 0x199987a
jmp 0x1999afe
cmp edx, 0x5c
jg 0x19992e7
je 0x199988b
sub edx, 0x3f
je 0x199987a
sub edx, 0x1c
je 0x19993d0
jmp 0x1999afe
sub edx, 0x5e
je 0x19992fa
sub edx, 0x1e
je 0x1999869
jmp 0x1999afe
mov eax, dword [ebp - 4]
test byte [eax + 0x110], 0x10
je 0x199931e
mov eax, dword [ebp - 4]
cmp dword [eax + 0x128], 0
jne 0x1999330
mov eax, dword [ebp - 4]
cmp byte [eax + 0x12c], 0
jne 0x1999330
mov dl, 1
mov eax, dword [ebp - 4]
call fcn.01997f44
mov dword [ebp - 8], eax
jmp 0x1999ccc
mov dl, 0x22
mov eax, dword [ebp - 4]
call fcn.01997f44
mov dword [ebp - 8], eax
jmp 0x1999ccc
mov eax, dword [ebp - 4]
test byte [eax + 0x110], 0x10
je 0x1999366
mov eax, dword [ebp - 4]
cmp dword [eax + 0x128], 0
jne 0x1999378
mov eax, dword [ebp - 4]
cmp byte [eax + 0x12c], 0
jne 0x1999378
mov dl, 2
mov eax, dword [ebp - 4]
call fcn.01997f44
mov dword [ebp - 8], eax
jmp 0x1999ccc
mov dl, 0x23
mov eax, dword [ebp - 4]
call fcn.01997f44
mov dword [ebp - 8], eax
jmp 0x1999ccc
mov eax, dword [ebp - 4]
test byte [eax + 0x110], 4
je 0x19993b8
mov dl, 3
mov eax, dword [ebp - 4]
call fcn.01997f44
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 0x1999ccc
mov dl, 0x24
mov eax, dword [ebp - 4]
call fcn.01997f44
mov dword [ebp - 8], eax
mov eax, dword [ebp - 0xc]
or dword [eax], 1
jmp 0x1999ccc
cmp byte [eax], 0x5e
jne 0x1999406
mov eax, dword [ebp - 4]
test byte [eax + 0x110], 1
je 0x19993ef
push ebp
mov al, 0x16
call fcn.01998c9c
pop ecx
mov dword [ebp - 8], eax
jmp 0x19993fb
push ebp
mov al, 5
call fcn.01998c9c
pop ecx
mov dword [ebp - 8], eax
mov eax, dword [ebp - 4]
inc dword [eax + 0xe0]
jmp 0x199942c
mov eax, dword [ebp - 4]
test byte [eax + 0x110], 1
je 0x1999420
push ebp
mov al, 0x15
call fcn.01998c9c
pop ecx
mov dword [ebp - 8], eax
jmp 0x199942c
push ebp
mov al, 4
call fcn.01998c9c
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 0x19996c8
push ebp
call fcn.01999088
pop ecx
mov eax, dword [ebp - 4]
inc dword [eax + 0xe0]
jmp 0x19996c8
mov eax, dword [ebp - 4]
mov eax, dword [eax + 0xe0]
mov dl, byte [eax]
cmp dl, 0x2d
jne 0x1999622
mov ecx, eax
inc ecx
cmp byte [ecx], 0
je 0x1999622
inc eax
cmp byte [eax], 0x5d
je 0x1999622
cmp byte [ebp - 0x3f], 0
je 0x1999622
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 0x19994e2
inc eax
mov al, byte [eax]
add al, 0xc0
cmp al, 0x37
ja 0x19994b8
and eax, 0x7f
bt dword [0x12b98fc], eax
jae 0x19994c8
push ebp
mov al, 0x2d
call fcn.01998da0
pop ecx
jmp 0x19996c8
mov eax, dword [ebp - 4]
inc dword [eax + 0xe0]
push ebp
mov eax, dword [ebp - 4]
add eax, 0xe0
call fcn.019990d8
pop ecx
mov ebx, eax
mov eax, dword [ebp - 4]
test byte [eax + 0x110], 2
je 0x1999532
lea eax, [ebp - 0x48]
mov dl, byte [ebp - 0x40]
call fcn.018d2730
mov eax, dword [ebp - 0x48]
mov edx, 0x12b990c
call fcn.018d2964
jne 0x1999532
lea eax, [ebp - 0x4c]
mov edx, ebx
call fcn.018d2730
mov eax, dword [ebp - 0x4c]
mov edx, 0x12b9918
call fcn.018d2964
jne 0x1999532
push ebp
mov eax, 0x12b9924
call fcn.019990a4
pop ecx
jmp 0x1999614
mov eax, dword [ebp - 4]
test byte [eax + 0x110], 2
je 0x1999582
lea eax, [ebp - 0x50]
mov dl, byte [ebp - 0x40]
call fcn.018d2730
mov eax, dword [ebp - 0x50]
mov edx, 0x12b9970
call fcn.018d2964
jne 0x1999582
lea eax, [ebp - 0x54]
mov edx, ebx
call fcn.018d2730
mov eax, dword [ebp - 0x54]
mov edx, 0x12b997c
call fcn.018d2964
jne 0x1999582
push ebp
mov eax, 0x12b9988
call fcn.019990a4
pop ecx
jmp 0x1999614
mov eax, dword [ebp - 4]
test byte [eax + 0x110], 2
je 0x19995db
lea eax, [ebp - 0x58]
mov dl, byte [ebp - 0x40]
call fcn.018d2730
mov eax, dword [ebp - 0x58]
mov edx, 0x12b990c
call fcn.018d2964
jne 0x19995db
lea eax, [ebp - 0x5c]
mov edx, ebx
call fcn.018d2730
mov eax, dword [ebp - 0x5c]
mov edx, 0x12b997c
call fcn.018d2964
jne 0x19995db
push ebp
mov eax, 0x12b9924
call fcn.019990a4
pop ecx
push ebp
mov eax, 0x12b9988
call fcn.019990a4
pop ecx
jmp 0x1999614
cmp bl, byte [ebp - 0x40]
jae 0x19995f1
mov edx, 0x6d
mov eax, dword [ebp - 4]
mov ecx, dword [eax]
call dword [ecx]
jmp 0x1999ccf
inc byte [ebp - 0x40]
push ebp
mov eax, ebx
call fcn.01998da0
pop ecx
cmp bl, byte [ebp - 0x40]
jbe 0x1999614
push ebp
mov al, byte [ebp - 0x40]
call fcn.01998da0
pop ecx
inc byte [ebp - 0x40]
cmp bl, byte [ebp - 0x40]
ja 0x1999602
mov eax, dword [ebp - 4]
inc dword [eax + 0xe0]
jmp 0x19996c8
cmp dl, 0x5c
jne 0x19996b6
mov eax, dword [ebp - 4]
inc dword [eax + 0xe0]
mov eax, dword [ebp - 4]
mov eax, dword [eax + 0xe0]
cmp byte [eax], 0
jne 0x1999653
mov edx, 0x6e
mov eax, dword [ebp - 4]
mov ecx, dword [eax]
call dword [ecx]
jmp 0x1999ccf
mov eax, dword [ebp - 4]
mov eax, dword [eax + 0xe0]
mov al, byte [eax]
sub al, 0x64
je 0x199966c
sub al, 0xf
je 0x199968c
sub al, 4
je 0x199967a
jmp 0x199969e
push ebp
mov eax, 0x12b99d4
call fcn.019990a4
pop ecx
jmp 0x19996bf
push ebp
mov eax, dword [ebp - 4]
mov eax, dword [eax + 0x11c]
call fcn.019990a4
pop ecx
jmp 0x19996bf
push ebp
mov eax, dword [ebp - 4]
mov eax, dword [eax + 0x118]
call fcn.019990a4
pop ecx
jmp 0x19996bf
push ebp
push ebp
mov eax, dword [ebp - 4]
add eax, 0xe0
call fcn.019990d8
pop ecx
call fcn.01999088
pop ecx
jmp 0x19996bf
push ebp
mov eax, edx
call fcn.01999088
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 0x19996df
cmp al, 0x5d
jne 0x1999458
push ebp
xor eax, eax
call fcn.01998da0
pop ecx
mov eax, dword [ebp - 4]
mov eax, dword [eax + 0xe0]
cmp byte [eax], 0x5d
je 0x1999707
mov edx, 0x71
mov eax, dword [ebp - 4]
mov ecx, dword [eax]
call dword [ecx]
jmp 0x1999ccf
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 0x1999ccc
cmp byte [eax], 0x3f
jne 0x1999839
inc eax
cmp byte [eax], 0x23
jne 0x1999796
mov eax, dword [ebp - 4]
add dword [eax + 0xe0], 2
jmp 0x1999749
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 0x199975c
cmp al, 0x29
jne 0x1999740
mov eax, dword [ebp - 4]
mov eax, dword [eax + 0xe0]
cmp byte [eax], 0x29
je 0x199977b
mov edx, 0x7d
mov eax, dword [ebp - 4]
mov ecx, dword [eax]
call dword [ecx]
jmp 0x1999ccf
mov eax, dword [ebp - 4]
inc dword [eax + 0xe0]
mov dl, 0x13
mov eax, dword [ebp - 4]
call fcn.01997f44
mov dword [ebp - 8], eax
jmp 0x1999ccc
mov eax, dword [ebp - 4]
inc dword [eax + 0xe0]
mov eax, dword [ebp - 4]
mov ebx, dword [eax + 0xe0]
jmp 0x19997b3
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 0x19997c6
cmp al, 0x29
jne 0x19997aa
mov eax, dword [ebp - 4]
mov edi, dword [eax + 0xe0]
cmp byte [edi], 0x29
jne 0x199980d
lea eax, [ebp - 0x60]
push eax
lea eax, [ebp - 0x64]
mov edx, ebx
call fcn.018d2750
mov eax, dword [ebp - 0x64]
mov ecx, edi
sub ecx, ebx
mov edx, 1
call fcn.018d2a7c
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.01997b28
test al, al
jne 0x199981e
mov edx, 0x7f
mov eax, dword [ebp - 4]
mov ecx, dword [eax]
call dword [ecx]
jmp 0x1999ccf
mov eax, dword [ebp - 4]
inc dword [eax + 0xe0]
mov dl, 0x13
mov eax, dword [ebp - 4]
call fcn.01997f44
mov dword [ebp - 8], eax
jmp 0x1999ccc
lea ecx, [ebp - 0x44]
mov edx, 1
mov eax, dword [ebp - 4]
call fcn.019982cc
mov dword [ebp - 8], eax
cmp dword [ebp - 8], 0
jne 0x1999859
xor esi, esi
jmp 0x1999ccf
mov eax, dword [ebp - 0x44]
and eax, 5
mov edx, dword [ebp - 0xc]
or dword [edx], eax
jmp 0x1999ccc
mov edx, 0x72
mov eax, dword [ebp - 4]
mov ecx, dword [eax]
call dword [ecx]
jmp 0x1999ccf
mov edx, 0x73
mov eax, dword [ebp - 4]
mov ecx, dword [eax]
call dword [ecx]
jmp 0x1999ccf
cmp byte [eax], 0
jne 0x19998a1
mov edx, 0x74
mov eax, dword [ebp - 4]
mov ecx, dword [eax]
call dword [ecx]
jmp 0x1999ccf
mov eax, dword [ebp - 4]
mov eax, dword [eax + 0xe0]
movzx eax, byte [eax]
cmp eax, 0x57
jg 0x19998ec
je 0x1999a53
cmp eax, 0x42
jg 0x19998d5
je 0x199992b
add eax, 0xffffffcf
sub eax, 9
jb 0x1999a8a
sub eax, 7
je 0x199993d
jmp 0x1999ada
sub eax, 0x44
je 0x1999983
sub eax, 0xf
je 0x19999df
jmp 0x1999ada
cmp eax, 0x64
jg 0x1999902
je 0x1999961
sub eax, 0x5a
je 0x199994f
sub eax, 8
je 0x1999919
jmp 0x1999ada
sub eax, 0x73
je 0x19999a5
sub eax, 4
je 0x1999a19
jmp 0x1999ada
mov dl, 0x25
mov eax, dword [ebp - 4]
call fcn.01997f44
mov dword [ebp - 8], eax
jmp 0x1999af0
mov dl, 0x26
mov eax, dword [ebp - 4]
call fcn.01997f44
mov dword [ebp - 8], eax
jmp 0x1999af0
mov dl, 1
mov eax, dword [ebp - 4]
call fcn.01997f44
mov dword [ebp - 8], eax
jmp 0x1999af0
mov dl, 2
mov eax, dword [ebp - 4]
call fcn.01997f44
mov dword [ebp - 8], eax
jmp 0x1999af0
mov dl, 0xc
mov eax, dword [ebp - 4]
call fcn.01997f44
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 0x1999af0
mov dl, 0xd
mov eax, dword [ebp - 4]
call fcn.01997f44
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 0x1999af0
push ebp
mov al, 4
call fcn.01998c9c
pop ecx
mov dword [ebp - 8], eax
push ebp
mov eax, dword [ebp - 4]
mov eax, dword [eax + 0x118]
call fcn.019990a4
pop ecx
push ebp
xor eax, eax
call fcn.01998da0
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 0x1999af0
push ebp
mov al, 5
call fcn.01998c9c
pop ecx
mov dword [ebp - 8], eax
push ebp
mov eax, dword [ebp - 4]
mov eax, dword [eax + 0x118]
call fcn.019990a4
pop ecx
push ebp
xor eax, eax
call fcn.01998da0
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 0x1999af0
push ebp
mov al, 4
call fcn.01998c9c
pop ecx
mov dword [ebp - 8], eax
push ebp
mov eax, dword [ebp - 4]
mov eax, dword [eax + 0x11c]
call fcn.019990a4
pop ecx
push ebp
xor eax, eax
call fcn.01998da0
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 0x1999af0
push ebp
mov al, 5
call fcn.01998c9c
pop ecx
mov dword [ebp - 8], eax
push ebp
mov eax, dword [ebp - 4]
mov eax, dword [eax + 0x11c]
call fcn.019990a4
pop ecx
push ebp
xor eax, eax
call fcn.01998da0
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 0x1999af0
mov eax, dword [ebp - 4]
test byte [eax + 0x110], 1
je 0x1999aa5
mov dl, 0x1d
mov eax, dword [ebp - 4]
call fcn.01997f44
mov dword [ebp - 8], eax
jmp 0x1999ab2
mov dl, 0x1c
mov eax, dword [ebp - 4]
call fcn.01997f44
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.01997f80
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 0x1999af0
push ebp
push ebp
mov eax, dword [ebp - 4]
add eax, 0xe0
call fcn.019990d8
pop ecx
call fcn.01998be4
pop ecx
mov eax, dword [ebp - 4]
inc dword [eax + 0xe0]
jmp 0x1999ccc
mov eax, dword [ebp - 4]
dec dword [eax + 0xe0]
mov edx, dword [ebp - 4]
test byte [edx + 0x110], 0x20
je 0x1999bbc
mov eax, dword [ebp - 4]
mov eax, dword [eax + 0xe0]
mov al, byte [eax]
cmp al, 0x23
je 0x1999b38
add al, 0xf7
sub al, 2
jb 0x1999b38
sub al, 2
je 0x1999b38
sub al, 0x13
jne 0x1999bbc
mov eax, dword [ebp - 4]
mov eax, dword [eax + 0xe0]
cmp byte [eax], 0x23
jne 0x1999b91
jmp 0x1999b51
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 0x1999b73
cmp al, 0xd
je 0x1999b73
cmp al, 0xa
jne 0x1999b48
jmp 0x1999b73
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 0x1999b6a
cmp al, 0xa
je 0x1999b6a
jmp 0x1999baa
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 0x1999b88
sub al, 2
je 0x1999b88
sub al, 0x13
je 0x1999b88
mov dl, 0x13
mov eax, dword [ebp - 4]
call fcn.01997f44
mov dword [ebp - 8], eax
jmp 0x1999ccc
mov edx, 0x130e8f4
mov eax, dword [ebp - 4]
mov eax, dword [eax + 0xe0]
call fcn.01998004
mov ebx, eax
test ebx, ebx
jg 0x1999c04
mov eax, dword [ebp - 4]
mov ebx, dword [eax + 0xe0]
cmp byte [ebx], 0x7b
je 0x1999bf4
mov edx, 0x77
mov eax, dword [ebp - 4]
mov ecx, dword [eax]
call dword [ecx]
jmp 0x1999ccf
mov edx, 0x130e8f4
mov eax, ebx
inc eax
call fcn.01998004
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 0x1999c27
cmp al, 0x2a
je 0x1999c26
cmp al, 0x2b
je 0x1999c26
cmp al, 0x3f
je 0x1999c26
cmp al, 0x7b
jne 0x1999c27
dec ebx
mov eax, dword [ebp - 0xc]
or dword [eax], 1
cmp ebx, 1
jne 0x1999c38
mov eax, dword [ebp - 0xc]
or dword [eax], 2
mov eax, dword [ebp - 4]
test byte [eax + 0x110], 1
je 0x1999c53
mov dl, 0x14
mov eax, dword [ebp - 4]
call fcn.01997f44
mov dword [ebp - 8], eax
jmp 0x1999ca4
mov dl, 8
mov eax, dword [ebp - 4]
call fcn.01997f44
mov dword [ebp - 8], eax
jmp 0x1999ca4
mov eax, dword [ebp - 4]
test byte [eax + 0x110], 0x20
je 0x1999c87
mov eax, dword [ebp - 4]
mov eax, dword [eax + 0xe0]
mov al, byte [eax]
add al, 0xf7
sub al, 2
jb 0x1999c9a
sub al, 2
je 0x1999c9a
sub al, 0x13
je 0x1999c9a
mov eax, dword [ebp - 4]
mov eax, dword [eax + 0xe0]
mov dl, byte [eax]
mov eax, dword [ebp - 4]
call fcn.01997f80
mov eax, dword [ebp - 4]
inc dword [eax + 0xe0]
dec ebx
test ebx, ebx
jle 0x1999cc2
mov eax, dword [ebp - 4]
test byte [eax + 0x110], 0x20
je 0x1999c62
mov eax, dword [ebp - 4]
mov eax, dword [eax + 0xe0]
cmp byte [eax], 0x23
jne 0x1999c62
xor edx, edx
mov eax, dword [ebp - 4]
call fcn.01997f80
mov esi, dword [ebp - 8]
xor eax, eax
pop edx
pop ecx
pop ecx
mov dword fs:[eax], edx
push 0x12b98f1
lea eax, [ebp - 0x64]
mov edx, 8
call fcn.018d256c
ret