Function at 0x453f60
Capabilities:
Check os version
Print debug messages

Disassembly:
sub esp, 0x5d8
push ebx
push esi
push edi
push str._r_n
call fcn.00454810
mov edi, dword [esp + 0x5ec]
mov esi, dword [edi]
mov eax, dword [esi]
push eax
call fcn.00454360
mov ecx, dword [esi]
add esp, 8
push eax
push ecx
push str.Exception_code:__08X__s_r_n
call fcn.00454810
lea edx, [esp + 0x1c]
lea eax, [esp + 0x18]
push edx
mov edx, dword [esi + 0xc]
push eax
lea ecx, [esp + 0x3e8]
push 0x105
push ecx
push edx
call fcn.004545e0
mov ecx, dword [esp + 0x30]
mov edx, dword [esp + 0x2c]
add esp, 0x20
lea eax, [esp + 0x3d4]
push eax
mov eax, dword [esi + 0xc]
push ecx
push edx
push eax
push str.Fault_address:___08X__02X:_08X__s_r_n
call fcn.00454810
mov ebx, dword [edi + 4]
add esp, 0x14
lea ecx, [esp + 0x14]
push ecx
call dword [sym.imp.KERNEL32.dll_GetLocalTime]
mov edx, dword [esp + 0x22]
mov eax, dword [esp + 0x20]
mov ecx, dword [esp + 0x1e]
and edx, 0xffff
push edx
mov edx, dword [esp + 0x20]
and eax, 0xffff
and ecx, 0xffff
push eax
mov eax, dword [esp + 0x22]
and edx, 0xffff
push ecx
mov ecx, dword [esp + 0x22]
push edx
mov edx, dword [esp + 0x24]
and eax, 0xffff
and ecx, 0xffff
push eax
and edx, 0xffff
push ecx
push edx
push str.Date:__04d_02d_02d__02d:_02d:_02d._03d_r_n_r_n
call fcn.00454810
add esp, 0x20
lea eax, [esp + 0x4dc]
push 0x104
push eax
push 0
call dword [sym.imp.KERNEL32.dll_GetModuleFileNameA]
lea ecx, [esp + 0x4dc]
push ecx
call fcn.00454cd0
add esp, 4
push str.11:48:59
push str.Apr_20_2007
push str.Build_Date:__s__s_r_n_r_n
call fcn.00454810
add esp, 0xc
mov dword [esp + 0x28], 0x94
lea edx, [esp + 0x28]
push edx
call dword [sym.imp.KERNEL32.dll_GetVersionExA]
test eax, eax
je 0x454121
mov ecx, dword [esp + 0x38]
mov edx, dword [esp + 0x30]
mov esi, dword [esp + 0x2c]
mov eax, 0x49fd70
test ecx, ecx
jne 0x4540b4
mov eax, str.Win32s
jmp 0x454107
cmp ecx, 1
jne 0x4540dc
test edx, edx
jne 0x4540c4
mov eax, str.Windows_95
jmp 0x454107
cmp edx, 0xa
jne 0x4540d0
mov eax, str.Windows_98
jmp 0x454107
cmp edx, 0x5a
jne 0x454107
mov eax, str.Windows_ME
jmp 0x454107
cmp ecx, 2
jne 0x454107
cmp esi, 5
jne 0x4540fd
test edx, edx
jne 0x4540f1
mov eax, str.Windows_2000
jmp 0x454107
cmp edx, 1
jne 0x454107
mov eax, str.Windows_XP
jmp 0x454107
cmp esi, 4
ja 0x454107
mov eax, str.Windows_NT
mov ecx, dword [esp + 0x34]
push ecx
lea ecx, [esp + 0x40]
push ecx
push edx
push esi
push eax
push str._s_v._d._d__s_Build__d_r_n
call fcn.00454810
add esp, 0x18
push 0
call dword [sym.imp.USER32.dll_GetDC]
mov esi, eax
test esi, esi
je 0x45415d
mov edi, dword [sym.imp.GDI32.dll_GetDeviceCaps]
push 0xc
push esi
call edi
push eax
push 0xa
push esi
call edi
push eax
push 8
push esi
call edi
push eax
push str.Screen:__d_X__d_Bits:__d_r_n
call fcn.00454810
add esp, 0x10
push esi
push 0
call dword [sym.imp.USER32.dll_ReleaseDC]
mov dx, word [0x489570]
mov ecx, 0x40
xor eax, eax
lea edi, [esp + 0x1c6]
mov word [esp + 0x1c4], dx
mov word [esp + 0x2cc], dx
rep stosd dword es:[edi], eax
stosw word es:[edi], ax
stosb byte es:[edi], al
mov ecx, 0x40
xor eax, eax
lea edi, [esp + 0x2ce]
mov word [esp + 0xbc], dx
rep stosd dword es:[edi], eax
stosw word es:[edi], ax
stosb byte es:[edi], al
mov ecx, 0x40
xor eax, eax
lea edi, [esp + 0xbe]
push 0x80000001
rep stosd dword es:[edi], eax
push 0
push str.Driver
stosw word es:[edi], ax
push str.3DSettings
lea edx, [esp + 0x1d4]
push 0x104
push edx
stosb byte es:[edi], al
call fcn.0043cb00
push 0x80000001
push 0
push str.DriverDescription
push str.3DSettings
lea eax, [esp + 0x2f4]
push 0x104
push eax
call fcn.0043cb00
push 0x80000001
push 0
push str.DriverDate
push str.3DSettings
lea ecx, [esp + 0xfc]
push 0x104
push ecx
call fcn.0043cb00
add esp, 0x48
lea edx, [esp + 0xbc]
lea eax, [esp + 0x2cc]
lea ecx, [esp + 0x1c4]
push edx
push eax
push ecx
push str.Video_Driver:__s____s___s__r_n
call fcn.00454810
push str.DDRAW.DLL
call fcn.00454cd0
push str.DSOUND.DLL
call fcn.00454cd0
add esp, 0x18
call fcn.00454870
test eax, eax
jne 0x454278
push str.IMAGEHLP.DLL_or_its_exported_procs_not_found
call dword [sym.imp.KERNEL32.dll_OutputDebugStringA]
pop edi
pop esi
pop ebx
add esp, 0x5d8
ret
push ebx
call fcn.00454680
add esp, 4
call dword [sym.imp.KERNEL32.dll_GetCurrentProcess]
push eax
call dword [0x4a07b4]
push str._r_nRegisters:_r_n
call fcn.00454810
mov edx, dword [ebx + 0x9c]
mov eax, dword [ebx + 0xa0]
mov ecx, dword [ebx + 0xa8]
add esp, 4
push edx
mov edx, dword [ebx + 0xac]
push eax
mov eax, dword [ebx + 0xa4]
push ecx
mov ecx, dword [ebx + 0xb0]
push edx
push eax
push ecx
push str.EAX:_08X_r_nEBX:_08X_r_nECX:_08X_r_nEDX:_08X_r_nESI:_08X_r_nEDI:_08X_r_n
call fcn.00454810
mov edx, dword [ebx + 0xb8]
mov eax, dword [ebx + 0xbc]
add esp, 0x1c
push edx
push eax
push str.CS:EIP:_04X:_08X_r_n
call fcn.00454810
mov ecx, dword [ebx + 0xb4]
mov edx, dword [ebx + 0xc4]
mov eax, dword [ebx + 0xc8]
add esp, 0xc
push ecx
push edx
push eax
push str.SS:ESP:_04X:_08X__EBP:_08X_r_n
call fcn.00454810
mov ecx, dword [ebx + 0x8c]
mov edx, dword [ebx + 0x90]
mov eax, dword [ebx + 0x94]
add esp, 0x10
push ecx
mov ecx, dword [ebx + 0x98]
push edx
push eax
push ecx
push str.DS:_04X__ES:_04X__FS:_04X__GS:_04X_r_n
call fcn.00454810
mov edx, dword [ebx + 0xc0]
add esp, 0x14
push edx
push str.Flags:_08X_r_n
call fcn.00454810
add esp, 8
pop edi
pop esi
pop ebx
add esp, 0x5d8
ret