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

Disassembly:
mov rax, rsp
mov qword [rax + 8], rbx
mov qword [rax + 0x18], r8
push rbp
push rsi
push rdi
push r12
push r13
push r14
push r15
sub rsp, 0x50
movaps xmmword [rax - 0x48], xmm6
mov r13, rcx
mov rcx, qword [rdx + 0x38]
mov rbx, rdx
sub rcx, qword [rdx + 0x10]
xorps xmm6, xmm6
movaps xmmword [rax - 0x58], xmm7
xorps xmm7, xmm7
mov rax, qword [rdx + 0x28]
add rcx, rax
mov qword [rsp + 0x28], rcx
cmp byte [rax], 0x2d
jne 0x1400b1944
mov rcx, rdx
call fcn.1400b3044
mov r12b, 1
jmp 0x1400b1947
xor r12b, r12b
mov rcx, qword [rbx + 0x28]
xor bpl, bpl
xor edi, edi
mov byte [rsp + 0xa8], r12b
xor r15d, r15d
mov byte [rsp + 0x98], bpl
movsx esi, byte [rcx]
cmp sil, 0x30
jne 0x1400b1985
mov rcx, rbx
xor esi, esi
call fcn.1400b3044
mov rdx, qword [rbx + 0x28]
xor r12b, r12b
xor r14d, r14d
jmp 0x1400b1b2a
lea eax, [rsi - 0x31]
cmp al, 8
ja 0x1400b20ba
mov rcx, rbx
call fcn.1400b3044
mov rdx, qword [rbx + 0x28]
lea r14d, [rsi - 0x30]
mov sil, byte [rdx]
test r12b, r12b
je 0x1400b19f9
cmp sil, 0x30
jl 0x1400b1a48
mov r12d, 0xccccccc
cmp sil, 0x39
ja 0x1400b1a48
cmp r14d, r12d
jb 0x1400b19cf
jne 0x1400b1a42
cmp sil, 0x38
ja 0x1400b1a42
mov rcx, rbx
call fcn.1400b3044
mov rdx, qword [rbx + 0x28]
lea r14d, [r14 + r14*4]
movzx eax, sil
lea r14d, [r14 - 0x18]
inc r15d
mov sil, byte [rdx]
lea r14d, [rax + r14*2]
cmp sil, 0x30
jl 0x1400b1a48
jmp 0x1400b19b8
cmp sil, 0x30
jl 0x1400b1a48
mov r12d, 0x19999999
cmp sil, 0x39
ja 0x1400b1a48
cmp r14d, r12d
jb 0x1400b1a18
jne 0x1400b1a42
cmp sil, 0x35
ja 0x1400b1a42
mov rcx, rbx
call fcn.1400b3044
mov rdx, qword [rbx + 0x28]
lea r14d, [r14 + r14*4]
movzx eax, sil
lea r14d, [r14 - 0x18]
inc r15d
mov sil, byte [rdx]
lea r14d, [rax + r14*2]
cmp sil, 0x30
jl 0x1400b1a48
jmp 0x1400b1a05
mov bpl, 1
mov edi, r14d
xor r12b, r12b
mov cl, bpl
mov byte [rsp + 0x98], cl
mov esi, r14d
test bpl, bpl
je 0x1400b1ad8
mov rax, qword [rbx + 0x28]
mov rdx, rax
mov byte [rsp + 0x98], cl
mov bpl, byte [rax]
cmp byte [rsp + 0xa8], r12b
je 0x1400b1c0b
cmp bpl, 0x30
jl 0x1400b1ad8
mov byte [rsp + 0x98], cl
movabs r14, 0xccccccccccccccc
xor r12b, r12b
cmp bpl, 0x39
ja 0x1400b1ad8
cmp rdi, r14
jb 0x1400b1ab1
jne 0x1400b1bdc
cmp bpl, 0x38
ja 0x1400b1bdc
mov rcx, rbx
call fcn.1400b3044
mov rdx, qword [rbx + 0x28]
lea rax, [rdi + rdi*4]
movzx ecx, bpl
inc r15d
sub ecx, 0x30
mov bpl, byte [rdx]
lea rdi, [rcx + rax*2]
cmp bpl, 0x30
jge 0x1400b1a93
mov rax, rdx
mov r14, rdi
test r12b, r12b
je 0x1400b1b2a
cmp byte [rax], 0x30
mov rdx, rax
jl 0x1400b1b2a
mov bpl, byte [rax]
mov rdx, rax
cmp bpl, 0x39
ja 0x1400b1b2a
mov rcx, rbx
call fcn.1400b3044
mov rdx, qword [rbx + 0x28]
mulsd xmm6, qword [0x140372f70]
movzx eax, bpl
sub eax, 0x30
mov bpl, byte [rdx]
movd xmm0, eax
mov rax, rdx
cvtdq2pd xmm0, xmm0
addsd xmm6, xmm0
cmp bpl, 0x30
jge 0x1400b1aee
and dword [rsp + 0x20], 0
cmp byte [rdx], 0x2e
jne 0x1400b1cc9
mov rcx, rbx
call fcn.1400b3044
mov rcx, qword [rbx + 0x28]
mov bpl, byte [rcx]
lea eax, [rbp - 0x30]
cmp al, 9
ja 0x1400b1d6b
test r12b, r12b
jne 0x1400b1d11
cmp byte [rsp + 0x98], r12b
mov r8, rcx
mov edi, esi
cmovne rdi, r14
mov r9, rcx
mov rdx, r8
cmp bpl, 0x39
ja 0x1400b1bc6
movabs rax, 0x1fffffffffffff
cmp rdi, rax
ja 0x1400b1bc6
mov rcx, rbx
call fcn.1400b3044
dec dword [rsp + 0x20]
lea rax, [rdi + rdi*4]
movzx ecx, bpl
sub ecx, 0x30
lea rdi, [rcx + rax*2]
mov rcx, qword [rbx + 0x28]
test rdi, rdi
lea eax, [r15 + 1]
mov r8, rcx
mov r9, rcx
cmove eax, r15d
mov rdx, rcx
mov bpl, byte [rcx]
mov r15d, eax
cmp bpl, 0x30
jge 0x1400b1b6c
xorps xmm6, xmm6
test rdi, rdi
js 0x1400b1ca5
cvtsi2sd xmm6, rdi
jmp 0x1400b1cbd
xorps xmm6, xmm6
test rdi, rdi
js 0x1400b1beb
cvtsi2sd xmm6, rdi
jmp 0x1400b1c03
mov rax, rdi
mov rcx, rdi
shr rcx, 1
and eax, 1
or rcx, rax
cvtsi2sd xmm6, rcx
addsd xmm6, xmm6
mov r12b, 1
jmp 0x1400b1ad8
cmp bpl, 0x30
jl 0x1400b1ad8
mov byte [rsp + 0x98], cl
xor r12b, r12b
movabs rax, 0x1999999999999999
mov r14, rdi
cmp bpl, 0x39
ja 0x1400b1ad8
cmp rdi, rax
jb 0x1400b1c43
jne 0x1400b1c73
cmp bpl, 0x35
ja 0x1400b1c73
mov rcx, rbx
call fcn.1400b3044
mov rdx, qword [rbx + 0x28]
lea rax, [rdi + rdi*4]
movzx ecx, bpl
inc r15d
sub ecx, 0x30
mov bpl, byte [rdx]
lea rdi, [rcx + rax*2]
mov r14, rdi
cmp bpl, 0x30
jl 0x1400b1b2a
jmp 0x1400b1c1c
xorps xmm6, xmm6
test rdi, rdi
js 0x1400b1c82
cvtsi2sd xmm6, rdi
jmp 0x1400b1c9a
mov rax, rdi
mov rcx, rdi
shr rcx, 1
and eax, 1
or rcx, rax
cvtsi2sd xmm6, rcx
addsd xmm6, xmm6
mov r12b, 1
mov rax, rdx
jmp 0x1400b1ae3
mov rax, rdi
mov rcx, rdi
shr rcx, 1
and eax, 1
or rcx, rax
cvtsi2sd xmm6, rcx
addsd xmm6, xmm6
mov bpl, byte [r9]
mov r12b, 1
cmp bpl, 0x30
jge 0x1400b1d14
mov r15b, byte [rsp + 0x98]
xor r14d, r14d
cmp byte [rdx], 0x65
mov bpl, r15b
je 0x1400b1ce5
cmp byte [rdx], 0x45
jne 0x1400b1f5a
mov rcx, rbx
call fcn.1400b3044
test r12b, r12b
jne 0x1400b1d98
test r15b, r15b
mov ecx, esi
xorps xmm6, xmm6
cmovne rcx, rdi
test rcx, rcx
js 0x1400b1d80
cvtsi2sd xmm6, rcx
jmp 0x1400b1d95
mov rdx, rcx
cmp bpl, 0x39
ja 0x1400b1cc9
mov rcx, rbx
cmp r15d, 0x11
jge 0x1400b1d54
mulsd xmm6, qword [0x140372f70]
dec dword [rsp + 0x20]
movzx eax, bpl
sub eax, 0x30
movd xmm0, eax
lea eax, [r15 + 1]
cvtdq2pd xmm0, xmm0
addsd xmm0, xmm6
comisd xmm0, xmm7
movaps xmm6, xmm0
cmovbe eax, r15d
mov r15d, eax
call fcn.1400b3044
mov rdx, qword [rbx + 0x28]
mov bpl, byte [rdx]
cmp bpl, 0x30
jge 0x1400b1d14
jmp 0x1400b1cc9
sub rcx, qword [rbx + 0x10]
add rcx, qword [rbx + 0x38]
mov dword [r13 + 0x30], 0xe
jmp 0x1400b20ca
mov rax, rcx
and ecx, 1
shr rax, 1
or rax, rcx
cvtsi2sd xmm6, rax
addsd xmm6, xmm6
mov r12b, 1
mov rax, qword [rbx + 0x28]
xor r15b, r15b
cmp byte [rax], 0x2b
jne 0x1400b1db2
mov rcx, rbx
call fcn.1400b3044
mov rax, qword [rbx + 0x28]
jmp 0x1400b1dda
cmp byte [rax], 0x2d
mov ecx, esi
mov byte [rsp + 0x98], bpl
jne 0x1400b1dd2
mov rcx, rbx
call fcn.1400b3044
mov rax, qword [rbx + 0x28]
mov r15b, 1
jmp 0x1400b1dda
mov byte [rsp + 0x98], bpl
movsx ebp, byte [rax]
cmp bpl, 0x30
jl 0x1400b1f41
cmp bpl, 0x39
jg 0x1400b1f41
mov rcx, rbx
call fcn.1400b3044
mov rax, qword [rbx + 0x28]
lea r14d, [rbp - 0x30]
mov bpl, byte [rax]
test r15b, r15b
je 0x1400b1ef0
mov ecx, dword [rsp + 0x20]
mov eax, 0x66666667
add ecx, 0x7ffffff7
imul ecx
mov r15d, edx
sar r15d, 2
mov eax, r15d
shr eax, 0x1f
add r15d, eax
jmp 0x1400b1e74
cmp bpl, 0x39
ja 0x1400b1e7a
mov rcx, rbx
call fcn.1400b3044
lea r14d, [r14 + r14*4]
movzx eax, bpl
lea r14d, [r14 - 0x18]
lea r14d, [rax + r14*2]
cmp r14d, r15d
jle 0x1400b1e6d
jmp 0x1400b1e62
cmp cl, 0x39
ja 0x1400b1e6d
mov rcx, rbx
call fcn.1400b3044
mov rax, qword [rbx + 0x28]
mov cl, byte [rax]
cmp cl, 0x30
jge 0x1400b1e55
mov rax, qword [rbx + 0x28]
mov bpl, byte [rax]
cmp bpl, 0x30
jge 0x1400b1e30
neg r14d
mov eax, dword [rsp + 0x20]
mov r15b, byte [rsp + 0x98]
xor ebp, ebp
test r12b, r12b
je 0x1400b1fdc
lea ecx, [r14 + rax]
mov edx, 0xfffffecc
cmp ecx, edx
jge 0x1400b1f63
divsd xmm6, qword [0x140372f78]
lea eax, [rcx + 0x134]
cmp eax, edx
jl 0x1400b1ed3
movsxd rax, ecx
lea rax, [rax*8 + 0x9a0]
lea rcx, [0x1403723c0]
movaps xmm7, xmm6
sub rcx, rax
divsd xmm7, qword [rcx]
comisd xmm7, xmmword [0x140372f80]
jbe 0x1400b1f86
mov dword [r13 + 0x30], 0xd
mov rax, qword [rsp + 0x28]
jmp 0x1400b1f51
mov eax, dword [rsp + 0x20]
mov r15d, 0x134
sub r15d, eax
cmp bpl, 0x30
jl 0x1400b1e81
cmp bpl, 0x39
ja 0x1400b1e7d
mov rcx, rbx
call fcn.1400b3044
lea r14d, [r14 + r14*4]
movzx eax, bpl
lea r14d, [r14 - 0x18]
lea r14d, [rax + r14*2]
cmp r14d, r15d
jg 0x1400b1ee1
mov rax, qword [rbx + 0x28]
mov bpl, byte [rax]
cmp bpl, 0x30
jl 0x1400b1e7d
jmp 0x1400b1f07
sub rax, qword [rbx + 0x10]
add rax, qword [rbx + 0x38]
mov dword [r13 + 0x30], 0xf
mov qword [r13 + 0x38], rax
jmp 0x1400b20ce
mov eax, dword [rsp + 0x20]
jmp 0x1400b1e89
movsxd rax, ecx
shl rax, 3
test ecx, ecx
js 0x1400b1ec2
lea rcx, [0x1403723c0]
movaps xmm7, xmm6
mulsd xmm7, qword [rax + rcx]
jmp 0x1400b1ed3
cmp byte [rsp + 0xa8], bpl
je 0x1400b1f97
xorps xmm7, xmmword [0x140371010]
mov rbx, qword [rsp + 0xa0]
mov rax, qword [rbx + 0x40]
sub rax, qword [rbx + 0x38]
cmp rax, 0x10
jge 0x1400b1fbb
mov edx, 1
lea rcx, [rbx + 0x20]
call fcn.14001d014
mov rcx, qword [rbx + 0x38]
xorps xmm0, xmm0
lea rax, [rcx + 0x10]
mov qword [rbx + 0x38], rax
movups xmmword [rcx], xmm0
mov word [rcx + 0xe], 0x216
movsd qword [rcx], xmm7
jmp 0x1400b20ce
test r15b, r15b
je 0x1400b201d
mov rcx, qword [rsp + 0xa0]
cmp byte [rsp + 0xa8], bpl
je 0x1400b2000
neg rdi
mov rdx, rdi
call fcn.14001edc0
jmp 0x1400b2008
mov rdx, rdi
call fcn.14001f3b0
test al, al
jne 0x1400b20ce
mov dword [r13 + 0x30], 0x10
jmp 0x1400b1ee9
mov rbx, qword [rsp + 0xa0]
mov rax, qword [rbx + 0x40]
lea rcx, [rbx + 0x20]
sub rax, qword [rbx + 0x38]
cmp byte [rsp + 0xa8], bpl
je 0x1400b207b
neg esi
cmp rax, 0x10
jge 0x1400b204d
mov edx, 1
call fcn.14001d014
mov rcx, qword [rbx + 0x38]
xorps xmm0, xmm0
test esi, esi
mov edx, 0x1f6
lea rax, [rcx + 0x10]
mov qword [rbx + 0x38], rax
movsxd rax, esi
movups xmmword [rcx], xmm0
mov qword [rcx], rax
mov eax, 0xb6
cmovns ax, dx
mov word [rcx + 0xe], ax
jmp 0x1400b20ce
cmp rax, 0x10
jge 0x1400b208b
mov edx, 1
call fcn.14001d014
mov rcx, qword [rbx + 0x38]
xorps xmm0, xmm0
lea rax, [rcx + 0x10]
mov qword [rbx + 0x38], rax
mov eax, esi
shr esi, 0x1a
not si
movups xmmword [rcx], xmm0
mov qword [rcx], rax
and si, 0x20
mov eax, 0x1d6
or si, ax
mov word [rcx + 0xe], si
jmp 0x1400b20ce
sub rcx, qword [rbx + 0x10]
add rcx, qword [rbx + 0x38]
mov dword [r13 + 0x30], 3
mov qword [r13 + 0x38], rcx
mov rbx, qword [rsp + 0x90]
movaps xmm6, xmmword [rsp + 0x40]
movaps xmm7, xmmword [rsp + 0x30]
add rsp, 0x50
pop r15
pop r14
pop r13
pop r12
pop rdi
pop rsi
pop rbp
ret