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

Disassembly:
mov qword [rsp + 8], rbx
push rbp
push rsi
push rdi
push r12
push r13
push r14
push r15
mov rbp, rsp
sub rsp, 0x50
mov rbx, rdx
mov rsi, r8
xor edx, edx
mov edi, ecx
mov dword [rbp - 8], edx
mov r9d, edx
mov dword [rbp - 0xc], edx
mov eax, edx
mov word [rbp + 0x58], dx
mov r13d, edx
mov word [rbp + 0x48], dx
mov r12d, edx
mov word [rbp - 0x10], dx
mov r14d, edx
mov dword [rbp - 4], edx
mov r15d, edx
test rbx, rbx
je 0x1402d2b1b
test r8, r8
je 0x1402d2b1b
xor ecx, ecx
mov qword [r8], rcx
mov qword [r8 + 8], rcx
test edi, edi
jne 0x1402d28f1
mov r9d, 0x80049e3d
jmp 0x1402d2b21
cmp word [rbx], 0x2d
jne 0x1402d2900
add rbx, 2
sub edi, 1
je 0x1402d28e6
cmp word [rbx], 0x50
jne 0x1402d28e6
add rbx, 2
or r8d, 0xffffffff
add edi, r8d
je 0x1402d28e6
cmp word [rbx], 0x54
jne 0x1402d2932
test r15d, r15d
jne 0x1402d28e6
add rbx, 2
mov r15d, 1
add edi, r8d
je 0x1402d28e6
jmp 0x1402d2ae2
movzx eax, word [rbx]
sub ax, 0x30
cmp ax, 9
jbe 0x1402d2945
cmp word [rbx], 0x2e
jne 0x1402d28e6
lea rax, [rbp - 4]
mov rdx, rbx
mov qword [rsp + 0x30], rax
lea r9, [rbp - 0xc]
lea rax, [rbp - 0x10]
mov ecx, edi
mov qword [rsp + 0x28], rax
lea r8, [rbp + 0x58]
lea rax, [rbp + 0x48]
mov qword [rsp + 0x20], rax
call fcn.1402d2da8
xor edx, edx
mov r9d, eax
test eax, eax
jne 0x1402d2b21
mov ecx, dword [rbp - 4]
sub edi, dword [rbp - 4]
lea rbx, [rbx + rcx*2]
movzx eax, word [rbx]
cmp eax, 0x44
je 0x1402d2ab5
cmp eax, 0x48
je 0x1402d2a8a
cmp eax, 0x4d
je 0x1402d2a5c
cmp eax, 0x53
jne 0x1402d28e6
test r15d, r15d
je 0x1402d28e6
test r14d, r14d
jne 0x1402d28e6
movzx eax, word [rbp + 0x58]
mov word [rsi + 0xc], ax
cmp dword [rbp - 0xc], edx
je 0x1402d2a54
movzx r8d, word [rbp - 0x10]
lea r10d, [r9 + 3]
movzx edx, word [rbp + 0x48]
cmp r8w, r10w
jae 0x1402d2a14
mov eax, r10d
sub ax, r8w
movzx ecx, ax
add r8w, cx
mov word [rbp - 0x10], r8w
movzx eax, dx
shl ax, 2
add dx, ax
add dx, dx
mov word [rbp + 0x48], dx
sub rcx, 1
jne 0x1402d29f9
cmp r8w, r10w
jbe 0x1402d2a4e
movzx eax, r8w
sub ax, r10w
movzx r10d, ax
movzx ecx, dx
mov eax, 0xffff
add r8w, ax
mov eax, 0x66666667
imul ecx
sar edx, 2
mov eax, edx
shr eax, 0x1f
add edx, eax
mov word [rbp + 0x48], dx
sub r10, 1
jne 0x1402d2a22
mov word [rbp - 0x10], r8w
mov word [rsi + 0xe], dx
xor edx, edx
mov r14d, 1
jmp 0x1402d2a85
test r15d, r15d
je 0x1402d28e6
test r12d, r12d
jne 0x1402d28e6
cmp dword [rbp - 0xc], edx
jne 0x1402d28e6
movzx eax, word [rbp + 0x58]
mov r12d, 1
mov word [rsi + 0xa], ax
mov eax, dword [rbp - 8]
jmp 0x1402d2ad7
test r15d, r15d
je 0x1402d28e6
test r13d, r13d
jne 0x1402d28e6
cmp dword [rbp - 0xc], edx
jne 0x1402d28e6
movzx eax, word [rbp + 0x58]
mov r13d, 1
mov word [rsi + 8], ax
jmp 0x1402d2a85
cmp dword [rbp - 8], edx
jne 0x1402d28e6
cmp dword [rbp - 0xc], edx
jne 0x1402d28e6
movzx eax, word [rbp + 0x58]
mov word [rsi + 6], ax
mov eax, 1
mov dword [rbp - 8], eax
add rbx, 2
or r8d, 0xffffffff
add edi, r8d
test edi, edi
jne 0x1402d2913
test eax, eax
jne 0x1402d2b02
test r13d, r13d
jne 0x1402d2b11
test r12d, r12d
jne 0x1402d2b11
test r14d, r14d
jne 0x1402d2b11
jmp 0x1402d28e6
test r13d, r13d
jne 0x1402d2b11
test r12d, r12d
jne 0x1402d2b11
test r14d, r14d
je 0x1402d2b21
test r15d, r15d
jne 0x1402d2b21
jmp 0x1402d28e6
mov r9d, 0x80070057
mov eax, r9d
mov rbx, qword [rsp + 0x90]
add rsp, 0x50
pop r15
pop r14
pop r13
pop r12
pop rdi
pop rsi
pop rbp
ret