Function at 0x48bda0
Capabilities:
Check for time delay via queryperformancecounter
Check mutex and terminate process on windows
Check mutex on windows
Terminate process

Disassembly:
push ebp
mov ebp, esp
sub esp, 0x248
mov eax, dword [ebp + 8]
push ebx
mov dword [0x4f8e10], eax
mov al, byte [0x4cd1a4]
push esi
push edi
test al, al
jne 0x48be0d
mov ecx, dword [str.Jazz_Jackrabbit_2]
lea edx, [ebp - 0x14c]
push ecx
push str.Lock__s
push edx
call fcn.004b77e0
add esp, 0xc
lea eax, [ebp - 0x14c]
push eax
push 0x20
push 0
push 2
push 0
push 0xffffffffffffffff
call dword [sym.imp.KERNEL32.dll_CreateFileMappingA]
test eax, eax
mov dword [0x4f8e5c], eax
je 0x48be0d
call dword [sym.imp.KERNEL32.dll_GetLastError]
cmp eax, 0xb7
jne 0x48be0d
push 1
call dword [sym.imp.KERNEL32.dll_ExitProcess]
call fcn.0049eb00
mov edi, dword [str.jazz2.log]
or ecx, 0xffffffff
xor eax, eax
repne scasb al, byte es:[edi]
not ecx
sub edi, ecx
mov edx, ecx
mov esi, edi
mov edi, 0x4f8020
shr ecx, 2
rep movsd dword es:[edi], dword [esi]
mov ecx, edx
and ecx, 3
rep movsb byte es:[edi], byte [esi]
call dword [sym.imp.KERNEL32.dll_GetCurrentThreadId]
mov esi, dword [sym.imp.KERNEL32.dll_GetCurrentProcess]
push 2
push 0
push 0
push 0x6087b4
mov dword [0x6087ac], eax
call esi
push eax
call dword [sym.imp.KERNEL32.dll_GetCurrentThread]
push eax
call esi
push eax
call dword [sym.imp.KERNEL32.dll_DuplicateHandle]
call fcn.00498680
push 0x4f8900
call dword [sym.imp.KERNEL32.dll_QueryPerformanceFrequency]
mov ecx, dword [0x4f8900]
cmp ecx, 0x3e8
jb 0x48be92
mov eax, dword [0x4f8904]
test eax, eax
jne 0x48be92
mov bl, 1
jmp 0x48be94
xor bl, bl
test bl, bl
mov byte [0x4f88fc], bl
je 0x48beca
mov eax, 0x10624dd3
mul ecx
shr edx, 6
test bl, bl
mov dword [0x4f8124], edx
je 0x48beca
mov eax, 0xd41d41d5
mul ecx
sub ecx, edx
shr ecx, 1
add ecx, edx
shr ecx, 6
mov dword [0x4f8ccc], ecx
test bl, bl
mov esi, dword [sym.imp.WINMM.dll_timeGetTime]
mov edi, dword [sym.imp.KERNEL32.dll_QueryPerformanceCounter]
je 0x48bef2
lea eax, [ebp - 8]
push eax
call edi
mov edx, dword [ebp - 4]
mov eax, dword [ebp - 8]
div dword [0x4f8124]
mov dword [ebp - 8], eax
mov eax, dword [ebp - 8]
jmp 0x48bef4
call esi
mov dword [0x4f8c80], eax
mov al, byte [0x4f88fc]
test al, al
je 0x48bf1c
lea ecx, [ebp - 8]
push ecx
call edi
mov edx, dword [ebp - 4]
mov eax, dword [ebp - 8]
div dword [0x4f8ccc]
mov dword [ebp - 8], eax
mov ecx, dword [ebp - 8]
jmp 0x48bf30
call esi
mov ecx, eax
mov eax, 0x24924925
mul ecx
sub ecx, edx
shr ecx, 1
add ecx, edx
shr ecx, 3
mov ebx, dword [ebp + 0x10]
mov dword [0x4f86f0], ecx
mov edi, ebx
or ecx, 0xffffffff
xor eax, eax
repne scasb al, byte es:[edi]
not ecx
inc ecx
push ecx
call fcn.0048bc10
mov edx, eax
mov edi, ebx
or ecx, 0xffffffff
xor eax, eax
add esp, 4
mov dword [0x6087a8], edx
repne scasb al, byte es:[edi]
not ecx
sub edi, ecx
mov eax, ecx
mov esi, edi
mov edi, edx
lea edx, [ebp - 0x248]
shr ecx, 2
rep movsd dword es:[edi], dword [esi]
mov ecx, eax
xor eax, eax
and ecx, 3
rep movsb byte es:[edi], byte [esi]
mov edi, ebx
or ecx, 0xffffffff
repne scasb al, byte es:[edi]
not ecx
sub edi, ecx
mov eax, ecx
mov esi, edi
mov edi, edx
shr ecx, 2
rep movsd dword es:[edi], dword [esi]
mov ecx, eax
and ecx, 3
rep movsb byte es:[edi], byte [esi]
lea ecx, [ebp - 0x248]
push ecx
call fcn.004b9560
add esp, 4
lea edx, [ebp - 0x248]
push str._log
push edx
call fcn.004b80b0
add esp, 8
test eax, eax
je 0x48c05e
lea eax, [ebp - 0x248]
push str._log
push eax
mov esi, 5
call fcn.004b80b0
mov edx, dword [0x6087a8]
mov ebx, eax
lea ecx, [ebp - 0x248]
add esp, 8
sub ebx, ecx
mov ecx, 0x4f8025
add edx, ebx
mov al, byte [esi + edx]
inc esi
mov byte [ecx - 5], al
inc ecx
test al, al
je 0x48c005
cmp al, 0x20
jne 0x48bff5
lea edi, [ebp - 0x248]
or ecx, 0xffffffff
xor eax, eax
mov byte [esi + 0x4f801a], 0
repne scasb al, byte es:[edi]
not ecx
dec ecx
lea eax, [ebp + esi - 0x248]
sub ecx, ebx
add eax, ebx
push ecx
lea ecx, [ebp + ebx - 0x248]
push eax
push ecx
call fcn.004b7960
mov edx, dword [0x6087a8]
or ecx, 0xffffffff
mov edi, edx
xor eax, eax
add esp, 0xc
add esi, ebx
repne scasb al, byte es:[edi]
not ecx
dec ecx
add esi, edx
sub ecx, ebx
add ebx, edx
push ecx
push esi
push ebx
call fcn.004b7960
add esp, 0xc
push 1
lea edx, [ebp - 0x248]
push str._safe
push edx
call fcn.004926d0
add esp, 0xc
test al, al
je 0x48c07f
mov byte [0x4f8e78], 1
push 1
lea eax, [ebp - 0x248]
push str._windowed
push eax
call fcn.004926d0
add esp, 0xc
test al, al
je 0x48c0a0
mov byte [0x4f9afc], 1
push 1
lea ecx, [ebp - 0x248]
push str._fullscreen
push ecx
call fcn.004926d0
add esp, 0xc
test al, al
je 0x48c0c1
mov byte [0x4f9afc], 2
push 1
lea edx, [ebp - 0x248]
push 0x4d4304
push edx
call fcn.004926d0
add esp, 0xc
test al, al
je 0x48c0e2
mov byte [0x4cd184], 1
push 1
lea eax, [ebp - 0x248]
push str._nolog
push eax
call fcn.004926d0
add esp, 0xc
test al, al
je 0x48c103
mov byte [0x4cd184], 0
push 1
lea ecx, [ebp - 0x248]
push str._safelog
push ecx
call fcn.004926d0
add esp, 0xc
test al, al
je 0x48c124
mov byte [0x4f8e64], 1
push 1
lea edx, [ebp - 0x248]
push str._spy
push edx
call fcn.004926d0
add esp, 0xc
test al, al
je 0x48c148
mov dword [0x4d3e04], 1
push 1
lea eax, [ebp - 0x248]
push str._nospy
push eax
call fcn.004926d0
add esp, 0xc
test al, al
je 0x48c16c
xor ebx, ebx
mov dword [0x4d3e04], ebx
jmp 0x48c16e
xor ebx, ebx
push 1
lea ecx, [ebp - 0x248]
push str._nosound
push ecx
call fcn.004926d0
add esp, 0xc
test al, al
je 0x48c18f
mov byte [0x4d6000], 0
push 1
lea edx, [ebp - 0x248]
push str._nodsound
push edx
call fcn.004926d0
add esp, 0xc
test al, al
je 0x48c1af
mov dword [0x4d3e38], ebx
push 1
lea eax, [ebp - 0x248]
push str._nonetwork
push eax
call fcn.004926d0
add esp, 0xc
test al, al
je 0x48c1d0
mov byte [0x4d3e08], 0
push 1
lea ecx, [ebp - 0x248]
push str._noddrawwin
push ecx
call fcn.004926d0
add esp, 0xc
test al, al
je 0x48c1f0
mov dword [0x4d4be4], ebx
push 1
lea edx, [ebp - 0x248]
push str._noddraw
push edx
call fcn.004926d0
add esp, 0xc
test al, al
je 0x48c210
mov dword [0x4d4bec], ebx
push 1
lea eax, [ebp - 0x248]
push str._noddrawmemcheck
push eax
call fcn.004926d0
add esp, 0xc
test al, al
je 0x48c231
mov byte [0x4d4bf4], 0
push 1
lea ecx, [ebp - 0x248]
push str._noreg
push ecx
call fcn.004926d0
add esp, 0xc
test al, al
je 0x48c252
mov byte [0x4d3e1c], 0
push 1
lea edx, [ebp - 0x248]
push str._nojoy
push edx
call fcn.004926d0
add esp, 0xc
test al, al
je 0x48c273
mov byte [0x4d3e10], 0
push 1
lea eax, [ebp - 0x248]
push str._noerrtrap
push eax
call fcn.004926d0
add esp, 0xc
test al, al
je 0x48c294
mov byte [0x4d3e18], 0
push 1
lea ecx, [ebp - 0x248]
push str._nocpucheck
push ecx
call fcn.004926d0
add esp, 0xc
test al, al
je 0x48c2b5
mov byte [0x4d3e00], 0
mov al, byte [0x4f8e78]
test al, al
je 0x48c30d
push str.WIN:_Safe_mode_startup
call fcn.0048fa80
add esp, 4
mov byte [0x4f9afc], 4
mov byte [0x4d6000], 0
mov dword [0x4d3e04], ebx
mov dword [0x4d3e38], ebx
mov byte [0x4d3e08], 0
mov byte [0x4d3e10], 0
mov dword [0x4d4bec], ebx
mov dword [0x4d4be4], ebx
mov byte [0x4d3e00], 0
mov byte [0x4d3e18], 0
mov edx, dword [0x6087a8]
push 0x4d424c
push edx
call fcn.004b80b0
add esp, 8
test eax, eax
je 0x48c33f
push ebx
push 0x491bd0
push 0x87
call fcn.00494040
add esp, 0xc
push ebx
call dword [sym.imp.KERNEL32.dll_ExitProcess]
push ebx
push ebx
push ebx
call dword [sym.imp.KERNEL32.dll_CreateMutexA]
mov dword [0x4f8e70], eax
mov al, byte [0x4cd184]
test al, al
je 0x48c36a
push 1
push 0x4f8020
call fcn.0049a590
add esp, 8
mov dword [0x4f8e60], eax
push 0x104
push 0x4f87f8
push ebx
call dword [sym.imp.KERNEL32.dll_GetModuleFileNameA]
push 0x4f87f8
push str.LOG:_GRADE__Build_98_194W___Executable:__s
call fcn.0048fa80
mov eax, dword [str.1.23]
mov ecx, dword [str.Jazz_Jackrabbit_2]
add esp, 8
push eax
push ecx
push str.LOG:__s_version__s
call fcn.0048fa80
add esp, 0xc
push 0x4f5908
call fcn.0048fa80
add esp, 4
call dword [sym.imp.COMCTL32.dll_InitCommonControls]
mov al, byte [0x4d3e18]
test al, al
je 0x48c3ce
push 0x48c710
call dword [sym.imp.KERNEL32.dll_SetUnhandledExceptionFilter]
mov ecx, 0x63
xor eax, eax
mov edi, 0x4f8130
lea edx, [ebp - 0xdc]
rep stosd dword es:[edi], eax
mov ecx, 0x25
lea edi, [ebp - 0xdc]
rep stosd dword es:[edi], eax
push edx
mov dword [ebp - 0xdc], 0x94
call dword [sym.imp.KERNEL32.dll_GetVersionExA]
mov eax, dword [ebp - 0xcc]
mov esi, dword [sym.imp.USER32.dll_MessageBoxA]
cmp eax, ebx
jne 0x48c42d
mov eax, dword [0x4f8e1c]
push 0x10010
push ebx
push str.This_program_cannot_be_run_under_Win32s._nYou_must_this_program_under_Windows_95_or_Windows_NT.
push eax
call esi
push 3
call fcn.004b9450
add esp, 4
push ebx
call dword [sym.imp.USER32.dll_GetDC]
mov edi, eax
push 0xc
push edi
call dword [sym.imp.GDI32.dll_GetDeviceCaps]
push edi
push ebx
mov dword [0x4f8e2c], eax
call dword [sym.imp.USER32.dll_ReleaseDC]
cmp dword [0x4f8e2c], 8
jge 0x48c473
mov ecx, dword [0x4f8e1c]
push 0x10010
push ebx
push str.This_program_requires_a_256_color_display_mode.
push ecx
call esi
push 2
call fcn.004b9450
add esp, 4
mov eax, dword [ebp - 0xcc]
dec eax
je 0x48c4a9
dec eax
je 0x48c490
mov ecx, 7
mov esi, str.an_unknown_operating_system
lea edi, [ebp - 0x48]
rep movsd dword es:[edi], dword [esi]
jmp 0x48c4d6
mov ecx, 5
mov esi, str.Microsoft_Windows_NT
lea edi, [ebp - 0x48]
mov byte [0x4f8e28], 1
rep movsd dword es:[edi], dword [esi]
movsb byte es:[edi], byte [esi]
jmp 0x48c4d6
mov edx, dword [str.Microsoft_Windows]
mov eax, dword [0x4d4138]
mov ecx, dword [0x4d413c]
mov dword [ebp - 0x48], edx
mov edx, dword [0x4d4140]
mov dword [ebp - 0x44], eax
mov ax, word [0x4d4144]
mov dword [ebp - 0x40], ecx
mov dword [ebp - 0x3c], edx
mov word [ebp - 0x38], ax
lea ecx, [ebp - 0xc8]
push ecx
call fcn.00492780
add esp, 4
test al, al
jne 0x48c542
mov edi, 0x4d0270
or ecx, 0xffffffff
xor eax, eax
lea edx, [ebp - 0x48]
repne scasb al, byte es:[edi]
not ecx
sub edi, ecx
mov esi, edi
mov edi, edx
mov edx, ecx
or ecx, 0xffffffff
repne scasb al, byte es:[edi]
mov ecx, edx
dec edi
shr ecx, 2
rep movsd dword es:[edi], dword [esi]
mov ecx, edx
lea edx, [ebp - 0x48]
and ecx, 3
rep movsb byte es:[edi], byte [esi]
lea edi, [ebp - 0xc8]
or ecx, 0xffffffff
repne scasb al, byte es:[edi]
not ecx
sub edi, ecx
mov esi, edi
mov edi, edx
mov edx, ecx
or ecx, 0xffffffff
repne scasb al, byte es:[edi]
mov ecx, edx
dec edi
shr ecx, 2
rep movsd dword es:[edi], dword [esi]
mov ecx, edx
and ecx, 3
rep movsb byte es:[edi], byte [esi]
mov eax, dword [ebp - 0xd0]
mov ecx, dword [ebp - 0xd4]
mov edx, dword [ebp - 0xd8]
and eax, 0xffff
push eax
push ecx
lea eax, [ebp - 0x48]
push edx
push eax
push str.WIN:_Running__s_version__u._u__Build__u
call fcn.0048fa80
add esp, 0x14
push ebx
call fcn.00492900
add esp, 4
call fcn.0048e530
push ebx
call dword [sym.imp.GDI32.dll_CreateCompatibleDC]
mov dword [0x4f8e14], eax
call fcn.00493e90
call fcn.00492100
call fcn.0048ea50
call fcn.0048c820
mov ecx, dword [0x4f7f10]
mov edx, dword [0x4f7f14]
mov eax, bind
add ecx, 0x140
mov dword [0x6087c4], eax
mov dword [0x6087c0], eax
mov eax, 0x90000000
add edx, 0xf0
mov byte [0x6087e8], 0
mov dword [0x6087d8], eax
mov dword [0x6087d4], eax
mov dword [0x6087c8], ecx
mov dword [0x6087cc], edx
mov dword [0x6087e0], eax
mov dword [0x6087dc], eax
mov dword [0x6087e4], ebx
mov dword [0x6087d0], ebx
call fcn.0048f3c0
mov ecx, dword [0x6087d0]
mov eax, 0xcf0000
cmp ecx, ebx
je 0x48c613
mov eax, 0x1cf0000
mov ecx, dword [0x4f8e10]
mov edx, dword [0x6087cc]
push ebx
push ecx
mov ecx, dword [0x6087c8]
push ebx
push ebx
push edx
mov edx, dword [0x6087c4]
push ecx
mov ecx, dword [0x6087c0]
push edx
mov edx, dword [str.Jazz_Jackrabbit_2]
and eax, 0xefffffff
push ecx
push eax
push edx
push str.DDWndClass
push 0x300
call dword [sym.imp.USER32.dll_CreateWindowExA]
cmp eax, ebx
mov dword [0x4f8e1c], eax
je 0x48c6a5
call fcn.00494120
call fcn.0049df20
mov ecx, 0xa0
xor eax, eax
mov edi, 0x4f82c8
rep stosd dword es:[edi], eax
call fcn.0049aa20
call fcn.00498f60
push str._____Starting_execution:_invoke_MainProg__
call fcn.0048fa80
add esp, 4
push 0x4f5908
call fcn.0048fa80
add esp, 4
call fcn.00440370
call fcn.0048ebb0
pop edi
pop esi
xor eax, eax
pop ebx
mov esp, ebp
pop ebp
ret 0x10