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

Disassembly:
mov qword [rsp + 0x18], r8
mov qword [rsp + 0x10], rdx
push rbp
push rdi
push r12
push r13
push r15
mov rbp, rsp
sub rsp, 0x70
movups xmm0, xmmword [rdx]
mov r13, rcx
movaps xmmword [rsp + 0x50], xmm6
xorps xmm3, xmm3
movsd xmm6, qword [rdx + 0x10]
movq r9, xmm0
movsd qword [rbp - 0x38], xmm6
mov rax, r9
mov r15, qword [rbp - 0x38]
xorps xmm1, xmm1
sub rax, r15
cmp byte [r9], 0x2d
movups xmmword [rbp - 0x48], xmm0
mov qword [rbp - 0x50], rax
jne 0x14000e01d
inc r9
mov r12b, 1
mov qword [rbp - 0x48], r9
jmp 0x14000e020
xor r12b, r12b
movsx ecx, byte [r9]
xor edi, edi
movsd xmm2, qword [0x1403da988]
xor dl, dl
mov qword [rsp + 0xa0], rbx
mov r10d, edi
mov qword [rsp + 0x68], rsi
mov r11d, edi
mov qword [rsp + 0x60], r14
mov byte [rbp + 0x48], dl
cmp cl, 0x30
jne 0x14000e062
lea rdx, [r9 + 1]
mov ebx, edi
mov qword [rbp - 0x48], rdx
xor r14b, r14b
jmp 0x14000e1c1
lea eax, [rcx - 0x31]
cmp al, 8
ja 0x14000e5b7
inc r9
lea ebx, [rcx - 0x30]
mov qword [rbp - 0x48], r9
mov rax, r9
movzx ecx, byte [r9]
test r12b, r12b
je 0x14000e0c9
cmp cl, 0x30
jl 0x14000e111
nop dword [rax]
cmp cl, 0x39
ja 0x14000e111
cmp ebx, 0xccccccc
jb 0x14000e0a4
jne 0x14000e109
cmp cl, 0x38
ja 0x14000e109
movzx ecx, byte [rax + 1]
lea r9, [rax + 1]
movsx eax, byte [rax]
lea ebx, [rbx + rbx*4]
lea ebx, [rbx - 0x18]
mov qword [rbp - 0x48], r9
inc r11d
lea ebx, [rax + rbx*2]
mov rax, r9
cmp cl, 0x30
jge 0x14000e090
jmp 0x14000e111
cmp cl, 0x30
jl 0x14000e111
nop
cmp cl, 0x39
jg 0x14000e111
cmp ebx, 0x19999999
jb 0x14000e0e4
jne 0x14000e109
cmp cl, 0x35
jg 0x14000e109
movzx ecx, byte [rax + 1]
lea r9, [rax + 1]
movsx eax, byte [rax]
lea ebx, [rbx + rbx*4]
lea ebx, [rbx - 0x18]
mov qword [rbp - 0x48], r9
inc r11d
lea ebx, [rax + rbx*2]
mov rax, r9
cmp cl, 0x30
jge 0x14000e0d0
jmp 0x14000e111
mov dl, 1
mov r10d, ebx
mov byte [rbp + 0x48], dl
xor r14b, r14b
mov r8, rax
test dl, dl
je 0x14000e17c
movzx ecx, byte [rax]
test r12b, r12b
je 0x14000e2a0
cmp cl, 0x30
jl 0x14000e17c
movzx eax, byte [r9]
movabs rdx, 0xccccccccccccccc
nop word [rax + rax]
cmp al, 0x39
jg 0x14000e17c
cmp r10, rdx
jb 0x14000e157
jne 0x14000e26b
cmp al, 0x38
jg 0x14000e26b
movsx ecx, byte [r8]
lea r9, [r8 + 1]
sub ecx, 0x30
mov qword [rbp - 0x48], r9
lea rax, [r10 + r10*4]
inc r11d
mov r8, r9
lea r10, [rcx + rax*2]
movzx eax, byte [r9]
cmp al, 0x30
jge 0x14000e140
mov rdx, r8
test r14b, r14b
je 0x14000e1c1
cmp byte [r8], 0x30
mov rdx, r8
jl 0x14000e1c1
movzx eax, byte [r9]
mov rdx, r8
cmp al, 0x39
jg 0x14000e1c1
movsx eax, byte [r8]
lea rdx, [r8 + 1]
sub eax, 0x30
mulsd xmm1, xmm2
mov qword [rbp - 0x48], rdx
mov r8, rdx
movd xmm0, eax
movzx eax, byte [rdx]
cvtdq2pd xmm0, xmm0
addsd xmm1, xmm0
cmp al, 0x30
jge 0x14000e191
cmp byte [rdx], 0x2e
mov esi, edi
jne 0x14000e39e
movzx ecx, byte [rdx + 1]
lea r9, [rdx + 1]
mov qword [rbp - 0x48], r9
lea eax, [rcx - 0x30]
cmp al, 9
ja 0x14000e3d5
mov rdx, r9
test r14b, r14b
jne 0x14000e349
cmp byte [rbp + 0x48], sil
mov rcx, r9
movzx r8d, byte [r9]
movabs r14, 0x1fffffffffffff
mov eax, ebx
cmovne rax, r10
mov r10, rax
nop dword [rax]
mov rdx, rcx
cmp r8b, 0x39
jg 0x14000e255
cmp r10, r14
ja 0x14000e255
movzx r8d, byte [rcx + 1]
lea r9, [rcx + 1]
movsx ecx, byte [rcx]
lea rax, [r10 + r10*4]
sub ecx, 0x30
mov qword [rbp - 0x48], r9
dec esi
mov rdx, r9
lea r10, [rcx + rax*2]
mov rcx, r9
test r10, r10
lea eax, [r11 + 1]
cmove eax, r11d
mov r11d, eax
cmp r8b, 0x30
jge 0x14000e210
xorps xmm1, xmm1
test r10, r10
js 0x14000e32b
cvtsi2sd xmm1, r10
jmp 0x14000e343
xorps xmm1, xmm1
test r10, r10
js 0x14000e280
cvtsi2sd xmm1, r10
mov r14b, 1
jmp 0x14000e17c
mov rax, r10
mov rcx, r10
shr rcx, 1
and eax, 1
or rcx, rax
mov r14b, 1
cvtsi2sd xmm1, rcx
addsd xmm1, xmm1
jmp 0x14000e17c
cmp cl, 0x30
jl 0x14000e17c
movzx eax, byte [r9]
movabs rsi, 0x1999999999999999
cmp al, 0x39
jg 0x14000e17c
cmp r10, rsi
jb 0x14000e2ca
jne 0x14000e2f6
cmp al, 0x35
jg 0x14000e2f6
movsx ecx, byte [r8]
lea rdx, [r8 + 1]
sub ecx, 0x30
mov qword [rbp - 0x48], rdx
lea rax, [r10 + r10*4]
inc r11d
mov r9, rdx
mov r8, rdx
lea r10, [rcx + rax*2]
movzx eax, byte [rdx]
cmp al, 0x30
jge 0x14000e2b7
jmp 0x14000e1c1
xorps xmm1, xmm1
test r10, r10
js 0x14000e30b
cvtsi2sd xmm1, r10
mov r14b, 1
jmp 0x14000e184
mov rax, r10
mov rcx, r10
shr rcx, 1
and eax, 1
or rcx, rax
mov r14b, 1
cvtsi2sd xmm1, rcx
addsd xmm1, xmm1
jmp 0x14000e184
mov rax, r10
mov rcx, r10
shr rcx, 1
and eax, 1
or rcx, rax
cvtsi2sd xmm1, rcx
addsd xmm1, xmm1
movzx ecx, byte [rdx]
mov r14b, 1
cmp cl, 0x30
jl 0x14000e39e
mov rax, rdx
cmp byte [r9], 0x39
mov rdx, rax
jg 0x14000e39e
lea rdx, [rax + 1]
mov qword [rbp - 0x48], rdx
mov r9, rdx
cmp r11d, 0x11
jge 0x14000e395
movsx eax, byte [rax]
dec esi
sub eax, 0x30
mulsd xmm1, xmm2
movd xmm0, eax
lea eax, [r11 + 1]
cvtdq2pd xmm0, xmm0
addsd xmm0, xmm1
comisd xmm0, xmm3
movaps xmm1, xmm0
cmovbe eax, r11d
mov r11d, eax
cmp byte [r9], 0x30
mov rax, rdx
jge 0x14000e351
movzx eax, byte [rdx]
cmp al, 0x65
je 0x14000e3ad
cmp al, 0x45
jne 0x14000e4b5
inc rdx
mov qword [rbp - 0x48], rdx
test r14b, r14b
jne 0x14000e3f7
cmp byte [rbp + 0x48], dil
mov rcx, r10
mov eax, ebx
xorps xmm1, xmm1
cmove rcx, rax
test rcx, rcx
js 0x14000e3df
cvtsi2sd xmm1, rcx
jmp 0x14000e3f4
mov edx, recv
jmp 0x14000e5bc
mov rax, rcx
and ecx, 1
shr rax, 1
or rax, rcx
cvtsi2sd xmm1, rax
addsd xmm1, xmm1
mov r14b, 1
movzx ecx, byte [rdx]
xor r11b, r11b
cmp cl, 0x2b
je 0x14000e40a
cmp cl, 0x2d
jne 0x14000e415
mov r11b, 1
movzx ecx, byte [rdx + 1]
inc rdx
mov qword [rbp - 0x48], rdx
lea eax, [rcx - 0x30]
cmp al, 9
ja 0x14000e536
movzx r9d, byte [rdx + 1]
lea r8, [rdx + 1]
movsx edi, cl
sub edi, 0x30
mov qword [rbp - 0x48], r8
test r11b, r11b
je 0x14000e4e8
lea ecx, [rsi + 0x7ffffff7]
mov eax, 0x66666667
imul ecx
sar edx, 2
mov eax, edx
shr eax, 0x1f
add edx, eax
cmp r9b, 0x30
jl 0x14000e4b3
mov r9, r8
nop dword [rax]
cmp byte [r8], 0x39
jg 0x14000e4b3
movsx eax, byte [r9]
lea edi, [rdi + rdi*4]
lea r8, [r9 + 1]
lea edi, [rdi - 0x18]
mov qword [rbp - 0x48], r8
mov r9, r8
lea edi, [rax + rdi*2]
cmp edi, edx
jle 0x14000e4ad
movzx eax, byte [r8]
cmp al, 0x30
jl 0x14000e4ad
mov rcx, r8
nop dword [rax]
mov r9, rcx
cmp al, 0x39
ja 0x14000e4a9
movzx eax, byte [rcx + 1]
lea r8, [rcx + 1]
mov rcx, r8
mov r9, r8
cmp al, 0x30
jge 0x14000e490
mov qword [rbp - 0x48], r8
cmp byte [r8], 0x30
jge 0x14000e460
neg edi
test r14b, r14b
je 0x14000e564
lea edx, [rdi + rsi]
movaps xmm0, xmm1
call fcn.1400055d0
comisd xmm0, xmmword [0x1403da9e8]
jbe 0x14000e54a
mov r9, qword [rbp - 0x50]
mov qword [r13 + 0x38], r9
mov dword [r13 + 0x30], recv
jmp 0x14000e5cf
mov edx, 0x134
sub edx, esi
cmp r9b, 0x30
jl 0x14000e4b5
mov rax, r8
cmp byte [r8], 0x39
jg 0x14000e4b5
lea r8, [rax + 1]
movsx eax, byte [rax]
lea edi, [rdi + rdi*4]
mov qword [rbp - 0x48], r8
lea edi, [rdi - 0x18]
lea edi, [rax + rdi*2]
cmp edi, edx
jg 0x14000e521
cmp byte [r8], 0x30
mov rax, r8
jge 0x14000e4f8
jmp 0x14000e4b5
mov r9, qword [rbp - 0x50]
lea rcx, [r13 + 0x38]
mov dword [r13 + 0x30], recv
jmp 0x14000e5cc
sub rdx, r15
mov dword [r13 + 0x30], reloc.WS2_32.dll_ntohs
mov qword [r13 + 0x38], rdx
jmp 0x14000e5cf
test r12b, r12b
je 0x14000e556
xorps xmm0, xmmword [0x1403dabe0]
mov rcx, qword [rbp + 0x40]
movaps xmm1, xmm0
call fcn.140006300
jmp 0x14000e5a1
cmp byte [rbp + 0x48], 0
mov rcx, qword [rbp + 0x40]
je 0x14000e58a
test r12b, r12b
je 0x14000e580
neg r10
mov rdx, r10
call fcn.1400063f0
jmp 0x14000e5a1
mov rdx, r10
call fcn.140006360
jmp 0x14000e5a1
test r12b, r12b
je 0x14000e59a
neg ebx
mov edx, ebx
call fcn.140006510
jmp 0x14000e5a1
mov edx, ebx
call fcn.1400064a0
test al, al
jne 0x14000e5cf
mov r9, qword [rbp - 0x50]
mov qword [r13 + 0x38], r9
mov dword [r13 + 0x30], reloc.WS2_32.dll_recv
jmp 0x14000e5cf
mov edx, 3
lea rax, [r13 + 0x30]
sub r9, r15
mov rcx, rax
mov dword [rax], edx
add rcx, 8
mov qword [rcx], r9
mov rax, qword [rbp + 0x38]
movups xmm0, xmmword [rbp - 0x48]
mov r14, qword [rsp + 0x60]
mov rsi, qword [rsp + 0x68]
mov rbx, qword [rsp + 0xa0]
movups xmmword [rax], xmm0
movsd qword [rax + 0x10], xmm6
movaps xmm6, xmmword [rsp + 0x50]
add rsp, 0x70
pop r15
pop r13
pop r12
pop rdi
pop rbp
ret