Function at 0x408e25
Capabilities:
Check os version

Disassembly:
push ebp
mov ebp, esp
sub esp, 0xd8
push ebx
push esi
push edi
push 0x24
xor ebx, ebx
pop ecx
xor eax, eax
lea edi, [ebp - 0xd4]
mov dword [ebp - 0xd8], ebx
mov byte [0x423580], bl
rep stosd dword es:[edi], eax
call fcn.00408dd9
push str.winsta.dll
call fcn.0040c877
mov dword [esp], str.sspicli.dll
call fcn.0040c877
mov dword [esp], str.sspicli2.dll
call fcn.0040c877
mov dword [esp], str.TextShaping.dll
call fcn.0040c877
pop ecx
lea eax, [ebp - 0xd8]
push eax
mov dword [ebp - 0xd8], 0x94
call dword [sym.imp.KERNEL32.dll_GetVersionExA]
mov esi, dword [ebp - 0xd4]
xor eax, eax
cmp dword [ebp - 0xc8], 2
push 1
pop edi
sete al
shl esi, 8
add esi, dword [ebp - 0xd0]
xor ecx, ecx
mov dword [0x423800], eax
cmp si, 0x35a
setge cl
cmp eax, ebx
mov dword [0x423804], ecx
je 0x408edd
cmp dword [ebp - 0xd4], 4
mov dword [0x423e6c], edi
jbe 0x408ee3
mov dword [0x423e6c], ebx
cmp eax, ebx
je 0x408ef6
cmp dword [ebp - 0xd4], 6
mov dword [0x4240b0], edi
jae 0x408efc
mov dword [0x4240b0], ebx
cmp eax, ebx
je 0x408f1b
call fcn.00407e16
test eax, eax
je 0x408f16
mov eax, dword [0x423800]
mov dword [0x4240a4], edi
jmp 0x408f21
mov eax, dword [0x423800]
mov dword [0x4240a4], ebx
cmp eax, ebx
je 0x408f2c
cmp si, 0x501
jge 0x408f4c
push 0x8001
mov dword [0x42380c], ebx
call dword [sym.imp.KERNEL32.dll_SetErrorMode]
push str.UxTheme.dll
call fcn.0040c877
test eax, eax
pop ecx
je 0x408f52
mov dword [0x42380c], edi
call fcn.00407fe5
mov dword [0x422bf4], eax
mov dword [0x420b28], ebx
call fcn.00409113
test eax, eax
jne 0x408f80
push 0x10
push str.Error
push str.Error_loading_cabinet.dll_to_unpack_cab_files_
push ebx
call dword [sym.imp.USER32.dll_MessageBoxA]
jmp 0x408fc4
mov esi, dword [ebp + 8]
mov dword [0x423968], esi
call 0x40ac3f
call dword [sym.imp.COMCTL32.dll_InitCommonControls]
push str.Total_Commander
push 0x424520
call fcn.00413500
push 0x41cdd8
push 0x4240c0
mov byte [0x423540], bl
call fcn.00413500
add esp, 0x10
call fcn.00408010
test eax, eax
je 0x408fcb
mov eax, edi
jmp 0x40910c
cmp dword [ebp + 0xc], ebx
jne 0x40904b
push 0x7f00
push ebx
mov dword [ebp - 0x28], 0xb
mov dword [ebp - 0x18], esi
call dword [sym.imp.USER32.dll_LoadCursorA]
push 0x41cdcc
push esi
mov dword [ebp - 0x10], eax
mov dword [ebp - 0xc], ebx
call dword [sym.imp.USER32.dll_LoadIconA]
mov dword [ebp - 0x14], eax
mov eax, dword [str.cginstallclass32]
mov dword [ebp - 4], eax
lea eax, [ebp - 0x28]
push eax
mov dword [ebp - 0x24], 0x407cee
mov dword [ebp - 0x20], ebx
mov dword [ebp - 0x1c], ebx
mov dword [ebp - 0xc], ebx
mov dword [ebp - 8], ebx
call dword [sym.imp.USER32.dll_RegisterClassA]
test ax, ax
jne 0x40904b
cmp dword [0x420b1c], ebx
jne 0x409041
push 0x10
push dword [0x41c030]
push str.Error_starting_program_
push ebx
call dword [sym.imp.USER32.dll_MessageBoxA]
mov eax, 0xff
jmp 0x40910c
push str.Arial
push 0x22
push 2
push ebx
push ebx
push edi
push ebx
push ebx
push ebx
push 0x2bc
push ebx
push ebx
push ebx
push 0x14
call dword [sym.imp.GDI32.dll_CreateFontA]
push ebx
push esi
push ebx
mov dword [0x42396c], eax
push ebx
push 0x50
mov eax, 0x1f4
push 0x50
push eax
push eax
push 0xcf0000
push dword [0x41c030]
push dword [0x41c034]
push ebx
call dword [sym.imp.USER32.dll_CreateWindowExA]
cmp eax, ebx
mov dword [0x422bf8], eax
je 0x4090ec
cmp dword [0x420b20], ebx
jne 0x4090bc
push 3
push eax
call dword [sym.imp.USER32.dll_ShowWindow]
push dword [0x422bf8]
call dword [sym.imp.USER32.dll_UpdateWindow]
mov esi, dword [sym.imp.USER32.dll_GetMessageA]
push ebx
push ebx
lea eax, [ebp - 0x44]
push ebx
push eax
call esi
test eax, eax
je 0x4090ec
lea eax, [ebp - 0x44]
push eax
call dword [sym.imp.USER32.dll_TranslateMessage]
lea eax, [ebp - 0x44]
push eax
call dword [sym.imp.USER32.dll_DispatchMessageA]
push ebx
push ebx
lea eax, [ebp - 0x44]
push ebx
push eax
jmp 0x4090c9
push dword [0x42396c]
call dword [sym.imp.GDI32.dll_DeleteObject]
call fcn.0040ac75
invalid
invalid