Function at 0x1400751a8
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
movaps xmmword [rax - 0x58], xmm7
mov rbx, rdx
mov rax, qword [rdx + 0x28]
xorps xmm7, xmm7
mov rcx, rax
xorps xmm6, xmm6
sub rcx, qword [rdx + 0x10]
add rcx, qword [rdx + 0x38]
cmp byte [rax], 0x2d
mov qword [rsp + 0x28], rcx
jne 0x1400751fc
mov rcx, rdx
call fcn.1400735b4
mov r12b, 1
jmp 0x1400751ff
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 0x14007523d
mov rcx, rbx
xor esi, esi
call fcn.1400735b4
mov rdx, qword [rbx + 0x28]
xor r12b, r12b
xor r14d, r14d
jmp 0x1400753e2
lea eax, [rsi - 0x31]
cmp al, 8
ja 0x140075977
mov rcx, rbx
call fcn.1400735b4
mov rdx, qword [rbx + 0x28]
lea r14d, [rsi - 0x30]
mov sil, byte [rdx]
test r12b, r12b
je 0x1400752b1
cmp sil, 0x30
jl 0x140075300
mov r12d, 0xccccccc
cmp sil, 0x39
ja 0x140075300
cmp r14d, r12d
jb 0x140075287
jne 0x1400752fa
cmp sil, 0x38
ja 0x1400752fa
mov rcx, rbx
call fcn.1400735b4
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 0x140075300
jmp 0x140075270
cmp sil, 0x30
jl 0x140075300
mov r12d, 0x19999999
cmp sil, 0x39
ja 0x140075300
cmp r14d, r12d
jb 0x1400752d0
jne 0x1400752fa
cmp sil, 0x35
ja 0x1400752fa
mov rcx, rbx
call fcn.1400735b4
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 0x140075300
jmp 0x1400752bd
mov bpl, 1
mov edi, r14d
xor r12b, r12b
mov cl, bpl
mov byte [rsp + 0x98], cl
mov esi, r14d
test bpl, bpl
je 0x140075390
mov rax, qword [rbx + 0x28]
mov rdx, rax
mov byte [rsp + 0x98], cl
mov bpl, byte [rax]
cmp byte [rsp + 0xa8], r12b
je 0x1400754c3
cmp bpl, 0x30
jl 0x140075390
mov byte [rsp + 0x98], cl
movabs r14, 0xccccccccccccccc
xor r12b, r12b
cmp bpl, 0x39
ja 0x140075390
cmp rdi, r14
jb 0x140075369
jne 0x140075494
cmp bpl, 0x38
ja 0x140075494
mov rcx, rbx
call fcn.1400735b4
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 0x14007534b
mov rax, rdx
mov r14, rdi
test r12b, r12b
je 0x1400753e2
cmp byte [rax], 0x30
mov rdx, rax
jl 0x1400753e2
mov bpl, byte [rax]
mov rdx, rax
cmp bpl, 0x39
ja 0x1400753e2
mov rcx, rbx
call fcn.1400735b4
mov rdx, qword [rbx + 0x28]
mulsd xmm6, qword [0x140314a20]
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 0x1400753a6
and dword [rsp + 0x20], 0
cmp byte [rdx], 0x2e
jne 0x140075581
mov rcx, rbx
call fcn.1400735b4
mov rcx, qword [rbx + 0x28]
mov bpl, byte [rcx]
lea eax, [rbp - 0x30]
cmp al, 9
ja 0x140075623
test r12b, r12b
jne 0x1400755c9
cmp byte [rsp + 0x98], r12b
mov r8, rcx
mov edi, esi
cmovne rdi, r14
mov r9, rcx
mov rdx, r8
cmp bpl, 0x39
ja 0x14007547e
movabs rax, 0x1fffffffffffff
cmp rdi, rax
ja 0x14007547e
mov rcx, rbx
call fcn.1400735b4
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 0x140075424
xorps xmm6, xmm6
test rdi, rdi
js 0x14007555d
cvtsi2sd xmm6, rdi
jmp 0x140075575
xorps xmm6, xmm6
test rdi, rdi
js 0x1400754a3
cvtsi2sd xmm6, rdi
jmp 0x1400754bb
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 0x140075390
cmp bpl, 0x30
jl 0x140075390
mov byte [rsp + 0x98], cl
xor r12b, r12b
movabs rax, 0x1999999999999999
mov r14, rdi
cmp bpl, 0x39
ja 0x140075390
cmp rdi, rax
jb 0x1400754fb
jne 0x14007552b
cmp bpl, 0x35
ja 0x14007552b
mov rcx, rbx
call fcn.1400735b4
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 0x1400753e2
jmp 0x1400754d4
xorps xmm6, xmm6
test rdi, rdi
js 0x14007553a
cvtsi2sd xmm6, rdi
jmp 0x140075552
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 0x14007539b
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 0x1400755cc
mov r15b, byte [rsp + 0x98]
xor r14d, r14d
cmp byte [rdx], 0x65
mov bpl, r15b
je 0x14007559d
cmp byte [rdx], 0x45
jne 0x14007586a
mov rcx, rbx
call fcn.1400735b4
test r12b, r12b
jne 0x140075650
test r15b, r15b
mov ecx, esi
xorps xmm6, xmm6
cmovne rcx, rdi
test rcx, rcx
js 0x140075638
cvtsi2sd xmm6, rcx
jmp 0x14007564d
mov rdx, rcx
cmp bpl, 0x39
ja 0x140075581
mov rcx, rbx
cmp r15d, 0x11
jge 0x14007560c
mulsd xmm6, qword [0x140314a20]
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.1400735b4
mov rdx, qword [rbx + 0x28]
mov bpl, byte [rdx]
cmp bpl, 0x30
jge 0x1400755cc
jmp 0x140075581
mov rax, qword [rbx + 0x38]
sub rax, qword [rbx + 0x10]
mov dword [r13 + 0x30], select
jmp 0x140075987
mov rax, rcx
and ecx, 1
shr rax, 1
or rax, rcx
cvtsi2sd xmm6, rax
addsd xmm6, xmm6
mov r12b, 1
mov rcx, qword [rbx + 0x28]
xor r15b, r15b
cmp byte [rcx], 0x2b
jne 0x14007566a
mov rcx, rbx
call fcn.1400735b4
mov rcx, qword [rbx + 0x28]
jmp 0x140075692
cmp byte [rcx], 0x2d
mov eax, esi
mov byte [rsp + 0x98], bpl
jne 0x14007568a
mov rcx, rbx
call fcn.1400735b4
mov rcx, qword [rbx + 0x28]
mov r15b, 1
jmp 0x140075692
mov byte [rsp + 0x98], bpl
movsx ebp, byte [rcx]
cmp bpl, 0x30
jl 0x140075855
cmp bpl, 0x39
jg 0x140075855
mov rcx, rbx
call fcn.1400735b4
mov rax, qword [rbx + 0x28]
lea r14d, [rbp - 0x30]
mov bpl, byte [rax]
test r15b, r15b
je 0x1400757f2
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 0x14007572c
cmp bpl, 0x39
ja 0x140075732
mov rcx, rbx
call fcn.1400735b4
lea r14d, [r14 + r14*4]
movzx eax, bpl
lea r14d, [r14 - 0x18]
lea r14d, [rax + r14*2]
cmp r14d, r15d
jle 0x140075725
jmp 0x14007571a
cmp cl, 0x39
ja 0x140075725
mov rcx, rbx
call fcn.1400735b4
mov rax, qword [rbx + 0x28]
mov cl, byte [rax]
cmp cl, 0x30
jge 0x14007570d
mov rax, qword [rbx + 0x28]
mov bpl, byte [rax]
cmp bpl, 0x30
jge 0x1400756e8
neg r14d
mov eax, dword [rsp + 0x20]
mov r15b, byte [rsp + 0x98]
xor ebp, ebp
test r12b, r12b
je 0x140075896
lea ecx, [r14 + rax]
mov edx, 0xfffffecc
cmp ecx, edx
jge 0x140075873
divsd xmm6, qword [0x140315720]
lea eax, [rcx + 0x134]
cmp eax, edx
jl 0x14007578b
movsxd rax, ecx
lea rax, [rax*8 + 0x9a0]
lea rcx, [0x140314b70]
movaps xmm7, xmm6
sub rcx, rax
divsd xmm7, qword [rcx]
comisd xmm7, xmmword [0x140315728]
ja 0x140075843
cmp byte [rsp + 0xa8], bpl
je 0x1400757aa
xorps xmm7, xmmword [0x140314710]
mov rbx, qword [rsp + 0xa0]
mov rax, qword [rbx + 0x40]
sub rax, qword [rbx + 0x38]
cmp rax, 0x10
jge 0x1400757ce
mov edx, 1
lea rcx, [rbx + 0x20]
call fcn.14004c040
mov rcx, qword [rbx + 0x38]
xorps xmm0, xmm0
lea rax, [rcx + 0x10]
mov qword [rbx + 0x38], rax
mov eax, 0x216
movups xmmword [rcx], xmm0
movsd qword [rcx], xmm7
mov word [rcx + 0xe], ax
jmp 0x14007598e
mov eax, dword [rsp + 0x20]
mov r15d, 0x134
sub r15d, eax
cmp bpl, 0x30
jl 0x140075739
cmp bpl, 0x39
ja 0x140075735
mov rcx, rbx
call fcn.1400735b4
lea r14d, [r14 + r14*4]
movzx eax, bpl
lea r14d, [r14 - 0x18]
lea r14d, [rax + r14*2]
cmp r14d, r15d
jg 0x140075843
mov rax, qword [rbx + 0x28]
mov bpl, byte [rax]
cmp bpl, 0x30
jl 0x140075735
jmp 0x140075809
mov dword [r13 + 0x30], reloc.WS2_32.dll_listen
mov rax, qword [rsp + 0x28]
jmp 0x14007598a
mov rax, qword [rbx + 0x38]
sub rax, qword [rbx + 0x10]
mov dword [r13 + 0x30], reloc.WS2_32.dll_ntohs
jmp 0x140075987
mov eax, dword [rsp + 0x20]
jmp 0x140075741
movsxd rax, ecx
shl rax, 3
test ecx, ecx
js 0x14007577a
lea rcx, [0x140314b70]
movaps xmm7, xmm6
mulsd xmm7, qword [rax + rcx]
jmp 0x14007578b
test r15b, r15b
je 0x1400758d7
mov rcx, qword [rsp + 0xa0]
cmp byte [rsp + 0xa8], bpl
je 0x1400758ba
neg rdi
mov rdx, rdi
call fcn.14004a2c0
jmp 0x1400758c2
mov rdx, rdi
call fcn.14004a364
test al, al
jne 0x14007598e
mov dword [r13 + 0x30], reloc.WS2_32.dll_recv
jmp 0x14007584b
mov rbx, qword [rsp + 0xa0]
mov rax, qword [rbx + 0x40]
sub rax, qword [rbx + 0x38]
cmp byte [rsp + 0xa8], bpl
je 0x140075934
neg esi
cmp rax, 0x10
jge 0x140075907
mov edx, 1
lea rcx, [rbx + 0x20]
call fcn.14004c040
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
jmp 0x1400757e9
cmp rax, 0x10
jge 0x140075948
mov edx, 1
lea rcx, [rbx + 0x20]
call fcn.14004c040
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 0x14007598e
mov rax, qword [rbx + 0x38]
sub rax, qword [rbx + 0x10]
mov dword [r13 + 0x30], 3
add rax, rcx
mov qword [r13 + 0x38], rax
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