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

Disassembly:
sub esp, 0x70
push esi
push str.GlobalPJADVSYS
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 0x4579db
push 0
push str.PJADV
push 0
push 0
call dword [sym.imp.USER32.dll_FindWindowExA]
test eax, eax
je 0x4579d2
push eax
call dword [sym.imp.USER32.dll_SetForegroundWindow]
xor eax, eax
pop esi
add esp, 0x70
ret 0x10
test esi, esi
jne 0x457a1e
push esi
push str.PJADV
push esi
push esi
call dword [sym.imp.USER32.dll_FindWindowExA]
test eax, eax
je 0x457a01
push eax
call dword [sym.imp.USER32.dll_SetForegroundWindow]
xor eax, eax
pop esi
add esp, 0x70
ret 0x10
push 0
push str.PJADV
push 0x49b6b8
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.004811ca
push 0x104
mov esi, eax
call fcn.004811ca
push 0x104
mov edi, eax
call fcn.004811ca
push 0x104
push 0
push 0x58cfc0
mov ebx, eax
call fcn.00481aa0
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.00482b72
push ebx
push edi
push 0x49a440
push 0x58cfc0
call dword [sym.imp.USER32.dll_wsprintfA]
push esi
call fcn.0048124d
push edi
call fcn.0048124d
push ebx
call fcn.0048124d
add esp, 0x40
push 0x58cfc0
call dword [sym.imp.KERNEL32.dll_SetCurrentDirectoryA]
call fcn.004308f0
call fcn.004307c0
push str.graph
call fcn.00430490
push 0x49ac28
call fcn.00430490
push str.voice
call fcn.00430490
push 0x49ac24
call fcn.00430490
call fcn.00421840
push 0x58d0c8
call fcn.0046af70
mov edi, dword [sym.imp.USER32.dll_MessageBoxA]
add esp, 0x14
test eax, eax
jne 0x457b2f
xor ebx, ebx
push ebx
push 0x49b6b0
push 0x49b688
push ebx
call edi
jmp 0x457b31
xor ebx, ebx
push ebx
call fcn.00456c10
add esp, 4
test eax, eax
jne 0x457b63
push ebx
push 0x58d0c8
push 0x49b648
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.0046b090
call fcn.00402360
test eax, eax
jne 0x457b96
push ebx
push 0x49b6b0
push 0x49b61c
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], 0x456e80
mov dword [esp + 0x64], ebx
mov dword [esp + 0x68], ebx
mov dword [esp + 0x6c], ebp
call dword [sym.imp.USER32.dll_LoadIconA]
push 0x40
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], str.PJADV
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 0x457c65
or ecx, 0xffff0000
test eax, 0x8000
je 0x457c73
or eax, 0xffff0000
jmp 0x457c78
and eax, 0xffff
cmp ecx, ebx
mov esi, dword [esp + 0x30]
mov edx, dword [esp + 0x2c]
jl 0x457c90
cmp eax, ebx
jl 0x457c90
cmp ecx, edx
jge 0x457c90
cmp eax, esi
jl 0x457cd0
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 0x457cba
xor ecx, ecx
cmp eax, ebx
jge 0x457cc0
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 str.PJADV
push ebx
call dword [sym.imp.USER32.dll_CreateWindowExA]
mov esi, eax
cmp esi, ebx
jne 0x457d30
push ebx
push str.PJADV
push 0x49b604
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 0x457db3
push ebx
push ebx
push ebx
lea eax, [esp + 0x40]
push eax
call edi
cmp eax, ebx
je 0x457e62
cmp eax, 0xffffffff
je 0x457e62
cmp dword [esp + 0x38], 0x101
jne 0x457d9b
cmp dword [esp + 0x3c], 0x1b
jne 0x457d9b
call fcn.0045a970
test eax, eax
jne 0x457d53
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 0x457d53
push esi
call fcn.00405340
add esp, 4
test eax, eax
jne 0x457e55
call fcn.004048f0
call fcn.004049f0
call fcn.00404bf0
call fcn.00475330
push eax
call fcn.004752b0
push eax
call fcn.00417ae0
add esp, 8
cmp eax, 1
je 0x457e15
cmp eax, 2
je 0x457dff
cmp eax, 0xffffffff
jne 0x457e35
push esi
call dword [sym.imp.USER32.dll_DestroyWindow]
jmp 0x457e35
push esi
call fcn.00431b40
call fcn.004752d0
push eax
call fcn.00404de0
add esp, 8
jmp 0x457e30
call fcn.004752d0
push eax
call fcn.00404de0
add esp, 4
test eax, eax
je 0x457e30
push esi
call fcn.00431b40
add esp, 4
call fcn.00475340
push esi
call dword [sym.imp.USER32.dll_UpdateWindow]
call fcn.00418450
test al, al
je 0x457d53
push esi
call dword [sym.imp.USER32.dll_DestroyWindow]
jmp 0x457d53
push 0x11
call dword [sym.imp.KERNEL32.dll_Sleep]
jmp 0x457d53
push 0x58d0c8
call fcn.0046b080
add esp, 4
push ebp
push str.PJADV
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.0042e070
mov eax, dword [esp + 0x3c]
pop edi
pop ebp
pop ebx
pop esi
add esp, 0x70
ret 0x10