Function at 0x50c1b8
Capabilities:
Check os version

Disassembly:
push ebp
mov ebp, esp
add esp, 0xfffffdc4
push ebx
push esi
push edi
xor edx, edx
mov dword [ebp - 4], edx
mov ebx, eax
xor eax, eax
push ebp
push 0x50c4d0
push dword fs:[eax]
mov dword fs:[eax], esp
lea eax, [ebx + 0xc]
mov edx, dword [0x50a7f8]
call fcn.00407190
lea eax, [ebp - 0x23c]
xor ecx, ecx
mov edx, 0x114
call fcn.00403a70
mov dword [ebp - 0x23c], 0x114
lea eax, [ebp - 0x23c]
push eax
call sub.kernel32.dll_GetVersionExW
cmp dword [ebp - 0x22c], 2
jne 0x50c3f2
cmp dword [ebp - 0x238], 5
jne 0x50c3f2
lea eax, [ebp - 0x128]
xor ecx, ecx
mov edx, 0x11c
call fcn.00403a70
mov dword [ebp - 0x128], 0x11c
lea eax, [ebp - 0x128]
push eax
call sub.kernel32.dll_GetVersionExW
test eax, eax
je 0x50c3f2
movzx eax, byte [ebp - 0xe]
dec al
je 0x50c26b
dec al
je 0x50c271
dec al
je 0x50c277
jmp 0x50c27b
mov byte [ebx + 8], 1
jmp 0x50c27b
mov byte [ebx + 8], 3
jmp 0x50c27b
mov byte [ebx + 8], 2
cmp dword [ebp - 0x124], 5
jb 0x50c28e
cmp byte [ebp - 0xe], 2
jne 0x50c28e
mov byte [ebx + 8], 2
movzx eax, word [0x50c4e0]
mov word [ebx + 9], ax
test byte [ebp - 0x10], 1
je 0x50c2ae
movzx eax, word [0x50c4e4]
or ax, word [ebx + 9]
mov word [ebx + 9], ax
test byte [ebp - 0x10], 2
je 0x50c2c7
movzx eax, word [0x50c4e8]
or ax, word [ebx + 9]
mov word [ebx + 9], ax
mov byte [ebx + 8], 3
test byte [ebp - 0x10], 4
je 0x50c2dc
movzx eax, word [0x50c4ec]
or ax, word [ebx + 9]
mov word [ebx + 9], ax
test byte [ebp - 0x10], 8
je 0x50c2f1
movzx eax, word [0x50c4f0]
or ax, word [ebx + 9]
mov word [ebx + 9], ax
test byte [ebp - 0x10], 0x10
je 0x50c306
movzx eax, word [0x50c4f4]
or ax, word [ebx + 9]
mov word [ebx + 9], ax
test byte [ebp - 0x10], 0x20
je 0x50c31b
movzx eax, word [0x50c4f8]
or ax, word [ebx + 9]
mov word [ebx + 9], ax
test byte [ebp - 0x10], 0x40
je 0x50c330
movzx eax, word [0x50c4fc]
or ax, word [ebx + 9]
mov word [ebx + 9], ax
test byte [ebp - 0x10], 0x80
je 0x50c349
movzx eax, word [0x50c500]
or ax, word [ebx + 9]
mov word [ebx + 9], ax
mov byte [ebx + 8], 4
test byte [ebp - 0xf], 1
je 0x50c35e
movzx eax, word [0x50c504]
or ax, word [ebx + 9]
mov word [ebx + 9], ax
test byte [ebp - 0xf], 2
je 0x50c373
movzx eax, word [0x50c508]
or ax, word [ebx + 9]
mov word [ebx + 9], ax
test byte [ebp - 0xf], 4
je 0x50c38c
movzx eax, word [0x50c50c]
or ax, word [ebx + 9]
mov word [ebx + 9], ax
mov byte [ebx + 8], 5
test byte [ebp - 0xf], 8
je 0x50c3a1
movzx eax, word [0x50c510]
or ax, word [ebx + 9]
mov word [ebx + 9], ax
test word [ebp - 0x10], 0x2004
je 0x50c3b8
movzx eax, word [0x50c514]
or ax, word [ebx + 9]
mov word [ebx + 9], ax
test byte [ebp - 0xf], 0x40
je 0x50c3cd
movzx eax, word [0x50c518]
or ax, word [ebx + 9]
mov word [ebx + 9], ax
test byte [ebp - 0xf], 0x80
je 0x50c3e2
movzx eax, word [0x50c51c]
or ax, word [ebx + 9]
mov word [ebx + 9], ax
movzx eax, word [ebp - 0x14]
mov word [ebx + 6], ax
movzx eax, word [ebp - 0x12]
mov word [ebx + 4], ax
mov dl, 1
mov eax, dword [0x421250]
call fcn.00426758
mov edi, eax
mov dl, 1
mov eax, dword [0x421250]
call fcn.00426758
mov dword [ebp - 8], eax
mov dl, 1
mov eax, dword [0x421250]
call fcn.00426758
mov dword [ebp - 0xc], eax
call fcn.0050b8a4
mov esi, eax
mov edx, 0x80000002
mov eax, esi
call fcn.004317c8
cmp byte [ebx + 8], 0
jne 0x50c49c
xor ecx, ecx
mov edx, 0x50c52c
mov eax, esi
call fcn.0043182c
test al, al
je 0x50c49c
lea ecx, [ebp - 4]
mov edx, 0x50c59c
mov eax, esi
call fcn.00431cf8
mov eax, dword [ebp - 4]
mov edx, 0x50c5c0
call fcn.00406a00
jne 0x50c46d
mov byte [ebx + 8], 1
jmp 0x50c495
mov eax, dword [ebp - 4]
mov edx, 0x50c5d8
call fcn.00406a00
jne 0x50c482
mov byte [ebx + 8], 2
jmp 0x50c495
mov eax, dword [ebp - 4]
mov edx, 0x50c5f8
call fcn.00406a00
jne 0x50c495
mov byte [ebx + 8], 3
mov eax, esi
call fcn.00431798
mov eax, esi
call fcn.004044a0
mov eax, edi
call fcn.004044a0
mov eax, dword [ebp - 0xc]
call fcn.004044a0
mov eax, dword [ebp - 8]
call fcn.004044a0
xor eax, eax
pop edx
pop ecx
pop ecx
mov dword fs:[eax], edx
push 0x50c4d7
lea eax, [ebp - 4]
call fcn.0040624c
ret