Function at 0x403bec
Capabilities:
Check mutex on windows
Set current directory

Disassembly:
push ebp
mov ebp, esp
sub esp, 3
and esp, 0xfffffff8
add esp, 4
push edi
push esi
call fcn.004655e0
xor eax, eax
push 0x807d1c
push eax
push eax
call dword [sym.imp.KERNEL32.dll_CreateMutexA]
mov dword [0x801b3c], eax
test eax, eax
je 0x403ecf
call dword [sym.imp.KERNEL32.dll_GetLastError]
cmp eax, 0xb7
jne 0x403c3b
push dword [0x801b3c]
call dword [sym.imp.KERNEL32.dll_CloseHandle]
mov eax, 1
jmp 0x403c3d
xor eax, eax
test eax, eax
je 0x403c4b
xor eax, eax
pop ecx
pop edi
mov esp, ebp
pop ebp
ret 0x10
call fcn.0041af4c
xor eax, eax
push 0x67f720
push eax
push eax
call dword [sym.imp.KERNEL32.dll_CreateMutexA]
mov dword [0x801b40], eax
test eax, eax
je 0x403ec5
call dword [sym.imp.KERNEL32.dll_GetLastError]
cmp eax, 0xb7
jne 0x403c8c
push dword [0x801b40]
call dword [sym.imp.KERNEL32.dll_CloseHandle]
mov eax, 1
jmp 0x403c8e
xor eax, eax
test eax, eax
je 0x403cab
mov eax, 0x67f720
call fcn.0041b130
call fcn.0041b4e0
xor eax, eax
pop ecx
pop edi
mov esp, ebp
pop ebp
ret 0x10
mov eax, dword [0x801b3c]
test eax, eax
je 0x403cc7
push eax
call dword [sym.imp.KERNEL32.dll_ReleaseMutex]
push dword [0x801b3c]
call dword [sym.imp.KERNEL32.dll_CloseHandle]
mov eax, dword [ebp + 8]
mov dword [0x801550], eax
mov edx, dword [ebp + 0x14]
mov dword [0x801554], edx
push 0x67f960
call dword [sym.imp.KERNEL32.dll_SetCurrentDirectoryA]
call fcn.0041b188
movsx eax, al
test eax, eax
jl 0x403eb6
movsx eax, byte [0x801520]
test eax, eax
je 0x403d19
call fcn.0041b370
movsx eax, al
test eax, eax
je 0x403d19
call fcn.0041b4e0
xor eax, eax
pop ecx
pop edi
mov esp, ebp
pop ebp
ret 0x10
push 0x801900
call dword [sym.imp.KERNEL32.dll_InitializeCriticalSection]
xor eax, eax
push eax
push eax
call dword [sym.imp.ole32.dll_CoInitializeEx]
test eax, eax
jl 0x403eaf
mov edi, 1
call fcn.00460180
movsx eax, al
test eax, eax
jne 0x403e55
xor eax, eax
push eax
push eax
push eax
push eax
push 0x801b20
call dword [sym.imp.USER32.dll_PeekMessageA]
test eax, eax
je 0x403da3
xor eax, eax
push eax
push eax
push eax
push 0x801b20
call dword [sym.imp.USER32.dll_GetMessageA]
test eax, eax
je 0x403ea1
push 0x801b20
call dword [sym.imp.USER32.dll_TranslateMessage]
push 0x801b20
call dword [sym.imp.USER32.dll_DispatchMessageA]
xor eax, eax
push eax
push eax
push eax
push eax
push 0x801b20
call dword [sym.imp.USER32.dll_PeekMessageA]
test eax, eax
jne 0x403d60
movsx eax, byte [0x5b3740]
test eax, eax
je 0x403e55
movsx eax, byte [0x8017fc]
test eax, eax
je 0x403dc7
push 1
call dword [sym.imp.KERNEL32.dll_Sleep]
jmp 0x403df2
call fcn.00403edc
movsx eax, byte [0x8015b0]
test eax, eax
je 0x403de1
push 1
call dword [sym.imp.KERNEL32.dll_Sleep]
jmp 0x403df2
call fcn.004040f4
movsx eax, al
test eax, eax
je 0x403df2
call fcn.0041af28
xor eax, eax
push eax
push eax
push eax
push eax
push 0x801b20
call dword [sym.imp.USER32.dll_PeekMessageA]
test eax, eax
je 0x403e46
xor eax, eax
push eax
push eax
push eax
push 0x801b20
call dword [sym.imp.USER32.dll_GetMessageA]
test eax, eax
je 0x403e96
push 0x801b20
call dword [sym.imp.USER32.dll_TranslateMessage]
push 0x801b20
call dword [sym.imp.USER32.dll_DispatchMessageA]
xor eax, eax
push eax
push eax
push eax
push eax
push 0x801b20
call dword [sym.imp.USER32.dll_PeekMessageA]
test eax, eax
jne 0x403e07
movsx eax, byte [0x5b3740]
test eax, eax
jne 0x403db2
call fcn.0041b5f8
test edi, edi
je 0x403e64
call dword [sym.imp.ole32.dll_CoUninitialize]
push 0x801900
call dword [sym.imp.KERNEL32.dll_DeleteCriticalSection]
call fcn.0041b4e0
movsx eax, byte [0x8014e0]
test eax, eax
je 0x403e89
mov eax, 0x67f600
call fcn.0041ccbc
mov eax, dword [0x801b28]
pop ecx
pop edi
mov esp, ebp
pop ebp
ret 0x10
mov byte [0x5b3740], 0
xor eax, eax
jmp 0x403e4d
mov byte [0x5b3740], 0
xor eax, eax
jmp 0x403daa
xor edi, edi
jmp 0x403d3b
call fcn.0041b4e0
xor eax, eax
pop ecx
pop edi
mov esp, ebp
pop ebp
ret 0x10
mov eax, 0xffffffff
jmp 0x403c8e
mov eax, 0xffffffff
jmp 0x403c3d