Function at 0x140006310
Capabilities:
Check if file exists
Check mutex on windows
Create directory
Get file attributes
Set current directory

Disassembly:
mov qword [rsp + 8], rbx
mov qword [rsp + 0x10], rdi
push rbp
lea rbp, [rsp - 0x560]
sub rsp, 0x660
mov rax, qword [section..data]
xor rax, rsp
mov qword [rbp + 0x550], rax
mov rdi, r8
mov edx, 1
lea r8, str.2C7EEA85_177D_4252_8E2A_F6541EE1DA4B
xor ecx, ecx
call qword [sym.imp.KERNEL32.dll_CreateMutexA]
mov rbx, rax
test rax, rax
jne 0x14000636a
call qword [sym.imp.KERNEL32.dll_GetLastError]
add eax, 0x258
jmp 0x1400065e3
call qword [sym.imp.KERNEL32.dll_GetLastError]
cmp eax, 0xb7
jne 0x140006381
mov eax, 0x30f
jmp 0x1400065e3
mov r8d, 0x104
lea rdx, [rbp - 0x70]
xor ecx, ecx
call qword [sym.imp.KERNEL32.dll_GetModuleFileNameA]
test eax, eax
je 0x14000635a
call fcn.140005b80
test eax, eax
jne 0x1400063ca
mov rcx, rbx
call qword [sym.imp.KERNEL32.dll_CloseHandle]
lea r8, str.runas
lea rdx, [0x14001ffe0]
lea rcx, [rbp - 0x70]
call fcn.140006260
mov eax, 0x25d
jmp 0x1400065e3
mov edx, 0x5c
lea rcx, [rbp - 0x70]
call fcn.140008a34
lea r8, [rbp - 0x70]
mov edx, 0x104
lea rcx, [rbp + 0x1b0]
mov byte [rax], 0
call fcn.14000a800
lea rcx, [rbp + 0x1b0]
call qword [sym.imp.KERNEL32.dll_SetCurrentDirectoryA]
test eax, eax
je 0x14000635a
call fcn.140005ea0
mov dword [rsp + 0x40], eax
test eax, eax
jne 0x1400065e3
lea rdx, [rbp + 0xa0]
call fcn.140005f70
mov dword [rsp + 0x40], eax
test eax, eax
jne 0x1400065e3
xor edx, edx
lea rcx, [rbp + 0xa0]
call qword [sym.imp.KERNEL32.dll_CreateDirectoryA]
test eax, eax
jne 0x140006456
call qword [sym.imp.KERNEL32.dll_GetLastError]
mov dword [rsp + 0x40], eax
cmp eax, 0xb7
jne 0x140006360
lea rdx, [rbp + 0xa0]
call fcn.1400060e0
mov dword [rsp + 0x40], eax
test eax, eax
jne 0x1400065e3
lea r9, [rbp + 0xa0]
mov edx, 0x104
lea r8, str._sLenovoBiosUpdateToolLenovoBiosUpdateTool.exe
lea rcx, [rbp - 0x70]
call fcn.140005a90
test eax, eax
je 0x140006498
mov eax, 0x2c7
jmp 0x1400065e3
lea rcx, [rbp - 0x70]
call qword [sym.imp.KERNEL32.dll_GetFileAttributesA]
cmp eax, 0xffffffff
je 0x1400065de
test al, 0x10
jne 0x1400065de
mov r9d, 0x40
lea r8, [rsp + 0x50]
xor ecx, ecx
lea edx, [r9 + 0x26]
call qword [sym.imp.USER32.dll_LoadStringA]
test eax, eax
je 0x14000635a
lea rcx, str.WinFlashTuning
call qword [sym.imp.KERNEL32.dll_GetFileAttributesA]
cmp eax, 0xffffffff
lea rcx, str._wft
lea rdx, [0x14001ffe0]
cmovne rdx, rcx
lea r8, [rsp + 0x50]
xor ecx, ecx
lea r9, str.INVALID
nop dword [rax]
nop word [rax + rax]
movzx eax, byte [r8 + rcx]
inc rcx
cmp al, byte [r9 + rcx - 1]
jne 0x140006550
cmp rcx, 8
jne 0x140006510
mov qword [rsp + 0x28], rdi
lea r9, [rbp + 0x1b0]
mov qword [rsp + 0x20], rdx
lea r8, str._rotd__efwd___s___s_s
mov edx, 0x288
lea rcx, [rbp + 0x2c0]
call fcn.140005a90
jmp 0x140006583
mov qword [rsp + 0x30], rdi
lea rax, [rsp + 0x50]
mov qword [rsp + 0x28], rdx
lea r9, [rbp + 0x1b0]
mov edx, 0x288
mov qword [rsp + 0x20], rax
lea r8, str._rotd__efwd___s___brand___s___s_s
lea rcx, [rbp + 0x2c0]
call fcn.140005a90
xor r8d, r8d
lea rdx, [rbp + 0x2c0]
lea rcx, [rbp - 0x70]
call fcn.140006260
mov rbx, rax
test rax, rax
je 0x14000635a
or edx, 0xffffffff
mov rcx, rax
call qword [sym.imp.KERNEL32.dll_WaitForSingleObject]
lea rdx, [rsp + 0x40]
mov rcx, rbx
call qword [sym.imp.KERNEL32.dll_GetExitCodeProcess]
test eax, eax
jne 0x1400065cf
call qword [sym.imp.KERNEL32.dll_GetLastError]
add eax, 0x258
mov dword [rsp + 0x40], eax
mov rcx, rbx
call qword [sym.imp.KERNEL32.dll_CloseHandle]
mov eax, dword [rsp + 0x40]
jmp 0x1400065e3
mov eax, 0x25a
mov rcx, qword [rbp + 0x550]
xor rcx, rsp
call fcn.140006620
lea r11, [rsp + 0x660]
mov rbx, qword [r11 + 0x10]
mov rdi, qword [r11 + 0x18]
mov rsp, r11
pop rbp
ret