Function at 0x14000696e
Capabilities:
Validate payment card number using luhn algorithm

Disassembly:
push r15
push r14
push r13
push r12
push rbp
push rdi
push rsi
push rbx
sub rsp, 0x88
xor r8d, r8d
mov rbp, qword [rcx + 8]
mov rsi, qword [rcx]
test rbp, rbp
je 0x140006994
lea r8, [rbp + 8]
test rsi, rsi
jle 0x140006a75
mov al, byte [r8]
cmp al, 0x2b
je 0x1400069b0
mov r13d, 1
cmp al, 0x2d
jne 0x1400069c5
jmp 0x1400069b4
or r13, 0xffffffffffffffff
mov r14d, 1
cmp rsi, 1
jne 0x1400069cc
jmp 0x140006a75
or r13, 0xffffffffffffffff
xor r14d, r14d
mov al, byte [r8 + r14]
xor ebx, ebx
sub eax, 0x30
cmp al, 9
ja 0x140006a77
movabs r10, 0x7fffffffffffffd0
lea r15, [0x14001e200]
movzx ecx, byte [r8 + r14]
lea eax, [rcx - 0x30]
cmp al, 9
jbe 0x140006a02
cmp r13, 0xffffffffffffffff
jne 0x140006a68
jmp 0x140006a5a
lea rax, [rcx + r10]
mov r11d, 0xa
cqo
idiv r11
cmp rax, rbx
jle 0x140006a3e
mov qword [rsp + 0x28], r8
call fcn.140006909
mov rcx, r15
call fcn.140011e10
mov r8, qword [rsp + 0x28]
movabs r10, 0x7fffffffffffffd0
cmp byte [rax], 0
je 0x140006a49
jmp 0x140006a77
imul rbx, rbx, 0xa
sub rcx, 0x30
sub rbx, rcx
inc r14
cmp r14, rsi
jge 0x1400069fa
cmp byte [r8 + r14], 0x5f
je 0x140006a49
jmp 0x1400069ee
mov eax, 1
shl rax, 0x3f
cmp rbx, rax
je 0x140006a6e
imul rbx, r13
jmp 0x140006a7a
call fcn.140006909
jmp 0x140006a77
xor ebx, ebx
xor r14d, r14d
lea rcx, [0x14001e200]
call fcn.140011e10
cmp byte [rax], 0
mov r13, rax
jne 0x140006c23
test r14, r14
mov rax, 0xffffffffffffffff
mov qword [rsp + 0x58], 0
lea r14, [0x140859b40]
mov qword [rsp + 0x60], 0
cmove rbx, rax
lea rax, [rsp + 0x68]
mov qword [rsp + 0x28], rax
lea rax, [rsp + 0x40]
mov qword [rsp + 0x30], rax
lea rax, [rsp + 0x58]
mov qword [rsp + 0x38], rax
mov rcx, qword [rsp + 0x28]
mov edx, 0x18
call fcn.140001fe2
mov rax, qword [r14]
mov rdx, qword [r14 + 8]
mov rcx, qword [rsp + 0x38]
mov qword [rsp + 0x68], rax
mov r15, rax
mov rax, qword [r14 + 0x10]
mov qword [rsp + 0x70], rdx
mov rdx, qword [rsp + 0x30]
mov qword [rsp + 0x78], rax
movups xmm0, xmmword [rsp + 0x70]
movaps xmmword [rsp + 0x40], xmm0
call fcn.1400056c1
cmp r15, rbx
mov rcx, qword [rsp + 0x60]
je 0x140006be7
mov r10, qword [rsp + 0x58]
xor eax, eax
xor edx, edx
cmp rdx, r10
jge 0x140006b42
cmp rax, rsi
jl 0x140006b50
jmp 0x140006bc3
mov dil, 0
jne 0x140006bc5
cmp rax, rsi
sete dil
jmp 0x140006bc5
mov r8b, byte [rcx + rdx + 8]
cmp r8b, 0x2d
je 0x140006b61
cmp r8b, 0x5f
jne 0x140006b64
inc rdx
mov r8b, byte [rbp + rax + 8]
cmp r8b, 0x2d
je 0x140006b79
cmp r8b, 0x5f
jne 0x140006bfc
inc rax
cmp rdx, r10
jge 0x140006bb8
cmp rax, rsi
jge 0x140006bb8
mov r9b, byte [rcx + rdx + 8]
lea r8d, [r9 - 0x41]
cmp r8b, 0x19
ja 0x140006b99
xor r9d, 0x20
cmp byte [r13], 0
jne 0x140006bc5
mov r8b, byte [rbp + rax + 8]
lea r11d, [r8 - 0x41]
cmp r11b, 0x19
ja 0x140006bb3
xor r8d, 0x20
cmp r9b, r8b
jne 0x140006bc3
inc rdx
inc rax
jmp 0x140006b33
xor edi, edi
cmp byte [r13], 0
jne 0x140006c1e
test dil, dil
jne 0x140006be7
add r14, 0x18
lea rax, [0x14085aa88]
cmp rax, r14
jne 0x140006ad7
jmp 0x140006c01
mov r12d, r15d
test rcx, rcx
je 0x140006c23
test byte [rcx + 7], 0x40
jne 0x140006c23
call fcn.1400055fd
jmp 0x140006c23
cmp rdx, r10
jmp 0x140006b84
test rcx, rcx
je 0x140006c18
test byte [rcx + 7], 0x40
jne 0x140006c11
call fcn.1400055fd
cmp byte [r13], 0
jne 0x140006c23
or r12d, 0xffffffff
jmp 0x140006c23
test rcx, rcx
jne 0x140006c06
mov eax, r12d
add rsp, 0x88
pop rbx
pop rsi
pop rdi
pop rbp
pop r12
pop r13
pop r14
pop r15
ret