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

Disassembly:
mov rax, rsp
mov qword [rax + 8], rbx
mov qword [rax + 0x18], rsi
mov qword [rax + 0x10], rdx
push rbp
push rdi
push r12
push r13
push r14
mov rbp, rsp
sub rsp, 0x60
movups xmm0, xmmword [rdx]
mov rbx, r8
mov rdi, rcx
movaps xmmword [rax - 0x38], xmm6
xorps xmm2, xmm2
movsd xmm6, qword [rdx + 0x10]
movq r9, xmm0
mov rax, r9
movsd qword [rbp - 0x28], xmm6
sub rax, qword [rbp - 0x28]
xorps xmm1, xmm1
movups xmmword [rbp - 0x38], xmm0
mov r13b, byte [r9]
mov r8d, 1
mov qword [rbp + 0x48], rax
cmp r13b, 0x2d
jne 0x1800cf115
add r9, r8
mov qword [rbp - 0x38], r9
movsx ecx, byte [r9]
xor r10d, r10d
movsd xmm3, qword [0x1800c39c8]
xor r12b, r12b
xor edx, edx
lea r14d, [r10 + 0x30]
cmp cl, r14b
jne 0x1800cf143
add r9, r8
xor esi, esi
mov qword [rbp - 0x38], r9
xor r11b, r11b
jmp 0x1800cf2d9
lea eax, [rcx - 0x31]
cmp al, 8
ja 0x1800cf6bf
add r9, r8
mov esi, ecx
sub esi, r14d
mov qword [rbp - 0x38], r9
mov al, byte [r9]
cmp r13b, 0x2d
jne 0x1800cf19d
cmp al, r14b
jl 0x1800cf1dd
mov r11d, 0xccccccc
cmp al, 0x39
ja 0x1800cf1dd
cmp esi, r11d
jb 0x1800cf17d
jne 0x1800cf1d7
cmp al, 0x38
ja 0x1800cf1d7
add r9, r8
movzx eax, al
lea esi, [rsi + rsi*4]
mov qword [rbp - 0x38], r9
lea esi, [rsi - 0x18]
add edx, r8d
lea esi, [rax + rsi*2]
mov al, byte [r9]
cmp al, r14b
jge 0x1800cf16e
jmp 0x1800cf1dd
cmp al, r14b
jl 0x1800cf1dd
mov r11d, 0x19999999
cmp al, 0x39
ja 0x1800cf1dd
cmp esi, r11d
jb 0x1800cf1b7
jne 0x1800cf1d7
cmp al, 0x35
ja 0x1800cf1d7
add r9, r8
movzx eax, al
lea esi, [rsi + rsi*4]
mov qword [rbp - 0x38], r9
lea esi, [rsi - 0x18]
add edx, r8d
lea esi, [rax + rsi*2]
mov al, byte [r9]
cmp al, r14b
jge 0x1800cf1a8
jmp 0x1800cf1dd
mov r12b, r8b
mov r10d, esi
xor r11b, r11b
test r12b, r12b
je 0x1800cf2d9
mov al, byte [r9]
cmp r13b, 0x2d
jne 0x1800cf24d
cmp al, r14b
jl 0x1800cf2d9
movabs rcx, 0xccccccccccccccc
cmp al, 0x39
ja 0x1800cf2d9
cmp r10, rcx
jb 0x1800cf218
jne 0x1800cf235
cmp al, 0x38
ja 0x1800cf235
movzx ecx, al
add r9, r8
sub ecx, r14d
mov qword [rbp - 0x38], r9
lea rax, [r10 + r10*4]
add edx, r8d
lea r10, [rcx + rax*2]
mov al, byte [r9]
jmp 0x1800cf1f2
mov rcx, r10
mov r11b, r8b
xorps xmm1, xmm1
test rcx, rcx
js 0x1800cf299
cvtsi2sd xmm1, rcx
jmp 0x1800cf2d1
cmp al, r14b
jl 0x1800cf2d9
movabs rcx, 0x1999999999999999
mov qword [rbp - 0x40], rcx
mov rcx, r10
cmp al, 0x39
ja 0x1800cf2d9
cmp r10, qword [rbp - 0x40]
jb 0x1800cf277
jne 0x1800cf238
cmp al, 0x35
ja 0x1800cf238
movzx ecx, al
add r9, r8
sub ecx, r14d
mov qword [rbp - 0x38], r9
lea rax, [r10 + r10*4]
add edx, r8d
lea r10, [rcx + rax*2]
mov al, byte [r9]
cmp al, r14b
jge 0x1800cf264
jmp 0x1800cf2d9
mov rax, rcx
and rcx, r8
shr rax, 1
or rax, rcx
cvtsi2sd xmm1, rax
addsd xmm1, xmm1
jmp 0x1800cf2d1
cmp al, 0x39
ja 0x1800cf2d9
add r9, r8
movzx eax, al
sub eax, r14d
mulsd xmm1, xmm3
mov qword [rbp - 0x38], r9
movd xmm0, eax
cvtdq2pd xmm0, xmm0
addsd xmm1, xmm0
mov al, byte [r9]
cmp al, r14b
jge 0x1800cf2b0
xor r14d, r14d
cmp byte [r9], 0x2e
jne 0x1800cf3b9
inc r9
mov qword [rbp - 0x38], r9
mov al, byte [r9]
sub al, 0x30
cmp al, 9
ja 0x1800cf3f0
test r11b, r11b
jne 0x1800cf3b2
test r12b, r12b
jne 0x1800cf341
mov r10d, esi
jmp 0x1800cf341
movsx eax, byte [r9]
cmp al, 0x39
jg 0x1800cf347
movabs rcx, 0x1fffffffffffff
cmp r10, rcx
ja 0x1800cf347
lea ecx, [rax - 0x30]
add r9, r8
lea rax, [r10 + r10*4]
mov qword [rbp - 0x38], r9
lea r10, [rcx + rax*2]
sub r14d, r8d
test r10, r10
je 0x1800cf341
add edx, r8d
cmp byte [r9], 0x30
jge 0x1800cf30d
xorps xmm1, xmm1
test r10, r10
js 0x1800cf356
cvtsi2sd xmm1, r10
jmp 0x1800cf36e
mov rcx, r10
mov rax, r10
shr rcx, 1
and rax, r8
or rcx, rax
cvtsi2sd xmm1, rcx
addsd xmm1, xmm1
mov r11b, r8b
jmp 0x1800cf3b2
cmp al, 0x39
ja 0x1800cf3b9
cmp edx, 0x11
jge 0x1800cf3ab
movsx eax, byte [r9]
sub r14d, r8d
sub eax, 0x30
mulsd xmm1, xmm3
add r9, r8
mov qword [rbp - 0x38], r9
movd xmm0, eax
cvtdq2pd xmm0, xmm0
addsd xmm0, xmm1
comisd xmm0, xmm2
movaps xmm1, xmm0
jbe 0x1800cf3b2
add edx, r8d
jmp 0x1800cf3b2
add r9, r8
mov qword [rbp - 0x38], r9
mov al, byte [r9]
cmp al, 0x30
jge 0x1800cf373
xor r8d, r8d
cmp byte [r9], 0x65
je 0x1800cf3cc
cmp byte [r9], 0x45
jne 0x1800cf4b8
inc r9
mov qword [rbp - 0x38], r9
test r11b, r11b
jne 0x1800cf414
test r12b, r12b
mov ecx, esi
xorps xmm1, xmm1
cmovne rcx, r10
test rcx, rcx
js 0x1800cf3fc
cvtsi2sd xmm1, rcx
jmp 0x1800cf411
mov dword [rdi + 0x30], 0xe
jmp 0x1800cf6c6
mov rax, rcx
and ecx, 1
shr rax, 1
or rax, rcx
cvtsi2sd xmm1, rax
addsd xmm1, xmm1
mov r11b, 1
mov al, byte [r9]
xor cl, cl
cmp al, 0x2b
je 0x1800cf423
cmp al, 0x2d
jne 0x1800cf42d
mov cl, 1
inc r9
mov qword [rbp - 0x38], r9
mov al, byte [r9]
cmp al, 0x30
jl 0x1800cf574
movsx eax, byte [r9]
cmp al, 0x39
jg 0x1800cf574
mov dword [rdi + 0x30], 0xf
jmp 0x1800cf6c6
mov dword [rdi + 0x30], 3
sub r9, qword [rbp - 0x28]
mov qword [rdi + 0x38], r9