Function at 0x661238
Capabilities:
Check os version

Disassembly:
push ebp
mov ebp, esp
add esp, 0xfffffee0
push ebx
push esi
test dl, dl
je 0x66124f
add esp, 0xfffffff0
call fcn.004092b0
mov byte [ebp - 1], dl
mov ebx, eax
xor edx, edx
mov eax, ebx
call fcn.005619d0
mov dword [ebx + 0x308], 0x1fffffff
mov word [ebx + 0x418], 9
mov dword [ebx + 0x30c], 0xff000008
mov dword [ebx + 0x304], 0xff000005
mov byte [ebx + 0x330], 2
mov eax, dword [ebx + 0x74]
mov eax, dword [eax + 0x18]
mov dword [ebx + 0x31c], eax
mov dword [ebx + 0x390], 0x1fffffff
mov dword [ebx + 0x320], 0xff00000d
mov dword [ebx + 0x310], 0xff
mov dword [ebx + 0x314], 0xffffff
mov byte [ebx + 0x318], 0
xor eax, eax
mov dword [ebx + 0x2dc], eax
mov dword [ebx + 0x2e8], 4
mov dword [ebx + 0x328], 0xff0000
mov dword [ebx + 0x2f8], 0xc0c0c0
mov dword [ebx + 0x2fc], 0x1fffffff
mov byte [ebx + 0x300], 1
mov dl, 1
mov eax, dword [0x65a0f0]
call fcn.00408bf8
mov dword [ebx + 0x34c], eax
mov byte [ebx + 0x379], 1
xor eax, eax
mov dword [ebx + 0x348], eax
mov dword [ebp - 0xc], 0xffffffff
mov dword [ebp - 8], 0xffffffff
mov eax, dword [ebp - 0xc]
mov dword [ebx + 0x37c], eax
mov eax, dword [ebp - 8]
mov dword [ebx + 0x380], eax
mov byte [ebx + 0x388], 0
mov byte [ebx + 0x347], 0
mov byte [ebx + 0x2ee], 1
mov dl, 1
mov eax, dword [0x50f940]
call fcn.005160e0
mov esi, eax
mov dword [ebx + 0x2e0], esi
mov dword [esi + 0xc], ebx
mov dword [esi + 8], 0x6649d0
mov byte [ebx + 0x396], 1
movzx eax, byte [0x86e738]
mov byte [ebx + 0x39f], al
mov byte [ebx + 0x2f2], 1
mov dword [ebx + 0x38c], 0x1fffffff
mov byte [ebx + 0x438], 1
xor eax, eax
mov dword [ebx + 0x3b0], eax
xor eax, eax
mov dword [ebx + 0x3ac], eax
mov byte [ebx + 0x39c], 0
mov byte [ebx + 0x44c], 0
mov dword [ebp - 0x120], 0x114
lea eax, [ebp - 0x120]
push eax
call sub.kernel32.dll_GetVersionExW
cmp dword [ebp - 0x11c], 5
ja 0x6613f0
cmp dword [ebp - 0x11c], 5
jne 0x6613ec
cmp dword [ebp - 0x118], 1
jae 0x6613f0
xor eax, eax
jmp 0x6613f2
mov al, 1
mov byte [ebx + 0x410], al
test byte [ebx + 0x1c], 0x10
je 0x661410
mov eax, dword [ebx + 4]
test byte [eax + 0x1c], 2
jne 0x661410
mov eax, dword [ebx + 4]
test byte [eax + 0x1c], 1
je 0x661414
xor eax, eax
jmp 0x661416
mov al, 1
mov byte [ebx + 0x416], al
mov eax, 0x661590
call fcn.0042deac
shr eax, 0x10
and eax, 0xff
cmp eax, 5
setg al
mov byte [ebx + 0x411], al
xor eax, eax
mov dword [ebx + 0x3b8], eax
test byte [ebx + 0x1c], 0x10
jne 0x661549
mov ecx, ebx
mov dl, 1
mov eax, dword [0x65a4f0]
call fcn.00668260
mov esi, eax
mov dword [ebx + 0x3b8], esi
mov eax, esi
xor edx, edx
call fcn.0054280c
mov eax, dword [ebx + 0x3b8]
xor edx, edx
call fcn.00541db4
mov eax, dword [ebx + 0x3b8]
xor edx, edx
call fcn.00541dec
mov eax, dword [ebx + 0x3b8]
mov edx, 1
call fcn.0054c02c
mov esi, dword [ebx + 0x3b8]
mov eax, dword [0x6615ac]
or dword [esi + 0x60], eax
mov ecx, esi
mov dl, 1
mov eax, dword [0x65a2a4]
call fcn.00568c48
mov dword [ebx + 0x3bc], eax
mov esi, dword [ebx + 0x3bc]
mov edx, dword [ebx + 0x3b8]
mov eax, esi
mov ecx, dword [eax]
call dword [ecx + 0x94]
mov dl, 5
mov eax, esi
call fcn.005419e8
mov dl, 1
mov eax, esi
call fcn.00569478
mov edx, 0xc
mov eax, esi
call fcn.005692f4
xor edx, edx
mov eax, esi
call fcn.0054c04c
mov dl, 1
mov eax, esi
call fcn.0054c14c
xor edx, edx
mov eax, esi
call fcn.00569628
xor edx, edx
mov eax, esi
call fcn.0054c134
mov dword [esi + 0x254], ebx
mov dword [esi + 0x250], 0x66703c
mov dword [esi + 0xe4], ebx
mov dword [esi + 0xe0], 0x666d14
mov eax, dword [0x6615ac]
or dword [esi + 0x60], eax
mov eax, dword [ebx + 0x3bc]
mov edx, dword [ebx + 0x3b8]
mov dword [edx + 0x2b0], eax
mov dl, 1
mov eax, dword [0x65a850]
call fcn.006684bc
mov dword [ebx + 0x3c0], eax
mov byte [ebx + 0x414], 0
mov eax, ebx
cmp byte [ebp - 1], 0
je 0x661579
call fcn.00409308
pop dword fs:[0]
add esp, 0xc
mov eax, ebx
pop esi
pop ebx
mov esp, ebp
pop ebp
ret