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

Disassembly:
mov qword [rsp + 0x10], rbx
mov qword [rsp + 0x18], r8
mov qword [rsp + 8], rcx
push rbp
push rsi
push rdi
push r12
push r13
push r14
push r15
sub rsp, 0x30
mov rbx, qword [r9]
mov r15, rcx
movsxd rsi, dword [r9 + 8]
mov rcx, rbx
mov r12, r8
mov rdi, rdx
call fcn.140011ed4
mov r14d, eax
mov r13d, 1
mov eax, dword [rsp + 0x90]
lea ebp, [r14 + rsi]
lea r10d, [rbp - 1]
mov dword [rsp + 0x88], r10d
test eax, eax
jne 0x14000d419
lea edx, [rax - 3]
mov ecx, edx
sub ecx, r14d
cmp r14d, r13d
cmovne edx, ecx
cmp edx, esi
jg 0x14000d259
cmp r14d, r13d
setne al
add eax, 4
cmp esi, eax
jle 0x14000d436
xor ecx, ecx
lea eax, [r10 + 0x63]
cmp eax, 0xc6
seta cl
xor esi, esi
add ecx, 4
cmp r14d, r13d
seta sil
add esi, ecx
mov rcx, r12
add esi, r14d
sub rcx, rdi
mov eax, esi
cmp rcx, rax
jl 0x14000d681
xor r12d, r12d
lea r11, [0x140000000]
movabs rax, 0xffffffff00000000
mov ebp, 0x51eb851f
test rax, rbx
je 0x14000d35b
movabs rax, 0xabcc77118461cefd
mov r12d, 8
mul rbx
shr rdx, 0x1a
imul eax, edx, 0x5f5e100
sub ebx, eax
mov eax, 0xd1b71759
mov ecx, ebx
mov rbx, rdx
mul ecx
mov r9d, edx
shr r9d, 0xd
imul eax, r9d, 0x2710
sub ecx, eax
mov eax, 0xd1b71759
mul r9d
shr edx, 0xd
imul eax, edx, 0x2710
sub r9d, eax
mov eax, ebp
mul ecx
shr edx, 5
imul eax, edx, 0x64
sub ecx, eax
add ecx, ecx
movzx eax, word [rcx + r11 + 0xd2a80]
mov word [r14 + rdi - 1], ax
lea eax, [rdx + rdx]
movzx eax, word [rax + r11 + 0xd2a80]
mov word [r14 + rdi - 3], ax
mov eax, ebp
mul r9d
shr edx, 5
imul eax, edx, 0x64
sub r9d, eax
add r9d, r9d
movzx eax, word [r9 + r11 + 0xd2a80]
mov word [r14 + rdi - 5], ax
lea eax, [rdx + rdx]
movzx eax, word [rax + r11 + 0xd2a80]
mov word [r14 + rdi - 7], ax
mov r9d, 0x2710
cmp ebx, r9d
jb 0x14000d3c2
mov eax, 0xd1b71759
mov r8, rdi
mul ebx
shr edx, 0xd
imul eax, edx, 0x2710
sub ebx, eax
mov eax, ebp
mov ecx, ebx
mov ebx, edx
mul ecx
mov eax, r12d
add r12d, 4
sub r8, rax
shr edx, 5
imul eax, edx, 0x64
sub ecx, eax
add ecx, ecx
movzx eax, word [rcx + r11 + 0xd2a80]
mov word [r8 + r14 - 1], ax
lea eax, [rdx + rdx]
movzx eax, word [rax + r11 + 0xd2a80]
mov word [r8 + r14 - 3], ax
cmp ebx, r9d
jae 0x14000d366
mov r15, qword [rsp + 0x70]
cmp ebx, 0x64
jb 0x14000d3f2
mov eax, ebp
mov rcx, r14
mul ebx
shr edx, 5
imul eax, edx, 0x64
sub ebx, eax
lea eax, [rbx + rbx]
mov ebx, edx
lea rdx, [rax]
mov eax, r12d
sub rcx, rax
movzx eax, word [rdx + r11 + 0xd2a80]
mov word [rcx + rdi - 1], ax
cmp ebx, 0xa
jb 0x14000d691
lea ecx, [rbx + rbx]
lea eax, [rcx + 1]
mov al, byte [rax + r11 + 0xd2a80]
mov byte [rdi + 2], al
mov bl, byte [rcx + r11 + 0xd2a80]
jmp 0x14000d694
cmp eax, 3
jne 0x14000d42d
lea eax, [r10 + 4]
cmp eax, 9
ja 0x14000d259
jmp 0x14000d436
cmp eax, 2
jne 0x14000d259
lea r11, [0x140000000]
test esi, esi
js 0x14000d457
mov r12d, ebp
cmp rbx, r13
jne 0x14000d46a
movzx eax, byte [rsi + r11 + 0xd38c0]
sub r12d, eax
jmp 0x14000d46a
test ebp, ebp
jle 0x14000d461
lea r12d, [r14 + 1]
jmp 0x14000d46a
mov r12d, 2
sub r12d, esi
mov r8, qword [rsp + 0x80]
mov rax, r8
mov ecx, r12d
sub rax, rdi
cmp rax, rcx
jl 0x14000d679
test esi, esi
jle 0x14000d4ac
cmp esi, 0x16
jg 0x14000d57e
bsf rcx, rbx
mov rax, rbx
shr rax, cl
cmp rax, qword [r11 + rsi*8 + 0xd3a00]
ja 0x14000d57e
mov rcx, r14
movabs rax, 0xffffffff00000000
lea r9, [rcx + rdi]
mov r13d, 0xd1b71759
mov r10d, 0x51eb851f
test rax, rbx
je 0x14000d576
movabs rax, 0xabcc77118461cefd
mul rbx
shr rdx, 0x1a
imul eax, edx, 0x5f5e100
sub ebx, eax
mov eax, r13d
mov ecx, ebx
mov rbx, rdx
mul ecx
mov r8d, edx
shr r8d, 0xd
imul eax, r8d, 0x2710
sub ecx, eax
mov eax, r13d
mul r8d
shr edx, 0xd
imul eax, edx, 0x2710
sub r8d, eax
mov eax, r10d
mul ecx
shr edx, 5
imul eax, edx, 0x64
sub ecx, eax
add ecx, ecx
movzx eax, word [rcx + r11 + 0xd2a80]
mov word [r9 - 2], ax
lea eax, [rdx + rdx]
movzx eax, word [rax + r11 + 0xd2a80]
mov word [r9 - 4], ax
mov eax, r10d
mul r8d
shr edx, 5
imul eax, edx, 0x64
sub r8d, eax
add r8d, r8d
movzx eax, word [r8 + r11 + 0xd2a80]
mov word [r9 - 6], ax
sub r9, 8
lea eax, [rdx + rdx]
movzx eax, word [rax + r11 + 0xd2a80]
mov word [r9], ax
mov r8d, 0x2710
jmp 0x14000d5e1
and dword [rsp + 0x20], 0
mov rdx, rdi
movsd xmm3, qword [rsp + 0x98]
mov rcx, r15
call fcn.14000c6c8
jmp 0x14000d737
mov eax, r13d
mul ebx
shr edx, 0xd
imul eax, edx, 0x2710
sub ebx, eax
mov eax, r10d
mov ecx, ebx
mov ebx, edx
mul ecx
shr edx, 5
imul eax, edx, 0x64
sub ecx, eax
add ecx, ecx
movzx eax, word [rcx + r11 + 0xd2a80]
lea ecx, [rdx + rdx]
mov word [r9 - 2], ax
sub r9, 4
movzx ecx, word [rcx + r11 + 0xd2a80]
mov word [r9], cx
cmp ebx, r8d
jae 0x14000d59c
cmp ebx, 0x64
jb 0x14000d60e
mov eax, r10d
mul ebx
shr edx, 5
imul eax, edx, 0x64
sub ebx, eax
sub r9, 2
lea eax, [rbx + rbx]
mov ebx, edx
movzx eax, word [rax + r11 + 0xd2a80]
mov word [r9], ax
cmp ebx, 0xa
jb 0x14000d626
lea eax, [rbx + rbx]
movzx eax, word [rax + r11 + 0xd2a80]
mov word [r9 - 2], ax
jmp 0x14000d62d
add bl, 0x30
mov byte [r9 - 1], bl
test esi, esi
jle 0x14000d63a
lea rcx, [rdi + r14]
mov r8, rsi
jmp 0x14000d66a
je 0x14000d671
test ebp, ebp
jle 0x14000d658
movsxd rbx, ebp
lea rdx, [rdi + 1]
mov r8, rbx
mov rcx, rdi
call fcn.1400caa70
mov byte [rbx + rdi], reloc.WLDAP32.dll_Ordinal_46
jmp 0x14000d671
neg ebp
mov word [rdi], 0x2e30
test ebp, ebp
jle 0x14000d671
lea rcx, [rdi + 2]
movsxd r8, ebp
mov dl, 0x30
call fcn.1400013e4
mov eax, r12d
jmp 0x14000d72c
mov r12, qword [rsp + 0x80]
mov qword [r15], r12
mov dword [r15 + 8], 0x84
jmp 0x14000d737
add bl, 0x30
mov byte [rdi], bl
cmp r14d, r13d
jbe 0x14000d6a3
mov byte [rdi + 1], reloc.WLDAP32.dll_Ordinal_46
lea r13d, [r14 + 1]
mov eax, r13d
inc r13d
mov byte [rax + rdi], 0x65
test r10d, r10d
jns 0x14000d6b5
neg r10d
cmp dword [rsp + 0x88], 0
mov eax, reloc.WLDAP32.dll_Ordinal_45
lea edx, [rax - 2]
cmovge eax, edx
mov byte [rdi + r13], al
inc r13d
cmp r10d, 0x64
jl 0x14000d715
mov eax, 0x66666667
imul r10d
sar edx, 2
mov eax, edx
shr eax, 0x1f
add edx, eax
lea eax, [rdx + rdx]
cdqe
movzx eax, word [rax + r11 + 0xd2a80]
mov word [r13 + rdi], ax
mov al, dl
shl dl, 2
add al, dl
add al, al
sub r10b, al
lea eax, [r13 + 2]
add r10b, 0x30
mov byte [rax + rdi], r10b
jmp 0x14000d72a
lea eax, [r10 + r10]
cdqe
movzx eax, word [rax + r11 + 0xd2a80]
mov word [r13 + rdi], ax
mov eax, esi
add rax, rdi
and dword [r15 + 8], 0
mov qword [r15], rax
mov rbx, qword [rsp + 0x78]
mov rax, r15
add rsp, 0x30
pop r15
pop r14
pop r13
pop r12
pop rdi
pop rsi
pop rbp
ret