Function at 0x410a50
Capabilities:
Create thread
Get common file path
Get token membership
Hide graphical window
Set current directory

Disassembly:
push ebp
mov ebp, esp
sub esp, 0x360
mov eax, dword [0x499100]
xor eax, ebp
mov dword [ebp - 4], eax
push ebx
mov ebx, dword [ebp + 8]
lea eax, [ebp - 0x20c]
push esi
push edi
mov edi, dword [ebp + 0x10]
push eax
push 0x103
call dword [sym.imp.KERNEL32.dll_GetCurrentDirectoryW]
push str.Portable
push edi
call fcn.0046bf7c
add esp, 8
test eax, eax
jne 0x410aa9
push str.__portable
push edi
call fcn.0046bf7c
add esp, 8
mov byte [ebp - 0x338], 0
test eax, eax
je 0x410ab0
mov byte [ebp - 0x338], 1
push 0x100
lea eax, [ebp - 0x31c]
mov dword [ebp - 0x330], 0x11c
push 0
push eax
mov dword [ebp - 0x324], 0
mov dword [ebp - 0x320], 0
call fcn.0046cc10
mov esi, dword [sym.imp.KERNEL32.dll_VerSetConditionMask]
add esp, 0xc
xor eax, eax
mov word [ebp - 0x21a], ax
mov dword [ebp - 0x218], eax
push 3
push 0x20
push 3
push 1
push 3
push 2
push eax
push eax
call esi
push edx
push eax
call esi
push edx
push eax
call esi
push edx
push eax
push 0x23
lea eax, [ebp - 0x330]
mov dword [ebp - 0x32c], 0xa
xor ecx, ecx
mov dword [ebp - 0x328], 0
push eax
mov word [ebp - 0x21c], cx
call dword [sym.imp.KERNEL32.dll_VerifyVersionInfoW]
test eax, eax
jne 0x410b6b
push 0x30
push str.Unsupported_Operating_System
push 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
push eax
call dword [sym.imp.USER32.dll_MessageBoxW]
pop edi
pop esi
xor eax, eax
pop ebx
mov ecx, dword [ebp - 4]
xor ecx, ebp
call fcn.0046ae1f
mov esp, ebp
pop ebp
ret 0x10
lea eax, [ebp - 0x334]
mov dword [ebp - 0x214], 0
push eax
push 0
push 0
push 0
push 0
push 0
push 0
push 0x220
push 0x20
push 2
lea eax, [ebp - 0x214]
mov word [ebp - 0x210], 0x500
push eax
mov dword [ebp - 0x334], 0
mov dword [ebp - 0x33c], 0
call dword [sym.imp.ADVAPI32.dll_AllocateAndInitializeSid]
test eax, eax
je 0x410be5
mov eax, dword [ebp - 0x334]
test eax, eax
je 0x410be5
lea ecx, [ebp - 0x33c]
push ecx
push eax
push 0
call dword [sym.imp.ADVAPI32.dll_CheckTokenMembership]
push dword [ebp - 0x334]
call dword [sym.imp.ADVAPI32.dll_FreeSid]
cmp dword [ebp - 0x33c], 0
jne 0x410cdf
push str.OBSUpdaterRunningAsNonAdminUser
push 0
push 0x100000
call dword [sym.imp.KERNEL32.dll_OpenMutexW]
mov esi, eax
test esi, esi
je 0x410c48
push 0x30
push str.Updater_Error
push str.OBS_Studio_Updater_must_be_run_as_an_administrator.
push 0
call dword [sym.imp.USER32.dll_MessageBoxW]
mov edi, 2
cmp esi, 0xffffffff
je 0x410cca
push esi
call dword [sym.imp.KERNEL32.dll_CloseHandle]
mov eax, edi
pop edi
pop esi
pop ebx
mov ecx, dword [ebp - 4]
xor ecx, ebp
call fcn.0046ae1f
mov esp, ebp
pop ebp
ret 0x10
push str.OBSUpdaterRunningAsNonAdminUser
push 1
push 0
call dword [sym.imp.KERNEL32.dll_CreateMutexW]
mov esi, eax
lea eax, [ebp - 0x20c]
push eax
push edi
call fcn.004082f0
add esp, 8
cmp eax, 1
jne 0x410cb6
push str.....
push 0x208
lea eax, [ebp - 0x20c]
push eax
call fcn.00408e70
push 0
push 0x49b870
push 0x104
lea eax, [ebp - 0x20c]
push eax
call dword [sym.imp.KERNEL32.dll_GetFullPathNameW]
push 0x49b870
call dword [sym.imp.KERNEL32.dll_SetCurrentDirectoryW]
push dword [ebp - 0x338]
call fcn.00407d20
add esp, 4
test esi, esi
je 0x410cc8
push esi
call dword [sym.imp.KERNEL32.dll_ReleaseMutex]
push esi
call dword [sym.imp.KERNEL32.dll_CloseHandle]
xor edi, edi
mov eax, edi
pop edi
pop esi
pop ebx
mov ecx, dword [ebp - 4]
xor ecx, ebp
call fcn.0046ae1f
mov esp, ebp
pop ebp
ret 0x10
push str.....
push 0x208
lea eax, [ebp - 0x20c]
push eax
call fcn.00408e70
push 0
push 0x49b870
push 0x104
lea eax, [ebp - 0x20c]
push eax
call dword [sym.imp.KERNEL32.dll_GetFullPathNameW]
push 0x49b870
call dword [sym.imp.KERNEL32.dll_SetCurrentDirectoryW]
lea eax, [ebp - 0x344]
mov dword [0x49b5d4], ebx
push eax
mov dword [ebp - 0x344], 8
mov dword [ebp - 0x340], 0x20
call dword [sym.imp.COMCTL32.dll_InitCommonControlsEx]
push 0
push 0x40bc40
push 0
push 0x65
push ebx
call dword [sym.imp.USER32.dll_CreateDialogParamW]
mov dword [0x49b5d8], eax
test eax, eax
jne 0x410d71
pop edi
pop esi
or eax, 0xffffffff
pop ebx
mov ecx, dword [ebp - 4]
xor ecx, ebp
call fcn.0046ae1f
mov esp, ebp
pop ebp
ret 0x10
push 1
push eax
call dword [sym.imp.USER32.dll_ShowWindow]
push dword [0x49b5d8]
call dword [sym.imp.USER32.dll_SetForegroundWindow]
push 0
push 0
push 1
push 0
call dword [sym.imp.KERNEL32.dll_CreateEventW]
push 0
push 0
push edi
push 0x40c3d0
push 0
push 0
mov dword [0x49b5e8], eax
call dword [sym.imp.KERNEL32.dll_CreateThread]
mov esi, dword [sym.imp.USER32.dll_GetMessageW]
push 0
push 0
mov dword [0x49b5d0], eax
lea eax, [ebp - 0x360]
push 0
push eax
call esi
test eax, eax
je 0x410e1c
mov edi, dword [sym.imp.USER32.dll_TranslateMessage]
mov ebx, dword [sym.imp.USER32.dll_DispatchMessageW]
nop word [eax + eax]
lea eax, [ebp - 0x360]
push eax
push dword [0x49b5d8]
call dword [sym.imp.USER32.dll_IsDialogMessageW]
test eax, eax
jne 0x410e09
lea eax, [ebp - 0x360]
push eax
call edi
lea eax, [ebp - 0x360]
push eax
call ebx
push 0
push 0
push 0
lea eax, [ebp - 0x360]
push eax
call esi
test eax, eax
jne 0x410de0
push str.OBSUpdaterRunningAsNonAdminUser
push 0
push 0x100000
call dword [sym.imp.KERNEL32.dll_OpenMutexW]
mov esi, dword [ebp - 0x358]
cmp esi, 1
jne 0x410e53
test eax, eax
jne 0x410e57
push dword [ebp - 0x338]
call fcn.00407d20
mov esi, dword [ebp - 0x358]
add esp, 4
jmp 0x410e63
test eax, eax
je 0x410e63
cmp eax, 0xffffffff
je 0x410e63
push eax
call dword [sym.imp.KERNEL32.dll_CloseHandle]
mov ecx, dword [ebp - 4]
mov eax, esi
pop edi
pop esi
xor ecx, ebp
pop ebx
call fcn.0046ae1f
mov esp, ebp
pop ebp
ret 0x10