Function at 0x1400065f0
Capabilities:
Check if file exists
Copy file
Create directory
Delete file
Get file attributes
Persist via run registry key
Query or enumerate registry value

Disassembly:
push r15
push r14
push r13
push r12
push rbp
push rdi
push rsi
push rbx
sub rsp, 0x1a8
xor eax, eax
mov ecx, 0x20
mov r8d, 0x104
lea r12, [rsp + 0x90]
lea rbx, [rsp + 0x80]
mov rdi, r12
mov rdx, r12
rep stosq qword [rdi], rax
mov dword [rdi], 0
call qword [sym.imp.KERNEL32.dll_GetModuleFileNameA]
mov rcx, r12
mov qword [rsp + 0x70], rbx
call sub.msvcrt.dll_strlen
cmp rax, 0xf
mov rsi, rax
ja 0x140006bb8
cmp rax, 1
je 0x140006ad0
test rax, rax
jne 0x14000714a
mov rax, rbx
mov qword [rsp + 0x78], rsi
mov byte [rax + rsi], 0
mov rax, qword [rsp + 0x70]
mov rcx, qword [0x1400f10e0]
cmp rax, rbx
je 0x140006bf0
lea rdx, [0x1400f10f0]
movdqu xmm0, xmmword [rsp + 0x78]
cmp rcx, rdx
je 0x140006cf0
test rcx, rcx
mov rdx, qword [0x1400f10f0]
mov qword [0x1400f10e0], rax
movups xmmword [0x1400f10e8], xmm0
je 0x140006cfe
mov qword [rsp + 0x70], rcx
mov qword [rsp + 0x80], rdx
mov qword [rsp + 0x78], 0
mov byte [rcx], 0
mov rcx, qword [rsp + 0x70]
cmp rcx, rbx
je 0x1400066eb
mov rax, qword [rsp + 0x80]
lea rdx, [rax + 1]
call fcn.1400bf650
lea rsi, [rsp + 0xa0]
mov rcx, r12
call fcn.140005e20
mov rax, qword [rsp + 0x90]
mov rcx, qword [0x1400f10c0]
cmp rax, rsi
je 0x140006c70
movdqu xmm0, xmmword [rsp + 0x98]
lea rdx, [0x1400f10d0]
cmp rcx, rdx
je 0x140006d18
test rcx, rcx
mov rdx, qword [0x1400f10d0]
mov qword [0x1400f10c0], rax
movups xmmword [0x1400f10c8], xmm0
je 0x140006d26
mov qword [rsp + 0x90], rcx
mov qword [rsp + 0xa0], rdx
mov qword [rsp + 0x98], 0
mov byte [rcx], 0
mov rcx, qword [rsp + 0x90]
cmp rcx, rsi
je 0x140006787
mov rax, qword [rsp + 0xa0]
lea rdx, [rax + 1]
call fcn.1400bf650
mov rdx, qword [0x1400f10c0]
lea r13, [rsp + 0x70]
mov qword [rsp + 0x70], rbx
mov r8, qword [0x1400f10c8]
mov rcx, r13
add r8, rdx
call fcn.1400043d0
mov rdx, r13
mov rcx, r12
call fcn.1400062f0
mov rax, qword [rsp + 0x90]
mov rcx, qword [0x1400f10a0]
mov r8, qword [rsp + 0x98]
cmp rax, rsi
je 0x140006c30
mov rdx, qword [rsp + 0xa0]
lea r9, [0x1400f10b0]
movq xmm0, r8
cmp rcx, r9
movq xmm2, rdx
punpcklqdq xmm0, xmm2
je 0x140006cc0
test rcx, rcx
mov r9, qword [0x1400f10b0]
mov qword [0x1400f10a0], rax
mov qword [0x1400f10a8], r8
mov qword [0x1400f10b0], rdx
je 0x140006cce
mov qword [rsp + 0x90], rcx
mov qword [rsp + 0xa0], r9
mov qword [rsp + 0x98], 0
mov byte [rcx], 0
mov rcx, qword [rsp + 0x90]
cmp rcx, rsi
je 0x14000685d
mov rax, qword [rsp + 0xa0]
lea rdx, [rax + 1]
call fcn.1400bf650
mov rcx, qword [rsp + 0x70]
cmp rcx, rbx
je 0x140006878
mov rax, qword [rsp + 0x80]
lea rdx, [rax + 1]
call fcn.1400bf650
mov r8, qword [0x1400f1088]
test r8, r8
je 0x14000689b
cmp word [r8], 0
je 0x14000689b
mov rax, qword [0x1400c94b0]
cmp byte [rax], 0
jne 0x140006fd8
mov rax, qword [0x1400c9440]
cmp byte [rax], 0
je 0x1400068fd
mov r8, qword [0x1400f10e8]
cmp r8, qword [0x1400f10a8]
mov rcx, qword [0x1400f10e0]
mov rdx, qword [0x1400f10a0]
je 0x140006d80
mov rcx, qword [0x1400f10c0]
call qword [sym.imp.KERNEL32.dll_GetFileAttributesA]
cmp eax, 0xffffffff
je 0x140006d68
mov rdx, qword [0x1400f10a0]
xor r8d, r8d
mov rcx, qword [0x1400f10e0]
call qword [sym.imp.KERNEL32.dll_CopyFileA]
mov byte [0x1400f1090], 1
mov rax, qword [0x1400c9470]
lea r14, str.SoftwareMicrosoftWindowsCurrentVersionRun
mov rdi, qword [0x1400c9460]
mov rbp, qword [sym.imp.ADVAPI32.dll_RegOpenKeyExA]
movzx r15d, byte [rax]
test r15b, r15b
je 0x1400069a8
mov rax, qword [rdi]
xor r8d, r8d
mov dword [rsp + 0x70], 0
mov r9d, 0x20019
lea r14, str.SoftwareMicrosoftWindowsCurrentVersionRun
mov rbp, qword [sym.imp.ADVAPI32.dll_RegOpenKeyExA]
mov qword [rsp + 0x90], 0
mov rcx, 0xffffffff80000001
mov qword [rsp + 0x20], r12
mov rdx, r14
mov qword [rsp + 0x40], rax
call rbp
test eax, eax
jne 0x140006af0
xor r8d, r8d
mov rdx, qword [rsp + 0x40]
mov r9, r13
mov qword [rsp + 0x28], 0
mov rcx, qword [rsp + 0x90]
mov qword [rsp + 0x20], 0
call qword [sym.imp.ADVAPI32.dll_RegQueryValueExA]
test eax, eax
jne 0x140006af0
nop dword [rax]
call fcn.140006100
mov r15, qword [rdi]
xor r8d, r8d
mov qword [rsp + 0x20], r12
mov r9d, 0x20019
mov dword [rsp + 0x70], 0
mov rdx, r14
mov rcx, 0xffffffff80000001
mov qword [rsp + 0x90], 0
call rbp
test eax, eax
jne 0x140006a31
xor r8d, r8d
mov r9, r13
mov rdx, r15
mov rcx, qword [rsp + 0x90]
mov qword [rsp + 0x28], 0
mov qword [rsp + 0x20], 0
call qword [sym.imp.ADVAPI32.dll_RegQueryValueExA]
test eax, eax
jne 0x140006a31
mov r8, qword [0x1400f10e8]
cmp r8, qword [0x1400f10a8]
mov rcx, qword [0x1400f10e0]
mov rdx, qword [0x1400f10a0]
je 0x140006da0
mov qword [rsp + 0x70], 0
mov ecx, 0x20
call fcn.1400bf690
lea rdx, [0x1400f1080]
xor r8d, r8d
mov rcx, r13
movq xmm1, rdx
mov rdx, qword [0x1400c94d0]
mov qword [rax + 0x18], 0
lea rbx, [0x1400d0a50]
mov qword [rsp + 0x90], rax
movq xmm0, rbx
punpcklqdq xmm0, xmm1
movups xmmword [rax], xmm0
mov qword [rax + 0x10], rdx
mov rdx, r12
call fcn.1400a93a0
mov rcx, qword [rsp + 0x90]
test rcx, rcx
je 0x140006a9f
mov rax, qword [rcx]
call qword [rax + 8]
mov rcx, r13
call fcn.1400a9460
cmp qword [rsp + 0x70], 0
movzx eax, byte [0x1400f1090]
jne 0x14000712d
add rsp, 0x1a8
pop rbx
pop rsi
pop rdi
pop rbp
pop r12
pop r13
pop r14
pop r15
ret
movzx eax, byte [rsp + 0x90]
mov byte [rsp + 0x80], al
mov rax, rbx
jmp 0x140006665
mov rax, qword [0x1400c9440]
movzx eax, byte [rax]
test al, al
mov byte [rsp + 0x40], al
jne 0x140006d40
lea rdx, [0x1400f10e0]
mov rcx, r12
call fcn.1400038a0
mov rax, qword [rsp + 0x90]
mov qword [rsp + 0x48], rax
lea rcx, [rsp + 0x50]
mov rdx, rdi
call fcn.1400038a0
mov rdx, qword [rsp + 0x48]
xor r8d, r8d
mov rcx, qword [rsp + 0x50]
call fcn.140004690
mov rcx, qword [rsp + 0x50]
lea rax, [rsp + 0x60]
cmp rcx, rax
je 0x140006b5f
mov rax, qword [rsp + 0x60]
lea rdx, [rax + rax + 2]
call fcn.1400bf650
test r15b, r15b
je 0x140006b83
mov rcx, qword [rsp + 0x90]
cmp rcx, rsi
je 0x140006b83
mov rax, qword [rsp + 0xa0]
lea rdx, [rax + rax + 2]
call fcn.1400bf650
cmp byte [rsp + 0x40], 0
je 0x1400069a8
mov rcx, qword [rsp + 0x70]
cmp rcx, rbx
je 0x1400069a8
mov rax, qword [rsp + 0x80]
lea rdx, [rax + rax + 2]
call fcn.1400bf650
jmp 0x1400069a8
lea rcx, [rax + 1]
call fcn.1400bf690
mov qword [rsp + 0x80], rsi
mov rcx, rax
mov qword [rsp + 0x70], rax
mov r8, rsi
mov rdx, r12
call sub.msvcrt.dll_memcpy
mov rax, qword [rsp + 0x70]
jmp 0x140006665
mov r8, qword [rsp + 0x78]
test r8, r8
je 0x140006c18
cmp r8, 1
je 0x1400070c0
mov rdx, rbx
call sub.msvcrt.dll_memcpy
mov r8, qword [rsp + 0x78]
mov rcx, qword [0x1400f10e0]
mov qword [0x1400f10e8], r8
mov byte [rcx + r8], 0
mov rcx, qword [rsp + 0x70]
jmp 0x1400066c4
test r8, r8
je 0x140006c56
cmp r8, 1
je 0x1400070e0
mov rdx, rsi
call sub.msvcrt.dll_memcpy
mov r8, qword [rsp + 0x98]
mov rcx, qword [0x1400f10a0]
mov qword [0x1400f10a8], r8
mov byte [rcx + r8], 0
mov rcx, qword [rsp + 0x90]
jmp 0x140006830
mov r8, qword [rsp + 0x98]
test r8, r8
je 0x140006c9e
cmp r8, 1
je 0x140007100
mov rdx, rsi
call sub.msvcrt.dll_memcpy
mov r8, qword [rsp + 0x98]
mov rcx, qword [0x1400f10c0]
mov qword [0x1400f10c8], r8
mov byte [rcx + r8], 0
mov rcx, qword [rsp + 0x90]
jmp 0x14000675a
mov qword [0x1400f10a0], rax
movups xmmword [0x1400f10a8], xmm0
mov qword [rsp + 0x90], rsi
lea rsi, [rsp + 0xa0]
mov rcx, rsi
jmp 0x140006830
mov qword [0x1400f10e0], rax
movups xmmword [0x1400f10e8], xmm0
mov qword [rsp + 0x70], rbx
lea rbx, [rsp + 0x80]
mov rcx, rbx
jmp 0x1400066c4
mov qword [0x1400f10c0], rax
movups xmmword [0x1400f10c8], xmm0
mov qword [rsp + 0x90], rsi
lea rsi, [rsp + 0xa0]
mov rcx, rsi
jmp 0x14000675a
lea rdx, [0x1400f10a0]
mov rcx, r13
call fcn.1400038a0
mov rax, qword [rsp + 0x70]
xor r15d, r15d
mov qword [rsp + 0x48], rax
jmp 0x140006b22
mov rcx, qword [0x1400f10c0]
xor edx, edx
call qword [sym.imp.KERNEL32.dll_CreateDirectoryA]
jmp 0x1400068df
test r8, r8
je 0x1400068fd
call sub.msvcrt.dll_memcmp
test eax, eax
je 0x1400068fd
jmp 0x1400068c9
test r8, r8
je 0x140006db2
call sub.msvcrt.dll_memcmp
test eax, eax
jne 0x140006a31
mov rdx, qword [0x1400f10c0]
lea r15, [rsp + 0x50]
mov r8, qword [0x1400f10c8]
lea rbp, [rsp + 0x60]
mov rcx, r15
mov qword [rsp + 0x50], rbp
add r8, rdx
call fcn.1400043d0
mov rdi, qword [rsp + 0x58]
movabs rax, 0x7fffffffffffffff
sub rax, rdi
cmp rax, 1
jbe 0x140007132
mov rdx, qword [rsp + 0x50]
lea r14, [rdi + 2]
mov eax, 0xf
cmp rdx, rbp
cmovne rax, qword [rsp + 0x60]
cmp r14, rax
ja 0x140007098
mov ecx, 0x305c
mov word [rdx + rdi], cx
mov rax, qword [rsp + 0x50]
mov qword [rsp + 0x58], r14
mov rcx, r13
mov byte [rax + rdi + 2], 0
mov rdx, qword [0x1400f10c0]
mov r8, qword [0x1400f10c8]
mov qword [rsp + 0x70], rbx
add r8, rdx
call fcn.1400043d0
movabs rax, 0x7fffffffffffffff
mov rdi, qword [rsp + 0x78]
sub rax, rdi
cmp rax, 1
jbe 0x14000713e
mov rdx, qword [rsp + 0x70]
lea r14, [rdi + 2]
mov eax, 0xf
cmp rdx, rbx
cmovne rax, qword [rsp + 0x80]
cmp r14, rax
ja 0x140007070
mov eax, 0x315c
mov word [rdx + rdi], ax
mov rax, qword [rsp + 0x70]
mov qword [rsp + 0x78], r14
mov rcx, r12
mov byte [rax + rdi + 2], 0
mov rdx, qword [rsp + 0x50]
mov r8, qword [rsp + 0x58]
mov qword [rsp + 0x90], rsi
add r8, rdx
call fcn.1400043d0
mov rcx, r12
call fcn.14000f870
mov rcx, qword [rsp + 0x90]
mov edi, eax
cmp rcx, rsi
je 0x140006ee8
mov rax, qword [rsp + 0xa0]
lea rdx, [rax + 1]
call fcn.1400bf650
test dil, dil
mov rcx, qword [rsp + 0x70]
jne 0x140006fcb
mov r8, qword [rsp + 0x78]
mov rdx, rcx
mov qword [rsp + 0x90], rsi
add r8, rcx
mov rcx, r12
call fcn.1400043d0
mov rcx, r12
call fcn.14000f870
mov rcx, qword [rsp + 0x90]
mov edi, eax
cmp rcx, rsi
je 0x140006f39
mov rax, qword [rsp + 0xa0]
lea rdx, [rax + 1]
call fcn.1400bf650
test dil, dil
je 0x140006f88
mov rcx, qword [rsp + 0x70]
cmp rcx, rbx
mov byte [0x1400f1080], dil
je 0x140006f60
mov rax, qword [rsp + 0x80]
lea rdx, [rax + 1]
call fcn.1400bf650
mov rcx, qword [rsp + 0x50]
cmp rcx, rbp
je 0x140006f78
mov rax, qword [rsp + 0x60]
lea rdx, [rax + 1]
call fcn.1400bf650
mov eax, 1
jmp 0x140006aba
mov rcx, qword [rsp + 0x50]
xor r9d, r9d
xor r8d, r8d
mov edx, 0x40000000
mov qword [rsp + 0x30], 0
mov dword [rsp + 0x28], pe_nt_image_headers64
mov dword [rsp + 0x20], 1
call qword [sym.imp.KERNEL32.dll_CreateFileA]
cmp rax, 0xffffffffffffffff
mov rcx, rax
je 0x140006fc6
call qword [sym.imp.KERNEL32.dll_CloseHandle]
mov rcx, qword [rsp + 0x70]
xor edi, edi
jmp 0x140006f43
xor edx, edx
mov rbp, qword [sym.imp.KERNEL32.dll_WideCharToMultiByte]
mov qword [rsp + 0x38], 0
mov r9d, 0xffffffff
mov qword [rsp + 0x30], 0
mov ecx, 0xfde9
mov dword [rsp + 0x28], 0
mov qword [rsp + 0x20], 0
call rbp
test eax, eax
mov edi, eax
jle 0x14000689b
movsxd rcx, eax
call fcn.1400bf660
xor edx, edx
mov dword [rsp + 0x28], edi
mov ecx, 0xfde9
mov r14, rax
mov r8, qword [0x1400f1088]
mov r9d, 0xffffffff
mov qword [rsp + 0x38], 0
mov qword [rsp + 0x30], 0
mov qword [rsp + 0x20], rax
call rbp
mov rcx, r14
call sub.msvcrt.dll_remove
mov rcx, r14
call fcn.1400bf630
jmp 0x14000689b
mov qword [rsp + 0x20], 2
lea r9, [0x1400c439e]
xor r8d, r8d
mov rdx, rdi
mov rcx, r13
call fcn.1400acba0
jmp 0x140006e94
mov qword [rsp + 0x20], 2
lea r9, [0x1400c439b]
xor r8d, r8d
mov rdx, rdi
mov rcx, r15
call fcn.1400acba0
jmp 0x140006e1f
movzx eax, byte [rsp + 0x80]
mov byte [rcx], al
mov r8, qword [rsp + 0x78]
mov rcx, qword [0x1400f10e0]
jmp 0x140006c18
movzx eax, byte [rsp + 0xa0]
mov byte [rcx], al
mov r8, qword [rsp + 0x98]
mov rcx, qword [0x1400f10a0]
jmp 0x140006c56
movzx eax, byte [rsp + 0xa0]
mov byte [rcx], al
mov r8, qword [rsp + 0x98]
mov rcx, qword [0x1400f10c0]
jmp 0x140006c9e
call fcn.1400bbf60
lea rcx, [0x1400c437e]
call fcn.1400c0760
lea rcx, [0x1400c437e]
call fcn.1400c0760
mov rcx, rbx
jmp 0x140006bd1