Function at 0x14002a360
Capabilities:
Create thread
Get common file path
Set current directory

Disassembly:
mov qword [rsp + 0x10], rbx
mov qword [rsp + 0x20], rsi
push rbp
push rdi
push r14
lea rbp, [rsp - 0x2b0]
sub rsp, 0x3b0
mov rax, qword [0x1400c81d8]
xor rax, rsp
mov qword [rbp + 0x2a0], rax
mov rbx, rcx
lea rdx, [rbp + 0x90]
mov ecx, 0x103
mov rsi, r8
call qword [sym.imp.KERNEL32.dll_GetCurrentDirectoryW]
xor r14d, r14d
mov dword [rsp + 0x70], 0x11c
xor edx, edx
mov qword [rsp + 0x7c], r14
mov r8d, 0x100
lea rcx, [rbp - 0x7c]
call fcn.14008b5d0
xor eax, eax
mov word [rbp + 0x86], r14w
mov edi, 2
mov dword [rbp + 0x88], eax
mov edx, edi
mov r8b, 3
xor ecx, ecx
call qword [sym.imp.KERNEL32.dll_VerSetConditionMask]
mov r8b, 3
lea edx, [rdi - 1]
mov rcx, rax
call qword [sym.imp.KERNEL32.dll_VerSetConditionMask]
mov r8b, 3
lea edx, [rdi + 0x1e]
mov rcx, rax
call qword [sym.imp.KERNEL32.dll_VerSetConditionMask]
lea edx, [rdi + 0x21]
mov qword [rsp + 0x74], 0xa
mov r8, rax
mov word [rbp + 0x84], r14w
lea rcx, [rsp + 0x70]
call qword [sym.imp.KERNEL32.dll_VerifyVersionInfoW]
test eax, eax
jne 0x14002a44e
lea r9d, [r14 + 0x30]
xor ecx, ecx
lea r8, str.Unsupported_Operating_System
lea rdx, str.OBS_Studio_28_and_newer_no_longer_support_Windows_7__Windows_8__or_Windows_8.1._You_can_disable_the_following_setting_to_opt_out_of_future_updates:_Settings
call qword [sym.imp.USER32.dll_MessageBoxW]
xor eax, eax
jmp 0x14002a7aa
call fcn.140017010
test al, al
jne 0x14002a5af
lea r8, str.OBSUpdaterRunningAsNonAdminUser
xor edx, edx
mov ecx, 0x100000
call qword [sym.imp.KERNEL32.dll_OpenMutexW]
xor ecx, ecx
mov rbx, rax
test rax, rax
je 0x14002a4ab
lea r9d, [rcx + 0x30]
lea r8, str.Updater_Error
lea rdx, str.OBS_Studio_Updater_must_be_run_as_an_administrator.
call qword [sym.imp.USER32.dll_MessageBoxW]
cmp rbx, 0xffffffffffffffff
je 0x14002a5a8
mov rcx, rbx
call qword [sym.imp.KERNEL32.dll_CloseHandle]
mov eax, edi
jmp 0x14002a7aa
lea r8, str.OBSUpdaterRunningAsNonAdminUser
mov edx, 1
call qword [sym.imp.KERNEL32.dll_CreateMutexW]
lea rdx, [rbp + 0x90]
mov rcx, rsi
mov rbx, rax
call fcn.140018af0
cmp eax, 1
jne 0x14002a58e
mov edx, 0x104
lea rcx, [rbp + 0x90]
cmp word [rcx], r14w
je 0x14002a4f3
add rcx, rdi
sub rdx, 1
jne 0x14002a4e4
mov eax, 0x104
sub rax, rdx
test rdx, rdx
cmove rax, r14
je 0x14002a55d
mov r8d, 0x104
lea rcx, [rbp + 0x90]
lea rcx, [rcx + rax*2]
sub r8, rax
je 0x14002a54e
lea r9, str.....
mov eax, 0x7ffffffe
sub r9, rcx
nop dword [rax]
test rax, rax
je 0x14002a54e
movzx edx, word [r9 + rcx]
test dx, dx
je 0x14002a54e
mov word [rcx], dx
dec rax
add rcx, rdi
sub r8, 1
jne 0x14002a530
test r8, r8
lea rax, [rcx - 2]
cmovne rax, rcx
mov word [rax], r14w
xor r9d, r9d
lea r8, [0x1400cad60]
mov edx, 0x104
lea rcx, [rbp + 0x90]
call qword [sym.imp.KERNEL32.dll_GetFullPathNameW]
lea rcx, [0x1400cad60]
call qword [sym.imp.KERNEL32.dll_SetCurrentDirectoryW]
mov rcx, rsi
call fcn.140017a70
test rbx, rbx
je 0x14002a5a5
mov rcx, rbx
call qword [sym.imp.KERNEL32.dll_ReleaseMutex]
mov rcx, rbx
call qword [sym.imp.KERNEL32.dll_CloseHandle]
mov edi, r14d
mov eax, edi
jmp 0x14002a7aa
mov ecx, 0x104
lea rax, [rbp + 0x90]
nop dword [rax + rax]
cmp word [rax], r14w
je 0x14002a5cf
add rax, rdi
sub rcx, 1
jne 0x14002a5c0
mov eax, 0x104
sub rax, rcx
test rcx, rcx
cmove rax, r14
je 0x14002a633
mov edx, 0x104
lea rcx, [rbp + 0x90]
lea rcx, [rcx + rax*2]
sub rdx, rax
je 0x14002a624
lea r9, str.....
mov eax, 0x7ffffffe
sub r9, rcx
test rax, rax
je 0x14002a624
movzx r8d, word [r9 + rcx]
test r8w, r8w
je 0x14002a624
mov word [rcx], r8w
dec rax
add rcx, rdi
sub rdx, 1
jne 0x14002a604
test rdx, rdx
lea rax, [rcx - 2]
cmovne rax, rcx
mov word [rax], r14w
xor r9d, r9d
lea r8, [0x1400cad60]
mov edx, 0x104
lea rcx, [rbp + 0x90]
call qword [sym.imp.KERNEL32.dll_GetFullPathNameW]
lea rcx, [0x1400cad60]
call qword [sym.imp.KERNEL32.dll_SetCurrentDirectoryW]
lea rcx, [rsp + 0x30]
mov qword [0x1400caa48], rbx
mov dword [rsp + 0x30], 8
mov dword [rsp + 0x34], 0x20
call qword [sym.imp.COMCTL32.dll_InitCommonControlsEx]
xor r8d, r8d
mov qword [rsp + 0x20], r14
lea r9, [0x14001c7d0]
mov rcx, rbx
lea edx, [r8 + 0x65]
call qword [sym.imp.USER32.dll_CreateDialogParamW]
mov qword [0x1400caa50], rax
test rax, rax
jne 0x14002a6b0
mov eax, 0xffffffff
jmp 0x14002a7aa
mov edx, 1
mov rcx, rax
call qword [sym.imp.USER32.dll_ShowWindow]
mov rcx, qword [0x1400caa50]
call qword [sym.imp.USER32.dll_SetForegroundWindow]
xor r9d, r9d
xor r8d, r8d
xor ecx, ecx
lea edx, [r9 + 1]
call qword [sym.imp.KERNEL32.dll_CreateEventW]
mov r9, rsi
mov qword [rsp + 0x28], r14
lea r8, [0x14001cfc0]
mov qword [0x1400caa70], rax
xor edx, edx
mov dword [rsp + 0x20], r14d
xor ecx, ecx
call qword [sym.imp.KERNEL32.dll_CreateThread]
xor r9d, r9d
lea rcx, [rsp + 0x38]
xor r8d, r8d
mov qword [0x1400caa40], rax
xor edx, edx
call qword [sym.imp.USER32.dll_GetMessageW]
test eax, eax
je 0x14002a763
mov rcx, qword [0x1400caa50]
lea rdx, [rsp + 0x38]
call qword [sym.imp.USER32.dll_IsDialogMessageW]
test eax, eax
jne 0x14002a74c
lea rcx, [rsp + 0x38]
call qword [sym.imp.USER32.dll_TranslateMessage]
lea rcx, [rsp + 0x38]
call qword [sym.imp.USER32.dll_DispatchMessageW]
xor r9d, r9d
lea rcx, [rsp + 0x38]
xor r8d, r8d
xor edx, edx
call qword [sym.imp.USER32.dll_GetMessageW]
test eax, eax
jne 0x14002a720
lea r8, str.OBSUpdaterRunningAsNonAdminUser
xor edx, edx
mov ecx, 0x100000
call qword [sym.imp.KERNEL32.dll_OpenMutexW]
mov rbx, qword [rsp + 0x48]
cmp rbx, 1
jne 0x14002a795
test rax, rax
jne 0x14002a795
mov rcx, rsi
call fcn.140017a70
mov ebx, dword [rsp + 0x48]
jmp 0x14002a7a8
lea rcx, [rax - 1]
cmp rcx, 0xfffffffffffffffd
ja 0x14002a7a8
mov rcx, rax
call qword [sym.imp.KERNEL32.dll_CloseHandle]
mov eax, ebx
mov rcx, qword [rbp + 0x2a0]
xor rcx, rsp
call fcn.1400890e0
lea r11, [rsp + 0x3b0]
mov rbx, qword [r11 + 0x28]
mov rsi, qword [r11 + 0x38]
mov rsp, r11
pop r14
pop rdi
pop rbp
ret