Function at 0x140073a60
Capabilities:
Get common file path
Hash data using djb2
Receive data
Receive data on socket
Send data
Send data on socket

Disassembly:
mov qword [rsp + 0x20], rbx
push rbp
push rsi
push rdi
push r12
push r13
push r14
push r15
lea rbp, [rsp - 0x770]
sub rsp, 0x870
mov dword [rbp + 0x7b0], 0
lea rdx, [0x140116bf0]
lea rcx, [rbp + 0x50]
call fcn.140083970
nop
cmp qword [rbp + 0xe0], 0
jne 0x140073b3f
lea rdx, [0x1400fa708]
xor ecx, ecx
call fcn.140072940
nop
mov rax, qword [rbp + 0x50]
movsxd rcx, dword [rax + 4]
lea rax, vtable.std::basic_ifstream_char__struct_std::char_traits_char__.0
mov qword [rbp + rcx + 0x50], rax
mov rax, qword [rbp + 0x50]
movsxd rcx, dword [rax + 4]
lea edx, [rcx - 0xb0]
mov dword [rbp + rcx + 0x4c], edx
lea rcx, [rbp + 0x60]
call fcn.14000ba00
mov rax, qword [rbp + 0x50]
movsxd rcx, dword [rax + 4]
lea rax, vtable.std::basic_istream_char__struct_std::char_traits_char__.0
mov qword [rbp + rcx + 0x50], rax
mov rax, qword [rbp + 0x50]
movsxd rcx, dword [rax + 4]
lea edx, [rcx - 0x18]
mov dword [rbp + rcx + 0x4c], edx
lea rax, vtable.std::ios_base.0
mov qword [rbp + 0x100], rax
lea rcx, [rbp + 0x100]
call fcn.140099c48
nop
mov rbx, qword [rsp + 0x8c8]
add rsp, 0x870
pop r15
pop r14
pop r13
pop r12
pop rdi
pop rsi
pop rbp
ret
lea rdx, str.thread_run
mov edi, 2
mov ecx, edi
call fcn.140072940
mov r8d, edi
lea rcx, [rbp + 0x50]
call fcn.140084990
lea rdx, [rsp + 0x60]
lea rcx, [rbp + 0x50]
call fcn.1400848b0
mov r14, qword [rax + 8]
add r14, qword [rax]
xor r8d, r8d
lea rcx, [rbp + 0x50]
call fcn.140084990
movsxd rbx, r14d
mov rcx, rbx
call fcn.14009bf50
mov r15, rax
mov r8, rbx
mov rdx, rax
lea rcx, [rbp + 0x50]
call fcn.140084ca0
lea rcx, [rbp + 0x60]
call fcn.14000c840
test rax, rax
jne 0x140073bd7
mov rcx, qword [rbp + 0x50]
movsxd rdx, dword [rcx + 4]
mov ecx, 6
cmp qword [rbp + rdx + 0x98], rax
cmovne ecx, edi
or ecx, dword [rbp + rdx + 0x60]
and ecx, 0x17
mov dword [rbp + rdx + 0x60], ecx
and ecx, dword [rbp + rdx + 0x64]
jne 0x14007457f
xor edx, edx
test r14d, r14d
je 0x140073cbc
cmp r14d, 8
jb 0x140073c9b
movdqa xmm1, xmmword [0x1400fdae0]
cmp r14d, 0x40
jb 0x140073c69
mov r8d, r14d
and r8d, 0x3f
mov r10d, r14d
sub r10d, r8d
mov r9d, 0x20
nop dword [rax]
movdqu xmm0, xmmword [rdx + r15]
andnps xmm0, xmm1
movdqu xmmword [rdx + r15], xmm0
lea eax, [r9 - 0x10]
movdqu xmm0, xmmword [rax + r15]
andnps xmm0, xmm1
movdqu xmmword [rax + r15], xmm0
mov eax, r9d
movdqu xmm0, xmmword [rax + r15]
andnps xmm0, xmm1
movdqu xmmword [rax + r15], xmm0
lea eax, [r9 + 0x10]
movdqu xmm0, xmmword [rax + r15]
andnps xmm0, xmm1
movdqu xmmword [rax + r15], xmm0
add edx, 0x40
add r9d, 0x40
cmp edx, r10d
jb 0x140073c10
cmp r8d, 8
jb 0x140073c96
mov eax, r14d
and eax, 7
mov ecx, r14d
sub ecx, eax
nop dword [rax]
nop dword [rax + rax]
movq xmm0, qword [rdx + r15]
andnps xmm0, xmm1
movq qword [rdx + r15], xmm0
add edx, 8
cmp edx, ecx
jb 0x140073c80
cmp edx, r14d
jae 0x140073cbc
mov ecx, edx
add rcx, r15
mov eax, r14d
sub eax, edx
mov edx, eax
nop word [rax + rax]
not byte [rcx]
lea rcx, [rcx + 1]
sub rdx, 1
jne 0x140073cb0
mov ebx, 0x1505
mov eax, r14d
shr eax, 1
je 0x140073ce2
mov rcx, r15
mov edx, eax
nop dword [rax]
imul ebx, ebx, 0x21
movzx eax, word [rcx]
add ebx, eax
lea rcx, [rcx + 2]
sub rdx, 1
jne 0x140073cd0
lea rcx, [rbp + 0x160]
call fcn.1400843f0
nop
mov rax, qword [rbp + 0x170]
movsxd rcx, dword [rax + 4]
mov eax, dword [rbp + rcx + 0x188]
and eax, 0xfffff9ff
bts eax, 0xb
mov dword [rbp + rcx + 0x188], eax
mov edx, ebx
lea rcx, [rbp + 0x170]
call fcn.14005cb30
nop
xorps xmm0, xmm0
movups xmmword [rbp - 0x60], xmm0
xor ebx, ebx
mov qword [rbp - 0x50], rbx
mov r13d, select
mov qword [rbp - 0x48], r13
mov byte [rbp - 0x60], bl
mov dword [rbp + 0x7b0], edi
xor eax, eax
movups xmmword [rsp + 0x60], xmm0
mov qword [rsp + 0x70], rax
mov ecx, dword [rbp + 0x1e8]
mov eax, ecx
and al, 0x22
cmp al, 2
je 0x140073d87
mov rax, qword [rbp + 0x1b8]
mov r8, qword [rax]
test r8, r8
je 0x140073d87
mov rax, qword [rbp + 0x198]
mov rdx, qword [rax]
cmp r8, qword [rbp + 0x1e0]
cmovb r8, qword [rbp + 0x1e0]
sub r8, rdx
jmp 0x140073dc1
test cl, 4
jne 0x140073db7
mov rax, qword [rbp + 0x1b0]
mov rcx, qword [rax]
test rcx, rcx
je 0x140073db7
mov rax, qword [rbp + 0x190]
mov rdx, qword [rax]
mov rax, qword [rbp + 0x1c8]
movsxd r8, dword [rax]
add r8, rcx
sub r8, rdx
jmp 0x140073dc1
mov r8, qword [rsp + 0x68]
mov rdx, qword [rsp + 0x60]
test rdx, rdx
je 0x140073dd7
lea rcx, [rbp - 0x60]
call fcn.140085c10
mov rbx, qword [rbp - 0x50]
mov r13, qword [rbp - 0x48]
mov r12, qword [0x140113d78]
xorps xmm0, xmm0
movdqu xmmword [rbp + 0x24], xmm0
xorps xmm1, xmm1
movdqu xmmword [rbp + 0x34], xmm1
mov dword [rbp + 0x20], socket
mov rsi, 0xffffffffffffffff
mov r8, rsi
lea rdx, [0x140116bf0]
inc r8
cmp byte [rdx + r8], 0
jne 0x140073e06
lea rcx, [rbp + 0x24]
call fcn.14009dd50
xor r9d, r9d
lea r8d, [r9 + 0x24]
lea rdx, [rbp + 0x20]
mov rcx, r12
call qword [sym.imp.WS2_32.dll_send]
cmp eax, esi
jne 0x140073e57
xorps xmm0, xmm0
movups xmmword [rbp - 0x80], xmm0
mov qword [rbp - 0x70], rdi
mov r8d, select
mov qword [rbp - 0x68], r8
movzx eax, word [0x1400fa6d0]
mov word [rbp - 0x80], ax
mov byte [rbp - 0x7e], 0
jmp 0x140073ec2
xor edx, edx
mov r8d, 0x400
lea rcx, [rbp + 0x370]
call fcn.14009e4b0
xor r9d, r9d
mov r8d, 0x400
lea rdx, [rbp + 0x370]
mov rcx, r12
call qword [sym.imp.WS2_32.dll_recv]
xorps xmm0, xmm0
movups xmmword [rbp - 0x80], xmm0
xor eax, eax
mov qword [rbp - 0x70], rax
mov qword [rbp - 0x68], rax
lea rax, [rbp + 0x370]
mov r8, rsi
nop
inc r8
cmp byte [rax + r8], 0
jne 0x140073ea0
lea rdx, [rbp + 0x370]
lea rcx, [rbp - 0x80]
call fcn.14000d580
mov rdi, qword [rbp - 0x70]
mov r8, qword [rbp - 0x68]
lea rdx, [rbp - 0x60]
cmp r13, 0x10
setae byte [rbp + 0x7b8]
mov r12, qword [rbp - 0x60]
cmovae rdx, r12
lea rcx, [rbp - 0x80]
cmp r8, 0x10
setae byte [rbp + 0x7b0]
mov r13, qword [rbp - 0x80]
cmovae rcx, r13
mov r8, rdi
cmp rbx, rdi
cmovb r8, rbx
call fcn.14009e850
test eax, eax
jne 0x1400744ee
cmp rdi, rbx
jb 0x1400744ee
ja 0x1400744ee
lea rcx, [rbp - 0x40]
call fcn.140098b50
nop
mov rbx, qword [rbp - 0x30]
lea rdi, [rbp - 0x40]
cmp qword [rbp - 0x28], 0x10
cmovae rdi, qword [rbp - 0x40]
xorps xmm0, xmm0
movups xmmword [rsp + 0x40], xmm0
mov ecx, 0x20
call fcn.14009bb58
mov qword [rsp + 0x40], rax
mov qword [rsp + 0x50], reloc.WS2_32.dll_recv
mov qword [rsp + 0x58], 0x1f
movups xmm0, xmmword [str.SerialNumber.dat]
movups xmmword [rax], xmm0
mov byte [rax + 0x10], 0
mov r8, rbx
mov rdx, rdi
lea rcx, [rsp + 0x40]
call fcn.140072410
nop
mov rdx, qword [rsp + 0x58]
cmp rdx, 0x10
jb 0x140073fb7
inc rdx
mov rcx, qword [rsp + 0x40]
mov rax, rcx
cmp rdx, 0x1000
jb 0x140073fb2
add rdx, 0x27
mov rcx, qword [rcx - 8]
sub rax, rcx
add rax, 0xfffffffffffffff8
cmp rax, 0x1f
ja 0x1400745d1
call fcn.14009ba30
xorps xmm0, xmm0
movups xmmword [rsp + 0x60], xmm0
mov qword [rsp + 0x70], select
mov qword [rsp + 0x78], select
movsd xmm0, qword [str.drivename.dat]
movsd qword [rsp + 0x60], xmm0
mov eax, dword [0x1400fa778]
mov dword [rsp + 0x68], eax
movzx eax, byte [reloc.WS2_32.dll_WSACleanup]
mov byte [rsp + 0x6c], al
mov byte [rsp + 0x6d], 0
lea rdx, [0x1401168b0]
mov r8, rsi
inc r8
cmp word [rdx + r8*2], 0
jne 0x140074003
add r8, r8
lea rcx, [rsp + 0x60]
call fcn.140072410
nop
mov rdx, qword [rsp + 0x78]
cmp rdx, 0x10
jb 0x140074059
inc rdx
mov rcx, qword [rsp + 0x60]
mov rax, rcx
cmp rdx, 0x1000
jb 0x140074054
add rdx, 0x27
mov rcx, qword [rcx - 8]
sub rax, rcx
add rax, 0xfffffffffffffff8
cmp rax, 0x1f
ja 0x1400745d1
call fcn.14009ba30
mov edx, 0x104
lea rcx, [rbp + 0x260]
call qword [sym.imp.KERNEL32.dll_GetSystemDirectoryA]
test eax, eax
je 0x140074388
xorps xmm0, xmm0
movups xmmword [rsp + 0x60], xmm0
xor ebx, ebx
mov qword [rsp + 0x70], rbx
mov qword [rsp + 0x78], rbx
lea rax, [rbp + 0x260]
nop
inc rsi
cmp byte [rax + rsi], bl
jne 0x140074090
mov r8, rsi
lea rdx, [rbp + 0x260]
lea rcx, [rsp + 0x60]
call fcn.14000d580
nop
mov r8d, socket
lea rdx, str.driversmouselink.sys
lea rcx, [rsp + 0x60]
call fcn.14000c100
lea r8, [rsp + 0x60]
cmp qword [rsp + 0x78], 0x10
cmovae r8, qword [rsp + 0x60]
mov byte [rsp + 0x20], 0
xor r9d, r9d
lea rdx, str.mouselink.sys
mov rcx, qword [0x140113d78]
call fcn.140073540
test eax, eax
jne 0x14007433a
lea rax, [rbp - 0x20]
mov qword [rbp + 0x7c0], rax
xorps xmm0, xmm0
movups xmmword [rbp - 0x20], xmm0
mov qword [rbp - 0x10], rbx
mov qword [rbp - 8], select
mov ecx, 0x30
call fcn.14009bb58
mov rcx, rax
mov qword [rbp - 0x20], rax
mov qword [rbp - 0x10], 0x2a
mov qword [rbp - 8], 0x2f
movups xmm0, xmmword [str.SystemRootSystem32driversmouselink.sys]
movups xmmword [rax], xmm0
movups xmm1, xmmword [0x1400fa7b8]
movups xmmword [rax + 0x10], xmm1
movsd xmm0, qword [0x1400fa7c8]
movsd qword [rax + 0x20], xmm0
movzx eax, word [0x1400fa7d0]
mov word [rcx + 0x28], ax
mov byte [rcx + 0x2a], 0
xorps xmm0, xmm0
movups xmmword [rbp], xmm0
mov qword [rbp + 0x10], 9
mov qword [rbp + 0x18], select
movsd xmm0, qword [str.mouselink]
movsd qword [rbp], xmm0
movzx eax, byte [0x1400fa7e0]
mov byte [rbp + 8], al
mov byte [rbp + 9], 0
lea rdx, [rbp - 0x20]
lea rcx, [rbp]
call fcn.14005bd90
test al, al
je 0x140074331
xorps xmm0, xmm0
movups xmmword [rsp + 0x40], xmm0
mov qword [rsp + 0x50], 9
mov qword [rsp + 0x58], select
movsd xmm0, qword [str.mouselink]
movsd qword [rsp + 0x40], xmm0
movzx eax, byte [0x1400fa7e0]
mov byte [rsp + 0x48], al
mov byte [rsp + 0x49], 0
lea rcx, [rsp + 0x40]
call fcn.14005c1b0
test al, al
je 0x1400742df
mov qword [rsp + 0x30], rbx
mov dword [rsp + 0x28], 0x80
mov dword [rsp + 0x20], 3
xor r9d, r9d
xor r8d, r8d
mov edx, 0xc0000000
lea rcx, str..mouselink
call qword [sym.imp.KERNEL32.dll_CreateFileW]
cmp rax, 0xffffffffffffffff
je 0x14007428d
mov dword [rbp + 0x7c0], ebx
mov qword [rsp + 0x38], rbx
lea rcx, [rbp + 0x7c0]
mov qword [rsp + 0x30], rcx
mov dword [rsp + 0x28], ebx
mov qword [rsp + 0x20], rbx
mov r9d, r14d
mov r8, r15
mov edx, 0x8005e02c
mov rcx, rax
call qword [sym.imp.KERNEL32.dll_DeviceIoControl]
test eax, eax
jne 0x14007427b
xor r9d, r9d
xor r8d, r8d
lea rdx, str.device_load_fail._n
xor ecx, ecx
call qword [sym.imp.USER32.dll_MessageBoxA]
jmp 0x14007429b
mov edx, 0x64
mov ecx, 0x7d0
call qword [sym.imp.KERNEL32.dll_Beep]
jmp 0x14007429b
lea rdx, str.Create_error
xor ecx, ecx
call fcn.140072940
xorps xmm0, xmm0
movups xmmword [rsp + 0x40], xmm0
mov qword [rsp + 0x50], 9
mov qword [rsp + 0x58], select
movsd xmm0, qword [str.mouselink]
movsd qword [rsp + 0x40], xmm0
movzx eax, byte [0x1400fa7e0]
mov byte [rsp + 0x48], al
mov byte [rsp + 0x49], 0
lea rcx, [rsp + 0x40]
call fcn.14005c540
jmp 0x1400742ed
lea rdx, str.Start_error
xor ecx, ecx
call fcn.140072940
xorps xmm0, xmm0
movups xmmword [rsp + 0x40], xmm0
mov qword [rsp + 0x50], 9
mov qword [rsp + 0x58], select
movsd xmm0, qword [str.mouselink]
movsd qword [rsp + 0x40], xmm0
movzx eax, byte [0x1400fa7e0]
mov byte [rsp + 0x48], al
mov byte [rsp + 0x49], 0
lea rcx, [rsp + 0x40]
call fcn.14005c890
jmp 0x140074349
lea rdx, str.Register_error
jmp 0x140074341
lea rdx, str.download_file_error
xor ecx, ecx
call fcn.140072940
nop
mov rdx, qword [rsp + 0x78]
cmp rdx, 0x10
jb 0x140074398
inc rdx
mov rcx, qword [rsp + 0x60]
mov rax, rcx
cmp rdx, 0x1000
jb 0x140074381
add rdx, 0x27
mov rcx, qword [rcx - 8]
sub rax, rcx
add rax, 0xfffffffffffffff8
cmp rax, 0x1f
ja 0x1400745d7
call fcn.14009ba30
jmp 0x140074398
lea rdx, str.Get_path_error
xor ecx, ecx
call fcn.140072940
xor ebx, ebx
mov rcx, r15
call fcn.14009ba30
nop
mov rdx, qword [rbp - 0x28]
cmp rdx, 0x10
jb 0x1400743dc
inc rdx
mov rcx, qword [rbp - 0x40]
mov rax, rcx
cmp rdx, 0x1000
jb 0x1400743d7
add rdx, 0x27
mov rcx, qword [rcx - 8]
sub rax, rcx
add rax, 0xfffffffffffffff8
cmp rax, 0x1f
ja 0x1400745dd
call fcn.14009ba30
mov qword [rbp - 0x30], rbx
mov qword [rbp - 0x28], select
mov byte [rbp - 0x40], 0
cmp byte [rbp + 0x7b0], 0
je 0x14007442a
mov rdx, qword [rbp - 0x68]
inc rdx
mov rax, r13
cmp rdx, 0x1000
jb 0x140074421
add rdx, 0x27
mov r13, qword [r13 - 8]
sub rax, r13
add rax, 0xfffffffffffffff8
cmp rax, 0x1f
ja 0x1400745e3
mov rcx, r13
call fcn.14009ba30
nop
cmp byte [rbp + 0x7b8], 0
je 0x140074469
mov rdx, qword [rbp - 0x48]
inc rdx
mov rax, r12
cmp rdx, 0x1000
jb 0x140074460
add rdx, 0x27
mov r12, qword [r12 - 8]
sub rax, r12
add rax, 0xfffffffffffffff8
cmp rax, 0x1f
ja 0x1400744e8
mov rcx, r12
call fcn.14009ba30
nop
lea rcx, [rbp + 0x160]
call fcn.140072320
nop
mov rax, qword [rbp + 0x50]
movsxd rcx, dword [rax + 4]
lea rax, vtable.std::basic_ifstream_char__struct_std::char_traits_char__.0
mov qword [rbp + rcx + 0x50], rax
mov rax, qword [rbp + 0x50]
movsxd rcx, dword [rax + 4]
lea edx, [rcx - 0xb0]
mov dword [rbp + rcx + 0x4c], edx
lea rcx, [rbp + 0x60]
call fcn.14000ba00
mov rax, qword [rbp + 0x50]
movsxd rcx, dword [rax + 4]
lea rax, vtable.std::basic_istream_char__struct_std::char_traits_char__.0
mov qword [rbp + rcx + 0x50], rax
mov rax, qword [rbp + 0x50]
movsxd rcx, dword [rax + 4]
lea edx, [rcx - 0x18]
mov dword [rbp + rcx + 0x4c], edx
lea rax, vtable.std::ios_base.0
mov qword [rbp + 0x100], rax
lea rcx, [rbp + 0x100]
call fcn.140099c48
nop
jmp 0x140073b24
call fcn.1400a4160
nop
lea r8, [rbp - 0x60]
lea rdx, [0x1400fa748]
lea rcx, [rbp - 0x20]
call fcn.14005ead0
nop
lea r8, [0x1400fa738]
mov rdx, rax
lea rcx, [rbp]
call fcn.1400863a0
nop
lea r8, [rbp - 0x80]
mov rdx, rax
lea rcx, [rsp + 0x40]
call fcn.140086330
nop
lea r8, [0x1400fa728]
mov rdx, rax
lea rcx, [rsp + 0x60]
call fcn.1400863a0
nop
lea rcx, [rsp + 0x40]
call fcn.14000c190
nop
lea rcx, [rbp]
call fcn.14000c190
nop
lea rcx, [rbp - 0x20]
call fcn.14000c190
lea rcx, [rsp + 0x60]
call fcn.14000c0f0
mov rdx, rax
xor r9d, r9d
xor r8d, r8d
xor ecx, ecx
call qword [sym.imp.USER32.dll_MessageBoxA]
xor ecx, ecx
call fcn.1400aed64
nop
test cl, 4
je 0x14007458d
lea rbx, str.ios_base::badbit_set
jmp 0x1400745a2
test dil, cl
lea rbx, str.ios_base::failbit_set
lea rax, str.ios_base::eofbit_set
cmove rbx, rax
mov edx, 1
lea rcx, [rsp + 0x60]
call fcn.140001580
mov r8, rax
mov rdx, rbx
lea rcx, [rbp + 0x20]
call fcn.140001df0
lea rdx, [0x1401109b8]
lea rcx, [rbp + 0x20]
call fcn.14009dc78
nop
call fcn.1400a4160
int3
call fcn.1400a4160
nop
call fcn.1400a4160
nop
call fcn.1400a4160
int3