Function at 0x689878
Capabilities:
Check os version

Disassembly:
push ebp
mov ebp, esp
add esp, 0xfffffea0
push ebx
push esi
push edi
xor eax, eax
mov dword [ebp - 0x160], eax
mov dword [ebp - 0x15c], eax
mov dword [ebp - 0x158], eax
mov dword [ebp - 0x154], eax
mov dword [ebp - 0x150], eax
mov dword [ebp - 0x14c], eax
mov dword [ebp - 4], eax
mov dword [ebp - 8], eax
xor eax, eax
push ebp
push 0x689d1a
push dword fs:[eax]
mov dword fs:[eax], esp
or edi, 0xffffffff
or esi, 0xffffffff
xor ebx, ebx
lea eax, [ebp - 0x14c]
call fcn.0042ea68
mov eax, dword [ebp - 0x14c]
lea edx, [ebp - 4]
call fcn.004267a8
call fcn.0042ea2c
dec eax
je 0x6898f3
dec eax
je 0x68997b
jmp case.default.0x689b65
call fcn.0042ea54
sub eax, 0xa
jb 0x689909
sub eax, 0x50
jb 0x689935
je 0x689974
jmp case.default.0x689b65
mov eax, dword [ebp - 4]
mov edx, 0x689d38
call fcn.0040b83c
je 0x689927
mov eax, dword [ebp - 4]
mov edx, 0x689d48
call fcn.0040b83c
jne 0x68992e
mov bl, 2
jmp case.default.0x689b65
mov bl, 1
jmp case.default.0x689b65
cmp dword [0x71d420], 0x4005a
jne 0x689948
mov bl, 5
jmp case.default.0x689b65
mov eax, dword [ebp - 4]
mov edx, 0x689d58
call fcn.0040b83c
je 0x689966
mov eax, dword [ebp - 4]
mov edx, 0x689d38
call fcn.0040b83c
jne 0x68996d
mov bl, 4
jmp case.default.0x689b65
mov bl, 3
jmp case.default.0x689b65
mov bl, 5
jmp case.default.0x689b65
call fcn.0042ea40
add eax, 0xfffffffd
cmp eax, 7
ja case.default.0x689b65
jmp dword [eax*4 + 0x689993]
call fcn.0042ea54
dec eax
je 0x6899ca
sub eax, 4
je 0x6899d1
sub eax, 0x2e
je 0x6899d8
jmp case.default.0x689b65
mov bl, 6
jmp case.default.0x689b65
mov bl, 7
jmp case.default.0x689b65
mov bl, 8
jmp case.default.0x689b65
mov bl, 9
jmp case.default.0x689b65
call fcn.0042ea54
sub eax, 1
jb 0x6899fa
je 0x689a01
dec eax
je 0x689a08
jmp case.default.0x689b65
mov bl, 0xa
jmp case.default.0x689b65
mov bl, 0xb
jmp case.default.0x689b65
mov dword [ebp - 0x148], 0x11c
xor eax, eax
mov dword [ebp - 0x2c], eax
lea eax, [ebp - 0x2c]
call fcn.0068a214
push 0x59
call sub.user32.dll_GetSystemMetrics
test eax, eax
je 0x689a31
mov bl, 0xe
jmp case.default.0x689b65
cmp word [ebp - 0x2c], 0
je 0x689a55
lea eax, [ebp - 0x148]
push eax
call sub.KERNEL32.DLL_GetVersionExW
test eax, eax
je 0x689a55
cmp byte [ebp - 0x2e], 1
jne 0x689a55
mov bl, 0xd
jmp case.default.0x689b65
mov bl, 0xc
jmp case.default.0x689b65
call fcn.0042ea54
cmp eax, 2
jne 0x689b53
push 0
lea eax, [ebp - 8]
push eax
mov ecx, 0x689d68
mov edx, 0x689d8c
mov eax, 0x80000002
call fcn.0068cacc
lea edx, [ebp - 0x150]
mov eax, dword [0x715920]
call fcn.004106c0
mov eax, dword [ebp - 0x150]
mov ecx, 1
mov edx, dword [ebp - 8]
call fcn.0040b9d0
dec eax
je 0x689ad0
lea edx, [ebp - 0x154]
mov eax, dword [0x7159fc]
call fcn.004106c0
mov eax, dword [ebp - 0x154]
mov ecx, 1
mov edx, dword [ebp - 8]
call fcn.0040b9d0
dec eax
jne 0x689ada
mov esi, 3
jmp 0x689b5a
lea edx, [ebp - 0x158]
mov eax, dword [0x715ca0]
call fcn.004106c0
mov eax, dword [ebp - 0x158]
mov ecx, 1
mov edx, dword [ebp - 8]
call fcn.0040b9d0
dec eax
je 0x689b26
lea edx, [ebp - 0x15c]
mov eax, dword [0x715d2c]
call fcn.004106c0
mov eax, dword [ebp - 0x15c]
mov ecx, 1
mov edx, dword [ebp - 8]
call fcn.0040b9d0
dec eax
jne 0x689b2d
mov esi, 2
jmp 0x689b5a
call fcn.00689e18
mov edi, eax
cmp edi, 6
jne 0x689b40
mov esi, 4
jmp 0x689b5a
cmp edi, 0xa
jne 0x689b4a
or esi, 0xffffffff
jmp 0x689b5a
call fcn.0042ea54
mov esi, eax
jmp 0x689b5a
call fcn.0042ea54
mov esi, eax
mov eax, esi
cmp eax, 4
ja case.default.0x689b65
jmp dword [eax*4 + 0x689b6c]
mov dword [ebp - 0x148], 0x11c
lea eax, [ebp - 0x148]
push eax
call sub.KERNEL32.DLL_GetVersionExW
test eax, eax
je 0x689ba7
cmp byte [ebp - 0x2e], 1
jne 0x689ba7
mov bl, 0xf
jmp case.default.0x689b65
mov bl, 0x10
jmp case.default.0x689b65
mov dword [ebp - 0x148], 0x11c
lea eax, [ebp - 0x148]
push eax
call sub.KERNEL32.DLL_GetVersionExW
test eax, eax
je 0x689bd5
cmp byte [ebp - 0x2e], 1
jne 0x689bd5
mov bl, 0x11
jmp case.default.0x689b65
mov bl, 0x12
jmp case.default.0x689b65
mov dword [ebp - 0x148], 0x11c
lea eax, [ebp - 0x148]
push eax
call sub.KERNEL32.DLL_GetVersionExW
test eax, eax
je 0x689c00
cmp byte [ebp - 0x2e], 1
jne 0x689c00
mov bl, 0x13
jmp case.default.0x689b65
mov bl, 0x15
jmp case.default.0x689b65
mov dword [ebp - 0x148], 0x11c
lea eax, [ebp - 0x148]
push eax
call sub.KERNEL32.DLL_GetVersionExW
test eax, eax
je 0x689c28
cmp byte [ebp - 0x2e], 1
jne 0x689c28
mov bl, 0x16
jmp case.default.0x689b65
mov bl, 0x18
jmp case.default.0x689b65
mov dword [ebp - 0x148], 0x11c
lea eax, [ebp - 0x148]
push eax
call sub.KERNEL32.DLL_GetVersionExW
test eax, eax
je 0x689c50
cmp byte [ebp - 0x2e], 1
jne 0x689c50
mov bl, 0x19
jmp case.default.0x689b65
mov bl, 0x1a
jmp case.default.0x689b65
call fcn.0042ea40
mov edi, eax
call fcn.0042ea54
mov esi, eax
cmp edi, 0xa
jl 0x689ced
sub edi, 0xa
jne 0x689ced
cmp esi, 0xffffffff
jne 0x689c7c
call fcn.0068a010
mov esi, eax
sub esi, 1
jae 0x689ced
mov dword [ebp - 0x148], 0x11c
lea eax, [ebp - 0x148]
push eax
call sub.KERNEL32.DLL_GetVersionExW
test eax, eax
je 0x689ca5
cmp byte [ebp - 0x2e], 1
jne 0x689ca5
mov bl, 0x19
jmp 0x689ced
push 0x689df4
lea eax, [ebp - 0x160]
push eax
mov ecx, 0x689e04
mov edx, 0x689d8c
mov eax, 0x80000002
call fcn.0068cacc
mov eax, dword [ebp - 0x160]
or edx, 0xffffffff
call fcn.004273e8
sub eax, 0x647
je 0x689ce3
sub eax, 0xca
je 0x689ce7
jmp 0x689ceb
mov bl, 0x1a
jmp 0x689ced
mov bl, 0x1b
jmp 0x689ced
mov bl, 0x1c
xor eax, eax
pop edx
pop ecx
pop ecx
mov dword fs:[eax], edx
push 0x689d21
lea eax, [ebp - 0x160]
mov edx, 6
call fcn.0040aa88
lea eax, [ebp - 8]
mov edx, 2
call fcn.0040aa88
pop eax
jmp eax