Function at 0x48f530
Capabilities:
Check mutex and terminate process on windows
Check mutex on windows
Terminate process

Disassembly:
sub esp, 0x464
push ebx
push ebp
push esi
push edi
push str.IGIMUTEX
xor ebx, ebx
push 1
push ebx
call dword [sym.imp.KERNEL32.dll_CreateMutexA]
cmp eax, ebx
mov dword [esp + 0x20], eax
mov dword [esp + 0x14], ebx
je 0x48f8f0
mov esi, dword [sym.imp.KERNEL32.dll_GetLastError]
call esi
cmp eax, 0xb7
je 0x48f8f0
call esi
cmp eax, 6
je 0x48f8f0
push ebx
call dword [sym.imp.ole32.dll_CoInitialize]
call dword [sym.imp.USER32.dll_GetForegroundWindow]
mov ebp, dword [esp + 0x478]
push 0x7f00
push ebp
mov dword [esp + 0x24], eax
mov dword [esp + 0x30], 3
mov dword [esp + 0x34], 0x48f970
mov dword [esp + 0x38], ebx
mov dword [esp + 0x3c], ebx
mov dword [esp + 0x40], ebp
call dword [sym.imp.USER32.dll_LoadIconA]
push 0x7f00
push ebx
mov dword [esp + 0x44], eax
call dword [sym.imp.USER32.dll_LoadCursorA]
mov dword [esp + 0x44], 7
mov dword [esp + 0x40], eax
mov eax, dword [str.Innerloop]
mov dword [esp + 0x48], eax
mov dword [esp + 0x4c], eax
lea eax, [esp + 0x28]
push eax
call dword [sym.imp.USER32.dll_RegisterClassA]
mov ecx, dword [esp + 0x480]
push ecx
call fcn.0048f0c0
push ebp
call fcn.0048f0d0
push str.filesys.cfg
call fcn.0048f0f0
push str.Innerloop
call fcn.0048f100
push 1
call fcn.0048f140
push 1
call fcn.0048f120
push ebx
call fcn.0048f1a0
push 1
call fcn.0048f1c0
push ebx
call fcn.0048f1e0
push 1
call fcn.0048f240
push 1
call fcn.0048f260
push ebx
call fcn.0048f280
push ebx
call fcn.0048f290
push ebx
call fcn.0048f2a0
push 1
call fcn.0048f210
push ebx
call fcn.0048f2b0
add esp, 0x40
push 0x567c74
call fcn.0048f300
push ebx
call fcn.0048f200
mov ecx, 0x30
xor eax, eax
mov edi, 0x5c8d28
push 0x48f350
rep stosd dword es:[edi], eax
push str.Window
mov dword [0x5c8df0], 0x5c8df4
mov dword [0x5c8df8], 0x5c8df0
mov dword [0x5c8df4], ebx
call fcn.0048f360
push 0x48f920
push str.WinInput
call fcn.0048f360
push 0x48f930
push str.Germany
call fcn.0048f360
push 0x48f950
push 0x5382c8
call fcn.0048f360
lea edx, [esp + 0x40]
lea eax, [esp + 0x38]
push edx
push eax
call fcn.00498480
mov eax, dword [esp + 0x40]
add esp, 0x30
cmp eax, 0x700
push ebx
jae 0x48f724
push 7
lea ecx, [esp + 0x7c]
push str.This_application_requires_DirectX_version__d._d_or_greater_to_run.
push ecx
call fcn.004a53b3
add esp, 0x10
lea edx, [esp + 0x74]
push 0x10
push str.Error
push edx
push ebx
call dword [sym.imp.USER32.dll_MessageBoxA]
push 1
call fcn.004a5ad5
mov esi, dword [sym.imp.USER32.dll_GetSystemMetrics]
push ebp
push ebx
push ebx
push 0x1e0
push 0x280
push 1
call esi
sub eax, 0x1e0
cdq
sub eax, edx
sar eax, 1
push eax
push ebx
call esi
sub eax, 0x280
cdq
sub eax, edx
sar eax, 1
push eax
call fcn.0048f130
neg eax
sbb eax, eax
and eax, 0x5e380000
add eax, 0x37c80000
push eax
mov eax, dword [str.Innerloop]
push eax
push eax
push ebx
call dword [sym.imp.USER32.dll_CreateWindowExA]
mov esi, eax
push ebx
cmp esi, ebx
mov dword [esp + 0x1c], esi
jne 0x48f790
push str.Innerloop
push str.Couldnt_open_window
jmp 0x48f8fc
call dword [sym.imp.USER32.dll_ShowCursor]
push 0xa
push esi
call dword [sym.imp.USER32.dll_ShowWindow]
push esi
call fcn.0048f0e0
call fcn.00498460
call entry0
push 0x48f960
push str.HardcoreGerman
mov byte [0x5c8de8], al
call fcn.0048f360
mov al, byte [0x5c8de8]
add esp, 0xc
test al, al
je 0x48f8a7
mov esi, dword [sym.imp.USER32.dll_PeekMessageA]
mov edi, dword [sym.imp.USER32.dll_TranslateMessage]
mov ebx, dword [sym.imp.USER32.dll_DispatchMessageA]
mov dword [esp + 0x10], 0xbfe00000
mov dword [esp + 0x24], 0xffffffff
fld dword [esp + 0x10]
fistp qword [esp + 0x50]
mov eax, dword [esp + 0x50]
mov ecx, dword [esp + 0x24]
cmp eax, ecx
jne 0x48f8e1
call fcn.00498460
call fcn.0048f170
test eax, eax
je 0x48f822
call fcn.00401050
jmp 0x48f82d
push 0x1f4
call dword [sym.imp.KERNEL32.dll_Sleep]
mov al, byte [0x5c8de8]
test al, al
jne 0x48f841
mov ecx, dword [esp + 0x18]
push ecx
call dword [sym.imp.USER32.dll_DestroyWindow]
push 0
push 0
push 0
lea edx, [esp + 0x64]
push 0
push edx
call esi
test eax, eax
je 0x48f88a
push 0
push 0
lea eax, [esp + 0x60]
push 0
push eax
call dword [sym.imp.USER32.dll_GetMessageA]
test eax, eax
je 0x48f898
lea ecx, [esp + 0x58]
push ecx
call edi
lea edx, [esp + 0x58]
push edx
call ebx
push 0
push 0
push 0
lea eax, [esp + 0x64]
push 0
push eax
call esi
test eax, eax
jne 0x48f854
mov al, byte [0x5c8de8]
test al, al
je 0x48f8a7
jmp 0x48f7e5
mov ecx, dword [esp + 0x60]
mov byte [0x5c8de8], 0
mov dword [esp + 0x14], ecx
mov edx, dword [esp + 0x1c]
push edx
call dword [sym.imp.USER32.dll_SetForegroundWindow]
mov eax, dword [str.Innerloop]
push ebp
push eax
call dword [sym.imp.USER32.dll_UnregisterClassA]
call dword [sym.imp.ole32.dll_CoUninitialize]
mov ecx, dword [esp + 0x20]
push ecx
call dword [sym.imp.KERNEL32.dll_ReleaseMutex]
mov eax, dword [esp + 0x14]
pop edi
pop esi
pop ebp
pop ebx
add esp, 0x464
ret 0x10
push str.Invalid_FPU_rounding_mode._May_be_caused_by_running_a_debug_session_with_ftol_optimize_turned_on.
call fcn.004af7b0
add esp, 4
jmp 0x48f8ee
push 0x10
push str.Error
push str.IGI_is_already_running.
push ebx
call dword [sym.imp.USER32.dll_MessageBoxA]
pop edi
pop esi
pop ebp
xor eax, eax
pop ebx
add esp, 0x464
ret 0x10