Function at 0x45c9f0
Capabilities:
Set registry value
Suspend thread
Terminate process

Disassembly:
mov eax, dword [0x4a314c]
sub esp, 0x220
test eax, eax
jne 0x45d079
push edi
push esi
push ebp
push ebx
mov ebx, 1
mov dword [0x4a314c], ebx
call dword [sym.imp.KERNEL32.dll_GetCurrentThreadId]
cmp eax, dword [0x58bbac]
je 0x45ca2c
mov eax, dword [0x58bbb4]
push eax
call dword [sym.imp.KERNEL32.dll_SuspendThread]
push 0x4a0dc0
mov dword [0x4a30dc], ebx
call fcn.0045d3a0
add esp, 4
push str._____Exiting_program
call fcn.0045d3a0
mov eax, dword [0x48947c]
add esp, 4
test eax, eax
je 0x45ca76
push str.SND:_Closing_sound_system
call fcn.0045d3a0
add esp, 4
call fcn.00473815
call fcn.004711ad
call fcn.00470c83
call fcn.00470402
call fcn.00467620
mov edx, dword [0x4a30d4]
lea ecx, [esp + 0x1c]
push ecx
push edx
call dword [sym.imp.USER32.dll_GetWindowRect]
cmp byte [0x488150], 4
jne 0x45caec
mov eax, dword [0x4a30d4]
mov byte [0x58bbe8], bl
push eax
call dword [sym.imp.USER32.dll_IsZoomed]
test eax, eax
mov dword [0x58bbd0], eax
jne 0x45caec
mov ecx, dword [0x4a30d4]
push ecx
call dword [sym.imp.USER32.dll_IsIconic]
test eax, eax
jne 0x45caec
mov eax, dword [esp + 0x1c]
mov edx, dword [esp + 0x24]
mov ecx, dword [esp + 0x20]
mov dword [0x58bbc0], eax
sub edx, eax
mov eax, dword [esp + 0x28]
sub eax, ecx
mov dword [0x58bbc4], ecx
mov dword [0x58bbc8], edx
mov dword [0x58bbcc], eax
call fcn.004694b0
mov esi, dword [0x4873d8]
mov eax, dword [0x4a3114]
neg esi
xor ecx, ecx
mov cl, byte [0x489480]
shl esi, 0x1f
add esi, ecx
test eax, eax
je 0x45cf58
push str.WIN:_Writing_registry
call fcn.0045d3a0
mov al, byte [0x488150]
mov ebx, dword [sym.imp.ADVAPI32.dll_RegSetValueExA]
add esp, 4
cmp al, 4
je 0x45cb33
cmp al, 5
jne 0x45cb69
mov edx, dword [0x4a4190]
push str.System
and edx, 0xff
mov dword [esp + 0x14], edx
call fcn.00461ef0
mov ecx, dword [0x4a30f4]
add esp, 4
lea eax, [esp + 0x10]
push 4
push eax
push 3
push 0
push str.Last_VideoMode
push ecx
call ebx
mov edx, dword [0x4a41b4]
push str.System
mov dword [esp + 0x14], edx
call fcn.00461ef0
mov ecx, dword [0x4a30f4]
add esp, 4
lea eax, [esp + 0x10]
push 4
push eax
push 3
push 0
push str.Free_Scale
push ecx
call ebx
mov edx, dword [0x4873d4]
push str.System
mov dword [esp + 0x14], edx
call fcn.00461ef0
mov ecx, dword [0x4a30f4]
add esp, 4
lea eax, [esp + 0x10]
push 4
push eax
push 3
push 0
push str.Music_Active
push ecx
call ebx
mov edx, dword [0x4873e0]
push str.System
mov dword [esp + 0x14], edx
call fcn.00461ef0
mov ecx, dword [0x4a30f4]
add esp, 4
lea eax, [esp + 0x10]
push 4
push eax
push 3
push 0
push str.Music_Volume
push ecx
call ebx
mov edx, dword [0x4873d0]
push str.System
mov dword [esp + 0x14], edx
call fcn.00461ef0
mov ecx, dword [0x4a30f4]
add esp, 4
lea eax, [esp + 0x10]
push 4
push eax
push 3
push 0
push str.Sound_FX_Active
push ecx
call ebx
mov edx, dword [0x4873dc]
push str.System
mov dword [esp + 0x14], edx
call fcn.00461ef0
mov ecx, dword [0x4a30f4]
add esp, 4
lea eax, [esp + 0x10]
push 4
push eax
push 3
push 0
push str.Sound_FX_Volume
push ecx
call ebx
push str.System
mov dword [esp + 0x14], esi
call fcn.00461ef0
mov eax, dword [0x4a30f4]
add esp, 4
lea edx, [esp + 0x10]
push 4
push edx
push 3
push 0
push str.Sound_Mixing_Options
push eax
call ebx
mov ecx, dword [0x489484]
push str.System
mov dword [esp + 0x14], ecx
call fcn.00461ef0
mov eax, dword [0x4a30f4]
add esp, 4
lea edx, [esp + 0x10]
push 4
push edx
push 3
push 0
push str.Sound_Mixing_Rate
push eax
call ebx
mov ecx, dword [0x4873a4]
push str.System
mov dword [esp + 0x14], ecx
call fcn.00461ef0
mov eax, dword [0x4a30f4]
add esp, 4
lea edx, [esp + 0x10]
push 4
push edx
push 3
push 0
push 0x487690
push eax
call ebx
mov ebp, dword [0x4a30f4]
mov ecx, dword [0x4a3134]
test ebp, ebp
mov dword [esp + 0x10], ecx
je 0x45cd33
mov edi, 0x4a3170
mov esi, str.System
mov dl, byte [esi]
mov cl, byte [edi]
mov al, dl
cmp dl, cl
jne 0x45cd26
test al, al
je 0x45cd22
mov cl, byte [esi + 1]
mov dl, byte [edi + 1]
mov al, cl
cmp cl, dl
jne 0x45cd26
add esi, 2
add edi, 2
test al, al
jne 0x45ccfe
xor eax, eax
jmp 0x45cd2b
sbb eax, eax
sbb eax, 0xffffffff
test eax, eax
je 0x45cdbe
mov edi, str.System
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, 0x4a3170
shr ecx, 2
rep movsd dword es:[edi], dword [esi]
mov ecx, edx
and ecx, 3
test ebp, ebp
rep movsb byte es:[edi], byte [esi]
je 0x45cd63
push ebp
call dword [sym.imp.ADVAPI32.dll_RegCloseKey]
mov eax, dword [0x4854a0]
mov ecx, dword [str.Jazz_Jackrabbit_2]
mov edx, dword [str.Epic_MegaGames]
push str.System
push eax
push ecx
push edx
lea eax, [esp + 0x40]
push str.Software_s_s_s_s
push eax
call fcn.0047aba0
add esp, 0x18
lea ecx, [esp + 0x18]
lea edx, [esp + 0x30]
push ecx
push 0x4a30f4
push 0
push 0xf003f
push 0
push 0x4a0dc0
push 0
push edx
push reloc.WSOCK32.dll_accept
call dword [sym.imp.ADVAPI32.dll_RegCreateKeyExA]
mov ebp, dword [0x4a30f4]
lea eax, [esp + 0x10]
push 4
push eax
push 3
push 0
push str.Window_Snap_Presets
push ebp
call ebx
mov ecx, dword [0x4a3134]
push str.System
lea esi, [ecx*8]
call fcn.00461ef0
mov edx, dword [0x4a30f4]
add esp, 4
push esi
push 0x4a2bc8
push 3
push 0
push str.Window_Snap_Data
push edx
call ebx
mov al, byte [0x58bbe8]
test al, al
je 0x45cef7
mov ebp, dword [0x4a30f4]
test ebp, ebp
je 0x45ce59
mov edi, 0x4a3170
mov esi, str.System
mov cl, byte [esi]
mov dl, byte [edi]
mov al, cl
cmp cl, dl
jne 0x45ce4c
test al, al
je 0x45ce48
mov dl, byte [esi + 1]
mov cl, byte [edi + 1]
mov al, dl
cmp dl, cl
jne 0x45ce4c
add esi, 2
add edi, 2
test al, al
jne 0x45ce24
xor eax, eax
jmp 0x45ce51
sbb eax, eax
sbb eax, 0xffffffff
test eax, eax
je 0x45cee4
mov edi, str.System
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, 0x4a3170
shr ecx, 2
rep movsd dword es:[edi], dword [esi]
mov ecx, eax
and ecx, 3
test ebp, ebp
rep movsb byte es:[edi], byte [esi]
je 0x45ce89
push ebp
call dword [sym.imp.ADVAPI32.dll_RegCloseKey]
mov ecx, dword [0x4854a0]
mov edx, dword [str.Jazz_Jackrabbit_2]
mov eax, dword [str.Epic_MegaGames]
push str.System
push ecx
push edx
push eax
lea ecx, [esp + 0x40]
push str.Software_s_s_s_s
push ecx
call fcn.0047aba0
add esp, 0x18
lea edx, [esp + 0x18]
lea eax, [esp + 0x30]
push edx
push 0x4a30f4
push 0
push 0xf003f
push 0
push 0x4a0dc0
push 0
push eax
push reloc.WSOCK32.dll_accept
call dword [sym.imp.ADVAPI32.dll_RegCreateKeyExA]
mov ebp, dword [0x4a30f4]
push 0x2c
push 0x58bbc0
push 3
push 0
push str.Window_Position
push ebp
call ebx
mov ecx, dword [0x4854a0]
mov edx, dword [str.Jazz_Jackrabbit_2]
mov eax, dword [str.Epic_MegaGames]
push ecx
push edx
push eax
lea ecx, [esp + 0x13c]
push str.Software_s_s_s
push ecx
call fcn.0047aba0
add esp, 0x14
lea edx, [esp + 0x2c]
lea eax, [esp + 0x14]
lea ecx, [esp + 0x130]
push edx
push eax
push 0
push 0xf003f
push 0
push 0x4a0dc0
push 0
push ecx
push reloc.WSOCK32.dll_bind
call dword [sym.imp.ADVAPI32.dll_RegCreateKeyExA]
mov edx, dword [esp + 0x14]
push edx
call dword [sym.imp.ADVAPI32.dll_RegCloseKey]
call fcn.00462980
mov eax, dword [0x4a2cf0]
push eax
call dword [sym.imp.USER32.dll_UnhookWindowsHookEx]
mov eax, dword [0x4a4e7c]
test eax, eax
je 0x45cf95
push str.SPY:_Closing_spy
call fcn.0045d3a0
mov eax, dword [0x4a4e7c]
add esp, 4
test eax, eax
je 0x45cf95
push 0
push 0
push 0x10
push eax
call dword [sym.imp.USER32.dll_SendMessageA]
push str.WIN:_Closing_window
call fcn.0045d3a0
mov eax, dword [0x4a30d4]
add esp, 4
test eax, eax
je 0x45cfb2
push eax
call dword [sym.imp.USER32.dll_DestroyWindow]
mov eax, dword [0x4a30f8]
test eax, eax
je 0x45cfc2
push eax
call dword [sym.imp.USER32.dll_DestroyMenu]
mov eax, dword [0x4a30cc]
test eax, eax
je 0x45cfd2
push eax
call dword [sym.imp.GDI32.dll_DeleteDC]
mov eax, dword [0x4a30f4]
test eax, eax
je 0x45cfe2
push eax
call dword [sym.imp.ADVAPI32.dll_RegCloseKey]
call fcn.00469350
mov eax, dword [0x58bba8]
push eax
call dword [sym.imp.KERNEL32.dll_LocalFree]
mov eax, dword [0x4a3110]
test eax, eax
je 0x45d00f
push eax
call fcn.00466d70
add esp, 4
mov dword [0x4a3110], 0
call fcn.004654a0
mov ecx, dword [0x4a30f8]
mov esi, dword [sym.imp.USER32.dll_DeleteMenu]
push 0x400
push 0
push ecx
call esi
test eax, eax
je 0x45d042
mov edx, dword [0x4a30f8]
push 0x400
push 0
push edx
call esi
test eax, eax
jne 0x45d02e
push str.WIN:_All_done__Have_a_nice_day
call fcn.0045d3a0
mov eax, dword [0x58bbb4]
mov esi, dword [sym.imp.KERNEL32.dll_CloseHandle]
add esp, 4
test eax, eax
je 0x45d061
push eax
call esi
mov eax, dword [0x4a3118]
test eax, eax
je 0x45d06d
push eax
call esi
push 0
call dword [sym.imp.KERNEL32.dll_ExitProcess]
add esp, 0x220
ret