Function at 0x1400877d0
Capabilities:
Parse credit card information

Disassembly:
push rbx
push rsi
push r12
push r14
sub rsp, 0x48
mov r12, qword [rcx]
lea r14, [0x140000000]
mov rdx, qword [r12 + 0x8a80]
mov rsi, qword [r12 + 0x1a8]
mov rbx, rdx
nop
nop
movsx eax, byte [rbx]
add eax, 0xffffffdf
cmp eax, 0x5d
ja case.0x140087821.34
cdqe
movzx eax, byte [r14 + rax + 0x87b60]
mov ecx, dword [r14 + rax*4 + 0x87b58]
add rcx, r14
jmp rcx
add rbx, 1
jmp 0x140087800
cmp rbx, rdx
mov qword [rsp + 0x40], rbp
mov qword [rsp + 0x30], r13
je 0x140087876
cmp rbx, rdx
mov r8, rbx
jbe 0x14008784c
cmp byte [rbx - 1], 0x2f
lea rax, [rbx - 1]
cmove r8, rax
lea r13, [rsi + 8]
xor ebp, ebp
sub r8, rdx
mov rcx, r12
mov r9, r13
mov dword [rsp + 0x28], 1
mov qword [rsp + 0x20], rbp
call fcn.14009b4a0
test eax, eax
je 0x140087880
jmp 0x140087b16
lea r13, [rsi + 8]
xor ebp, ebp
mov qword [r13], rbp
cmp byte [rbx], 0x3b
mov qword [rsp + 0x38], rdi
jne 0x140087aa2
nop
movzx eax, byte [rbx + 1]
add rbx, 1
test al, al
mov rdx, rbx
je 0x140087b41
cmp al, 0x3d
je 0x1400878bc
mov al, byte [rbx + 1]
add rbx, 1
test al, al
jne 0x1400878a3
mov eax, 3
jmp 0x140087b11
cmp byte [rbx], 0
je 0x140087b41
mov r8, rbx
lea r9, [rsp + 0x78]
mov rcx, r12
sub r8, rdx
mov dword [rsp + 0x28], 1
mov qword [rsp + 0x20], rbp
call fcn.14009b4a0
test eax, eax
jne 0x140087b11
add rbx, 1
mov rdx, rbx
movsx eax, byte [rbx]
add eax, 0xffffffdf
cmp eax, 0x5d
ja case.0x140087915.34
cdqe
movzx eax, byte [r14 + rax + 0x87bc8]
mov ecx, dword [r14 + rax*4 + 0x87bc0]
add rcx, r14
jmp rcx
add rbx, 1
jmp 0x1400878f4
lea rax, [rsp + 0x80]
mov r8, rbx
lea r9, [rsp + 0x70]
mov rcx, r12
sub r8, rdx
mov dword [rsp + 0x28], 1
mov qword [rsp + 0x20], rax
call fcn.14009b4a0
test eax, eax
mov edi, eax
jne 0x140087b48
mov rcx, qword [rsp + 0x78]
lea rdx, str.UIDVALIDITY
call fcn.14007d100
test eax, eax
je 0x14008799c
cmp qword [rsi + 0x10], 0
jne 0x14008799c
mov rax, qword [rsp + 0x80]
test rax, rax
je 0x140087989
mov rcx, qword [rsp + 0x70]
cmp byte [rcx + rax - 1], 0x2f
jne 0x140087989
mov byte [rcx + rax - 1], dil
mov rax, qword [rsp + 0x70]
mov qword [rsp + 0x70], rbp
mov qword [rsi + 0x10], rax
jmp 0x140087a83
mov rcx, qword [rsp + 0x78]
lea rdx, [0x1401996fc]
call fcn.14007d100
test eax, eax
je 0x1400879e9
cmp qword [rsi + 0x18], 0
jne 0x1400879e9
mov rax, qword [rsp + 0x80]
test rax, rax
je 0x1400879d6
mov rcx, qword [rsp + 0x70]
cmp byte [rcx + rax - 1], 0x2f
jne 0x1400879d6
mov byte [rcx + rax - 1], 0
mov rax, qword [rsp + 0x70]
mov qword [rsp + 0x70], rbp
mov qword [rsi + 0x18], rax
jmp 0x140087a83
mov rcx, qword [rsp + 0x78]
lea rdx, str.SECTION
call fcn.14007d100
test eax, eax
je 0x140087a33
cmp qword [rsi + 0x20], 0
jne 0x140087a33
mov rax, qword [rsp + 0x80]
test rax, rax
je 0x140087a23
mov rcx, qword [rsp + 0x70]
cmp byte [rcx + rax - 1], 0x2f
jne 0x140087a23
mov byte [rcx + rax - 1], 0
mov rax, qword [rsp + 0x70]
mov qword [rsp + 0x70], rbp
mov qword [rsi + 0x20], rax
jmp 0x140087a83
mov rcx, qword [rsp + 0x78]
lea rdx, str.PARTIAL
call fcn.14007d100
test eax, eax
je 0x140087b2b
cmp qword [rsi + 0x28], 0
jne 0x140087b2b
mov rax, qword [rsp + 0x80]
test rax, rax
je 0x140087a75
mov rcx, qword [rsp + 0x70]
cmp byte [rcx + rax - 1], 0x2f
jne 0x140087a75
mov byte [rcx + rax - 1], 0
mov rax, qword [rsp + 0x70]
mov qword [rsp + 0x70], rbp
mov qword [rsi + 0x28], rax
mov rcx, qword [rsp + 0x78]
call qword [fcn.140046f30]
mov rcx, qword [rsp + 0x70]
call qword [fcn.140046f30]
cmp byte [rbx], 0x3b
je 0x140087890
cmp qword [r13], 0
je 0x140087b07
cmp qword [rsi + 0x18], 0
jne 0x140087b07
cmp byte [rbx], 0x3f
jne 0x140087b07
movzx ecx, byte [rbx + 1]
add rbx, 1
mov r10, rbx
call fcn.140087640
test eax, eax
je 0x140087ae1
nop
nop
movzx ecx, byte [rbx + 1]
add rbx, 1
call fcn.140087640
test eax, eax
jne 0x140087ad0
mov r8, rbx
lea r9, [rsi + 0x30]
mov rdx, r10
mov rcx, r12
sub r8, r10
mov dword [rsp + 0x28], 1
mov qword [rsp + 0x20], rbp
call fcn.14009b4a0
test eax, eax
jne 0x140087b11
movzx eax, byte [rbx]
neg al
sbb eax, eax
and eax, 3
mov rdi, qword [rsp + 0x38]
mov r13, qword [rsp + 0x30]
mov rbp, qword [rsp + 0x40]
add rsp, 0x48
pop r14
pop r12
pop rsi
pop rbx
ret
mov rcx, qword [rsp + 0x78]
call qword [fcn.140046f30]
mov rcx, qword [rsp + 0x70]
call qword [fcn.140046f30]
mov eax, 3
jmp 0x140087b11
mov rcx, qword [rsp + 0x78]
call qword [fcn.140046f30]
mov eax, edi
jmp 0x140087b11