Function at 0x10003680
Capabilities:
Check mutex on windows
Check os version

Disassembly:
sub esp, 0xbc
push esi
push edi
mov ecx, 0x23
xor eax, eax
lea edi, [esp + 0x38]
mov dword [esp + 0x30], 0x94
mov dword [esp + 0x34], 0
mov dword [esp + 0xc], eax
rep stosd dword es:[edi], eax
mov ecx, 8
lea edi, [esp + 0x10]
rep stosd dword es:[edi], eax
mov eax, dword [0x1004cc7c]
test eax, eax
jne 0x100036c9
pop edi
or eax, 0xffffffff
pop esi
add esp, 0xbc
ret
mov ecx, dword [esp + 0xcc]
push str.D1A4DEBD_C2EE_449f_B9FB_E8409F9A0BC5:LOADING
push 0
push 0
mov dword [ecx], eax
call dword [sym.imp.KERNEL32.dll_CreateMutexA]
mov esi, eax
test esi, esi
jne 0x100036f3
pop edi
or eax, 0xffffffff
pop esi
add esp, 0xbc
ret
push 0x7530
push esi
call dword [sym.imp.KERNEL32.dll_WaitForSingleObject]
push 1
call fcn.1000c6f0
add esp, 4
test eax, eax
jne 0x10003716
pop edi
pop esi
add esp, 0xbc
ret
push esi
call dword [sym.imp.KERNEL32.dll_ReleaseMutex]
push esi
call dword [sym.imp.KERNEL32.dll_CloseHandle]
lea edx, [esp + 0xc]
push edx
call fcn.1000c7b0
mov edx, dword [esp + 0x10]
add esp, 4
xor ecx, ecx
mov eax, 0x10040334
cmp word [eax], dx
je 0x1000374c
add eax, 8
inc ecx
cmp eax, str.AMD64
jl 0x1000373c
cmp ecx, 3
jne 0x1000375c
pop edi
xor eax, eax
pop esi
add esp, 0xbc
ret
mov edi, dword [ecx*8 + 0x10040330]
or ecx, 0xffffffff
xor eax, eax
push 0x1004c1e0
repne scasb al, byte es:[edi]
not ecx
sub edi, ecx
mov eax, ecx
mov esi, edi
mov edi, 0x1004c2d0
shr ecx, 2
rep movsd dword es:[edi], dword [esi]
mov ecx, eax
and ecx, 3
rep movsb byte es:[edi], byte [esi]
call fcn.1001b370
push 0
push 0
push 0x1004c1e4
call fcn.1000e4f0
add esp, 0x10
lea ecx, [esp + 0x30]
push ecx
call dword [sym.imp.KERNEL32.dll_GetVersionExA]
call fcn.1000c760
mov ecx, dword [esp + 0x34]
test eax, eax
mov eax, dword [esp + 0x40]
jne 0x100037cd
cmp eax, 2
jne 0x100037c4
cmp ecx, 6
jae 0x100037cd
mov byte [0x1004c1d3], 0
jmp 0x100037d4
mov byte [0x1004c1d3], 1
cmp eax, 1
je 0x1000387c
cmp ecx, 4
je 0x1000387c
lea edx, [esp + 8]
push edx
call fcn.1001dbf0
add esp, 4
test eax, eax
jne 0x10003801
call dword [sym.imp.KERNEL32.dll_GetThreadLocale]
mov dword [esp + 8], eax
mov eax, dword [esp + 8]
push eax
call dword [esp + 0xd4]
mov ecx, dword [esp + 0xc8]
mov dword [0x1004c1dc], eax
mov dword [ecx], eax
mov edx, dword [0x1004c1dc]
push edx
call dword [sym.imp.KERNEL32.dll_SetThreadLocale]
push 0x1004038c
call dword [sym.imp.KERNEL32.dll_GetModuleHandleA]
mov edi, dword [0x1004c1b8]
push str.GetSystemDefaultUILanguage
push eax
call edi
call eax
mov word [0x1004c1da], ax
and eax, 0x3ff
push 0x100403b8
mov word [0x1004c1d6], ax
call dword [sym.imp.KERNEL32.dll_LoadLibraryA]
mov esi, eax
push str.TPI2K_MMC3_GetAvailableProfiles
push esi
call edi
push 0x1004c32c
call eax
add esp, 4
push esi
call dword [sym.imp.KERNEL32.dll_FreeLibrary]
jmp 0x100038a3
mov ax, word [0x1004c1d8]
mov cx, word [0x1004c1d4]
mov edx, dword [esp + 0xc8]
mov word [0x1004c1da], ax
mov word [0x1004c1d6], cx
mov dword [edx], 0
lea eax, [esp + 8]
push eax
push 0
call fcn.1001b7a0
mov eax, dword [esp + 0x10]
mov ecx, eax
and eax, 0xffffff
mov edx, eax
and eax, 0xffff
shr edx, 0x10
shr ecx, 0x18
push eax
push edx
push ecx
push str.pkgmgr
push str._s__X._02X._04X
push 0x1004c2dc
mov dword [esp + 0x28], eax
call dword [sym.imp.MSVCRT.dll_sprintf]
add esp, 0x20
mov eax, 1
pop edi
pop esi
add esp, 0xbc
ret