Function at 0x422250
Capabilities:
Check os version

Disassembly:
push ebp
mov ebp, esp
push 0xffffffffffffffff
push 0x4b8afa
mov eax, dword fs:[0]
push eax
sub esp, 0x12c
mov eax, dword [0x4f52c0]
xor eax, ebp
mov dword [ebp - 0x10], eax
push ebx
push esi
push eax
lea eax, [ebp - 0xc]
mov dword fs:[0], eax
mov dword [edi], vtable.CInstallControl.0
mov eax, dword [0x4f4f18]
mov edx, dword [eax + 0xc]
mov ecx, 0x4f4f18
mov dword [ebp - 0x12c], edi
call edx
add eax, 0x10
mov dword [edi + 0x54], eax
xor ebx, ebx
mov dword [ebp - 4], ebx
mov eax, dword [0x4f4f18]
mov edx, dword [eax + 0xc]
mov ecx, 0x4f4f18
call edx
add eax, 0x10
mov dword [edi + 0x58], eax
mov byte [ebp - 4], 1
mov eax, dword [0x4f4f18]
mov edx, dword [eax + 0xc]
mov ecx, 0x4f4f18
call edx
add eax, 0x10
mov dword [edi + 0x5c], eax
mov byte [ebp - 4], 2
mov eax, dword [0x4f4f18]
mov edx, dword [eax + 0xc]
mov ecx, 0x4f4f18
call edx
add eax, 0x10
mov dword [edi + 0x60], eax
mov byte [ebp - 4], 3
mov eax, dword [0x4f4f18]
mov edx, dword [eax + 0xc]
mov ecx, 0x4f4f18
call edx
add eax, 0x10
mov dword [edi + 0x64], eax
mov byte [ebp - 4], 4
lea esi, [edi + 0x7c]
push 8
mov dword [esi], ebx
call fcn.0049948f
add esp, 4
cmp eax, ebx
je 0x4224e0
mov dword [esi], eax
mov dword [eax + 4], ebx
xor ecx, ecx
mov dword [eax], ecx
mov eax, dword [esi]
mov dword [eax], esi
mov dword [esi + 4], ebx
mov dword [esi + 8], ebx
mov dword [esi + 0xc], ebx
mov dword [esi + 0x10], ebx
lea eax, [edi + 0x94]
push 0x1388
push eax
call dword [sym.imp.KERNEL32.dll_InitializeCriticalSectionAndSpinCount]
mov dword [edi + 0xac], vtable.CSHManage.0
mov byte [ebp - 4], 7
mov edx, dword [0x4f4f18]
mov eax, dword [edx + 0xc]
mov ecx, 0x4f4f18
call eax
add eax, 0x10
mov dword [edi + 0xb0], eax
mov dword [edi + 0xb4], ebx
mov dword [edi + 0xb8], ebx
mov dword [edi + 0xbc], ebx
lea ecx, [edi + 0xcc]
push ecx
mov byte [ebp - 4], 9
call fcn.004439c0
mov dword [edi + 0x1a0], ebx
mov dword [edi + 0x1a4], ebx
mov dword [edi + 0x1a8], ebx
mov byte [ebp - 4], 0xb
mov edx, dword [0x4f4f18]
mov eax, dword [edx + 0xc]
mov ecx, 0x4f4f18
call eax
add eax, 0x10
mov dword [edi + 0x1b4], eax
mov cl, byte [ebp + 8]
mov byte [ebp - 4], 0xc
push 0x4c8a90
lea eax, [edi + 0x54]
push eax
mov byte [edi + 0xc4], cl
mov dword [edi + 0x48], ebx
mov dword [edi + 0x4c], ebx
mov dword [edi + 0x50], ebx
call fcn.00401c50
push 0x4c8a90
lea eax, [edi + 0x60]
push eax
call fcn.00401c50
push 0x4c8a90
lea eax, [edi + 0x64]
push eax
call fcn.00401c50
xor eax, eax
mov dword [edi + 0x6c], eax
mov dword [edi + 0x70], eax
mov dword [edi + 0x74], eax
push 0x4c8a90
lea eax, [edi + 0xb0]
push eax
mov dword [edi + 0x68], 1
call fcn.00401c50
push ebx
push ebx
push ebx
push ebx
call dword [sym.imp.KERNEL32.dll_CreateEventW]
mov dword [edi + 0xc], eax
push ebx
push ebx
push ebx
push ebx
call dword [sym.imp.KERNEL32.dll_CreateEventW]
mov dword [edi + 8], eax
push 0x4c8a90
lea eax, [edi + 0x58]
push eax
mov dword [edi + 0x78], ebx
mov dword [edi + 0x10], ebx
mov dword [edi + 0x14], ebx
mov dword [edi + 0x18], ebx
call fcn.00401c50
push 0x4c8a90
lea eax, [edi + 0x5c]
push eax
call fcn.00401c50
fldz
fst qword [edi + 0x20]
mov dword [edi + 0x40], 1
fst qword [edi + 0x28]
mov dword [edi + 0x44], ebx
fst qword [edi + 0x30]
fstp qword [edi + 0x38]
call fcn.004418c0
lea edx, [ebp - 0x124]
push edx
mov dword [edi + 0xc8], ebx
mov dword [ebp - 0x124], 0x114
call dword [sym.imp.KERNEL32.dll_GetVersionExW]
cmp dword [ebp - 0x120], 6
jne 0x4224bb
mov eax, dword [ebp - 0x11c]
cmp eax, 2
je 0x4224b9
cmp eax, 3
jne 0x4224bb
mov bl, 1
mov byte [edi + 0x1b0], bl
mov eax, edi
mov ecx, dword [ebp - 0xc]
mov dword fs:[0], ecx
pop ecx
pop esi
pop ebx
mov ecx, dword [ebp - 0x10]
xor ecx, ebp
call fcn.0049908b
mov esp, ebp
pop ebp
ret 4
lea eax, [ebp - 0x128]
push eax
lea ecx, [ebp - 0x138]
mov dword [ebp - 0x128], ebx
call fcn.0049932c
push 0x4df88c
lea ecx, [ebp - 0x138]
push ecx
mov dword [ebp - method.std::bad_alloc.virtual_0], vtable.std::bad_alloc.0
call fcn.0049ed6f
int3