Function at 0x4578c0
Capabilities:
Check mutex on windows
Resolve function by parsing pe exports
Set current directory

Disassembly:
sub esp, 0x70
push esi
push 0x49b6f8
push 1
push 0
call dword [sym.imp.KERNEL32.dll_CreateMutexA]
mov esi, eax
mov dword [esp + 4], esi
call dword [sym.imp.KERNEL32.dll_GetLastError]
cmp eax, 0xb7
jne 0x45790b
push 0
push 0x4b49e8
push 0
push 0
call dword [sym.imp.USER32.dll_FindWindowExA]
test eax, eax
je 0x457902
push eax
call dword [sym.imp.USER32.dll_SetForegroundWindow]
xor eax, eax
pop esi
add esp, 0x70
ret 0x10
test esi, esi
jne 0x45794e
push esi
push 0x4b49e8
push esi
push esi
call dword [sym.imp.USER32.dll_FindWindowExA]
test eax, eax
je 0x457931
push eax
call dword [sym.imp.USER32.dll_SetForegroundWindow]
xor eax, eax
pop esi
add esp, 0x70
ret 0x10
push 0
push 0x4b49e8
push 0x49b6a8
push 0
call dword [sym.imp.USER32.dll_MessageBoxA]
xor eax, eax
pop esi
add esp, 0x70
ret 0x10
push ebx
push ebp
push edi
push 0x20
call dword [sym.imp.KERNEL32.dll_GetCurrentProcess]
push eax
call dword [sym.imp.KERNEL32.dll_SetPriorityClass]
mov ebp, dword [esp + 0x84]
push 0x104
mov dword [0x58cfbc], ebp
call fcn.004810fa
push 0x104
mov esi, eax
call fcn.004810fa
push 0x104
mov edi, eax
call fcn.004810fa
push 0x104
push 0
push 0x58cfc0
mov ebx, eax
call fcn.004819d0
add esp, 0x18
push 0x104
push esi
push 0
call dword [sym.imp.KERNEL32.dll_GetModuleFileNameA]
push 0
push 0
push 0
push 0
push 0x104
push ebx
push 0x104
push edi
push esi
call fcn.00482aa2
push ebx
push edi
push 0x49a440
push 0x58cfc0
call dword [sym.imp.USER32.dll_wsprintfA]
push esi
call fcn.0048117d
push edi
call fcn.0048117d
push ebx
call fcn.0048117d
add esp, 0x40
push 0x58cfc0
call dword [sym.imp.KERNEL32.dll_SetCurrentDirectoryA]
call fcn.004308c0
call fcn.00430790
push 0x49ac24
call fcn.00430460
push 0x49ac18
call fcn.00430460
push 0x49ac1c
call fcn.00430460
push 0x49ac14
call fcn.00430460
call fcn.00421810
push 0x58d0c8
call fcn.0046aea0
mov edi, dword [sym.imp.USER32.dll_MessageBoxA]
add esp, 0x14
test eax, eax
jne 0x457a5f
xor ebx, ebx
push ebx
push 0x49b6a0
push 0x49b678
push ebx
call edi
jmp 0x457a61
xor ebx, ebx
push ebx
call fcn.00456b40
add esp, 4
test eax, eax
jne 0x457a93
push ebx
push 0x58d0c8
push 0x49b638
push ebx
call edi
mov eax, dword [esp + 0x10]
push eax
call dword [sym.imp.KERNEL32.dll_CloseHandle]
pop edi
pop ebp
pop ebx
xor eax, eax
pop esi
add esp, 0x70
ret 0x10
call fcn.0046afc0
call fcn.00402360
test eax, eax
jne 0x457ac6
push ebx
push 0x49b6a0
push 0x49b60c
push ebx
call edi
mov ecx, dword [esp + 0x10]
push ecx
call dword [sym.imp.KERNEL32.dll_CloseHandle]
pop edi
pop ebp
pop ebx
xor eax, eax
pop esi
add esp, 0x70
ret 0x10
push 0x66
push ebp
mov dword [esp + 0x58], 0x30
mov dword [esp + 0x5c], 3
mov dword [esp + 0x60], 0x456db0
mov dword [esp + 0x64], ebx
mov dword [esp + 0x68], ebx
mov dword [esp + 0x6c], ebp
call dword [sym.imp.USER32.dll_LoadIconA]
push pe_nt_image_headers32
push ebx
push ebx
push 1
push 0x66
push ebp
mov dword [esp + 0x80], eax
call dword [sym.imp.USER32.dll_LoadImageA]
push 0x7f00
push ebx
mov dword [esp + 0x84], eax
call dword [sym.imp.USER32.dll_LoadCursorA]
push 4
mov dword [esp + 0x70], eax
call dword [sym.imp.GDI32.dll_GetStockObject]
lea edx, [esp + 0x50]
push edx
mov dword [esp + 0x74], eax
mov dword [esp + 0x78], ebx
mov dword [esp + 0x7c], 0x4b49e8
call dword [sym.imp.USER32.dll_RegisterClassExA]
push ebx
push ebx
push 0x90cb0000
lea eax, [esp + 0x20]
push eax
mov dword [esp + 0x24], ebx
mov dword [esp + 0x28], ebx
mov dword [esp + 0x2c], 0x400
mov dword [esp + 0x30], 0x300
call dword [sym.imp.USER32.dll_AdjustWindowRectEx]
lea ecx, [esp + 0x24]
push ecx
call dword [sym.imp.USER32.dll_GetDesktopWindow]
push eax
call dword [sym.imp.USER32.dll_GetWindowRect]
mov eax, dword [0x6cdddc]
test eax, eax
movzx ecx, word [0x6cddde]
jns 0x457b95
or ecx, 0xffff0000
test eax, 0x8000
je 0x457ba3
or eax, 0xffff0000
jmp 0x457ba8
and eax, 0xffff
cmp ecx, ebx
mov esi, dword [esp + 0x30]
mov edx, dword [esp + 0x2c]
jl 0x457bc0
cmp eax, ebx
jl 0x457bc0
cmp ecx, edx
jge 0x457bc0
cmp eax, esi
jl 0x457c00
lea eax, [edx - 0x400]
cdq
sub eax, edx
mov ecx, eax
lea edx, [esi + esi - 0x600]
mov eax, 0x66666667
imul edx
sar edx, 1
mov eax, edx
shr eax, 0x1f
sar ecx, 1
add eax, edx
cmp ecx, ebx
jge 0x457bea
xor ecx, ecx
cmp eax, ebx
jge 0x457bf0
xor eax, eax
mov edx, ecx
movzx esi, ax
shl edx, 0x10
or edx, esi
mov dword [0x6cdddc], edx
mov edx, dword [esp + 0x20]
sub edx, dword [esp + 0x18]
push ebx
push ebp
push ebx
push ebx
push edx
mov edx, dword [esp + 0x30]
sub edx, dword [esp + 0x28]
push edx
push eax
push ecx
push 0x90cb0000
push 0x58d0c8
push 0x4b49e8
push ebx
call dword [sym.imp.USER32.dll_CreateWindowExA]
mov esi, eax
cmp esi, ebx
jne 0x457c60
push ebx
push 0x4b49e8
push 0x49b5f4
push ebx
call edi
push ebx
call dword [sym.imp.USER32.dll_DestroyWindow]
mov eax, dword [esp + 0x10]
push eax
call dword [sym.imp.KERNEL32.dll_CloseHandle]
pop edi
pop ebp
pop ebx
xor eax, eax
pop esi
add esp, 0x70
ret 0x10
mov ecx, dword [esp + 0x90]
push ecx
push esi
call dword [sym.imp.USER32.dll_ShowWindow]
push esi
call dword [sym.imp.USER32.dll_UpdateWindow]
push esi
call dword [sym.imp.USER32.dll_SetFocus]
mov edi, dword [sym.imp.USER32.dll_GetMessageA]
push ebx
push ebx
push ebx
push ebx
lea edx, [esp + 0x44]
push edx
call dword [sym.imp.USER32.dll_PeekMessageA]
test eax, eax
je 0x457ce3
push ebx
push ebx
push ebx
lea eax, [esp + 0x40]
push eax
call edi
cmp eax, ebx
je 0x457d92
cmp eax, 0xffffffff
je 0x457d92
cmp dword [esp + 0x38], 0x101
jne 0x457ccb
cmp dword [esp + 0x3c], 0x1b
jne 0x457ccb
call fcn.0045a8a0
test eax, eax
jne 0x457c83
lea ecx, [esp + 0x34]
push ecx
call dword [sym.imp.USER32.dll_TranslateMessage]
lea edx, [esp + 0x34]
push edx
call dword [sym.imp.USER32.dll_DispatchMessageA]
jmp 0x457c83
push esi
call fcn.00405340
add esp, 4
test eax, eax
jne 0x457d85
call fcn.004048f0
call fcn.004049f0
call fcn.00404bf0
call fcn.00475260
push eax
call fcn.004751e0
push eax
call fcn.00417ae0
add esp, 8
cmp eax, 1
je 0x457d45
cmp eax, 2
je 0x457d2f
cmp eax, 0xffffffff
jne 0x457d65
push esi
call dword [sym.imp.USER32.dll_DestroyWindow]
jmp 0x457d65
push esi
call fcn.00431b10
call fcn.00475200
push eax
call fcn.00404de0
add esp, 8
jmp 0x457d60
call fcn.00475200
push eax
call fcn.00404de0
add esp, 4
test eax, eax
je 0x457d60
push esi
call fcn.00431b10
add esp, 4
call fcn.00475270
push esi
call dword [sym.imp.USER32.dll_UpdateWindow]
call fcn.00418450
test al, al
je 0x457c83
push esi
call dword [sym.imp.USER32.dll_DestroyWindow]
jmp 0x457c83
push 0x11
call dword [sym.imp.KERNEL32.dll_Sleep]
jmp 0x457c83
push 0x58d0c8
call fcn.0046afb0
add esp, 4
push ebp
push 0x4b49e8
call dword [sym.imp.USER32.dll_UnregisterClassA]
mov eax, dword [esp + 0x7c]
push eax
call dword [sym.imp.USER32.dll_DestroyIcon]
mov ecx, dword [esp + 0x10]
push ecx
call dword [sym.imp.KERNEL32.dll_CloseHandle]
call fcn.0042e040
mov eax, dword [esp + 0x3c]
pop edi
pop ebp
pop ebx
pop esi
add esp, 0x70
ret 0x10