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

Disassembly:
mov qword [rsp + 0x18], rbx
push rsi
push rdi
push r14
sub rsp, 0x50
mov rax, qword [0x1803df868]
xor rax, rsp
mov qword [rsp + 0x48], rax
xorps xmm0, xmm0
xor eax, eax
movups xmmword [rsp + 0x20], xmm0
mov dword [rsp + 0x40], eax
mov r14, rdx
movups xmmword [rsp + 0x30], xmm0
mov r8, rcx
mov rsi, 0xffffffffffffffff
nop dword [rax]
movzx eax, byte [r8]
cmp al, 0x20
je 0x180282bac
cmp al, 9
jne 0x180282bb1
inc r8
jmp 0x180282ba0
xor r10d, r10d
mov rbx, r8
mov edi, r10d
mov r9d, 0xfff
test r9d, r9d
je 0x180282bff
movsx edx, byte [rbx]
lea eax, [rdx - 0x30]
cmp al, 9
ja 0x180282bff
lea edi, [rdi + rdi*4]
mov eax, 0x66666667
lea edi, [rdi - 0x18]
inc rbx
lea edi, [rdx + rdi*2]
imul r9d
mov r9d, edx
sar r9d, 2
mov eax, r9d
shr eax, 0x1f
add r9d, eax
lea eax, [rdi + rdi*4]
add eax, eax
cmp eax, 0xfff
jle 0x180282bc0
cmp rbx, r8
je 0x180282e80
lea eax, [rdi - 0x62f]
cmp eax, 0x9d0
ja 0x180282e80
movzx eax, byte [rbx]
inc rbx
mov dword [rsp + 0x34], edi
cmp al, 0x2d
jne 0x180282e80
mov r11d, r10d
mov r8, rbx
mov r9d, 0xc
test r9d, r9d
je 0x180282c79
movsx edx, byte [r8]
lea eax, [rdx - 0x30]
cmp al, 9
ja 0x180282c79
lea r11d, [r11 + r11*4]
mov eax, 0x66666667
lea r11d, [r11 - 0x18]
inc r8
lea r11d, [rdx + r11*2]
imul r9d
mov r9d, edx
sar r9d, 2
mov eax, r9d
shr eax, 0x1f
add r9d, eax
lea eax, [r11 + r11*4]
add eax, eax
cmp eax, 0xc
jle 0x180282c37
cmp r8, rbx
je 0x180282e7d
lea eax, [r11 - 1]
cmp eax, 0xb
ja 0x180282e7d
cmp byte [r8], 0x2d
lea rbx, [r8 + 1]
mov dword [rsp + 0x30], r11d
jne 0x180282e80
mov ecx, r10d
mov r8, rbx
mov r9d, 0x1f
nop
test r9d, r9d
je 0x180282cee
movsx edx, byte [r8]
lea eax, [rdx - 0x30]
cmp al, 9
ja 0x180282cee
lea ecx, [rcx + rcx*4]
mov eax, 0x66666667
lea ecx, [rcx - 0x18]
inc r8
lea ecx, [rdx + rcx*2]
imul r9d
mov r9d, edx
sar r9d, 2
mov eax, r9d
shr eax, 0x1f
add r9d, eax
lea eax, [rcx + rcx*4]
add eax, eax
cmp eax, 0x1f
jle 0x180282cb0
cmp r8, rbx
je 0x180282e7d
lea eax, [rcx - 1]
cmp eax, 0x1e
ja 0x180282e7d
cmp byte [r8], 0x54
lea rbx, [r8 + 1]
mov dword [rsp + 0x2c], ecx
jne 0x180282e80
mov ecx, r10d
mov r8, rbx
mov r9d, 0x17
test r9d, r9d
je 0x180282d5f
movsx edx, byte [r8]
lea eax, [rdx - 0x30]
cmp al, 9
ja 0x180282d5f
lea ecx, [rcx + rcx*4]
mov eax, 0x66666667
lea ecx, [rcx - 0x18]
inc r8
lea ecx, [rdx + rcx*2]
imul r9d
mov r9d, edx
sar r9d, 2
mov eax, r9d
shr eax, 0x1f
add r9d, eax
lea eax, [rcx + rcx*4]
add eax, eax
cmp eax, 0x17
jle 0x180282d21
cmp r8, rbx
je 0x180282e7d
cmp ecx, 0x17
ja 0x180282e7d
cmp byte [r8], 0x3a
lea rbx, [r8 + 1]
mov dword [rsp + 0x28], ecx
jne 0x180282e80
mov ecx, r10d
mov r8, rbx
mov r9d, 0x3b
nop
test r9d, r9d
je 0x180282dce
movsx edx, byte [r8]
lea eax, [rdx - 0x30]
cmp al, 9
ja 0x180282dce
lea ecx, [rcx + rcx*4]
mov eax, 0x66666667
lea ecx, [rcx - 0x18]
inc r8
lea ecx, [rdx + rcx*2]
imul r9d
mov r9d, edx
sar r9d, 2
mov eax, r9d
shr eax, 0x1f
add r9d, eax
lea eax, [rcx + rcx*4]
add eax, eax
cmp eax, 0x3b
jle 0x180282d90
cmp r8, rbx
je 0x180282e7d
cmp ecx, 0x3b
ja 0x180282e7d
cmp byte [r8], 0x3a
lea rbx, [r8 + 1]
mov dword [rsp + 0x24], ecx
jne 0x180282e80
mov r8, rbx
mov r9d, 0x3c
nop dword [rax + rax]
test r9d, r9d
je 0x180282e42
movsx edx, byte [r8]
lea eax, [rdx - 0x30]
cmp al, 9
ja 0x180282e42
lea r10d, [r10 + r10*4]
mov eax, 0x66666667
lea r10d, [r10 - 0x18]
inc r8
lea r10d, [rdx + r10*2]
imul r9d
mov r9d, edx
sar r9d, 2
mov eax, r9d
shr eax, 0x1f
add r9d, eax
lea eax, [r10 + r10*4]
add eax, eax
cmp eax, 0x3c
jle 0x180282e00
cmp r8, rbx
je 0x180282e7d
cmp r10d, 0x3c
ja 0x180282e7d
cmp byte [r8], 0x5a
lea rbx, [r8 + 1]
mov dword [rsp + 0x20], r10d
jne 0x180282e80
lea eax, [rdi - 0x76c]
mov dword [rsp + 0x34], eax
lea rcx, [rsp + 0x20]
lea eax, [r11 - 1]
mov dword [rsp + 0x30], eax
call fcn.1802ae00c
mov rsi, rax
jmp 0x180282e80
mov rbx, r8
mov rax, rsi
test r14, r14
je 0x180282e8b
mov qword [r14], rbx
mov rcx, qword [rsp + 0x48]
xor rcx, rsp
call fcn.180296ce0
mov rbx, qword [rsp + 0x80]
add rsp, 0x50
pop r14
pop rdi
pop rsi
ret