Function at 0x451100
Capabilities:
Check os version

Disassembly:
push ebp
mov ebp, esp
push 0xffffffffffffffff
push 0x4d85c0
mov eax, dword fs:[0]
push eax
sub esp, 0x1e4
mov eax, dword [0x56b06c]
xor eax, ebp
mov dword [ebp - 0x10], eax
push ebx
push esi
push edi
push eax
lea eax, [ebp - 0xc]
mov dword fs:[0], eax
mov ebx, ecx
lea eax, [ebp - 0x1f0]
push eax
call fcn.00451fc0
mov ecx, dword [eax]
mov edx, dword [eax + 4]
mov dword [eax], 0
mov dword [eax + 4], 0
mov dword [ebx + 0x60], ecx
mov esi, dword [ebx + 0x64]
mov dword [ebx + 0x64], edx
or edi, 0xffffffff
mov dword [ebp - 4], 0
test esi, esi
je 0x451184
mov eax, edi
lock xadd dword [esi + 4], eax
jne 0x451184
mov eax, dword [esi]
mov ecx, esi
call dword [eax]
mov eax, edi
lock xadd dword [esi + 8], eax
jne 0x451184
mov eax, dword [esi]
mov ecx, esi
call dword [eax + 4]
mov dword [ebp - 4], 1
mov esi, dword [ebp - 0x1ec]
test esi, esi
je 0x4511b3
mov eax, edi
lock xadd dword [esi + 4], eax
jne 0x4511b3
mov eax, dword [esi]
mov ecx, esi
call dword [eax]
lock xadd dword [esi + 8], edi
dec edi
jne 0x4511b3
mov eax, dword [esi]
mov ecx, esi
call dword [eax + 4]
push 0
mov dword [ebp - 4], 0xffffffff
push dword [0x572da8]
mov ecx, dword [0x56bd7c]
mov eax, dword [0x56bd84]
mov edx, dword [0x56bd78]
sub eax, ecx
push 0
push dword [ebx + 4]
push eax
mov eax, dword [0x56bd80]
sub eax, edx
push eax
push ecx
push edx
push 0x56000008
push 0
push str.msctls_progress32
push 0
call dword [sym.imp.USER32.dll_CreateWindowExW]
mov edi, dword [sym.imp.USER32.dll_SendMessageW]
push 0
push 1
push 0x40a
push eax
mov dword [ebx + 0x7c], eax
call edi
push 0
mov byte [ebx + 0x78], 1
push dword [0x572da8]
mov ecx, dword [0x56bd7c]
mov eax, dword [0x56bd84]
mov edx, dword [0x56bd78]
sub eax, ecx
push 0
push dword [ebx + 4]
push eax
mov eax, dword [0x56bd80]
sub eax, edx
push eax
push ecx
push edx
push 0x56000000
push 0
push 0x54b284
push 0
call dword [sym.imp.USER32.dll_CreateWindowExW]
push 0
push 0
push 0x31
mov dword [ebx + 0x80], eax
push dword [ebx + 4]
call edi
push 1
push eax
push 0x30
push dword [ebx + 0x80]
call edi
push 0x110
lea eax, [ebp - 0x1e4]
mov dword [ebp - 0x1e8], 0x114
push 0
push eax
call fcn.004a9e70
add esp, 0xc
lea eax, [ebp - 0x1e8]
push eax
call dword [sym.imp.KERNEL32.dll_GetVersionExW]
mov esi, dword [sym.imp.GDI32.dll_GetDeviceCaps]
test eax, eax
je 0x451357
cmp dword [ebp - 0x1e4], 6
jb 0x451357
push 0x5c
lea eax, [ebp - 0xd0]
push 0
push eax
call fcn.004a9e70
lea edi, [ebx + 0x9c]
add esp, 0xc
cmp byte [edi], 0
jne 0x45130d
push 0
call dword [sym.imp.USER32.dll_GetDC]
mov dword [ebp - 0x1ec], eax
test eax, eax
je 0x45130a
push 0x58
push eax
call esi
push 0x5a
push dword [ebp - 0x1ec]
mov dword [edi + 4], eax
call esi
push dword [ebp - 0x1ec]
mov dword [edi + 8], eax
push 0
call dword [sym.imp.USER32.dll_ReleaseDC]
mov byte [edi], 1
push 0x60
push dword [edi + 8]
push 0x12
call dword [sym.imp.KERNEL32.dll_MulDiv]
neg eax
push str.Segoe_UI
mov dword [ebp - 0xd0], eax
lea eax, [ebp - 0xb4]
push 0x20
push eax
call fcn.004bada1
add esp, 0xc
lea eax, [ebp - 0xd0]
push eax
call dword [sym.imp.GDI32.dll_CreateFontIndirectW]
mov esi, eax
test esi, esi
jne 0x4513e6
mov esi, dword [sym.imp.GDI32.dll_GetDeviceCaps]
jmp 0x45135d
lea edi, [ebx + 0x9c]
push 0x5c
lea eax, [ebp - 0x70]
push 0
push eax
call fcn.004a9e70
add esp, 0xc
cmp byte [edi], 0
jne 0x4513aa
push 0
call dword [sym.imp.USER32.dll_GetDC]
mov dword [ebp - 0x1ec], eax
test eax, eax
je 0x4513a7
push 0x58
push eax
call esi
push 0x5a
push dword [ebp - 0x1ec]
mov dword [edi + 4], eax
call esi
push dword [ebp - 0x1ec]
mov dword [edi + 8], eax
push 0
call dword [sym.imp.USER32.dll_ReleaseDC]
mov byte [edi], 1
push 0x60
push dword [edi + 8]
push 0x12
call dword [sym.imp.KERNEL32.dll_MulDiv]
neg eax
mov byte [ebp - 0x56], 5
push 0x54b2ac
mov dword [ebp - 0x70], eax
lea eax, [ebp - 0x54]
push 0x20
push eax
mov dword [ebp - 0x60], 0x1f4
call fcn.004bada1
add esp, 0xc
lea eax, [ebp - 0x70]
push eax
call dword [sym.imp.GDI32.dll_CreateFontIndirectW]
mov esi, eax
mov eax, dword [ebx + 0xa8]
test eax, eax
je 0x4513fb
cmp eax, esi
je 0x4513fb
push eax
call dword [sym.imp.GDI32.dll_DeleteObject]
push 0
mov dword [ebx + 0xa8], esi
push dword [0x572da8]
mov ecx, dword [0x56bd7c]
mov eax, dword [0x56bd84]
mov edx, dword [0x56bd78]
sub eax, ecx
push 0
push dword [ebx + 4]
push eax
mov eax, dword [0x56bd80]
sub eax, edx
push eax
push ecx
push edx
push 0x56000000
push 0
push 0x54b284
push 0
call dword [sym.imp.USER32.dll_CreateWindowExW]
push 1
mov dword [ebx + 0x58], eax
push dword [ebx + 0xa8]
push 0x30
push eax
call dword [sym.imp.USER32.dll_SendMessageW]
push 0x110
lea eax, [ebp - 0x1e4]
mov dword [ebp - 0x1e8], 0x114
push 0
push eax
call fcn.004a9e70
add esp, 0xc
lea eax, [ebp - 0x1e8]
push eax
call dword [sym.imp.KERNEL32.dll_GetVersionExW]
test eax, eax
je 0x45152e
cmp dword [ebp - 0x1e4], 6
jb 0x45152e
push 0x5c
lea eax, [ebp - 0xd0]
push 0
push eax
call fcn.004a9e70
add esp, 0xc
cmp byte [edi], 0
jne 0x4514ec
push 0
call dword [sym.imp.USER32.dll_GetDC]
mov dword [ebp - 0x1ec], eax
test eax, eax
je 0x4514e9
mov esi, dword [sym.imp.GDI32.dll_GetDeviceCaps]
push 0x58
push eax
call esi
push 0x5a
push dword [ebp - 0x1ec]
mov dword [edi + 4], eax
call esi
push dword [ebp - 0x1ec]
mov dword [edi + 8], eax
push 0
call dword [sym.imp.USER32.dll_ReleaseDC]
mov byte [edi], 1
push 0x60
push dword [edi + 8]
push 0xd
call dword [sym.imp.KERNEL32.dll_MulDiv]
neg eax
push str.Segoe_UI_Light
mov dword [ebp - 0xd0], eax
lea eax, [ebp - 0xb4]
push 0x20
push eax
call fcn.004bada1
add esp, 0xc
lea eax, [ebp - 0xd0]
push eax
call dword [sym.imp.GDI32.dll_CreateFontIndirectW]
mov esi, eax
test esi, esi
jne 0x4515b2
push 0x5c
lea eax, [ebp - 0x70]
push 0
push eax
call fcn.004a9e70
add esp, 0xc
cmp byte [edi], 0
jne 0x451581
push 0
call dword [sym.imp.USER32.dll_GetDC]
mov dword [ebp - 0x1ec], eax
test eax, eax
je 0x45157e
mov esi, dword [sym.imp.GDI32.dll_GetDeviceCaps]
push 0x58
push eax
call esi
push 0x5a
push dword [ebp - 0x1ec]
mov dword [edi + 4], eax
call esi
push dword [ebp - 0x1ec]
mov dword [edi + 8], eax
push 0
call dword [sym.imp.USER32.dll_ReleaseDC]
mov byte [edi], 1
push 0x60
push dword [edi + 8]
push 0xd
call dword [sym.imp.KERNEL32.dll_MulDiv]
neg eax
push 0x54b2ac
mov dword [ebp - 0x70], eax
lea eax, [ebp - 0x54]
push 0x20
push eax
call fcn.004bada1
add esp, 0xc
lea eax, [ebp - 0x70]
push eax
call dword [sym.imp.GDI32.dll_CreateFontIndirectW]
mov esi, eax
mov eax, dword [ebx + 0xac]
test eax, eax
je 0x4515c7
cmp eax, esi
je 0x4515c7
push eax
call dword [sym.imp.GDI32.dll_DeleteObject]
push 0
mov dword [ebx + 0xac], esi
push dword [0x572da8]
mov ecx, dword [0x56bd7c]
mov eax, dword [0x56bd84]
mov edx, dword [0x56bd78]
sub eax, ecx
push 0
push dword [ebx + 4]
push eax
mov eax, dword [0x56bd80]
sub eax, edx
push eax
push ecx
push edx
push 0x56000000
push 0
push 0x54b284
push 0
call dword [sym.imp.USER32.dll_CreateWindowExW]
push 1
mov dword [ebx + 0x5c], eax
push dword [ebx + 0xac]
push 0x30
push eax
call dword [sym.imp.USER32.dll_SendMessageW]
mov ecx, ebx
call fcn.004521b0
push 0
mov ecx, ebx
call fcn.004525f0
lea eax, [ebp - 0x1f0]
mov ecx, ebx
push eax
call fcn.00451820
push ecx
push dword [ebp - 0x1ec]
lea ecx, [ebx + 4]
push dword [ebp - 0x1f0]
call fcn.00452ec0
push 0
push 0x2710
push 0x65
push dword [ebx + 4]
call dword [sym.imp.USER32.dll_SetTimer]
xor eax, eax
mov ecx, dword [ebp - 0xc]
mov dword fs:[0], ecx
pop ecx
pop edi
pop esi
pop ebx
mov ecx, dword [ebp - 0x10]
xor ecx, ebp
call fcn.0048358b
mov esp, ebp
pop ebp
ret 0x10