Function at 0x40e8d0
Capabilities:
Check os version

Disassembly:
mov dword [rsp + 0x20], r9d
mov qword [rsp + 0x18], r8
mov qword [rsp + 0x10], rdx
mov qword [rsp + 8], rcx
push rdi
sub rsp, 0x1e0
mov rax, qword [0x0042d620]
xor rax, rsp
mov qword [rsp + 0x1d0], rax
mov dword [rsp + 0x80], 0
lea rax, [rsp + 0x84]
mov rdi, rax
xor eax, eax
mov ecx, 0x90
rep stosb byte [rdi], al
mov byte [0x00430be0], 0
call fcn.0040e850
lea rcx, str.winsta.dll
call fcn.00415800
lea rcx, str.sspicli.dll
call fcn.00415800
lea rcx, str.sspicli2.dll
call fcn.00415800
lea rcx, str.TextShaping.dll
call fcn.00415800
mov dword [rsp + 0x80], 0x94
lea rcx, [rsp + 0x80]
call qword [sym.imp.KERNEL32.dll_GetVersionExA]
cmp dword [rsp + 0x90], 2
jne 0x40e989
mov dword [rsp + 0x1b8], 1
jmp 0x40e994
mov dword [rsp + 0x1b8], 0
mov eax, dword [rsp + 0x1b8]
mov dword [0x00430e1c], eax
mov eax, dword [rsp + 0x84]
imul eax, eax, 0x100
add eax, dword [rsp + 0x88]
mov word [rsp + 0x120], ax
movsx eax, word [rsp + 0x120]
cmp eax, 0x35a
jl 0x40e9d9
mov dword [rsp + 0x1bc], 1
jmp 0x40e9e4
mov dword [rsp + 0x1bc], 0
mov eax, dword [rsp + 0x1bc]
mov dword [0x004320e0], eax
cmp dword [0x00430e1c], 0
je 0x40ea11
cmp dword [rsp + 0x84], 4
ja 0x40ea11
mov dword [rsp + 0x1c0], 1
jmp 0x40ea1c
mov dword [rsp + 0x1c0], 0
mov eax, dword [rsp + 0x1c0]
mov dword [0x00431828], eax
cmp dword [0x00430e1c], 0
je 0x40ea49
cmp dword [rsp + 0x84], 6
jb 0x40ea49
mov dword [rsp + 0x1c4], 1
jmp 0x40ea54
mov dword [rsp + 0x1c4], 0
mov eax, dword [rsp + 0x1c4]
mov dword [0x00431264], eax
cmp dword [0x00430e1c], 0
je 0x40ea80
call fcn.0040cb70
test eax, eax
je 0x40ea80
mov dword [rsp + 0x1c8], 1
jmp 0x40ea8b
mov dword [rsp + 0x1c8], 0
mov eax, dword [rsp + 0x1c8]
mov dword [0x004320ac], eax
cmp dword [0x00430e1c], 0
je 0x40eabd
movsx eax, word [rsp + 0x120]
cmp eax, 0x501
jl 0x40eabd
mov dword [rsp + 0x1cc], 1
jmp 0x40eac8
mov dword [rsp + 0x1cc], 0
mov eax, dword [rsp + 0x1cc]
mov dword [0x00431f84], eax
cmp dword [0x00431f84], 0
jne 0x40eb12
mov ecx, 0x8001
call qword [sym.imp.KERNEL32.dll_SetErrorMode]
lea rcx, str.UxTheme.dll
call fcn.00415800
mov qword [rsp + 0x1b0], rax
cmp qword [rsp + 0x1b0], 0
je 0x40eb12
mov dword [0x00431f84], 1
call fcn.0040cf10
mov dword [0x00431f80], eax
mov dword [0x0042ea10], 0
call fcn.0040ee30
test eax, eax
jne 0x40eb56
mov r9d, InitCommonControls
lea r8, str.Error
lea rdx, str.Error_loading_cabinet.dll_to_unpack_cab_files_
xor ecx, ecx
call qword [sym.imp.USER32.dll_MessageBoxA]
mov eax, 1
jmp 0x40ee0d
mov rax, qword [rsp + 0x1f0]
mov qword [0x00430640], rax
call fcn.004124b0
call qword [sym.imp.COMCTL32.dll_InitCommonControls]
lea rdx, str.Total_Commander
lea rcx, [0x00430d00]
call fcn.004164f0
mov byte [0x00430840], 0
lea rdx, [0x00427648]
lea rcx, [0x00430ac0]
call fcn.004164f0
call fcn.0040cf60
test eax, eax
je 0x40ebb0
mov eax, 1
jmp 0x40ee0d
cmp qword [rsp + 0x1f8], 0
jne 0x40eca8
mov dword [rsp + 0x160], InitCommonControls
mov rax, qword [rsp + 0x1f0]
mov qword [rsp + 0x178], rax
mov edx, 0x7f00
xor ecx, ecx
call qword [sym.imp.USER32.dll_LoadCursorA]
mov qword [rsp + 0x188], rax
mov qword [rsp + 0x190], 0
lea rdx, [0x00427638]
mov rcx, qword [rsp + 0x1f0]
call qword [sym.imp.USER32.dll_LoadIconA]
mov qword [rsp + 0x180], rax
mov rax, qword [str.cginstallclass32]
mov qword [rsp + 0x1a0], rax
lea rax, [0x0040c8c0]
mov qword [rsp + 0x168], rax
mov dword [rsp + 0x170], 0
mov dword [rsp + 0x174], 0
mov qword [rsp + 0x190], 0
mov qword [rsp + 0x198], 0
lea rcx, [rsp + 0x160]
call qword [sym.imp.USER32.dll_RegisterClassA]
movzx eax, ax
test eax, eax
jne 0x40eca8
cmp dword [0x0042ea04], 0
jne 0x40ec9e
mov r9d, InitCommonControls
mov r8, qword [section..data]
lea rdx, str.Error_starting_program_
xor ecx, ecx
call qword [sym.imp.USER32.dll_MessageBoxA]
mov eax, 0xff
jmp 0x40ee0d
lea rax, str.Arial
mov qword [rsp + 0x68], rax
mov dword [rsp + 0x60], 0x22
mov dword [rsp + 0x58], 2
mov dword [rsp + 0x50], 0
mov dword [rsp + 0x48], 0
mov dword [rsp + 0x40], 1
mov dword [rsp + 0x38], 0
mov dword [rsp + 0x30], 0
mov dword [rsp + 0x28], 0
mov dword [rsp + 0x20], 0x2bc
xor r9d, r9d
xor r8d, r8d
xor edx, edx
mov ecx, 0x14
call qword [sym.imp.GDI32.dll_CreateFontA]
mov qword [0x00431830], rax
mov qword [rsp + 0x58], 0
mov rax, qword [rsp + 0x1f0]
mov qword [rsp + 0x50], rax
mov qword [rsp + 0x48], 0
mov qword [rsp + 0x40], 0
mov dword [rsp + 0x38], 0x50
mov dword [rsp + 0x30], 0x50
mov dword [rsp + 0x28], 0x1f4
mov dword [rsp + 0x20], 0x1f4
mov r9d, 0xcf0000
mov r8, qword [section..data]
mov rdx, qword [str.cginstallclass32]
xor ecx, ecx
call qword [sym.imp.USER32.dll_CreateWindowExA]
mov qword [0x00430768], rax
cmp qword [0x00430768], 0
je 0x40edeb
cmp dword [0x0042ea08], 0
jne 0x40edb3
mov edx, 3
mov rcx, qword [0x00430768]
call qword [sym.imp.USER32.dll_ShowWindow]
mov rcx, qword [0x00430768]
call qword [sym.imp.USER32.dll_UpdateWindow]
xor r9d, r9d
xor r8d, r8d
xor edx, edx
lea rcx, [rsp + 0x128]
call qword [sym.imp.USER32.dll_GetMessageA]
test eax, eax
je 0x40edeb
lea rcx, [rsp + 0x128]
call qword [sym.imp.USER32.dll_TranslateMessage]
lea rcx, [rsp + 0x128]
call qword [sym.imp.USER32.dll_DispatchMessageA]
jmp 0x40edb3
mov rcx, qword [0x00431830]
call qword [sym.imp.GDI32.dll_DeleteObject]
call fcn.00412530
call fcn.00411900
call fcn.00412eb0
mov eax, dword [0x0042ea10]
mov rcx, qword [rsp + 0x1d0]
xor rcx, rsp
call fcn.00416330
add rsp, 0x1e0
pop rdi
ret