Function at 0x4016d0
Capabilities:
Check os version
Get system information on windows

Disassembly:
push ebp
mov ebp, esp
sub esp, 0x98c
mov eax, dword [0x41b0ac]
xor eax, ebp
mov dword [ebp - 4], eax
push esi
push edi
mov dword [ebp - 0x984], 0
xor eax, eax
mov word [ebp - 0x440], ax
push 0x206
push 0
lea ecx, [ebp - 0x43e]
push ecx
call fcn.00407a70
add esp, 0xc
mov ecx, 0xc
mov esi, str.Unknown_operating_system
lea edi, [ebp - 0x768]
rep movsd dword es:[edi], dword [esi]
movsw word es:[edi], word [esi]
push 0x1d6
push 0
lea edx, [ebp - 0x736]
push edx
call fcn.00407a70
add esp, 0xc
xor eax, eax
mov word [ebp - 0x210], ax
push 0x206
push 0
lea ecx, [ebp - 0x20e]
push ecx
call fcn.00407a70
add esp, 0xc
xor edx, edx
mov word [ebp - 0x970], dx
push 0x206
push 0
lea eax, [ebp - 0x96e]
push eax
call fcn.00407a70
add esp, 0xc
push 0x11c
push 0
lea ecx, [ebp - 0x560]
push ecx
call fcn.00407a70
add esp, 0xc
push 0x24
push 0
lea edx, [ebp - 0x234]
push edx
call fcn.00407a70
add esp, 0xc
mov dword [ebp - 0x560], 0x11c
lea eax, [ebp - 0x560]
push eax
call dword [sym.imp.KERNEL32.dll_GetVersionExW]
test eax, eax
jne 0x4017da
mov dword [ebp - 0x560], 0x114
lea ecx, [ebp - 0x560]
push ecx
call dword [sym.imp.KERNEL32.dll_GetVersionExW]
test eax, eax
jne 0x4017da
jmp 0x401a71
mov dword [ebp - 0x978], 0
push str.ntdll.dll
call dword [sym.imp.KERNEL32.dll_LoadLibraryA]
mov dword [ebp - 0x97c], eax
cmp dword [ebp - 0x97c], 0
jne 0x401800
jmp 0x40185e
push str.RtlGetNtVersionNumbers
mov edx, dword [ebp - 0x97c]
push edx
call dword [sym.imp.KERNEL32.dll_GetProcAddress]
mov dword [ebp - 0x978], eax
cmp dword [ebp - 0x978], 0
je 0x40184d
lea eax, [ebp - 0x554]
push eax
lea ecx, [ebp - 0x558]
push ecx
lea edx, [ebp - 0x55c]
push edx
call dword [ebp - 0x978]
mov eax, dword [ebp - 0x554]
and eax, 0xffff
mov dword [ebp - 0x554], eax
mov ecx, dword [ebp - 0x97c]
push ecx
call dword [sym.imp.KERNEL32.dll_FreeLibrary]
xor edx, edx
jne 0x4017e4
cmp dword [ebp - 0x978], 0
je 0x401869
jmp 0x4018c2
mov dword [ebp - 0x980], 0
lea eax, [ebp - 0x980]
push eax
push 0x64
push 0
call sub.NETAPI32.dll_NetWkstaGetInfo
test eax, eax
je 0x401889
jmp 0x4018c2
cmp dword [ebp - 0x980], 0
jne 0x401894
jmp 0x4018c2
mov ecx, dword [ebp - 0x980]
mov edx, dword [ecx + 0xc]
mov dword [ebp - 0x55c], edx
mov eax, dword [ebp - 0x980]
mov ecx, dword [eax + 0x10]
mov dword [ebp - 0x558], ecx
mov edx, dword [ebp - 0x980]
push edx
call sub.NETAPI32.dll_NetApiBufferFree
xor eax, eax
jne 0x40185e
push str.GetNativeSystemInfo
push str.kernel32.dll
call dword [sym.imp.KERNEL32.dll_GetModuleHandleW]
push eax
call dword [sym.imp.KERNEL32.dll_GetProcAddress]
mov dword [ebp - 0x974], eax
cmp dword [ebp - 0x974], 0
je 0x4018f7
lea ecx, [ebp - 0x234]
push ecx
call dword [ebp - 0x974]
jmp 0x401904
lea edx, [ebp - 0x234]
push edx
call dword [sym.imp.KERNEL32.dll_GetSystemInfo]
lea eax, [ebp - 0x768]
push eax
lea ecx, [ebp - 0x560]
push ecx
call fcn.00401090
add esp, 8
lea edx, [ebp - 0x768]
push edx
lea eax, [ebp - 0x560]
push eax
call fcn.00401170
add esp, 8
lea ecx, [ebp - 0x768]
push ecx
lea edx, [ebp - 0x560]
push edx
call fcn.004011d0
add esp, 8
lea eax, [ebp - 0x768]
push eax
lea ecx, [ebp - 0x560]
push ecx
call fcn.00401230
add esp, 8
lea edx, [ebp - 0x768]
push edx
lea eax, [ebp - 0x560]
push eax
call fcn.00401290
add esp, 8
lea ecx, [ebp - 0x970]
push ecx
lea edx, [ebp - 0x210]
push edx
lea eax, [ebp - 0x768]
push eax
lea ecx, [ebp - 0x234]
push ecx
lea edx, [ebp - 0x560]
push edx
call fcn.004012f0
add esp, 0x14
lea eax, [ebp - 0x210]
push eax
lea ecx, [ebp - 0x768]
push ecx
lea edx, [ebp - 0x560]
push edx
call fcn.004014e0
add esp, 0xc
lea eax, [ebp - 0x210]
push eax
lea ecx, [ebp - 0x768]
push ecx
lea edx, [ebp - 0x560]
push edx
call fcn.00401560
add esp, 0xc
lea eax, [ebp - 0x210]
push eax
lea ecx, [ebp - 0x768]
push ecx
lea edx, [ebp - 0x560]
push edx
call fcn.00401630
add esp, 0xc
mov eax, dword [ebp - 0x55c]
mov dword [ebp - 0x988], eax
cmp dword [ebp - 0x988], 6
je 0x401a14
cmp dword [ebp - 0x988], 0xa
je 0x401a14
jmp 0x401a69
movzx ecx, word [ebp - 0x234]
mov dword [ebp - 0x98c], ecx
cmp dword [ebp - 0x98c], 0
je 0x401a50
cmp dword [ebp - 0x98c], 9
je 0x401a35
jmp 0x401a69
push str.64_bit
push 0x104
lea edx, [ebp - 0x970]
push edx
call fcn.00407aea
add esp, 0xc
jmp 0x401a69
push str.32_bit
push 0x104
lea eax, [ebp - 0x970]
push eax
call fcn.00407aea
add esp, 0xc
xor ecx, ecx
jne 0x40179f
movzx edx, word [ebp - 0x448]
push edx
movzx eax, byte [ebp - 0x446]
push eax
mov ecx, dword [ebp - 0x554]
push ecx
mov edx, dword [ebp - 0x558]
push edx
mov eax, dword [ebp - 0x55c]
push eax
lea ecx, [ebp - 0x54c]
push ecx
lea edx, [ebp - 0x970]
push edx
lea eax, [ebp - 0x210]
push eax
lea ecx, [ebp - 0x768]
push ecx
push str._s__s__s__s___d._d._d._d._d_
push 0x104
lea edx, [ebp - 0x440]
push edx
call fcn.00407b59
add esp, 0x30
lea eax, [ebp - 0x440]
push eax
mov ecx, dword [ebp + 8]
call fcn.004025e0
mov ecx, dword [ebp - 0x984]
or ecx, 1
mov dword [ebp - 0x984], ecx
mov eax, dword [ebp + 8]
pop edi
pop esi
mov ecx, dword [ebp - 4]
xor ecx, ebp
call fcn.00407a5c
mov esp, ebp
pop ebp
ret