Function at 0xe156d8
Capabilities:
Parse credit card information

Disassembly:
push ebp
mov ebp, esp
add esp, 0xffffffb4
push ebx
push esi
push edi
xor ecx, ecx
mov dword [ebp - 0x48], ecx
mov dword [ebp - 0x4c], ecx
mov dword [ebp - 0xc], edx
mov dword [ebp - 4], eax
xor eax, eax
push ebp
push 0xe1610d
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 0xe15763
je 0xe15828
cmp edx, 0x28
jg 0xe1574b
je 0xe15b48
sub edx, 1
jb 0xe15c8c
sub edx, 0x23
je 0xe157e0
jmp 0xe15f21
sub edx, 0x29
je 0xe15c8c
dec edx
sub edx, 2
jb 0xe15c9d
jmp 0xe15f21
cmp edx, 0x5c
jg 0xe15785
je 0xe15cae
sub edx, 0x3f
je 0xe15c9d
sub edx, 0x1c
je 0xe1586e
jmp 0xe15f21
sub edx, 0x5e
je 0xe15798
sub edx, 0x1e
je 0xe15c8c
jmp 0xe15f21
mov eax, dword [ebp - 4]
test byte [eax + 0x110], 0x10
je 0xe157bc
mov eax, dword [ebp - 4]
cmp dword [eax + 0x128], 0
jne 0xe157ce
mov eax, dword [ebp - 4]
cmp byte [eax + 0x12c], 0
jne 0xe157ce
mov dl, 1
mov eax, dword [ebp - 4]
call fcn.00e144e8
mov dword [ebp - 8], eax
jmp 0xe160ef
mov dl, 0x22
mov eax, dword [ebp - 4]
call fcn.00e144e8
mov dword [ebp - 8], eax
jmp 0xe160ef
mov eax, dword [ebp - 4]
test byte [eax + 0x110], 0x10
je 0xe15804
mov eax, dword [ebp - 4]
cmp dword [eax + 0x128], 0
jne 0xe15816
mov eax, dword [ebp - 4]
cmp byte [eax + 0x12c], 0
jne 0xe15816
mov dl, 2
mov eax, dword [ebp - 4]
call fcn.00e144e8
mov dword [ebp - 8], eax
jmp 0xe160ef
mov dl, 0x23
mov eax, dword [ebp - 4]
call fcn.00e144e8
mov dword [ebp - 8], eax
jmp 0xe160ef
mov eax, dword [ebp - 4]
test byte [eax + 0x110], 4
je 0xe15856
mov dl, 3
mov eax, dword [ebp - 4]
call fcn.00e144e8
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 0xe160ef
mov dl, 0x24
mov eax, dword [ebp - 4]
call fcn.00e144e8
mov dword [ebp - 8], eax
mov eax, dword [ebp - 0xc]
or dword [eax], 1
jmp 0xe160ef
cmp byte [eax], 0x5e
jne 0xe158a4
mov eax, dword [ebp - 4]
test byte [eax + 0x110], 1
je 0xe1588d
push ebp
mov al, 0x16
call fcn.00e15240
pop ecx
mov dword [ebp - 8], eax
jmp 0xe15899
push ebp
mov al, 5
call fcn.00e15240
pop ecx
mov dword [ebp - 8], eax
mov eax, dword [ebp - 4]
inc dword [eax + 0xe0]
jmp 0xe158ca
mov eax, dword [ebp - 4]
test byte [eax + 0x110], 1
je 0xe158be
push ebp
mov al, 0x15
call fcn.00e15240
pop ecx
mov dword [ebp - 8], eax
jmp 0xe158ca
push ebp
mov al, 4
call fcn.00e15240
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 0xe15aeb
push ebp
call fcn.00e15538
pop ecx
mov eax, dword [ebp - 4]
inc dword [eax + 0xe0]
jmp 0xe15aeb
mov eax, dword [ebp - 4]
mov eax, dword [eax + 0xe0]
mov dl, byte [eax]
cmp dl, 0x2d
jne 0xe15a45
mov ecx, eax
inc ecx
cmp byte [ecx], 0
je 0xe15a45
inc eax
cmp byte [eax], 0x5d
je 0xe15a45
cmp byte [ebp - 0x3f], 0
je 0xe15a45
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 0xe15980
inc eax
mov al, byte [eax]
add al, 0xc0
cmp al, 0x37
ja 0xe15956
and eax, 0x7f
bt dword [0xe16120], eax
jae 0xe15966
push ebp
mov al, 0x2d
call fcn.00e15344
pop ecx
jmp 0xe15aeb
mov eax, dword [ebp - 4]
inc dword [eax + 0xe0]
push ebp
mov eax, dword [ebp - 4]
add eax, 0xe0
call fcn.00e15588
pop ecx
mov ebx, eax
mov eax, dword [ebp - 4]
test byte [eax + 0x110], 2
je 0xe159a8
cmp byte [ebp - 0x40], 0xe0
jne 0xe159a8
cmp bl, 0xff
jne 0xe159a8
push ebp
mov eax, 0xe16130
call fcn.00e15554
pop ecx
jmp 0xe15a37
mov eax, dword [ebp - 4]
test byte [eax + 0x110], 2
je 0xe159cd
cmp byte [ebp - 0x40], 0xc0
jne 0xe159cd
cmp bl, 0xdf
jne 0xe159cd
push ebp
mov eax, 0xe1615c
call fcn.00e15554
pop ecx
jmp 0xe15a37
mov eax, dword [ebp - 4]
test byte [eax + 0x110], 2
je 0xe159fe
cmp byte [ebp - 0x40], 0xe0
jne 0xe159fe
cmp bl, 0xdf
jne 0xe159fe
push ebp
mov eax, 0xe16130
call fcn.00e15554
pop ecx
push ebp
mov eax, 0xe1615c
call fcn.00e15554
pop ecx
jmp 0xe15a37
cmp bl, byte [ebp - 0x40]
jae 0xe15a14
mov edx, 0x6d
mov eax, dword [ebp - 4]
mov ecx, dword [eax]
call dword [ecx]
jmp 0xe160f2
inc byte [ebp - 0x40]
push ebp
mov eax, ebx
call fcn.00e15344
pop ecx
cmp bl, byte [ebp - 0x40]
jbe 0xe15a37
push ebp
mov al, byte [ebp - 0x40]
call fcn.00e15344
pop ecx
inc byte [ebp - 0x40]
cmp bl, byte [ebp - 0x40]
ja 0xe15a25
mov eax, dword [ebp - 4]
inc dword [eax + 0xe0]
jmp 0xe15aeb
cmp dl, 0x5c
jne 0xe15ad9
mov eax, dword [ebp - 4]
inc dword [eax + 0xe0]
mov eax, dword [ebp - 4]
mov eax, dword [eax + 0xe0]
cmp byte [eax], 0
jne 0xe15a76
mov edx, 0x6e
mov eax, dword [ebp - 4]
mov ecx, dword [eax]
call dword [ecx]
jmp 0xe160f2
mov eax, dword [ebp - 4]
mov eax, dword [eax + 0xe0]
mov al, byte [eax]
sub al, 0x64
je 0xe15a8f
sub al, 0xf
je 0xe15aaf
sub al, 4
je 0xe15a9d
jmp 0xe15ac1
push ebp
mov eax, 0xe16188
call fcn.00e15554
pop ecx
jmp 0xe15ae2
push ebp
mov eax, dword [ebp - 4]
mov eax, dword [eax + 0x11c]
call fcn.00e15554
pop ecx
jmp 0xe15ae2
push ebp
mov eax, dword [ebp - 4]
mov eax, dword [eax + 0x118]
call fcn.00e15554
pop ecx
jmp 0xe15ae2
push ebp
push ebp
mov eax, dword [ebp - 4]
add eax, 0xe0
call fcn.00e15588
pop ecx
call fcn.00e15538
pop ecx
jmp 0xe15ae2
push ebp
mov eax, edx
call fcn.00e15538
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 0xe15b02
cmp al, 0x5d
jne 0xe158f6
push ebp
xor eax, eax
call fcn.00e15344
pop ecx
mov eax, dword [ebp - 4]
mov eax, dword [eax + 0xe0]
cmp byte [eax], 0x5d
je 0xe15b2a
mov edx, 0x71
mov eax, dword [ebp - 4]
mov ecx, dword [eax]
call dword [ecx]
jmp 0xe160f2
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 0xe160ef
cmp byte [eax], 0x3f
jne 0xe15c5c
inc eax
cmp byte [eax], 0x23
jne 0xe15bb9
mov eax, dword [ebp - 4]
add dword [eax + 0xe0], 2
jmp 0xe15b6c
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 0xe15b7f
cmp al, 0x29
jne 0xe15b63
mov eax, dword [ebp - 4]
mov eax, dword [eax + 0xe0]
cmp byte [eax], 0x29
je 0xe15b9e
mov edx, 0x7d
mov eax, dword [ebp - 4]
mov ecx, dword [eax]
call dword [ecx]
jmp 0xe160f2
mov eax, dword [ebp - 4]
inc dword [eax + 0xe0]
mov dl, 0x13
mov eax, dword [ebp - 4]
call fcn.00e144e8
mov dword [ebp - 8], eax
jmp 0xe160ef
mov eax, dword [ebp - 4]
inc dword [eax + 0xe0]
mov eax, dword [ebp - 4]
mov ebx, dword [eax + 0xe0]
jmp 0xe15bd6
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 0xe15be9
cmp al, 0x29
jne 0xe15bcd
mov eax, dword [ebp - 4]
mov edi, dword [eax + 0xe0]
cmp byte [edi], 0x29
jne 0xe15c30
lea eax, [ebp - 0x48]
push eax
lea eax, [ebp - 0x4c]
mov edx, ebx
call fcn.00daa424
mov eax, dword [ebp - 0x4c]
mov ecx, edi
sub ecx, ebx
mov edx, 1
call fcn.00daa76c
mov edx, dword [ebp - 0x48]
mov eax, dword [ebp - 4]
lea ecx, [eax + 0x110]
mov eax, dword [ebp - 4]
mov eax, dword [eax]
call fcn.00e140cc
test al, al
jne 0xe15c41
mov edx, 0x7f
mov eax, dword [ebp - 4]
mov ecx, dword [eax]
call dword [ecx]
jmp 0xe160f2
mov eax, dword [ebp - 4]
inc dword [eax + 0xe0]
mov dl, 0x13
mov eax, dword [ebp - 4]
call fcn.00e144e8
mov dword [ebp - 8], eax
jmp 0xe160ef
lea ecx, [ebp - 0x44]
mov edx, 1
mov eax, dword [ebp - 4]
call fcn.00e14870
mov dword [ebp - 8], eax
cmp dword [ebp - 8], 0
jne 0xe15c7c
xor esi, esi
jmp 0xe160f2
mov eax, dword [ebp - 0x44]
and eax, 5
mov edx, dword [ebp - 0xc]
or dword [edx], eax
jmp 0xe160ef
mov edx, 0x72
mov eax, dword [ebp - 4]
mov ecx, dword [eax]
call dword [ecx]
jmp 0xe160f2
mov edx, 0x73
mov eax, dword [ebp - 4]
mov ecx, dword [eax]
call dword [ecx]
jmp 0xe160f2
cmp byte [eax], 0
jne 0xe15cc4
mov edx, 0x74
mov eax, dword [ebp - 4]
mov ecx, dword [eax]
call dword [ecx]
jmp 0xe160f2
mov eax, dword [ebp - 4]
mov eax, dword [eax + 0xe0]
movzx eax, byte [eax]
cmp eax, 0x57
jg 0xe15d0f
je 0xe15e76
cmp eax, 0x42
jg 0xe15cf8
je 0xe15d4e
add eax, 0xffffffcf
sub eax, 9
jb 0xe15ead
sub eax, 7
je 0xe15d60
jmp 0xe15efd
sub eax, 0x44
je 0xe15da6
sub eax, 0xf
je 0xe15e02
jmp 0xe15efd
cmp eax, 0x64
jg 0xe15d25
je 0xe15d84
sub eax, 0x5a
je 0xe15d72
sub eax, 8
je 0xe15d3c
jmp 0xe15efd
sub eax, 0x73
je 0xe15dc8
sub eax, 4
je 0xe15e3c
jmp 0xe15efd
mov dl, 0x25
mov eax, dword [ebp - 4]
call fcn.00e144e8
mov dword [ebp - 8], eax
jmp 0xe15f13
mov dl, 0x26
mov eax, dword [ebp - 4]
call fcn.00e144e8
mov dword [ebp - 8], eax
jmp 0xe15f13
mov dl, 1
mov eax, dword [ebp - 4]
call fcn.00e144e8
mov dword [ebp - 8], eax
jmp 0xe15f13
mov dl, 2
mov eax, dword [ebp - 4]
call fcn.00e144e8
mov dword [ebp - 8], eax
jmp 0xe15f13
mov dl, 0xc
mov eax, dword [ebp - 4]
call fcn.00e144e8
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 0xe15f13
mov dl, 0xd
mov eax, dword [ebp - 4]
call fcn.00e144e8
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 0xe15f13
push ebp
mov al, 4
call fcn.00e15240
pop ecx
mov dword [ebp - 8], eax
push ebp
mov eax, dword [ebp - 4]
mov eax, dword [eax + 0x118]
call fcn.00e15554
pop ecx
push ebp
xor eax, eax
call fcn.00e15344
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 0xe15f13
push ebp
mov al, 5
call fcn.00e15240
pop ecx
mov dword [ebp - 8], eax
push ebp
mov eax, dword [ebp - 4]
mov eax, dword [eax + 0x118]
call fcn.00e15554
pop ecx
push ebp
xor eax, eax
call fcn.00e15344
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 0xe15f13
push ebp
mov al, 4
call fcn.00e15240
pop ecx
mov dword [ebp - 8], eax
push ebp
mov eax, dword [ebp - 4]
mov eax, dword [eax + 0x11c]
call fcn.00e15554
pop ecx
push ebp
xor eax, eax
call fcn.00e15344
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 0xe15f13
push ebp
mov al, 5
call fcn.00e15240
pop ecx
mov dword [ebp - 8], eax
push ebp
mov eax, dword [ebp - 4]
mov eax, dword [eax + 0x11c]
call fcn.00e15554
pop ecx
push ebp
xor eax, eax
call fcn.00e15344
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 0xe15f13
mov eax, dword [ebp - 4]
test byte [eax + 0x110], 1
je 0xe15ec8
mov dl, 0x1d
mov eax, dword [ebp - 4]
call fcn.00e144e8
mov dword [ebp - 8], eax
jmp 0xe15ed5
mov dl, 0x1c
mov eax, dword [ebp - 4]
call fcn.00e144e8
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.00e14524
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 0xe15f13
push ebp
push ebp
mov eax, dword [ebp - 4]
add eax, 0xe0
call fcn.00e15588
pop ecx
call fcn.00e15188
pop ecx
mov eax, dword [ebp - 4]
inc dword [eax + 0xe0]
jmp 0xe160ef
mov eax, dword [ebp - 4]
dec dword [eax + 0xe0]
mov edx, dword [ebp - 4]
test byte [edx + 0x110], 0x20
je 0xe15fdf
mov eax, dword [ebp - 4]
mov eax, dword [eax + 0xe0]
mov al, byte [eax]
cmp al, 0x23
je 0xe15f5b
add al, 0xf7
sub al, 2
jb 0xe15f5b
sub al, 2
je 0xe15f5b
sub al, 0x13
jne 0xe15fdf
mov eax, dword [ebp - 4]
mov eax, dword [eax + 0xe0]
cmp byte [eax], 0x23
jne 0xe15fb4
jmp 0xe15f74
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 0xe15f96
cmp al, 0xd
je 0xe15f96
cmp al, 0xa
jne 0xe15f6b
jmp 0xe15f96
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 0xe15f8d
cmp al, 0xa
je 0xe15f8d
jmp 0xe15fcd
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 0xe15fab
sub al, 2
je 0xe15fab
sub al, 0x13
je 0xe15fab
mov dl, 0x13
mov eax, dword [ebp - 4]
call fcn.00e144e8
mov dword [ebp - 8], eax
jmp 0xe160ef
mov edx, 0xe260f8
mov eax, dword [ebp - 4]
mov eax, dword [eax + 0xe0]
call fcn.00e145a8
mov ebx, eax
test ebx, ebx
jg 0xe16027
mov eax, dword [ebp - 4]
mov ebx, dword [eax + 0xe0]
cmp byte [ebx], 0x7b
je 0xe16017
mov edx, 0x77
mov eax, dword [ebp - 4]
mov ecx, dword [eax]
call dword [ecx]
jmp 0xe160f2
mov edx, 0xe260f8
mov eax, ebx
inc eax
call fcn.00e145a8
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 0xe1604a
cmp al, 0x2a
je 0xe16049
cmp al, 0x2b
je 0xe16049
cmp al, 0x3f
je 0xe16049
cmp al, 0x7b
jne 0xe1604a
dec ebx
mov eax, dword [ebp - 0xc]
or dword [eax], 1
cmp ebx, 1
jne 0xe1605b
mov eax, dword [ebp - 0xc]
or dword [eax], 2
mov eax, dword [ebp - 4]
test byte [eax + 0x110], 1
je 0xe16076
mov dl, 0x14
mov eax, dword [ebp - 4]
call fcn.00e144e8
mov dword [ebp - 8], eax
jmp 0xe160c7
mov dl, 8
mov eax, dword [ebp - 4]
call fcn.00e144e8
mov dword [ebp - 8], eax
jmp 0xe160c7
mov eax, dword [ebp - 4]
test byte [eax + 0x110], 0x20
je 0xe160aa
mov eax, dword [ebp - 4]
mov eax, dword [eax + 0xe0]
mov al, byte [eax]
add al, 0xf7
sub al, 2
jb 0xe160bd
sub al, 2
je 0xe160bd
sub al, 0x13
je 0xe160bd
mov eax, dword [ebp - 4]
mov eax, dword [eax + 0xe0]
mov dl, byte [eax]
mov eax, dword [ebp - 4]
call fcn.00e14524
mov eax, dword [ebp - 4]
inc dword [eax + 0xe0]
dec ebx
test ebx, ebx
jle 0xe160e5
mov eax, dword [ebp - 4]
test byte [eax + 0x110], 0x20
je 0xe16085
mov eax, dword [ebp - 4]
mov eax, dword [eax + 0xe0]
cmp byte [eax], 0x23
jne 0xe16085
xor edx, edx
mov eax, dword [ebp - 4]
call fcn.00e14524
mov esi, dword [ebp - 8]
xor eax, eax
pop edx
pop ecx
pop ecx
mov dword fs:[eax], edx
push 0xe16114
lea eax, [ebp - 0x4c]
mov edx, 2
call fcn.00daa250
ret