Function at 0x40e3b0
Capabilities:
Check os version
Create process on windows
Get common file path

Disassembly:
sub esp, 0xa8
mov eax, dword [0x4e86e0]
xor eax, esp
mov dword [esp + 0xa4], eax
push esi
push edi
mov esi, ecx
call fcn.00407e80
push 0x9c
lea eax, [esp + 0x14]
push 0
push eax
call fcn.00491b30
add esp, 0xc
lea ecx, [esp + 0x10]
push ecx
mov dword [esp + 0x14], 0x9c
call dword [sym.imp.KERNEL32.dll_GetVersionExA]
mov eax, dword [esp + 0x20]
sub eax, 1
push 0x4ea2c0
push 0x200
je 0x40e40f
call dword [sym.imp.KERNEL32.dll_GetTempPathA]
jmp 0x40e415
call dword [sym.imp.KERNEL32.dll_GetCurrentDirectoryA]
mov edx, dword [esi + 0xb8]
mov dword [edx + 0xd74], 0x6a
mov eax, dword [esi + 0xb8]
mov dword [eax + 0xd78], 0x6b
mov ecx, dword [esi + 0xb8]
mov dword [ecx + 0xd7c], 0x6c
mov edx, dword [esi + 0xb8]
push 1
lea eax, [esp + 0xc]
push eax
mov dword [edx + 0xd80], 0x6d
mov ecx, dword [esi + 0xb8]
push 0x4ea2c0
call fcn.00422060
test eax, eax
mov edi, dword [sym.imp.USER32.dll_MessageBoxA]
jne 0x40e4be
cmp dword [esi + 0xe0], 0
jne 0x40e531
push 0x34
push str.CPU_Z_Driver_Error
push str.An_error_occured_when_opening_the_driver._nDo_you_want_to_display_the_error_log_file__
push 0
call edi
cmp eax, 6
jne 0x40e531
mov ecx, dword [esi + 0xb8]
push 1
push 0
push 0
add ecx, 0xb70
push ecx
push str.open
push 0
call dword [sym.imp.SHELL32.dll_ShellExecuteA]
jmp 0x40e531
mov ecx, dword [esi + 0xb8]
push 0x7d0
lea edx, [esp + 0x10]
push edx
call fcn.00421de0
test eax, eax
je 0x40e531
mov ecx, dword [esi + 0xb8]
lea eax, [ecx + 0xd70]
push eax
call fcn.00422320
mov ecx, dword [esi + 0xb8]
cmp dword [ecx + 0xd70], 0x131
je 0x40e52c
push 0x30
push str.Driver_Error
push str.A_previous_version_of_the_device_driver_is_already_running._This_program_requires_version_1.29_and_above.
push 0
call dword [sym.imp.USER32.dll_MessageBoxA]
mov ecx, dword [esi + 0xb8]
call fcn.00421eb0
mov ecx, dword [esi + 0xb8]
push 1
call fcn.00421d50
jmp 0x40e632
call fcn.00421eb0
mov ecx, esi
call fcn.00408060
cmp dword [esi + 0xe0], 0
je case.default.0x40e557
mov eax, dword [esi + 0xe4]
add eax, 0xffffffff
cmp eax, 3
ja case.default.0x40e557
jmp dword [eax*4 + 0x40e670]
push 0x4b0854
push 0x4ea4c0
push 0x4ea5c4
call fcn.0049176c
add esp, 0xc
cmp dword [0x4ea5c4], 0
je case.default.0x40e557
mov ecx, esi
call fcn.004085e0
mov ecx, dword [0x4ea5c4]
push ecx
call fcn.0049162c
add esp, 4
jmp case.default.0x40e557
push 0x4b0854
push 0x4ea4c0
push 0x4ea5c4
call fcn.0049176c
add esp, 0xc
cmp dword [0x4ea5c4], 0
je case.default.0x40e557
mov ecx, esi
call fcn.0040a410
mov edx, dword [0x4ea5c4]
push edx
call fcn.0049162c
add esp, 4
jmp case.default.0x40e557
mov ecx, esi
call fcn.00408bf0
jmp case.default.0x40e557
mov ecx, dword [esi + 0xb8]
push 0x7d0
lea eax, [esp + 0xc]
push eax
call fcn.00421de0
test eax, eax
je case.default.0x40e557
mov ecx, dword [esi + 0xbc]
push 0
call fcn.0043c940
mov ecx, dword [esi + 0xac]
push ecx
mov ecx, eax
call fcn.0043a5d0
mov ecx, dword [esi + 0xb8]
call fcn.00421eb0
push 0x30
push str.CPU_Z
push str.Core_mask_set__please_restart_Windows_to_validate.
push 0
call edi
call fcn.00407e80
mov eax, dword [0x4ea5cc]
test eax, eax
pop edi
pop esi
je 0x40e659
cmp dword [0x4ea5d4], 0
je 0x40e659
mov edx, dword [eax + 0x20]
push 0
push 0
push 0x41f
push edx
call dword [sym.imp.USER32.dll_SendMessageA]
mov ecx, dword [esp + 0xa4]
xor ecx, esp
call fcn.00490dce
add esp, 0xa8
ret