Function at 0x10017cf0
Capabilities:
Link many functions at runtime

Disassembly:
sub esp, 0x11c
push ebx
push ebp
push esi
mov esi, dword [sym.imp.KERNEL32.dll_GetProcAddress]
mov ebx, dword [sym.imp.KERNEL32.dll_GetModuleHandleW]
push edi
mov ecx, 0x46
xor eax, eax
lea edi, [esp + 0x14]
mov ebp, 0x11c
rep stosd dword es:[edi], eax
mov al, byte [0x100cab34]
mov dword [esp + 0x10], ebp
test al, 1
jne 0x10017d45
or al, 1
push str.RtlGetVersion
push str.ntdll.dll
mov byte [0x100cab34], al
call ebx
push eax
call esi
mov edx, eax
mov dword [0x100cab38], edx
jmp 0x10017d4b
mov edx, dword [0x100cab38]
test edx, edx
je 0x10017d86
lea eax, [esp + 0x10]
push eax
call edx
test eax, eax
jne 0x10017d80
mov eax, dword [esp + 0x14]
cmp eax, 0xa
ja 0x10017d65
jb 0x10017d80
mov ecx, dword [esp + 0x134]
mov edx, dword [esp + 0x130]
dec ecx
push ecx
push str.win10
push edx
jmp 0x10017f80
mov edx, dword [0x100cab38]
mov ecx, 0x46
xor eax, eax
lea edi, [esp + 0x14]
rep stosd dword es:[edi], eax
mov al, byte [0x100cab34]
mov dword [esp + 0x10], ebp
test al, 1
jne 0x10017dbe
or al, 1
push str.RtlGetVersion
push str.ntdll.dll
mov byte [0x100cab34], al
call ebx
push eax
call esi
mov edx, eax
mov dword [0x100cab38], edx
test edx, edx
je 0x10017e04
lea eax, [esp + 0x10]
push eax
call edx
test eax, eax
jne 0x10017dfe
mov eax, dword [esp + 0x14]
cmp eax, 6
ja 0x10017de3
jb 0x10017dfe
mov eax, dword [esp + 0x18]
cmp eax, 2
ja 0x10017de3
jb 0x10017dfe
mov ecx, dword [esp + 0x134]
mov edx, dword [esp + 0x130]
dec ecx
push ecx
push str.win8
push edx
jmp 0x10017f80
mov edx, dword [0x100cab38]
mov ecx, 0x46
xor eax, eax
lea edi, [esp + 0x14]
rep stosd dword es:[edi], eax
mov al, byte [0x100cab34]
mov dword [esp + 0x10], ebp
test al, 1
jne 0x10017e3c
or al, 1
push str.RtlGetVersion
push str.ntdll.dll
mov byte [0x100cab34], al
call ebx
push eax
call esi
mov edx, eax
mov dword [0x100cab38], edx
test edx, edx
je 0x10017e82
lea eax, [esp + 0x10]
push eax
call edx
test eax, eax
jne 0x10017e7c
mov eax, dword [esp + 0x14]
cmp eax, 6
ja 0x10017e61
jb 0x10017e7c
mov eax, dword [esp + 0x18]
cmp eax, 1
ja 0x10017e61
jb 0x10017e7c
mov ecx, dword [esp + 0x134]
mov edx, dword [esp + 0x130]
dec ecx
push ecx
push str.win7
push edx
jmp 0x10017f80
mov edx, dword [0x100cab38]
mov ecx, 0x46
xor eax, eax
lea edi, [esp + 0x14]
rep stosd dword es:[edi], eax
mov al, byte [0x100cab34]
mov dword [esp + 0x10], ebp
test al, 1
jne 0x10017eba
or al, 1
push str.RtlGetVersion
push str.ntdll.dll
mov byte [0x100cab34], al
call ebx
push eax
call esi
mov edx, eax
mov dword [0x100cab38], edx
test edx, edx
je 0x10017ef5
lea eax, [esp + 0x10]
push eax
call edx
test eax, eax
jne 0x10017eef
mov eax, dword [esp + 0x14]
cmp eax, 6
ja 0x10017ed4
jb 0x10017eef
mov ecx, dword [esp + 0x134]
mov edx, dword [esp + 0x130]
dec ecx
push ecx
push str.vista
push edx
jmp 0x10017f80
mov edx, dword [0x100cab38]
mov ecx, 0x46
xor eax, eax
lea edi, [esp + 0x14]
rep stosd dword es:[edi], eax
mov al, byte [0x100cab34]
mov dword [esp + 0x10], ebp
test al, 1
jne 0x10017f2d
or al, 1
push str.RtlGetVersion
push str.ntdll.dll
mov byte [0x100cab34], al
call ebx
push eax
call esi
mov edx, eax
mov dword [0x100cab38], edx
test edx, edx
je 0x10017f6a
lea eax, [esp + 0x10]
push eax
call edx
test eax, eax
jne 0x10017f6a
mov eax, dword [esp + 0x14]
cmp eax, 5
ja 0x10017f52
jb 0x10017f6a
mov eax, dword [esp + 0x18]
cmp eax, 1
ja 0x10017f52
jb 0x10017f6a
mov ecx, dword [esp + 0x134]
mov edx, dword [esp + 0x130]
dec ecx
push ecx
push 0x100c0420
push edx
jmp 0x10017f80
mov eax, dword [esp + 0x134]
mov ecx, dword [esp + 0x130]
dec eax
push eax
push 0x100c0424
push ecx
call dword [sym.imp.MSVCRT.dll_strncpy]
add esp, 0xc
mov eax, 1
pop edi
pop esi
pop ebp
pop ebx
add esp, 0x11c
ret