Function at 0x1400081a0
Capabilities:
Get common file path
Get file version info
Set current directory

Disassembly:
mov qword [rsp + 0x20], rbx
push rsi
sub rsp, 0x260
mov rax, qword [0x140055020]
xor rax, rsp
mov qword [rsp + 0x250], rax
mov rbx, rdx
cmp ecx, 2
jne 0x140008597
call fcn.140031840
mov rcx, qword [rbx]
lea r9, [rsp + 0x30]
lea r8, [0x140057370]
mov edx, 0x104
call qword [sym.imp.KERNEL32.dll_GetFullPathNameW]
test eax, eax
je 0x140008575
cmp eax, 0x104
ja 0x140008575
lea r8, [0x140057370]
lea rcx, [0x140057160]
mov edx, 0x104
mov qword [rsp + 0x270], rbp
call qword [sym.imp.MSVCR100.dll_wcscpy_s]
mov rax, qword [rsp + 0x30]
xor esi, esi
lea rdx, [rsp + 0x20]
lea rcx, [0x140057160]
mov word [rax], si
mov dword [rsp + 0x20], esi
call qword [sym.imp.VERSION.dll_GetFileVersionInfoSizeW]
mov ebp, eax
test eax, eax
je 0x1400082ec
mov ecx, ebp
mov qword [rsp + 0x280], rdi
call qword [sym.imp.MSVCR100.dll_malloc]
mov rdi, rax
test rax, rax
je 0x1400082e4
mov edx, dword [rsp + 0x20]
lea rcx, [0x140057160]
mov r9, rax
mov r8d, ebp
call qword [sym.imp.VERSION.dll_GetFileVersionInfoW]
test eax, eax
je 0x1400082db
lea r9, [rsp + 0x24]
lea r8, [rsp + 0x28]
lea rdx, [0x14003cfa8]
mov rcx, rdi
mov qword [rsp + 0x28], rsi
mov dword [rsp + 0x24], 8
call qword [sym.imp.VERSION.dll_VerQueryValueW]
test eax, eax
je 0x1400082db
mov rcx, qword [rsp + 0x28]
movzx eax, word [rcx + 0x12]
mov word [0x140057600], ax
movzx eax, word [rcx + 0x10]
mov word [0x140057604], ax
movzx eax, word [rcx + 0x16]
mov word [0x140057608], ax
movzx eax, word [rcx + 0x14]
mov word [0x14005760c], ax
mov rcx, rdi
call qword [sym.imp.MSVCR100.dll_free]
mov rdi, qword [rsp + 0x280]
call fcn.140005bf0
mov rbp, qword [rsp + 0x270]
test eax, eax
jne 0x140008321
lea ecx, [rax + 2]
call fcn.140031430
mov edx, 4
lea r8, str.This_program_requires_an_AMD_CPU_
lea ecx, [rdx + 0x11]
call fcn.140031a70
or eax, 0xffffffff
jmp 0x1400085f4
lea rdx, [0x140056f30]
mov ecx, 0x104
call qword [sym.imp.KERNEL32.dll_GetCurrentDirectoryW]
test eax, eax
jne 0x140008368
call qword [sym.imp.KERNEL32.dll_GetLastError]
lea rdx, str.GetCurrentDirectory_failed___d__n
lea rcx, [rsp + 0x40]
mov r8d, eax
call fcn.140008670
mov edx, 4
lea r8, [rsp + 0x40]
lea ecx, [rdx + 0x11]
call fcn.140031a70
jmp 0x1400085f2
lea rcx, [0x140057370]
call qword [sym.imp.KERNEL32.dll_SetCurrentDirectoryW]
test eax, eax
jne 0x140008388
call qword [sym.imp.KERNEL32.dll_GetLastError]
lea rdx, str.SetCurrentDirectory_failed___d__n
jmp 0x140008344
lea r9, [0x140057370]
lea r8, [0x140056f30]
lea rdx, str.PWD_changed_from___s__to___s_
lea rcx, [rsp + 0x40]
call fcn.140008670
mov edx, 2
lea r8, [rsp + 0x40]
lea ecx, [rdx + 0x13]
call fcn.140031a70
mov rcx, qword [rbx + 8]
lea rdx, str._install
call qword [sym.imp.MSVCR100.dll__wcsicmp]
test eax, eax
jne 0x1400083d8
call fcn.140007f00
jmp 0x1400085f4
mov rcx, qword [rbx + 8]
lea rdx, str._uninstall
call qword [sym.imp.MSVCR100.dll__wcsicmp]
test eax, eax
jne 0x1400083f7
call fcn.1400080b0
jmp 0x1400085f4
mov rcx, qword [rbx + 8]
lea rdx, [0x14003d108]
call qword [sym.imp.MSVCR100.dll__wcsicmp]
test eax, eax
jne 0x14000849e
call fcn.1400312a0
mov ebx, eax
cmp eax, 0xfffffffd
je 0x14000846e
cmp eax, 0xfffffffe
je 0x14000845f
cmp eax, 0xffffffff
je 0x140008450
test eax, eax
jne 0x140008497
lea rcx, str.Service_started._n
call qword [sym.imp.MSVCR100.dll_wprintf_s]
lea r8, str.Service_started_with__start
lea edx, [rbx + 2]
lea ecx, [rbx + 0x15]
call fcn.140031a70
mov eax, ebx
jmp 0x1400085f4
call qword [sym.imp.KERNEL32.dll_GetLastError]
lea rcx, str.OpenSCManager_failed___Error_code__d_n
jmp 0x14000847b
call qword [sym.imp.KERNEL32.dll_GetLastError]
lea rcx, str.OpenService_failed___Error_code__d_n
jmp 0x14000847b
call qword [sym.imp.KERNEL32.dll_GetLastError]
lea rcx, str.StartService_failed___Error_code__d_n
mov edx, eax
call qword [sym.imp.MSVCR100.dll_wprintf_s]
mov edx, 4
lea r8, str.OpenSCManager_failed_
lea ecx, [rdx + 0x11]
call fcn.140031a70
mov eax, ebx
jmp 0x1400085f4
mov rcx, qword [rbx + 8]
lea rdx, str._stop
call qword [sym.imp.MSVCR100.dll__wcsicmp]
test eax, eax
jne 0x1400084f3
call fcn.140031370
mov ebx, eax
cmp eax, 0xfffffffd
je 0x14000846e
cmp eax, 0xfffffffe
je 0x14000845f
cmp eax, 0xffffffff
je 0x140008450
test eax, eax
jne 0x140008497
lea rcx, str.Service_stopped._n
call qword [sym.imp.MSVCR100.dll_wprintf_s]
lea r8, str.Service_stopped_with__stop
lea edx, [rbx + 2]
lea ecx, [rbx + 0x15]
call fcn.140031a70
mov eax, ebx
jmp 0x1400085f4
mov rcx, qword [rbx + 8]
lea rdx, str._launchService
call qword [sym.imp.MSVCR100.dll__wcsicmp]
test eax, eax
jne 0x140008553
lea rcx, str.AMD_FUEL_Service
call qword [sym.imp.ADVAPI32.dll_StartServiceCtrlDispatcherW]
test eax, eax
jne 0x140008538
call qword [sym.imp.KERNEL32.dll_GetLastError]
lea rcx, str.StartServiceCtrlDispatcher_failed___Error_code__d_n
mov edx, eax
call qword [sym.imp.MSVCR100.dll_wprintf_s]
or esi, 0xffffffff
mov eax, esi
jmp 0x1400085f4
mov edx, 4
lea r8, str.Service_not_started_
lea ecx, [rdx + 0x11]
call fcn.140031a70
mov eax, esi
jmp 0x1400085f4
mov rcx, qword [rbx + 8]
lea rdx, str._local
call qword [sym.imp.MSVCR100.dll__wcsicmp]
test eax, eax
jne 0x140008597
lea ecx, [rax + 2]
mov rdx, rbx
call fcn.140007e40
jmp 0x1400085f4
call qword [sym.imp.KERNEL32.dll_GetLastError]
lea rdx, str.GetFullPathName_failed____d__0x_x__n
lea rcx, [rsp + 0x40]
mov r9d, eax
mov r8d, eax
call fcn.140008670
jmp 0x140008351
lea rcx, str.AMD_Fuel_Service_n
call qword [sym.imp.MSVCR100.dll_wprintf_s]
lea rcx, str.Usage:__n
call qword [sym.imp.MSVCR100.dll_wprintf_s]
lea rcx, str.__Fuel.Service__install_____install_the_service_n
call qword [sym.imp.MSVCR100.dll_wprintf_s]
lea rcx, str.__Fuel.Service__uninstall___uninstall_the_service_n
call qword [sym.imp.MSVCR100.dll_wprintf_s]
lea rcx, str.__Fuel.Service__start_______start_the_service_n
call qword [sym.imp.MSVCR100.dll_wprintf_s]
lea rcx, str.__Fuel.Service__stop________stop_the_service_n
call qword [sym.imp.MSVCR100.dll_wprintf_s]
lea rcx, str.__Fuel.Service__local_______run_the_app_as_a_local_RPC_server_n
call qword [sym.imp.MSVCR100.dll_wprintf_s]
xor eax, eax
mov rcx, qword [rsp + 0x250]
xor rcx, rsp
call fcn.140032000
mov rbx, qword [rsp + 0x288]
add rsp, 0x260
pop rsi
ret