Function at 0x4d1360
Capabilities:
Parse credit card information

Disassembly:
push ebx
push ebp
push esi
mov esi, dword [esp + 0x10]
xor ecx, ecx
push edi
cmp dword [esi + 0x14], ecx
jne 0x4d1645
mov ebx, 0x80
jmp 0x4d137c
xor ecx, ecx
mov eax, dword [esi + 0x20]
cmp eax, 0x6e
mov dword [esi + 0x1c], eax
jne 0x4d1393
mov eax, dword [esi + 0x18]
test ah, 4
jne 0x4d164c
mov eax, dword [esi + 0xc]
cmp eax, ecx
je 0x4d13b3
mov edx, dword [esi + 4]
mov edi, dword [esi + 8]
cmp edx, edi
jb 0x4d13b3
mov dword [esi + 4], eax
mov eax, dword [esi + 0x10]
mov dword [esi + 8], eax
mov dword [esi + 0x10], ecx
mov dword [esi + 0xc], ecx
test byte [esi + 0x18], 0x20
je case.0x4d13c2.3
mov eax, dword [esi + 0x28]
dec eax
cmp eax, 4
ja case.0x4d13c2.3
jmp dword [eax*4 + 0x4d1d2c]
push esi
call fcn.004d2910
add esp, 4
mov eax, dword [esi + 4]
mov ebp, dword [esi + 8]
cmp eax, ebp
jb case.default.0x4d13ed
mov ecx, dword [esi + 0x28]
dec ecx
cmp ecx, 8
ja case.default.0x4d13ed
xor edx, edx
mov dl, byte [ecx + 0x4d1d4c]
jmp dword [edx*4 + 0x4d1d40]
mov ecx, dword [esi + 0x28]
mov di, word [eax]
add ecx, 0xfffffffe
add eax, 2
cmp ecx, 7
mov dword [esi + 4], eax
ja case.default.0x4d140c
jmp dword [ecx*4 + 0x4d1d58]
mov ecx, edi
and ecx, 0xffff
add ecx, 0xffffffd3
cmp ecx, 0x30
ja case.0x4d1506.48
xor edx, edx
mov dl, byte [ecx + 0x4d1d8c]
jmp dword [edx*4 + 0x4d1d78]
mov eax, dword [esi]
mov ecx, dword [eax + 8]
or ecx, 0x40
mov dword [eax + 8], ecx
mov al, byte [esi + 0x18]
test al, 2
je case.0x4d1506.48
mov eax, dword [esi]
mov edx, dword [eax + 8]
or edx, ebx
mov dword [eax + 8], edx
mov eax, dword [esi + 4]
cmp eax, dword [esi + 8]
jae 0x4d17eb
push esi
call fcn.004d1f40
mov eax, dword [esi + 0x20]
add esp, 4
cmp eax, 0x43
jne 0x4d17e2
xor eax, eax
mov ax, word [esi + 0x24]
cmp eax, 0x64
je 0x4d14cc
cmp eax, 0x73
je 0x4d14ae
cmp eax, 0x77
jne 0x4d17eb
push 0x520470
push str._:alnum:__
push esi
call fcn.004d1340
mov ecx, dword [esi + 0x1c]
add esp, 0xc
mov dword [esi + 0x20], ecx
jmp 0x4d163a
push 0x520426
push 0x520414
push esi
call fcn.004d1340
mov ecx, dword [esi + 0x1c]
add esp, 0xc
mov dword [esi + 0x20], ecx
jmp 0x4d163a
push 0x5203e2
push 0x5203d0
push esi
call fcn.004d1340
mov ecx, dword [esi + 0x1c]
add esp, 0xc
mov dword [esi + 0x20], ecx
jmp 0x4d163a
mov edx, edi
and edx, 0xffff
lea ecx, [edx - 0x24]
cmp ecx, 0x58
ja case.0x4d1506.48
xor edx, edx
mov dl, byte [ecx + 0x4d1df4]
jmp dword [edx*4 + 0x4d1dc0]
test byte [esi + 0x18], 2
je 0x4d1b7c
cmp eax, ebp
jae 0x4d1b7c
cmp word [eax], 0x3f
jne 0x4d1b7c
mov eax, dword [esi]
mov ecx, dword [eax + 8]
or ecx, ebx
mov dword [eax + 8], ecx
mov ebp, dword [esi + 4]
add ebp, 2
xor eax, eax
mov ecx, ebp
mov dword [esi + 4], ebp
mov ax, word [ecx]
add ecx, 2
sub eax, 0x21
mov dword [esi + 4], ecx
cmp eax, 0x1c
ja case.0x4d155d.37
xor edx, edx
mov dl, byte [eax + 0x4d1e64]
jmp dword [edx*4 + 0x4d1e50]
mov edx, dword [esi + 8]
cmp ecx, edx
jae 0x4d157e
mov eax, dword [esi + 4]
cmp word [eax], 0x29
je 0x4d157e
add eax, 2
cmp eax, edx
mov dword [esi + 4], eax
jb 0x4d156b
mov eax, dword [esi + 4]
cmp eax, edx
jae 0x4d163a
add eax, 2
mov dword [esi + 4], eax
jmp 0x4d163a
cmp eax, ebp
jae 0x4d17eb
test byte [esi + 0x18], 2
je 0x4d1cb5
push esi
call fcn.004d1f40
mov eax, dword [esi + 0x14]
add esp, 4
test eax, eax
jne 0x4d17eb
cmp dword [esi + 0x20], 0x43
jne 0x4d1d1a
xor eax, eax
mov ax, word [esi + 0x24]
add eax, 0xffffffbc
cmp eax, 0x33
ja case.0x4d15de.74
xor ecx, ecx
mov cl, byte [eax + 0x4d1ea0]
jmp dword [ecx*4 + 0x4d1e84]
push 0x5203b6
push str.__:digit:__
jmp 0x4d162b
push 0x5203d0
push str.__:digit:___:digit:_
jmp 0x4d162b
push 0x5203fa
push str.__:space:__
jmp 0x4d162b
push 0x520414
push str.__:space:___:space:_
jmp 0x4d162b
push 0x520440
push str.__:alnum:_____:alnum:___
jmp 0x4d162b
push 0x52045a
push 0x520440
push esi
call fcn.004d1340
mov edx, dword [esi + 0x1c]
add esp, 0xc
mov dword [esi + 0x20], edx
mov eax, dword [esi + 0x14]
test eax, eax
je 0x4d137a
pop edi
pop esi
pop ebp
xor eax, eax
pop ebx
ret
mov dword [esi + 0x20], 0x41
mov word [esi + 0x24], cx
pop edi
pop esi
pop ebp
mov eax, 1
pop ebx
ret
mov dword [esi + 0x20], 0x65
pop edi
pop esi
pop ebp
mov eax, 1
pop ebx
ret
mov eax, dword [esi + 0x14]
mov dword [esi + 0x20], 0x65
test eax, eax
jne 0x4d1687
mov dword [esi + 0x14], 9
pop edi
pop esi
pop ebp
xor eax, eax
pop ebx
ret
mov eax, dword [esi + 0x14]
mov dword [esi + 0x20], 0x65
test eax, eax
jne 0x4d16a3
mov dword [esi + 0x14], 7
pop edi
pop esi
pop ebp
xor eax, eax
pop ebx
ret
and edi, 0xffff
push edi
push esi
call fcn.004d2530
add esp, 8
pop edi
pop esi
pop ebp
pop ebx
ret
mov ecx, edi
and ecx, 0xffff
add ecx, 0xffffffd4
cmp ecx, 0x51
ja case.0x4d16db.48
xor edx, edx
mov dl, byte [ecx + 0x4d1ee8]
jmp dword [edx*4 + 0x4d1ed4]
add edi, 0xffffffd0
mov dword [esi + 0x20], 0x64
mov word [esi + 0x24], di
pop edi
pop esi
pop ebp
mov eax, 1
pop ebx
ret
mov dword [esi + 0x20], 0x2c
pop edi
pop esi
pop ebp
mov eax, 1
pop ebx
ret
cmp dword [esi + 0x28], 4
jne case.0x4d16db.48
mov cl, byte [esi + 0x18]
mov dword [esi + 0x28], 1
test cl, 2
je 0x4d1756
cmp eax, dword [esi + 8]
jae 0x4d1756
cmp word [eax], 0x3f
jne 0x4d1756
add eax, 2
pop edi
mov dword [esi + 4], eax
mov eax, dword [esi]
mov ecx, dword [eax + 8]
or ecx, ebx
mov dword [eax + 8], ecx
mov dword [esi + 0x20], 0x7d
mov word [esi + 0x24], 0
pop esi
pop ebp
mov eax, 1
pop ebx
ret
mov dword [esi + 0x20], 0x7d
mov word [esi + 0x24], 1
pop edi
pop esi
pop ebp
mov eax, 1
pop ebx
ret
cmp dword [esi + 0x28], 5
jne case.0x4d16db.48
cmp eax, dword [esi + 8]
jae case.0x4d16db.48
cmp word [eax], 0x7d
jne case.0x4d16db.48
add eax, 2
mov dword [esi + 0x28], 2
mov dword [esi + 4], eax
mov dword [esi + 0x20], 0x7d
pop edi
pop esi
pop ebp
mov eax, 1
pop ebx
ret
mov eax, dword [esi + 0x14]
mov dword [esi + 0x20], 0x65
test eax, eax
jne 0x4d17b1
mov dword [esi + 0x14], 0xa
pop edi
pop esi
pop ebp
xor eax, eax
pop ebx
ret
cmp dword [esi + 0x1c], 0x5b
je case.0x4d1506.48
mov eax, dword [esi + 0x18]
mov dword [esi + 0x20], 0x5d
and al, 1
pop edi
neg al
sbb eax, eax
add eax, 2
mov dword [esi + 0x28], eax
pop esi
pop ebp
mov eax, 1
pop ebx
ret
cmp eax, 0x70
je 0x4d1879
mov eax, dword [esi + 0x14]
mov dword [esi + 0x20], 0x65
test eax, eax
jne 0x4d1800
mov dword [esi + 0x14], 5
pop edi
pop esi
pop ebp
xor eax, eax
pop ebx
ret
cmp dword [esi + 0x1c], 0x5b
je case.0x4d1506.48
cmp eax, dword [esi + 8]
jae 0x4d1818
cmp word [eax], 0x5d
je case.0x4d1506.48
mov word [esi + 0x24], di
mov dword [esi + 0x20], 0x52
pop edi
pop esi
pop ebp
mov eax, 1
pop ebx
ret
cmp eax, dword [esi + 8]
jb 0x4d184e
mov eax, dword [esi + 0x14]
mov dword [esi + 0x20], 0x65
test eax, eax
jne 0x4d1800
mov dword [esi + 0x14], 7
pop edi
pop esi
pop ebp
xor eax, eax
pop ebx
ret
xor ecx, ecx
mov cx, word [eax]
add eax, 2
cmp ecx, 0x2e
mov dword [esi + 4], eax
je 0x4d18c9
cmp ecx, 0x3a
je 0x4d18a6
cmp ecx, 0x3d
je 0x4d1883
add eax, 0xfffffffe
mov dword [esi + 4], eax
mov dword [esi + 0x20], 0x70
mov word [esi + 0x24], di
pop edi
pop esi
pop ebp
mov eax, 1
pop ebx
ret
mov eax, dword [esi]
mov dword [esi + 0x28], 8
pop edi
mov ecx, dword [eax + 8]
or ch, 4
mov dword [eax + 8], ecx
mov dword [esi + 0x20], 0x45
pop esi
pop ebp
mov eax, 1
pop ebx
ret
mov eax, dword [esi]
mov dword [esi + 0x28], 9
pop edi
mov ecx, dword [eax + 8]
or ch, 4
mov dword [eax + 8], ecx
mov dword [esi + 0x20], 0x43
pop esi
pop ebp
mov eax, 1
pop ebx
ret
mov dword [esi + 0x28], 7
mov dword [esi + 0x20], 0x49
pop edi
pop esi
pop ebp
mov eax, 1
pop ebx
ret
cmp di, 0x2e
jne case.0x4d1506.48
cmp eax, dword [esi + 8]
jae case.0x4d1506.48
cmp word [eax], 0x5d
jne case.0x4d1506.48
add eax, 2
mov word [esi + 0x24], di
mov dword [esi + 4], eax
mov dword [esi + 0x28], 6
mov dword [esi + 0x20], 0x58
pop edi
pop esi
pop ebp
mov eax, 1
pop ebx
ret
cmp di, 0x3d
jne case.0x4d1506.48
cmp eax, dword [esi + 8]
jae case.0x4d1506.48
cmp word [eax], 0x5d
jne case.0x4d1506.48
add eax, 2
mov word [esi + 0x24], di
mov dword [esi + 4], eax
mov dword [esi + 0x28], 6
mov dword [esi + 0x20], 0x58
pop edi
pop esi
pop ebp
mov eax, 1
pop ebx
ret
mov ebp, 0x3a
cmp di, bp
jne case.0x4d1506.48
cmp eax, dword [esi + 8]
jae case.0x4d1506.48
cmp word [eax], 0x5d
jne case.0x4d1506.48
add eax, 2
mov dword [esi + 0x28], 6
mov dword [esi + 4], eax
mov dword [esi + 0x20], 0x58
mov word [esi + 0x24], bp
pop edi
pop esi
pop ebp
mov eax, 1
pop ebx
ret
mov dword [esi + 0x20], 0x7c
pop edi
pop esi
pop ebp
mov eax, 1
pop ebx
ret
test byte [esi + 0x18], 2
je 0x4d19e3
cmp eax, dword [esi + 8]
jae 0x4d19e3
cmp word [eax], 0x3f
jne 0x4d19e3
add eax, 2
pop edi
mov dword [esi + 4], eax
mov eax, dword [esi]
mov ecx, dword [eax + 8]
or ecx, ebx
mov dword [eax + 8], ecx
mov dword [esi + 0x20], 0x2a
mov word [esi + 0x24], 0
pop esi
pop ebp
mov eax, 1
pop ebx
ret
mov dword [esi + 0x20], 0x2a
mov word [esi + 0x24], 1
pop edi
pop esi
pop ebp
mov eax, 1
pop ebx
ret
test byte [esi + 0x18], 2
je 0x4d1a32
cmp eax, dword [esi + 8]
jae 0x4d1a32
cmp word [eax], 0x3f
jne 0x4d1a32
add eax, 2
pop edi
mov dword [esi + 4], eax
mov eax, dword [esi]
mov ecx, dword [eax + 8]
or ecx, ebx
mov dword [eax + 8], ecx
mov dword [esi + 0x20], 0x2b
mov word [esi + 0x24], 0
pop esi
pop ebp
mov eax, 1
pop ebx
ret
mov dword [esi + 0x20], 0x2b
mov word [esi + 0x24], 1
pop edi
pop esi
pop ebp
mov eax, 1
pop ebx
ret
test byte [esi + 0x18], 2
je 0x4d1a81
cmp eax, dword [esi + 8]
jae 0x4d1a81
cmp word [eax], 0x3f
jne 0x4d1a81
add eax, 2
pop edi
mov dword [esi + 4], eax
mov eax, dword [esi]
mov ecx, dword [eax + 8]
or ecx, ebx
mov dword [eax + 8], ecx
mov dword [esi + 0x20], 0x3f
mov word [esi + 0x24], 0
pop esi
pop ebp
mov eax, 1
pop ebx
ret
mov dword [esi + 0x20], 0x3f
mov word [esi + 0x24], 1
pop edi
pop esi
pop ebp
mov eax, 1
pop ebx
ret
test byte [esi + 0x18], 0x20
je 0x4d1aa7
push esi
call fcn.004d2910
add esp, 4
mov eax, dword [esi + 4]
mov ecx, dword [esi + 8]
cmp eax, ecx
jae 0x4d1ae6
xor ecx, ecx
mov cx, word [eax]
push ecx
call fcn.0047d850
add esp, 4
test eax, eax
je 0x4d1ae6
mov eax, dword [esi]
mov ecx, 4
pop edi
mov edx, dword [eax + 8]
or edx, ecx
mov dword [eax + 8], edx
mov dword [esi + 0x28], ecx
mov dword [esi + 0x20], 0x7b
pop esi
pop ebp
mov eax, 1
pop ebx
ret
mov eax, dword [esi]
mov edx, dword [eax + 8]
or edx, 8
mov dword [eax + 8], edx
mov eax, dword [esi]
mov ecx, dword [eax + 8]
or ch, 1
mov dword [eax + 8], ecx
jmp case.0x4d1506.48
mov dword [esi + 0x20], 0x28
mov word [esi + 0x24], 0
pop edi
pop esi
pop ebp
mov eax, 1
pop ebx
ret
mov eax, dword [esi]
pop edi
mov ecx, dword [eax + 8]
or ecx, 2
mov dword [eax + 8], ecx
mov dword [esi + 0x20], 0x4c
mov word [esi + 0x24], 1
pop esi
pop ebp
mov eax, 1
pop ebx
ret
mov eax, dword [esi]
pop edi
mov ecx, dword [eax + 8]
or ecx, 2
mov dword [eax + 8], ecx
mov dword [esi + 0x20], 0x4c
mov word [esi + 0x24], 0
pop esi
pop ebp
mov eax, 1
pop ebx
ret
mov eax, dword [esi + 0x14]
mov dword [esi + 0x20], 0x65
test eax, eax
jne 0x4d1800
mov dword [esi + 0x14], 0xd
pop edi
pop esi
pop ebp
xor eax, eax
pop ebx
ret
mov al, byte [esi + 0x18]
mov dword [esi + 0x20], 0x28
test al, 0x10
je 0x4d175d
mov word [esi + 0x24], 0
pop edi
pop esi
pop ebp
mov eax, 1
pop ebx
ret
cmp dword [esi + 0x1c], 0x28
jne 0x4d1baf
mov eax, dword [esi]
mov ecx, dword [eax + 8]
or ch, 1
mov dword [eax + 8], ecx
mov word [esi + 0x24], di
mov dword [esi + 0x20], 0x29
pop edi
pop esi
pop ebp
mov eax, 1
pop ebx
ret
mov edx, dword [esi + 8]
mov ebx, 0x5b
mov ecx, edx
sub ecx, eax
and ecx, 0xfffffffe
cmp ecx, 0xc
jl 0x4d1c42
cmp word [eax], bx
jne 0x4d1c42
mov ebp, 0x3a
cmp word [eax + 2], bp
jne 0x4d1c42
mov ecx, dword [esi + 4]
mov ax, word [ecx + 4]
cmp ax, 0x3c
je 0x4d1bfb
cmp ax, 0x3e
jne 0x4d1c42
cmp word [ecx + 6], bp
jne 0x4d1c42
mov edi, 0x5d
cmp word [ecx + 8], di
jne 0x4d1c42
cmp word [ecx + 0xa], di
jne 0x4d1c42
add ecx, 0xc
sub ax, 0x3c
mov dword [esi + 4], ecx
mov ecx, dword [esi]
pop edi
mov ebp, dword [ecx + 8]
or ebp, 0x80
neg ax
sbb eax, eax
mov dword [ecx + 8], ebp
and eax, 2
add eax, 0x3c
mov dword [esi + 0x20], eax
pop esi
pop ebp
mov eax, 1
pop ebx
ret
mov eax, dword [esi + 4]
mov dword [esi + 0x28], 6
cmp eax, edx
jae 0x4d1c6f
cmp word [eax], 0x5e
jne 0x4d1c6f
add eax, 2
mov dword [esi + 0x20], ebx
mov dword [esi + 4], eax
mov word [esi + 0x24], 0
pop edi
pop esi
pop ebp
mov eax, 1
pop ebx
ret
mov dword [esi + 0x20], ebx
mov word [esi + 0x24], 1
pop edi
pop esi
pop ebp
mov eax, 1
pop ebx
ret
mov dword [esi + 0x20], 0x2e
pop edi
pop esi
pop ebp
mov eax, 1
pop ebx
ret
mov dword [esi + 0x20], 0x5e
pop edi
pop esi
pop ebp
mov eax, 1
pop ebx
ret
mov dword [esi + 0x20], 0x24
pop edi
pop esi
pop ebp
mov eax, 1
pop ebx
ret
xor edx, edx
mov dx, word [eax]
push edx
call fcn.0047d790
add esp, 4
test eax, eax
je 0x4d1cdd
mov eax, dword [esi]
mov edx, dword [eax + 8]
or edx, 0x10
mov dword [eax + 8], edx
mov eax, dword [esi]
mov ecx, dword [eax + 8]
or ch, 1
mov dword [eax + 8], ecx
mov eax, dword [esi + 4]
mov dword [esi + 0x20], 0x70
pop edi
mov cx, word [eax]
add eax, 2
mov word [esi + 0x24], cx
mov dword [esi + 4], eax
pop esi
pop ebp
mov eax, 1
pop ebx
ret
mov eax, dword [esi + 0x14]
mov dword [esi + 0x20], 0x65
test eax, eax
jne 0x4d1d13
mov dword [esi + 0x14], 0xf
pop edi
pop esi
pop ebp
xor eax, eax
pop ebx
ret
mov ecx, dword [esi + 0x14]
xor eax, eax
pop edi
pop esi
test ecx, ecx
pop ebp
pop ebx
sete al
ret