Function at 0x40f100
Capabilities:
Check os version
Create thread

Disassembly:
push 0x184
mov eax, 0x4645b8
call fcn.004414e8
mov esi, ecx
cmp dword [0x4893c8], 0
jne 0x40f127
cmp byte [0x4893c5], 0
je 0x40f40c
lea eax, [ebp - 0x184]
push eax
mov dword [ebp - 0x184], 0x114
call dword [sym.imp.KERNEL32.dll_GetVersionExW]
mov ecx, esi
call fcn.0040ce42
mov eax, dword [ebp - 0x180]
xor edx, edx
xor ecx, ecx
inc edx
mov bl, cl
cmp eax, 5
ja 0x40f161
jne 0x40f16e
cmp dword [ebp - 0x17c], ecx
jbe 0x40f16e
cmp dword [ebp - 0x174], 2
movzx ebx, bl
cmove ebx, edx
cmp byte [0x4893c5], cl
je 0x40f36c
mov edi, 0x4745e4
cmp byte [0x489238], cl
jne 0x40f18f
cmp byte [0x48a884], cl
je 0x40f202
push ecx
lea eax, [ebp - 0x185]
push eax
push str.....SharedSetupIsPreReqDlg.cpp
lea ecx, [ebp - 0x70]
mov dword [ebp - 0x70], edi
mov dword [ebp - 0x48], 0x46ef78
call fcn.00403400
and dword [ebp - 4], 0
push 0
lea eax, [ebp - 0x185]
push eax
push str.StartStopProgress___Embedded
lea ecx, [ebp - 0x40]
mov dword [ebp - 0x40], edi
mov dword [ebp - 0x18], 0x46ef78
call fcn.00403400
push 0x339
lea eax, [ebp - 0x70]
push eax
lea eax, [ebp - 0x40]
push eax
mov byte [ebp - 4], 1
call fcn.00402270
lea ecx, [ebp - 0x40]
call fcn.00401500
or dword [ebp - 4], 0xffffffff
lea ecx, [ebp - 0x70]
call fcn.00401500
mov eax, dword [ebp - 0x180]
cmp eax, 6
sbb al, al
and al, bl
mov ecx, esi
mov byte [ebp - 0x185], al
call fcn.0040be95
mov edi, eax
test edi, edi
je 0x40f40c
cmp byte [ebp - 0x185], 0
je 0x40f2d4
cmp byte [0x489238], 0
jne 0x40f23f
cmp byte [0x48a884], 0
je 0x40f2b5
push 0
lea eax, [ebp - 0x185]
push eax
mov ebx, 0x4745e4
push str.....SharedSetupIsPreReqDlg.cpp
lea ecx, [ebp - 0x40]
mov dword [ebp - 0x40], ebx
mov dword [ebp - 0x18], 0x46ef78
call fcn.00403400
push 0
lea eax, [ebp - 0x185]
push eax
push str.StartStopProgress___Embedded_Looping
lea ecx, [ebp - 0x70]
mov dword [ebp - 4], 2
mov dword [ebp - 0x70], ebx
mov dword [ebp - 0x48], 0x46ef78
call fcn.00403400
push 0x341
lea eax, [ebp - 0x40]
push eax
lea eax, [ebp - 0x70]
push eax
mov byte [ebp - 4], 3
call fcn.00402270
lea ecx, [ebp - 0x70]
call fcn.00401500
or dword [ebp - 4], 0xffffffff
lea ecx, [ebp - 0x40]
call fcn.00401500
xor eax, eax
cmp byte [ebp + 8], al
push 0
sete al
add eax, 3
push eax
push 0x111
push edi
call dword [sym.imp.USER32.dll_SendMessageW]
jmp 0x40f356
cmp byte [ebp + 8], 0
je 0x40f40c
mov eax, dword [esi + 0xe8]
mov dword [ebp - 0x190], str.....SharedSetupIsPreReqDlg.cpp
push dword [eax + 0xc]
lea eax, [ebp - 0x190]
push dword [esi + 0x1a4]
mov dword [ebp - 0x18c], 0x349
push str.StartStopProgress___Fallback____d_of__d
push eax
call fcn.0040b2fa
mov eax, dword [esi + 0xe8]
mov ebx, dword [sym.imp.USER32.dll_SendMessageW]
mov eax, dword [eax + 0xc]
add esp, 0x10
inc eax
push eax
push 1
push 0x406
push edi
call ebx
cmp eax, 2
je 0x40f35f
push 0
push 0
push 0x402
push edi
call ebx
cmp eax, 2
je 0x40f35f
push 0
push dword [esi + 0x1a4]
push 0x402
push edi
call ebx
cmp eax, 2
jne 0x40f40c
push edi
mov ecx, esi
call fcn.0040d6c5
jmp 0x40f40c
cmp byte [ebp + 8], cl
je 0x40f3c4
test bl, bl
je 0x40f3a6
push 0xfffffffffffffff0
push dword [0x4893c8]
call dword [sym.imp.USER32.dll_GetWindowLongW]
mov dword [esi + 0x19c], eax
or eax, 8
push eax
push 0xfffffffffffffff0
push dword [0x4893c8]
call dword [sym.imp.USER32.dll_SetWindowLongW]
push 0x64
push 1
push 0x40a
jmp 0x40f400
lea eax, [esi + 0x198]
push eax
push ecx
push esi
push 0x40d5b1
push ecx
push ecx
call dword [sym.imp.KERNEL32.dll_CreateThread]
mov dword [esi + 0x194], eax
jmp 0x40f40c
test bl, bl
je 0x40f3f9
cmp dword [esi + 0x19c], ecx
je 0x40f3f9
push ecx
push ecx
push 0x40a
push dword [0x4893c8]
call dword [sym.imp.USER32.dll_SendMessageW]
push dword [esi + 0x19c]
push 0xfffffffffffffff0
push dword [0x4893c8]
call dword [sym.imp.USER32.dll_SetWindowLongW]
jmp 0x40f40c
push ecx
push ecx
push 0x402
push dword [0x4893c8]
call dword [sym.imp.USER32.dll_SendMessageW]
call fcn.00441497
ret 4