Function at 0x1400b29b8
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 0x1400b2a0c
mov rcx, rdx
call fcn.1400b3f84
mov r12b, 1
jmp 0x1400b2a0f
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 0x1400b2a4d
mov rcx, rbx
xor esi, esi
call fcn.1400b3f84
mov rdx, qword [rbx + 0x28]
xor r12b, r12b
xor r14d, r14d
jmp 0x1400b2bf2
lea eax, [rsi - 0x31]
cmp al, 8
ja 0x1400b3182
mov rcx, rbx
call fcn.1400b3f84
mov rdx, qword [rbx + 0x28]
lea r14d, [rsi - 0x30]
mov sil, byte [rdx]
test r12b, r12b
je 0x1400b2ac1
cmp sil, 0x30
jl 0x1400b2b10
mov r12d, 0xccccccc
cmp sil, 0x39
ja 0x1400b2b10
cmp r14d, r12d
jb 0x1400b2a97
jne 0x1400b2b0a
cmp sil, 0x38
ja 0x1400b2b0a
mov rcx, rbx
call fcn.1400b3f84
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 0x1400b2b10
jmp 0x1400b2a80
cmp sil, 0x30
jl 0x1400b2b10
mov r12d, 0x19999999
cmp sil, 0x39
ja 0x1400b2b10
cmp r14d, r12d
jb 0x1400b2ae0
jne 0x1400b2b0a
cmp sil, 0x35
ja 0x1400b2b0a
mov rcx, rbx
call fcn.1400b3f84
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 0x1400b2b10
jmp 0x1400b2acd
mov bpl, 1
mov edi, r14d
xor r12b, r12b
mov cl, bpl
mov byte [rsp + 0x98], cl
mov esi, r14d
test bpl, bpl
je 0x1400b2ba0
mov rax, qword [rbx + 0x28]
mov rdx, rax
mov byte [rsp + 0x98], cl
mov bpl, byte [rax]
cmp byte [rsp + 0xa8], r12b
je 0x1400b2cd3
cmp bpl, 0x30
jl 0x1400b2ba0
mov byte [rsp + 0x98], cl
movabs r14, 0xccccccccccccccc
xor r12b, r12b
cmp bpl, 0x39
ja 0x1400b2ba0
cmp rdi, r14
jb 0x1400b2b79
jne 0x1400b2ca4
cmp bpl, 0x38
ja 0x1400b2ca4
mov rcx, rbx
call fcn.1400b3f84
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 0x1400b2b5b
mov rax, rdx
mov r14, rdi
test r12b, r12b
je 0x1400b2bf2
cmp byte [rax], 0x30
mov rdx, rax
jl 0x1400b2bf2
mov bpl, byte [rax]
mov rdx, rax
cmp bpl, 0x39
ja 0x1400b2bf2
mov rcx, rbx
call fcn.1400b3f84
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 0x1400b2bb6
and dword [rsp + 0x20], 0
cmp byte [rdx], 0x2e
jne 0x1400b2d91
mov rcx, rbx
call fcn.1400b3f84
mov rcx, qword [rbx + 0x28]
mov bpl, byte [rcx]
lea eax, [rbp - 0x30]
cmp al, 9
ja 0x1400b2e33
test r12b, r12b
jne 0x1400b2dd9
cmp byte [rsp + 0x98], r12b
mov r8, rcx
mov edi, esi
cmovne rdi, r14
mov r9, rcx
mov rdx, r8
cmp bpl, 0x39
ja 0x1400b2c8e
movabs rax, 0x1fffffffffffff
cmp rdi, rax
ja 0x1400b2c8e
mov rcx, rbx
call fcn.1400b3f84
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 0x1400b2c34
xorps xmm6, xmm6
test rdi, rdi
js 0x1400b2d6d
cvtsi2sd xmm6, rdi
jmp 0x1400b2d85
xorps xmm6, xmm6
test rdi, rdi
js 0x1400b2cb3
cvtsi2sd xmm6, rdi
jmp 0x1400b2ccb
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 0x1400b2ba0
cmp bpl, 0x30
jl 0x1400b2ba0
mov byte [rsp + 0x98], cl
xor r12b, r12b
movabs rax, 0x1999999999999999
mov r14, rdi
cmp bpl, 0x39
ja 0x1400b2ba0
cmp rdi, rax
jb 0x1400b2d0b
jne 0x1400b2d3b
cmp bpl, 0x35
ja 0x1400b2d3b
mov rcx, rbx
call fcn.1400b3f84
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 0x1400b2bf2
jmp 0x1400b2ce4
xorps xmm6, xmm6
test rdi, rdi
js 0x1400b2d4a
cvtsi2sd xmm6, rdi
jmp 0x1400b2d62
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 0x1400b2bab
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 0x1400b2ddc
mov r15b, byte [rsp + 0x98]
xor r14d, r14d
cmp byte [rdx], 0x65
mov bpl, r15b
je 0x1400b2dad
cmp byte [rdx], 0x45
jne 0x1400b3022
mov rcx, rbx
call fcn.1400b3f84
test r12b, r12b
jne 0x1400b2e60
test r15b, r15b
mov ecx, esi
xorps xmm6, xmm6
cmovne rcx, rdi
test rcx, rcx
js 0x1400b2e48
cvtsi2sd xmm6, rcx
jmp 0x1400b2e5d
mov rdx, rcx
cmp bpl, 0x39
ja 0x1400b2d91
mov rcx, rbx
cmp r15d, 0x11
jge 0x1400b2e1c
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.1400b3f84
mov rdx, qword [rbx + 0x28]
mov bpl, byte [rdx]
cmp bpl, 0x30
jge 0x1400b2ddc
jmp 0x1400b2d91
sub rcx, qword [rbx + 0x10]
add rcx, qword [rbx + 0x38]
mov dword [r13 + 0x30], 0xe
jmp 0x1400b3192
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 0x1400b2e7a
mov rcx, rbx
call fcn.1400b3f84
mov rax, qword [rbx + 0x28]
jmp 0x1400b2ea2
cmp byte [rax], 0x2d
mov ecx, esi
mov byte [rsp + 0x98], bpl
jne 0x1400b2e9a
mov rcx, rbx
call fcn.1400b3f84
mov rax, qword [rbx + 0x28]
mov r15b, 1
jmp 0x1400b2ea2
mov byte [rsp + 0x98], bpl
movsx ebp, byte [rax]
cmp bpl, 0x30
jl 0x1400b3009
cmp bpl, 0x39
jg 0x1400b3009
mov rcx, rbx
call fcn.1400b3f84
mov rax, qword [rbx + 0x28]
lea r14d, [rbp - 0x30]
mov bpl, byte [rax]
test r15b, r15b
je 0x1400b2fb8
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 0x1400b2f3c
cmp bpl, 0x39
ja 0x1400b2f42
mov rcx, rbx
call fcn.1400b3f84
lea r14d, [r14 + r14*4]
movzx eax, bpl
lea r14d, [r14 - 0x18]
lea r14d, [rax + r14*2]
cmp r14d, r15d
jle 0x1400b2f35
jmp 0x1400b2f2a
cmp cl, 0x39
ja 0x1400b2f35
mov rcx, rbx
call fcn.1400b3f84
mov rax, qword [rbx + 0x28]
mov cl, byte [rax]
cmp cl, 0x30
jge 0x1400b2f1d
mov rax, qword [rbx + 0x28]
mov bpl, byte [rax]
cmp bpl, 0x30
jge 0x1400b2ef8
neg r14d
mov eax, dword [rsp + 0x20]
mov r15b, byte [rsp + 0x98]
xor ebp, ebp
test r12b, r12b
je 0x1400b30a4
lea ecx, [r14 + rax]
mov edx, 0xfffffecc
cmp ecx, edx
jge 0x1400b302b
divsd xmm6, qword [0x140372f78]
lea eax, [rcx + 0x134]
cmp eax, edx
jl 0x1400b2f9b
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 0x1400b304e
mov dword [r13 + 0x30], 0xd
mov rax, qword [rsp + 0x28]
jmp 0x1400b3019
mov eax, dword [rsp + 0x20]
mov r15d, 0x134
sub r15d, eax
cmp bpl, 0x30
jl 0x1400b2f49
cmp bpl, 0x39
ja 0x1400b2f45
mov rcx, rbx
call fcn.1400b3f84
lea r14d, [r14 + r14*4]
movzx eax, bpl
lea r14d, [r14 - 0x18]
lea r14d, [rax + r14*2]
cmp r14d, r15d
jg 0x1400b2fa9
mov rax, qword [rbx + 0x28]
mov bpl, byte [rax]
cmp bpl, 0x30
jl 0x1400b2f45
jmp 0x1400b2fcf
sub rax, qword [rbx + 0x10]
add rax, qword [rbx + 0x38]
mov dword [r13 + 0x30], 0xf
mov qword [r13 + 0x38], rax
jmp 0x1400b3196
mov eax, dword [rsp + 0x20]
jmp 0x1400b2f51
movsxd rax, ecx
shl rax, 3
test ecx, ecx
js 0x1400b2f8a
lea rcx, [0x1403723c0]
movaps xmm7, xmm6
mulsd xmm7, qword [rax + rcx]
jmp 0x1400b2f9b
cmp byte [rsp + 0xa8], bpl
je 0x1400b305f
xorps xmm7, xmmword [0x140371010]
mov rbx, qword [rsp + 0xa0]
mov rax, qword [rbx + 0x40]
sub rax, qword [rbx + 0x38]
cmp rax, 0x10
jge 0x1400b3083
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 0x1400b3196
test r15b, r15b
je 0x1400b30e5
mov rcx, qword [rsp + 0xa0]
cmp byte [rsp + 0xa8], bpl
je 0x1400b30c8
neg rdi
mov rdx, rdi
call fcn.14001edc0
jmp 0x1400b30d0
mov rdx, rdi
call fcn.14001f3b0
test al, al
jne 0x1400b3196
mov dword [r13 + 0x30], 0x10
jmp 0x1400b2fb1
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 0x1400b3143
neg esi
cmp rax, 0x10
jge 0x1400b3115
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 0x1400b3196
cmp rax, 0x10
jge 0x1400b3153
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 0x1400b3196
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