Function at 0x60c768
Capabilities:
Check os version

Disassembly:
push ebp
mov ebp, esp
add esp, 0xfffffe88
xor edx, edx
push ebx
push esi
push edi
mov dword [ebp - 0x3c], eax
mov dword [ebp - 0x30], 0x6f40b4
mov dword [ebp - 0x2c], esp
mov eax, 0x56498f
mov dword [ebp - 0x34], eax
mov word [ebp - 0x28], 0
mov dword [ebp - 0x1c], edx
mov ecx, dword fs:[0]
mov dword [ebp - 0x38], ecx
lea eax, [ebp - 0x38]
mov dword fs:[0], eax
call fcn.0054f368
mov ebx, 0x2710
call fcn.0054f3cc
mov edi, eax
test edi, edi
je 0x60c8be
mov ebx, 0x2710
push 0
push 1
push edi
mov eax, dword [edi]
call dword [eax + 0x58]
mov dword [ebp - 0x44], 0xfa
call fcn.006a691e
mov dword [ebp - 0x48], eax
call fcn.006a691e
mov dword [ebp - 0x40], eax
xor edx, edx
mov dword [ebp - 0x4c], edx
jmp 0x60c862
xor ecx, ecx
mov dword [ebp - 0x50], ecx
lea eax, [ebp - 0x50]
push eax
push edi
mov edx, dword [edi]
call dword [edx + 0x44]
cmp dword [ebp - 0x50], 0
je 0x60c80f
call fcn.006a691e
sub eax, dword [ebp - 0x40]
cmp eax, dword [ebp - 0x44]
jb 0x60c7f2
call fcn.006a691e
mov esi, eax
call fcn.006a691e
sub eax, esi
cmp eax, 2
jb 0x60c816
mov dword [ebp - 0x50], 1
lea eax, [ebp - 0x50]
push eax
push edi
mov edx, dword [edi]
call dword [edx + 0x44]
cmp dword [ebp - 0x50], 0
jne 0x60c846
call fcn.006a691e
sub eax, dword [ebp - 0x40]
cmp eax, dword [ebp - 0x44]
jb 0x60c829
call fcn.006a691e
cmp dword [ebp - 0x4c], 2
jle 0x60c85c
mov edx, eax
sub edx, dword [ebp - 0x48]
cmp ebx, edx
jbe 0x60c85c
mov ebx, edx
mov dword [ebp - 0x48], eax
inc dword [ebp - 0x4c]
call fcn.006a691e
sub eax, dword [ebp - 0x40]
cmp eax, dword [ebp - 0x44]
jb 0x60c7ed
mov word [ebp - 0x28], 8
lea eax, [ebp - 4]
mov edx, ebx
call fcn.0040a278
mov edx, eax
inc dword [ebp - 0x1c]
lea ecx, [ebp - 8]
mov eax, str.Rough_VSync_interval_measured_by_GetVerticalBlankStatus___:
call fcn.0040b19c
lea eax, [ebp - 8]
inc dword [ebp - 0x1c]
call fcn.005beef8
dec dword [ebp - 0x1c]
mov eax, dword [ebp - 8]
test eax, eax
je 0x60c8af
call fcn.00408920
dec dword [ebp - 0x1c]
mov eax, dword [ebp - 4]
test eax, eax
je 0x60c8be
call fcn.00408920
test edi, edi
je 0x60c8d0
cmp ebx, 6
jb 0x60c8d0
cmp ebx, 0x42
jbe 0x60c9d2
xor ebx, ebx
push 0x94
push 0
lea eax, [ebp - 0xe4]
push eax
call fcn.0056420c
add esp, 0xc
lea edx, [ebp - 0xe4]
mov dword [ebp - 0xe4], 0x94
push edx
call sub.KERNEL32.DLL_GetVersionExA
cmp dword [ebp - 0xd4], 2
jne 0x60c924
push 0
call sub.USER32.DLL_GetDC
mov esi, eax
push 0x74
push esi
call sub.GDI32.DLL_GetDeviceCaps
mov ebx, eax
push esi
push 0
call sub.USER32.DLL_ReleaseDC
jmp 0x60c974
cmp dword [ebp - 0xe0], 4
jne 0x60c974
cmp dword [ebp - 0xdc], 0xa
jb 0x60c974
push 0x94
push 0
lea eax, [ebp - 0x178]
push eax
call fcn.0056420c
add esp, 0xc
mov word [ebp - 0x154], 0x94
mov word [ebp - 0x152], 0
lea edx, [ebp - 0x178]
push edx
push 0xfffffffffffffffe
push 0
call sub.USER32.DLL_EnumDisplaySettingsA
mov ebx, dword [ebp - 0x100]
test ebx, ebx
je 0x60c985
mov eax, 0x3e8
xor edx, edx
div ebx
mov ebx, eax
jmp 0x60c987
xor ebx, ebx
mov word [ebp - 0x28], 0x2c
lea eax, [ebp - 0xc]
mov edx, ebx
call fcn.0040a278
mov edx, eax
inc dword [ebp - 0x1c]
lea ecx, [ebp - 0x10]
mov eax, str.Rough_VSync_interval_read_from_API_:
call fcn.0040b19c
lea eax, [ebp - 0x10]
inc dword [ebp - 0x1c]
call fcn.005beef8
dec dword [ebp - 0x1c]
mov eax, dword [ebp - 0x10]
test eax, eax
je 0x60c9c3
call fcn.00408920
dec dword [ebp - 0x1c]
mov eax, dword [ebp - 0xc]
test eax, eax
je 0x60c9d2
call fcn.00408920
cmp ebx, 6
jb 0x60c9dc
cmp ebx, 0x42
jbe 0x60ca0e
mov word [ebp - 0x28], 0x50
mov eax, str.Rough_VSync_interval_still_seems_wrong__assuming_default_value__16_
call fcn.00408c54
mov dword [ebp - 0x14], eax
lea eax, [ebp - 0x14]
inc dword [ebp - 0x1c]
call fcn.005beef8
dec dword [ebp - 0x1c]
mov eax, dword [ebp - 0x14]
test eax, eax
je 0x60ca09
call fcn.00408920
mov ebx, 0x10
mov eax, dword [ebp - 0x3c]
mov dword [eax + 0x38], ebx
mov edx, dword [ebp - 0x38]
mov dword fs:[0], edx
pop edi
pop esi
pop ebx
mov esp, ebp
pop ebp
ret