Function at 0x45a000
Capabilities:
Check for time delay via queryperformancecounter
Check mutex and terminate process on windows
Check mutex on windows
Encrypt data using rc4 ksa
Log keystrokes via application hook
Terminate process

Disassembly:
push ebp
mov ebp, esp
sub esp, 0x14c
mov eax, dword [0x4a067c]
push ebx
xor ebx, ebx
push esi
cmp eax, ebx
push edi
jne 0x45a05f
mov eax, dword [str.Jazz_Jackrabbit_2]
lea ecx, [ebp - 0x14c]
push eax
push str.Lock__s
push ecx
call fcn.0047aba0
add esp, 0xc
lea edx, [ebp - 0x14c]
push edx
push 0x20
push ebx
push 2
push ebx
push 0xffffffffffffffff
call dword [sym.imp.KERNEL32.dll_CreateFileMappingA]
cmp eax, ebx
je 0x45a05f
call dword [sym.imp.KERNEL32.dll_GetLastError]
cmp eax, 0xb7
jne 0x45a05f
push 1
call dword [sym.imp.KERNEL32.dll_ExitProcess]
mov edi, dword [str.jazz2w.log]
or ecx, 0xffffffff
xor eax, eax
repne scasb al, byte es:[edi]
not ecx
sub edi, ecx
mov eax, ecx
mov esi, edi
mov edi, 0x4a23c0
shr ecx, 2
rep movsd dword es:[edi], dword [esi]
mov ecx, eax
and ecx, 3
rep movsb byte es:[edi], byte [esi]
mov ecx, dword [ebp + 8]
mov dword [0x4a30c8], ecx
call dword [sym.imp.KERNEL32.dll_GetCurrentThreadId]
mov esi, dword [sym.imp.KERNEL32.dll_GetCurrentProcess]
push 2
push ebx
push ebx
push 0x58bbb4
mov dword [0x58bbac], 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.00465380
push 0x4a2bb8
call dword [sym.imp.KERNEL32.dll_QueryPerformanceFrequency]
mov ecx, dword [0x4a2bb8]
cmp ecx, 0x3e8
jb 0x45a8df
cmp dword [0x4a2bbc], ebx
jne 0x45a8df
mov eax, 0x10624dd3
mov esi, 1
mul ecx
shr edx, 6
mov dword [0x4a2bb4], esi
mov dword [0x4a24c4], edx
cmp esi, ebx
je 0x45a140
mov eax, 0xd41d41d5
mul ecx
sub ecx, edx
shr ecx, 1
add ecx, edx
shr ecx, 6
cmp esi, ebx
mov dword [0x4a2f84], ecx
je 0x45a140
lea edx, [ebp - 8]
push edx
call dword [sym.imp.KERNEL32.dll_QueryPerformanceCounter]
mov edx, dword [ebp - 4]
mov eax, dword [ebp - 8]
div dword [0x4a24c4]
mov dword [ebp - 8], eax
mov eax, dword [ebp - 8]
jmp 0x45a146
call dword [sym.imp.WINMM.dll_timeGetTime]
mov dword [0x4a2f38], eax
mov eax, dword [0x4a2bb4]
cmp eax, ebx
je 0x45a172
lea eax, [ebp - 8]
push eax
call dword [sym.imp.KERNEL32.dll_QueryPerformanceCounter]
mov edx, dword [ebp - 4]
mov eax, dword [ebp - 8]
div dword [0x4a2f84]
mov dword [ebp - 8], eax
mov ecx, dword [ebp - 8]
jmp 0x45a18a
call dword [sym.imp.WINMM.dll_timeGetTime]
mov ecx, eax
mov eax, 0x24924925
mul ecx
sub ecx, edx
shr ecx, 1
add ecx, edx
shr ecx, 3
mov dword [0x4a29a8], ecx
mov ecx, dword [ebp + 0x10]
push ecx
call fcn.0045fae0
add esp, 4
push ebx
push ebx
push ebx
call dword [sym.imp.KERNEL32.dll_CreateMutexA]
mov dword [0x4a3118], eax
mov eax, dword [0x4a3120]
cmp eax, ebx
je 0x45a1c7
push 1
push 0x4a23c0
call fcn.00466b50
add esp, 8
mov dword [0x4a3110], eax
push 0x104
push 0x4a2ab0
push ebx
call dword [sym.imp.KERNEL32.dll_GetModuleFileNameA]
push 0x4a2ab0
push str.LOG:_GRADE__Build_97_231W___Executable:__s
call fcn.0045d3a0
mov edx, dword [str.1.00g]
mov eax, dword [str.Jazz_Jackrabbit_2]
add esp, 8
push edx
push eax
push str.LOG:__s_version__s
call fcn.0045d3a0
add esp, 0xc
push 0x4a0dc0
call fcn.0045d3a0
add esp, 4
call dword [sym.imp.COMCTL32.dll_InitCommonControls]
cmp dword [0x4873b4], ebx
je 0x45a22a
push 0x45a8f0
call dword [sym.imp.KERNEL32.dll_SetUnhandledExceptionFilter]
mov ecx, 0x63
xor eax, eax
mov edi, 0x4a24d0
mov dword [ebp - 0xdc], 0x94
rep stosd dword es:[edi], eax
mov ecx, pe_nt_image_headers32
mov edi, 0x58bc00
rep stosd dword es:[edi], eax
lea ecx, [ebp - 0xdc]
push ecx
call dword [sym.imp.KERNEL32.dll_GetVersionExA]
mov eax, dword [ebp - 0xcc]
mov esi, dword [sym.imp.USER32.dll_MessageBoxA]
cmp eax, ebx
jne 0x45a289
mov edx, dword [0x4a30d4]
push 0x10010
push ebx
push str.This_program_cannot_be_run_under_Win32s._nYou_must_this_program_under_Windows_95_or_Windows_NT.
push edx
call esi
push 3
call fcn.0047b790
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 [0x4a30e4], eax
call dword [sym.imp.USER32.dll_ReleaseDC]
cmp dword [0x4a30e4], 8
jge 0x45a2ce
mov eax, dword [0x4a30d4]
push 0x10010
push ebx
push str.This_program_requires_a_256_color_display_mode.
push eax
call esi
push 2
call fcn.0047b790
add esp, 4
mov eax, dword [ebp - 0xcc]
dec eax
je 0x45a307
dec eax
je 0x45a2eb
mov ecx, 7
mov esi, str.an_unknown_operating_system
lea edi, [ebp - 0x48]
rep movsd dword es:[edi], dword [esi]
jmp 0x45a335
mov ecx, 5
mov esi, str.Microsoft_Windows_NT
lea edi, [ebp - 0x48]
mov dword [0x4a30e0], 1
rep movsd dword es:[edi], dword [esi]
movsb byte es:[edi], byte [esi]
jmp 0x45a335
mov ecx, dword [str.Microsoft_Windows]
mov edx, dword [0x4877fc]
mov eax, dword [0x487800]
mov dword [ebp - 0x48], ecx
mov ecx, dword [0x487804]
mov dword [ebp - 0x44], edx
mov dx, word [0x487808]
mov dword [ebp - 0x40], eax
mov dword [ebp - 0x3c], ecx
mov word [ebp - 0x38], dx
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.0045d3a0
add esp, 0x14
xor eax, eax
mov ecx, eax
and ecx, 0xff
inc eax
cmp eax, 0x104
mov dl, byte [ecx + 0x4873e8]
mov byte [eax + 0x58bdff], dl
jl 0x45a362
mov dword [0x58bbb0], ebx
call fcn.0046a140
call dword [sym.imp.KERNEL32.dll_GetCurrentThreadId]
push eax
push ebx
push 0x45b520
push 2
call dword [sym.imp.USER32.dll_SetWindowsHookExA]
cmp eax, ebx
mov dword [0x4a2cf0], eax
jne 0x45a3b4
push str.Could_not_obtain_keyboard_hook_
call fcn.0045c690
add esp, 4
mov eax, dword [0x4a30c8]
push 0x1f
push eax
call fcn.00469ee0
add esp, 8
test eax, eax
jne 0x45a3d5
push str.WIN:_Warning___Failed_to_load_executable_into_memory
call fcn.0045d3a0
add esp, 4
push ebx
call dword [sym.imp.GDI32.dll_CreateCompatibleDC]
mov esi, dword [sym.imp.USER32.dll_SystemParametersInfoA]
push ebx
push 0x4a2f8c
push ebx
push 0xe
mov dword [0x4a30cc], eax
mov dword [0x4a2f8c], 0x12c
call esi
mov ecx, dword [0x4a2f8c]
push ebx
push 0x4a2d24
push ebx
lea edx, [ecx + ecx]
push 0x4f
mov dword [0x4a2d24], edx
call esi
mov eax, dword [0x4a2f8c]
mov dword [0x4a2f30], ebx
lea eax, [eax + eax*4]
lea eax, [eax + eax*4]
lea eax, [eax + eax*4]
shl eax, 3
mov dword [0x4a2f8c], eax
mov eax, dword [0x4a2d24]
lea eax, [eax + eax*4]
lea eax, [eax + eax*4]
lea ecx, [eax + eax*4]
mov eax, dword [0x4a2bb4]
shl ecx, 3
cmp eax, ebx
mov dword [0x4a2d24], ecx
je 0x45a470
lea edx, [ebp - 8]
push edx
call dword [sym.imp.KERNEL32.dll_QueryPerformanceCounter]
mov edx, dword [ebp - 4]
mov eax, dword [ebp - 8]
div dword [0x4a24c4]
mov dword [ebp - 8], eax
mov eax, dword [ebp - 8]
jmp 0x45a476
call dword [sym.imp.WINMM.dll_timeGetTime]
mov edi, dword [0x4a2f38]
mov ecx, dword [0x4a2f8c]
sub eax, edi
lea edx, [eax + ecx]
mov ecx, dword [0x4a2d24]
add eax, ecx
mov dword [0x4a2cc8], edx
mov dword [0x4a22bc], eax
call fcn.0045f510
mov esi, dword [sym.imp.USER32.dll_GetSystemMetrics]
push 0x20
call esi
lea edx, [eax + eax + 5]
push 0x21
mov dword [0x4a22b0], edx
call esi
push 0xf
mov edi, eax
call esi
push 4
lea edi, [eax + edi*2]
call esi
lea eax, [edi + eax + 5]
mov ecx, 0xa
mov dword [0x4a22b4], eax
xor eax, eax
lea edi, [ebp - 0x30]
rep stosd dword es:[edi], eax
call dword [sym.imp.USER32.dll_CreateMenu]
mov ecx, dword [0x4a30c8]
push 0x66
push ecx
mov dword [0x4a30f8], eax
call dword [sym.imp.USER32.dll_LoadIconA]
mov edx, dword [0x4a30c8]
mov esi, dword [sym.imp.USER32.dll_RegisterClassA]
mov dword [0x4a30d0], eax
mov dword [ebp - 0x1c], eax
lea eax, [ebp - 0x30]
mov dword [ebp - 0x30], 3
push eax
mov dword [ebp - 0x2c], 0x45b6b0
mov dword [ebp - 0x20], edx
mov dword [ebp - 0xc], str.DDWndClass
call esi
test ax, ax
jne 0x45a537
push 0x4874e8
call fcn.0045c690
add esp, 4
mov ecx, 0xa
xor eax, eax
lea edi, [ebp - 0x30]
lea edx, [ebp - 0x30]
rep stosd dword es:[edi], eax
mov ecx, dword [0x4a30c8]
push edx
mov dword [ebp - 0x2c], 0x467fe0
mov dword [ebp - 0x20], ecx
mov dword [ebp - 0xc], str.DDWinSock
call esi
test ax, ax
jne 0x45a572
push 0x4874e8
call fcn.0045c690
add esp, 4
mov ecx, dword [0x4a22b0]
mov edx, dword [0x4a22b4]
mov eax, bind
add ecx, 0x140
mov dword [0x58bbc4], eax
mov dword [0x58bbc0], eax
mov eax, 0x90000000
add edx, 0xf0
mov dword [0x58bbd8], eax
mov dword [0x58bbd4], eax
mov dword [0x58bbe0], eax
mov dword [0x58bbdc], eax
mov eax, dword [0x4854a0]
mov dword [0x58bbc8], ecx
mov ecx, dword [str.Jazz_Jackrabbit_2]
mov dword [0x58bbcc], edx
mov edx, dword [str.Epic_MegaGames]
push eax
push ecx
push edx
lea eax, [ebp - 0x148]
mov esi, 1
push str.Software_s_s_s
push eax
mov byte [0x58bbe8], 0
mov dword [0x58bbe4], ebx
mov dword [0x58bbd0], ebx
mov dword [0x4a3114], esi
call fcn.0047aba0
add esp, 0x14
lea ecx, [ebp + 8]
lea edx, [ebp - 0x148]
push ecx
push 0xf003f
push ebx
push edx
push reloc.WSOCK32.dll_accept
call dword [sym.imp.ADVAPI32.dll_RegOpenKeyExA]
test eax, eax
je 0x45a65b
push str.WIN:_First_time_startup__using_defaults
call fcn.0045d3a0
mov ecx, dword [0x4873a4]
or eax, 0xffffffff
add esp, 4
cmp ecx, eax
jne 0x45a644
mov dword [0x4873a4], ebx
cmp dword [0x4873d8], eax
jne 0x45a82e
mov dword [0x4873d8], esi
jmp 0x45a82e
mov al, byte [0x4a4190]
test al, al
jne 0x45a67c
push ebx
push str.Last_VideoMode
push str.System
call fcn.00462290
add esp, 0xc
mov byte [0x4a4190], al
push ebx
push str.Free_Scale
push str.System
call fcn.00462290
add esp, 0xc
mov dword [0x4a41b4], eax
push esi
push str.Music_Active
push str.System
call fcn.00462290
add esp, 0xc
mov dword [0x4873d4], eax
push 0x50
push str.Music_Volume
push str.System
call fcn.00462290
add esp, 0xc
mov dword [0x4873e0], eax
push esi
push str.Sound_FX_Active
push str.System
call fcn.00462290
add esp, 0xc
mov dword [0x4873d0], eax
push pe_nt_image_headers32
push str.Sound_FX_Volume
push str.System
call fcn.00462290
add esp, 0xc
mov dword [0x4873dc], eax
push 0x5622
push str.Sound_Mixing_Rate
push str.System
call fcn.00462290
add esp, 0xc
mov dword [0x489484], eax
push 0x8001
push str.Sound_Mixing_Options
push str.System
call fcn.00462290
mov ebx, eax
mov eax, dword [0x4873a4]
or esi, 0xffffffff
add esp, 0xc
cmp eax, esi
jne 0x45a753
push 0
push 0x487690
push str.System
call fcn.00462290
add esp, 0xc
mov dword [0x4873a4], eax
push 0x2c
push 0x58bbc0
push str.Window_Position
push str.System
call fcn.00462140
mov eax, dword [0x4a41b4]
add esp, 0x10
xor ecx, ecx
test eax, eax
setne cl
cmp ecx, eax
jne 0x45a7f2
mov eax, dword [0x4873d4]
xor edx, edx
test eax, eax
setne dl
cmp edx, eax
jne 0x45a7f2
mov eax, dword [0x489484]
mov ecx, 0x2b11
cdq
idiv ecx
test edx, edx
jne 0x45a7f2
push edx
push str.Window_Snap_Presets
push str.System
call fcn.00462290
add esp, 0xc
mov dword [0x4a3134], eax
test eax, eax
je 0x45a7d8
lea edx, [eax*8]
push edx
push 0x4a2bc8
push str.Window_Snap_Data
push str.System
call fcn.00462140
add esp, 0x10
mov eax, dword [0x4873d8]
mov byte [0x489480], bl
cmp eax, esi
jne 0x45a822
shr ebx, 0x1f
mov dword [0x4873d8], ebx
jmp 0x45a822
push 0x45f060
push 0x92
call fcn.004625e0
mov eax, 1
add esp, 8
mov dword [0x4873a4], 0
mov dword [0x4873d0], eax
mov dword [0x4873d4], eax
mov dword [0x4873d8], eax
mov eax, dword [ebp + 8]
push eax
call dword [sym.imp.ADVAPI32.dll_RegCloseKey]
xor ebx, ebx
mov ecx, dword [0x58bbd0]
mov eax, 0xcf0000
cmp ecx, ebx
je 0x45a842
mov eax, 0x1cf0000
mov ecx, dword [0x4a30c8]
mov edx, dword [0x58bbcc]
push ebx
push ecx
mov ecx, dword [0x58bbc8]
push ebx
push ebx
push edx
mov edx, dword [0x58bbc4]
push ecx
mov ecx, dword [0x58bbc0]
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 [0x4a30d4], eax
je 0x45a8d4
call fcn.00462740
call fcn.00469300
mov ecx, 0xa0
xor eax, eax
mov edi, 0x4a2668
rep stosd dword es:[edi], eax
call fcn.004672e0
call fcn.00465bd0
push str._____Starting_execution:_invoke_MainProg__
call fcn.0045d3a0
add esp, 4
push 0x4a0dc0
call fcn.0045d3a0
add esp, 4
call fcn.0043cb60
call fcn.0045c9f0
pop edi
pop esi
xor eax, eax
pop ebx
mov esp, ebp
pop ebp
ret 0x10
xor esi, esi
mov dword [0x4a2bb4], esi
jmp 0x45a104