Function at 0x401bd0
Capabilities:
Check mutex on windows
Create process on windows
Get common file path
Hide graphical window
Inspect load icon resource
Resolve function by parsing pe exports

Disassembly:
push ebp
mov ebp, esp
and esp, 0xfffffff8
sub esp, 0x37c
mov eax, dword [0x416024]
xor eax, esp
mov dword [esp + 0x378], eax
push ebx
push esi
push edi
mov edi, dword [ebp + 8]
push str.TizPowerAppMutex
push 1
push 0
call dword [sym.imp.KERNEL32.dll_CreateMutexA]
test eax, eax
je 0x401f8f
call dword [sym.imp.KERNEL32.dll_GetLastError]
cmp eax, 0xb7
je 0x401f8f
lea eax, [esp + 0x278]
push eax
push 0x104
call dword [sym.imp.KERNEL32.dll_GetCurrentDirectoryA]
lea eax, [esp + 0x278]
push eax
lea ecx, [esp + 0x264]
call fcn.00402150
mov edx, dword [esp + 0x274]
mov eax, edx
mov ecx, dword [esp + 0x270]
sub eax, ecx
cmp eax, 1
jb 0x401c7a
lea eax, [ecx + 1]
cmp edx, 0x10
mov dword [esp + 0x270], eax
lea eax, [esp + 0x260]
cmovae eax, dword [esp + 0x260]
mov word [eax + ecx], 0x5c
jmp 0x401c98
push 1
push 0x413c64
mov byte [esp + 0x18], 0
lea ecx, [esp + 0x268]
push dword [esp + 0x18]
push 1
call fcn.00402250
mov edx, dword [esp + 0x274]
mov eax, edx
mov ecx, dword [esp + 0x270]
sub eax, ecx
push 0xf
push str.PowerManage.exe
cmp eax, 0xf
jb 0x401ce3
cmp edx, 0x10
lea esi, [esp + 0x268]
lea eax, [ecx + 0xf]
cmovae esi, dword [esp + 0x268]
add esi, ecx
mov dword [esp + 0x278], eax
push esi
call fcn.004050d0
add esp, 0xc
mov byte [esi + 0xf], 0
jmp 0x401cfa
mov byte [esp + 0x18], 0
lea ecx, [esp + 0x268]
push dword [esp + 0x18]
push 0xf
call fcn.00402250
cmp dword [esp + 0x274], 0x10
lea eax, [esp + 0x260]
push 0
cmovae eax, dword [esp + 0x264]
push 0
push 0
push eax
push str.open
push 0
call dword [sym.imp.SHELL32.dll_ShellExecuteA]
sub esp, 0x18
mov ecx, esp
push str.PT1M
call fcn.00402150
call fcn.00401120
add esp, 0x18
push SysStringLen
call dword [sym.imp.KERNEL32.dll_SetThreadExecutionState]
mov ecx, dword [0x416890]
xor edx, edx
mov esi, dword [sym.imp.USER32.dll_LoadStringW]
test eax, eax
push 0x64
push 0x417580
push 0x67
cmovne ecx, edx
push edi
mov dword [0x416890], ecx
call esi
push 0x64
push 0x4174b8
push 0x6d
push edi
call esi
mov ebx, dword [sym.imp.USER32.dll_LoadIconW]
push 0x6b
push edi
mov dword [esp + 0x1c], 0x30
mov dword [esp + 0x20], 3
mov dword [esp + 0x24], 0x401fc0
mov dword [esp + 0x28], 0
mov dword [esp + 0x2c], 0
mov dword [esp + 0x30], edi
call ebx
push 0x7f00
push 0
mov dword [esp + 0x34], eax
call dword [sym.imp.USER32.dll_LoadCursorW]
push 0x6c
push dword [esp + 0x2c]
mov dword [esp + 0x38], eax
mov dword [esp + 0x3c], 6
mov dword [esp + 0x40], 0x6d
mov dword [esp + 0x44], 0x4174b8
call ebx
mov dword [esp + 0x40], eax
lea eax, [esp + 0x14]
push eax
call dword [sym.imp.USER32.dll_RegisterClassExW]
push 0
push edi
push 0
push 0
push 0
push SysReAllocString
push 0
push SysReAllocString
push 0xcf0000
push 0x417580
push 0x4174b8
push 0
mov dword [0x4174b0], edi
call dword [sym.imp.USER32.dll_CreateWindowExW]
mov esi, eax
test esi, esi
je 0x401f3c
push 0
push esi
call dword [sym.imp.USER32.dll_ShowWindow]
push esi
call dword [sym.imp.USER32.dll_UpdateWindow]
push 0x1e4
lea eax, [esp + 0x7c]
push 0
push eax
call fcn.00403bd0
mov eax, dword [0x416890]
add esp, 0xc
neg eax
mov dword [esp + 0x60], 0x3bc
mov dword [esp + 0x64], esi
sbb eax, eax
mov dword [esp + 0x68], 0x3e9
add eax, 0x82
mov dword [esp + 0x6c], 7
push eax
push dword [0x4174b0]
mov dword [esp + 0x78], 0x401
call ebx
cmp dword [0x416890], 0
mov ecx, str.Sleep_Disabled
mov dword [esp + 0x74], eax
mov eax, str.Sleep_Enabled
cmove eax, ecx
push eax
lea eax, [esp + 0x7c]
push 0x80
push eax
call fcn.00405d04
add esp, 0xc
lea eax, [esp + 0x60]
push eax
push 0
call dword [sym.imp.SHELL32.dll_Shell_NotifyIconA]
push 0x6d
push edi
call dword [sym.imp.USER32.dll_LoadAcceleratorsW]
push 0
push 0
mov dword [esp + 0x18], eax
lea eax, [esp + 0x4c]
push 0
push eax
call dword [sym.imp.USER32.dll_GetMessageW]
test eax, eax
je 0x401f36
mov ebx, dword [sym.imp.USER32.dll_TranslateAcceleratorW]
mov esi, dword [sym.imp.USER32.dll_TranslateMessage]
mov edi, dword [sym.imp.USER32.dll_DispatchMessageW]
nop word [eax + eax]
lea eax, [esp + 0x44]
push eax
push dword [esp + 0x14]
push dword [esp + 0x4c]
call ebx
test eax, eax
jne 0x401f21
lea eax, [esp + 0x44]
push eax
call esi
lea eax, [esp + 0x44]
push eax
call edi
push 0
push 0
push 0
lea eax, [esp + 0x50]
push eax
call dword [sym.imp.USER32.dll_GetMessageW]
test eax, eax
jne 0x401f00
mov esi, dword [esp + 0x4c]
jmp 0x401f3e
xor esi, esi
mov edx, dword [esp + 0x274]
cmp edx, 0x10
jb 0x401f76
mov ecx, dword [esp + 0x260]
inc edx
mov eax, ecx
cmp edx, 0x1000
jb 0x401f6c
mov ecx, dword [ecx - 4]
add edx, 0x23
sub eax, ecx
add eax, 0xfffffffc
cmp eax, 0x1f
ja 0x401fab
push edx
push ecx
call fcn.0040283b
add esp, 8
mov eax, esi
pop edi
pop esi
pop ebx
mov ecx, dword [esp + 0x378]
xor ecx, esp
call fcn.004027f5
mov esp, ebp
pop ebp
ret 0x10
mov ecx, dword [esp + 0x384]
mov eax, 1
pop edi
pop esi
pop ebx
xor ecx, esp
call fcn.004027f5
mov esp, ebp
pop ebp
ret 0x10
call fcn.00405f1c
int3