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

Disassembly:
mov qword [rsp + 8], rbx
mov qword [rsp + 0x18], r8
push rbp
push rsi
push rdi
push r12
push r13
push r14
push r15
sub rsp, 0x50
mov rbx, rdx
movaps xmmword [rsp + 0x40], xmm6
mov rdx, qword [rdx + 0x28]
mov r13, rcx
mov rax, rdx
xorps xmm6, xmm6
mov r15d, 1
sub rax, qword [rbx + 0x10]
add rax, qword [rbx + 0x38]
mov dil, byte [rdx]
mov qword [rsp + 0x30], rax
cmp dil, 0x2d
jne 0x14005fac7
mov rcx, rbx
call fcn.14006143c
mov rdx, qword [rbx + 0x28]
mov bpl, r15b
mov byte [rsp + 0x20], r15b
mov dil, byte [rdx]
jmp 0x14005facf
xor bpl, bpl
mov byte [rsp + 0x20], bpl
xor r14d, r14d
xor r12d, r12d
mov byte [rsp + 0xa8], r14b
mov dword [rsp + 0x24], r12d
cmp dil, 0x30
jne 0x14005fb06
mov rcx, rbx
xor edi, edi
call fcn.14006143c
mov rcx, qword [rbx + 0x28]
xor bpl, bpl
mov byte [rsp + 0x98], bpl
jmp 0x14005fd19
lea eax, [rdi - 0x31]
cmp al, 8
ja 0x140060199
mov rcx, rbx
call fcn.14006143c
mov rax, qword [rbx + 0x28]
movsx edi, dil
sub edi, 0x30
mov sil, byte [rax]
test bpl, bpl
je 0x14005fb7d
cmp sil, 0x30
jl 0x14005fbd1
mov ebp, 0xccccccc
cmp sil, 0x39
jg 0x14005fbd1
cmp edi, ebp
jb 0x14005fb51
jne 0x14005fbc6
cmp sil, 0x38
jg 0x14005fbc6
mov rcx, rbx
call fcn.14006143c
movsx eax, sil
lea edi, [rdi + rdi*4]
add r12d, r15d
lea edi, [rdi - 0x18]
mov dword [rsp + 0x24], r12d
lea edi, [rax + rdi*2]
mov rax, qword [rbx + 0x28]
mov sil, byte [rax]
cmp sil, 0x30
jl 0x14005fbd1
jmp 0x14005fb3b
cmp sil, 0x30
jl 0x14005fbd1
mov ebp, 0x19999999
cmp sil, 0x39
jg 0x14005fbd1
cmp edi, ebp
jb 0x14005fb9a
jne 0x14005fbc6
cmp sil, 0x35
jg 0x14005fbc6
mov rcx, rbx
call fcn.14006143c
movsx eax, sil
lea edi, [rdi + rdi*4]
add r12d, r15d
lea edi, [rdi - 0x18]
mov dword [rsp + 0x24], r12d
lea edi, [rax + rdi*2]
mov rax, qword [rbx + 0x28]
mov sil, byte [rax]
cmp sil, 0x30
jl 0x14005fbd1
jmp 0x14005fb88
mov byte [rsp + 0xa8], r15b
mov r14d, edi
xor bpl, bpl
mov rdx, rax
mov byte [rsp + 0x98], bpl
cmp byte [rsp + 0xa8], bpl
je 0x14005fcca
cmp byte [rsp + 0x20], bpl
je 0x14005fc57
cmp byte [rax], 0x30
jl 0x14005fcca
mov sil, byte [rax]
movabs rax, 0xccccccccccccccc
cmp sil, 0x39
jg 0x14005fcca
cmp r14, rax
jb 0x14005fc29
jne 0x14005fcaa
cmp sil, 0x38
jg 0x14005fcaa
mov rcx, rbx
call fcn.14006143c
mov rdx, qword [rbx + 0x28]
lea rax, [r14 + r14*4]
movsx ecx, sil
add r12d, r15d
sub ecx, 0x30
mov dword [rsp + 0x24], r12d
mov sil, byte [rdx]
lea r14, [rcx + rax*2]
cmp sil, 0x30
jl 0x14005fcca
jmp 0x14005fc00
cmp byte [rax], 0x30
jl 0x14005fcca
mov sil, byte [rax]
movabs rax, 0x1999999999999999
cmp sil, 0x39
jg 0x14005fcca
cmp r14, rax
jb 0x14005fc7c
jne 0x14005fcaa
cmp sil, 0x35
jg 0x14005fcaa
mov rcx, rbx
call fcn.14006143c
mov rdx, qword [rbx + 0x28]
lea rax, [r14 + r14*4]
movsx ecx, sil
add r12d, r15d
sub ecx, 0x30
mov dword [rsp + 0x24], r12d
mov sil, byte [rdx]
lea r14, [rcx + rax*2]
cmp sil, 0x30
jl 0x14005fcca
jmp 0x14005fc5f
xorps xmm6, xmm6
cvtsi2sd xmm6, r14
test r14, r14
jns 0x14005fcbf
addsd xmm6, qword [0x1400fa078]
mov byte [rsp + 0x98], r15b
mov bpl, r15b
mov rcx, rdx
test bpl, bpl
je 0x14005fd19
cmp byte [rdx], 0x30
jl 0x14005fd19
mov sil, byte [rdx]
mov rcx, rdx
cmp sil, 0x39
jg 0x14005fd19
mov rcx, rbx
call fcn.14006143c
mulsd xmm6, qword [0x140111e20]
mov rcx, qword [rbx + 0x28]
movsx eax, sil
mov rdx, rcx
sub eax, 0x30
mov sil, byte [rcx]
movd xmm0, eax
cvtdq2pd xmm0, xmm0
addsd xmm0, xmm6
movaps xmm6, xmm0
cmp sil, 0x30
jge 0x14005fcda
xor r12d, r12d
cmp byte [rcx], 0x2e
mov dword [rsp + 0x28], r12d
jne 0x14005fe52
mov rcx, rbx
call fcn.14006143c
mov rcx, qword [rbx + 0x28]
mov sil, byte [rcx]
lea eax, [rsi - 0x30]
cmp al, 9
jbe 0x14005fd59
sub rcx, qword [rbx + 0x10]
add rcx, qword [rbx + 0x38]
mov dword [r13 + 0x30], ntohs
mov qword [r13 + 0x38], rcx
jmp 0x1400601ad
test bpl, bpl
jne 0x14005fe4c
cmp byte [rsp + 0xa8], r12b
mov ebp, dword [rsp + 0x24]
mov eax, edi
cmovne rax, r14
mov r14, rax
mov rdx, rcx
cmp sil, 0x39
jg 0x14005fdc4
movabs rax, 0x1fffffffffffff
cmp r14, rax
ja 0x14005fdc4
mov rcx, rbx
call fcn.14006143c
movsx ecx, sil
lea rax, [r14 + r14*4]
sub ecx, 0x30
sub r12d, r15d
lea r14, [rcx + rax*2]
mov rcx, qword [rbx + 0x28]
test r14, r14
lea eax, [rbp + 1]
mov rdx, rcx
cmove eax, ebp
mov sil, byte [rcx]
mov ebp, eax
cmp sil, 0x30
jge 0x14005fd77
mov dword [rsp + 0x24], ebp
xorps xmm6, xmm6
mov dword [rsp + 0x28], r12d
cvtsi2sd xmm6, r14
test r14, r14
jns 0x14005fde2
addsd xmm6, qword [0x1400fa078]
mov sil, byte [rdx]
mov bpl, r15b
mov rcx, qword [rbx + 0x28]
mov byte [rsp + 0x98], r15b
jmp 0x14005fe4c
cmp sil, 0x39
jg 0x14005fe52
mov ecx, dword [rsp + 0x24]
cmp ecx, 0x11
jge 0x14005fe3d
mulsd xmm6, qword [0x140111e20]
sub r12d, r15d
movsx eax, sil
sub eax, 0x30
mov dword [rsp + 0x28], r12d
movd xmm0, eax
lea eax, [rcx + 1]
cvtdq2pd xmm0, xmm0
addsd xmm0, xmm6
comisd xmm0, xmmword [0x1400fa070]
movaps xmm6, xmm0
cmovbe eax, ecx
mov dword [rsp + 0x24], eax
mov rcx, rbx
call fcn.14006143c
mov rcx, qword [rbx + 0x28]
mov sil, byte [rcx]
cmp sil, 0x30
jge 0x14005fdf6
mov al, byte [rcx]
xor esi, esi
sub al, 0x45
test al, 0xdf
jne 0x14005ff65
mov rcx, rbx
call fcn.14006143c
test bpl, bpl
jne 0x14005fe98
cmp byte [rsp + 0xa8], sil
xorps xmm6, xmm6
mov eax, edi
cmovne rax, r14
cvtsi2sd xmm6, rax
test rax, rax
jns 0x14005fe90
addsd xmm6, qword [0x1400fa078]
mov byte [rsp + 0x98], r15b
mov rcx, qword [rbx + 0x28]
xor r12b, r12b
mov sil, byte [rcx]
cmp sil, 0x2b
jne 0x14005feb2
mov rcx, rbx
call fcn.14006143c
jmp 0x14005fec3
cmp sil, 0x2d
jne 0x14005feca
mov rcx, rbx
call fcn.14006143c
mov r12b, r15b
mov rcx, qword [rbx + 0x28]
mov sil, byte [rcx]
lea eax, [rsi - 0x30]
cmp al, 9
ja 0x140060038
mov rcx, rbx
call fcn.14006143c
mov rax, qword [rbx + 0x28]
movsx esi, sil
sub esi, 0x30
mov bpl, byte [rax]
test r12b, r12b
je 0x14005fff6
mov ecx, dword [rsp + 0x28]
mov eax, 0x66666667
add ecx, 0x7ffffff7
imul ecx
mov r12d, edx
sar r12d, 2
mov eax, r12d
shr eax, 0x1f
add r12d, eax
jmp 0x14005ff58
cmp bpl, 0x39
jg 0x14005ff5e
mov rcx, rbx
call fcn.14006143c
lea ecx, [rsi + rsi*4]
movsx eax, bpl
lea esi, [rcx - 0x18]
lea esi, [rax + rsi*2]
cmp esi, r12d
jle 0x14005ff51
jmp 0x14005ff46
cmp cl, 0x39
jg 0x14005ff51
mov rcx, rbx
call fcn.14006143c
mov rax, qword [rbx + 0x28]
mov cl, byte [rax]
cmp cl, 0x30
jge 0x14005ff39
mov rax, qword [rbx + 0x28]
mov bpl, byte [rax]
cmp bpl, 0x30
jge 0x14005ff17
neg esi
mov r12d, dword [rsp + 0x28]
xor ebp, ebp
cmp byte [rsp + 0x98], bpl
je 0x1400600b3
lea ecx, [rsi + r12]
mov eax, 0xfffffecc
cmp ecx, eax
jge 0x14006006f
divsd xmm6, qword [0x1400fa080]
lea edx, [rcx + 0x134]
cmp edx, eax
jge 0x14006004d
xorps xmm6, xmm6
cmp byte [rsp + 0x20], bpl
je 0x14005ffad
xorps xmm6, xmmword [0x1400fa0a0]
mov rbx, qword [rsp + 0xa0]
mov rcx, qword [rbx + 0x38]
mov rax, qword [rbx + 0x40]
sub rax, rcx
cmp rax, 0x10
jge 0x14005ffd6
mov rdx, r15
lea rcx, [rbx + 0x20]
call fcn.1400185b4
mov rcx, qword [rbx + 0x38]
lea rax, [rcx + 0x10]
mov qword [rbx + 0x38], rax
xor eax, eax
mov qword [rcx + 8], rax
mov eax, 0x216
movsd qword [rcx], xmm6
mov word [rcx + 0xe], ax
jmp 0x1400601ad
mov r12d, 0x134
sub r12d, dword [rsp + 0x28]
cmp bpl, 0x30
jl 0x14005ff60
cmp bpl, 0x39
jg 0x14005ff60
mov rcx, rbx
call fcn.14006143c
lea esi, [rsi + rsi*4]
movsx eax, bpl
lea esi, [rsi - 0x18]
lea esi, [rax + rsi*2]
cmp esi, r12d
jg 0x14006009d
mov rax, qword [rbx + 0x28]
mov bpl, byte [rax]
jmp 0x140060001
sub rcx, qword [rbx + 0x10]
add rcx, qword [rbx + 0x38]
mov dword [r13 + 0x30], reloc.WS2_32.dll_ntohs
jmp 0x14005fd50
movsxd rax, ecx
lea rcx, [rax*8 + 0x9a0]
lea rax, [0x1400f91d0]
test edx, edx
js 0x14006006a
mulsd xmm6, qword [rcx + rax]
jmp 0x14006008f
sub rax, rcx
jmp 0x14006008b
movsxd rdx, ecx
lea rax, [0x1400f91d0]
shl rdx, 3
test ecx, ecx
js 0x140060088
mulsd xmm6, qword [rdx + rax]
jmp 0x14006008f
sub rax, rdx
divsd xmm6, qword [rax]
comisd xmm6, xmmword [0x1400fa088]
jbe 0x14005ff9f
mov dword [r13 + 0x30], reloc.WS2_32.dll_listen
mov rax, qword [rsp + 0x30]
mov qword [r13 + 0x38], rax
jmp 0x1400601ad
cmp byte [rsp + 0xa8], bpl
je 0x1400600ea
mov rcx, qword [rsp + 0xa0]
cmp byte [rsp + 0x20], bpl
je 0x1400600da
not r14
lea rdx, [r15 + r14]
call fcn.14001a13c
jmp 0x1400600e2
mov rdx, r14
call fcn.14001a7ac
mov r15b, al
jmp 0x140060187
mov rbx, qword [rsp + 0xa0]
mov rcx, qword [rbx + 0x38]
mov rax, qword [rbx + 0x40]
sub rax, rcx
cmp byte [rsp + 0x20], bpl
je 0x140060148
not edi
add edi, r15d
cmp rax, 0x10
jge 0x14006011f
mov rdx, r15
lea rcx, [rbx + 0x20]
call fcn.1400185b4
mov rcx, qword [rbx + 0x38]
lea rax, [rcx + 0x10]
mov edx, 0x1f6
mov qword [rbx + 0x38], rax
xor eax, eax
mov qword [rcx + 8], rax
test edi, edi
movsxd rax, edi
mov qword [rcx], rax
mov eax, 0xb6
cmovns ax, dx
jmp 0x14005ffed
cmp rax, 0x10
jge 0x14006015e
mov rdx, r15
lea rcx, [rbx + 0x20]
call fcn.1400185b4
mov rcx, qword [rbx + 0x38]
lea rax, [rcx + 0x10]
mov qword [rbx + 0x38], rax
xor eax, eax
mov qword [rcx + 8], rax
mov eax, edi
shr edi, 0x1a
not di
mov qword [rcx], rax
and di, 0x20
mov eax, 0x1d6
or di, ax
mov word [rcx + 0xe], di
test r15b, r15b
jne 0x1400601ad
mov dword [r13 + 0x30], shutdown
jmp 0x1400600a5
sub rdx, qword [rbx + 0x10]
add rdx, qword [rbx + 0x38]
mov qword [r13 + 0x38], rdx
mov dword [r13 + 0x30], 3
mov rbx, qword [rsp + 0x90]
movaps xmm6, xmmword [rsp + 0x40]
add rsp, 0x50
pop r15
pop r14
pop r13
pop r12
pop rdi
pop rsi
pop rbp
ret