Function at 0x1400016fc
Capabilities:
Check os version
Delete file
Get common file path
Get file attributes
Parse pe header
Set file attributes
Terminate process

Disassembly:
mov qword [rsp + 0x10], rbx
mov qword [rsp + 0x18], rbp
push rsi
push rdi
push r12
sub rsp, 0x7a0
and word [rsp + 0x180], 0
xor esi, esi
xor edi, edi
call qword [sym.imp.KERNEL32.dll_GetCurrentProcessId]
lea rcx, [rsp + 0x60]
mov dword [rsp + 0x60], 0x114
mov ebp, eax
call qword [sym.imp.KERNEL32.dll_GetVersionExW]
cmp dword [rsp + 0x70], 2
lea ebx, [rsi + 8]
jne 0x14000175f
cmp dword [rsp + 0x64], 6
ja 0x140001753
jne 0x14000175f
cmp dword [rsp + 0x68], 2
jb 0x14000175f
mov dword [0x14000540c], 0x1100
jmp 0x140001765
mov dword [0x14000540c], ebx
lea rcx, [rsp + 0x7c0]
call qword [sym.imp.KERNEL32.dll_GetSystemTimeAsFileTime]
call qword [sym.imp.KERNEL32.dll_GetCurrentThreadId]
mov r12d, eax
not r12d
xor r12d, ebp
call qword [sym.imp.KERNEL32.dll_GetTickCount]
lea rdx, [rsp + 0x590]
xor r12d, eax
mov eax, dword [rsp + 0x7c4]
mov r8d, 0x104
xor eax, dword [rsp + 0x7c0]
xor ecx, ecx
xor r12d, eax
call qword [sym.imp.KERNEL32.dll_GetModuleFileNameW]
test eax, eax
jne 0x1400017d9
call qword [sym.imp.KERNEL32.dll_GetLastError]
lea rcx, str.GetModuleFileName___failed____u_n
mov edx, eax
call fcn.14000103c
mov dword [0x140005408], 0xff
jmp 0x140001a3f
xor ecx, ecx
call qword [sym.imp.KERNEL32.dll_GetModuleHandleW]
movsxd rcx, dword [rax + 0x3c]
add rcx, rax
cmp word [rax], 0x5a4d
jne 0x140001a11
cmp dword [rcx], 0x4550
jne 0x140001a11
movzx eax, word [rcx + 0x14]
movzx r11d, word [rcx + 6]
xor r10d, r10d
test r11d, r11d
lea rdi, [rax + rcx + 0x18]
je 0x140001839
lea rcx, [r10 + r10*4]
lea rdx, str..tsustub
mov r8, rbx
lea rcx, [rdi + rcx*8]
call fcn.140001000
test eax, eax
je 0x14000185b
add r10d, 1
cmp r10d, r11d
jb 0x140001815
lea rdx, str..tsustub
lea rcx, str.Executable_has_no__s_section_n
call fcn.14000103c
mov dword [0x140005408], 0xfe
jmp 0x140001a3f
lea rcx, [r10 + r10*4]
mov ebp, dword [rdi + rcx*8 + 0x14]
test ebp, ebp
je 0x140001839
lea rdx, [rsp + 0x180]
mov ecx, 0x208
call qword [sym.imp.KERNEL32.dll_GetTempPathW]
test eax, eax
jne 0x140001890
call qword [sym.imp.KERNEL32.dll_GetLastError]
lea rcx, str.GetTempPath___failed____u_n
jmp 0x1400017c3
cmp word [rsp + 0x180], si
lea rcx, [rsp + 0x180]
je 0x1400018ab
add rcx, 2
cmp word [rcx], si
jne 0x1400018a2
lea rdx, str.Tsu_08lX.dll
mov r8d, r12d
call qword [sym.imp.USER32.dll_wsprintfW]
call fcn.140001cac
test rax, rax
mov rdi, rax
je 0x140001912
lea rdx, [rsp + 0x590]
mov r8d, ebp
mov rcx, rax
call fcn.1400021d0
test eax, eax
mov ebx, eax
jne 0x140001912
lea r8, [rsp + 0x20]
mov rdx, 0xffffffffffff0010
mov rcx, rdi
call fcn.140002384
test eax, eax
mov ebx, eax
jne 0x140001912
lea r8, [rsp + 0x180]
lea rdx, [rsp + 0x20]
mov rcx, rdi
call fcn.140001d94
mov ebx, eax
mov rcx, rdi
call fcn.1400021a8
test ebx, ebx
je 0x140001943
lea r8, [rsp + 0x180]
lea rcx, str.Error__u_while_extracting_TSU.DLL_to__ls_n
mov edx, ebx
call fcn.14000103c
mov dword [0x140005408], 0xf9
jmp 0x140001a3f
mov r8d, dword [0x14000540c]
lea rcx, [rsp + 0x180]
xor edx, edx
call qword [sym.imp.KERNEL32.dll_LoadLibraryExW]
test rax, rax
mov rdi, rax
jne 0x14000198d
call qword [sym.imp.KERNEL32.dll_GetLastError]
lea rcx, str.Error__u_while_loading_TSU.DLL__ls_n
lea r8, [rsp + 0x180]
mov edx, eax
call fcn.14000103c
mov dword [0x140005408], 0xf9
jmp 0x140001a27
lea rdx, str.TsuMainW
mov rcx, rax
call qword [sym.imp.KERNEL32.dll_GetProcAddress]
test rax, rax
mov rbx, rax
jne 0x1400019b4
call qword [sym.imp.KERNEL32.dll_GetLastError]
lea rcx, str.Error__u_while_retrieving_entry_point_from__ls_n
jmp 0x14000196f
lea rcx, [rsp + 0x590]
call qword [sym.imp.KERNEL32.dll_lstrlenW]
lea rcx, [rsp + 0x590]
lea edx, [rax + 0x20]
call fcn.1400014f0
test rax, rax
mov rsi, rax
mov rcx, rax
je 0x1400019ed
cmp word [rax], 0
je 0x1400019ed
add rcx, 2
cmp word [rcx], 0
jne 0x1400019e3
lea r8, [rsp + 0x590]
lea rdx, str.__d:__s_
call qword [sym.imp.USER32.dll_wsprintfW]
xor edx, edx
mov rcx, rsi
call rbx
mov dword [0x140005408], eax
jmp 0x140001a27
lea rcx, str.Executable_has_no_valid_MZ_signature_n
call fcn.14000103c
mov dword [0x140005408], 0xfe
test rdi, rdi
je 0x140001a3f
mov rcx, rdi
call qword [sym.imp.KERNEL32.dll_FreeLibrary]
test eax, eax
jne 0x140001a2c
call qword [sym.imp.KERNEL32.dll_GetLastError]
cmp word [rsp + 0x180], 0
je 0x140001aa3
lea rcx, [rsp + 0x180]
call qword [sym.imp.KERNEL32.dll_GetFileAttributesW]
or edi, 0xffffffff
cmp eax, edi
je 0x140001aa3
and eax, 0xfffffffa
lea rcx, [rsp + 0x180]
mov edx, eax
call qword [sym.imp.KERNEL32.dll_SetFileAttributesW]
mov ebx, 0xa
lea rcx, [rsp + 0x180]
call qword [sym.imp.KERNEL32.dll_DeleteFileW]
test eax, eax
jne 0x140001aa3
call qword [sym.imp.KERNEL32.dll_GetLastError]
cmp eax, 5
jne 0x140001aa3
mov ecx, 0x1f4
call qword [sym.imp.KERNEL32.dll_Sleep]
add ebx, edi
jne 0x140001a77
mov rcx, rsi
call fcn.140001ae0
mov ecx, dword [0x140005408]
call qword [sym.imp.KERNEL32.dll_ExitProcess]