Function at 0x1402d1ec0
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 0x1402d215b
test r8, r8
je 0x1402d215b
xor ecx, ecx
mov qword [r8], rcx
mov qword [r8 + 8], rcx
test edi, edi
jne 0x1402d1f31
mov r9d, 0x80049e3d
jmp 0x1402d2161
cmp word [rbx], 0x2d
jne 0x1402d1f40
add rbx, 2
sub edi, 1
je 0x1402d1f26
cmp word [rbx], 0x50
jne 0x1402d1f26
add rbx, 2
or r8d, 0xffffffff
add edi, r8d
je 0x1402d1f26
cmp word [rbx], 0x54
jne 0x1402d1f72
test r15d, r15d
jne 0x1402d1f26
add rbx, 2
mov r15d, 1
add edi, r8d
je 0x1402d1f26
jmp 0x1402d2122
movzx eax, word [rbx]
sub ax, 0x30
cmp ax, 9
jbe 0x1402d1f85
cmp word [rbx], 0x2e
jne 0x1402d1f26
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.1402d23e8
xor edx, edx
mov r9d, eax
test eax, eax
jne 0x1402d2161
mov ecx, dword [rbp - 4]
sub edi, dword [rbp - 4]
lea rbx, [rbx + rcx*2]
movzx eax, word [rbx]
cmp eax, 0x44
je 0x1402d20f5
cmp eax, 0x48
je 0x1402d20ca
cmp eax, 0x4d
je 0x1402d209c
cmp eax, 0x53
jne 0x1402d1f26
test r15d, r15d
je 0x1402d1f26
test r14d, r14d
jne 0x1402d1f26
movzx eax, word [rbp + 0x58]
mov word [rsi + 0xc], ax
cmp dword [rbp - 0xc], edx
je 0x1402d2094
movzx r8d, word [rbp - 0x10]
lea r10d, [r9 + 3]
movzx edx, word [rbp + 0x48]
cmp r8w, r10w
jae 0x1402d2054
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 0x1402d2039
cmp r8w, r10w
jbe 0x1402d208e
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 0x1402d2062
mov word [rbp - 0x10], r8w
mov word [rsi + 0xe], dx
xor edx, edx
mov r14d, 1
jmp 0x1402d20c5
test r15d, r15d
je 0x1402d1f26
test r12d, r12d
jne 0x1402d1f26
cmp dword [rbp - 0xc], edx
jne 0x1402d1f26
movzx eax, word [rbp + 0x58]
mov r12d, 1
mov word [rsi + 0xa], ax
mov eax, dword [rbp - 8]
jmp 0x1402d2117
test r15d, r15d
je 0x1402d1f26
test r13d, r13d
jne 0x1402d1f26
cmp dword [rbp - 0xc], edx
jne 0x1402d1f26
movzx eax, word [rbp + 0x58]
mov r13d, 1
mov word [rsi + 8], ax
jmp 0x1402d20c5
cmp dword [rbp - 8], edx
jne 0x1402d1f26
cmp dword [rbp - 0xc], edx
jne 0x1402d1f26
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 0x1402d1f53
test eax, eax
jne 0x1402d2142
test r13d, r13d
jne 0x1402d2151
test r12d, r12d
jne 0x1402d2151
test r14d, r14d
jne 0x1402d2151
jmp 0x1402d1f26
test r13d, r13d
jne 0x1402d2151
test r12d, r12d
jne 0x1402d2151
test r14d, r14d
je 0x1402d2161
test r15d, r15d
jne 0x1402d2161
jmp 0x1402d1f26
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