Function at 0x4062f0
Capabilities:
Check os version
Link many functions at runtime

Disassembly:
push ebp
mov ebp, esp
sub esp, 0x15c
call dword [sym.imp.USER32.dll_GetDesktopWindow]
mov dword [ebp - 0x10], eax
mov eax, dword [ebp - 0x10]
push eax
call dword [sym.imp.USER32.dll_GetDC]
mov dword [ebp - 0xb8], eax
push 4
mov ecx, dword [ebp - 0xb8]
push ecx
call dword [sym.imp.GDI32.dll_GetDeviceCaps]
mov edx, dword [ebp + 0xc]
mov dword [edx], eax
push 6
mov eax, dword [ebp - 0xb8]
push eax
call dword [sym.imp.GDI32.dll_GetDeviceCaps]
mov ecx, dword [ebp + 0x10]
mov dword [ecx], eax
push 0x58
mov edx, dword [ebp - 0xb8]
push edx
call dword [sym.imp.GDI32.dll_GetDeviceCaps]
mov dword [0x5222b4], eax
push 0xe
mov eax, dword [ebp - 0xb8]
push eax
call dword [sym.imp.GDI32.dll_GetDeviceCaps]
mov dword [ebp - 0x154], eax
push 0xc
mov ecx, dword [ebp - 0xb8]
push ecx
call dword [sym.imp.GDI32.dll_GetDeviceCaps]
mov dword [ebp - 4], eax
cmp dword [ebp - 4], 0x18
jle 0x406382
mov dword [ebp - 4], 0x18
push str.EnumDisplayMonitors
push 0x50ca24
call dword [sym.imp.KERNEL32.dll_GetModuleHandleA]
push eax
call dword [sym.imp.KERNEL32.dll_GetProcAddress]
mov dword [ebp - 0x14], eax
push str.MonitorFromWindow
push 0x50ca44
call dword [sym.imp.KERNEL32.dll_GetModuleHandleA]
push eax
call dword [sym.imp.KERNEL32.dll_GetProcAddress]
mov dword [0x514f10], eax
push str.MonitorFromPoint
push str.user32.dll
call dword [sym.imp.KERNEL32.dll_GetModuleHandleA]
push eax
call dword [sym.imp.KERNEL32.dll_GetProcAddress]
mov dword [0x514f14], eax
cmp dword [ebp - 0x14], 0
je 0x4063ea
push 0x50
call dword [sym.imp.USER32.dll_GetSystemMetrics]
mov dword [ebp - 0x158], eax
jmp 0x4063f4
mov dword [ebp - 0x158], 1
mov edx, dword [ebp - 0x158]
mov dword [0x521de0], edx
mov eax, dword [0x521de0]
shl eax, 4
push eax
push 0x40
call dword [sym.imp.KERNEL32.dll_GlobalAlloc]
mov dword [0x522188], eax
cmp dword [0x521de0], 1
jle 0x406450
mov ecx, dword [0x521de0]
shl ecx, 2
push ecx
push 0x40
call dword [sym.imp.KERNEL32.dll_GlobalAlloc]
mov dword [0x522088], eax
mov dword [0x513f60], 0
push 0
push 0x4067b0
push 0
push 0
call dword [ebp - 0x14]
jmp 0x4064c9
mov edx, dword [0x522188]
mov dword [edx], 0
mov eax, dword [0x522188]
mov dword [eax + 4], 0
push 8
mov ecx, dword [ebp - 0xb8]
push ecx
call dword [sym.imp.GDI32.dll_GetDeviceCaps]
mov edx, dword [0x522188]
mov dword [edx + 8], eax
push 0xa
mov eax, dword [ebp - 0xb8]
push eax
call dword [sym.imp.GDI32.dll_GetDeviceCaps]
mov ecx, dword [0x522188]
mov dword [ecx + 0xc], eax
mov dword [0x5224b0], 0
mov dword [0x5224b4], 0
mov edx, dword [0x522188]
mov eax, dword [edx + 8]
mov dword [0x5224b8], eax
mov ecx, dword [0x522188]
mov edx, dword [ecx + 0xc]
mov dword [0x5224bc], edx
mov eax, dword [ebp - 0xb8]
push eax
mov ecx, dword [ebp - 0x10]
push ecx
call dword [sym.imp.USER32.dll_ReleaseDC]
mov edx, dword [ebp - 0xb8]
push edx
call dword [sym.imp.GDI32.dll_DeleteDC]
mov dword [ebp - 0xb0], 0x94
lea eax, [ebp - 0xb0]
push eax
call dword [sym.imp.KERNEL32.dll_GetVersionExA]
xor ecx, ecx
cmp dword [ebp - 0xa0], 2
sete cl
mov dword [0x522890], ecx
mov edx, dword [ebp - 0xac]
mov dword [0x522a0c], edx
mov eax, dword [ebp - 0xa8]
mov dword [0x5224c0], eax
cmp dword [0x522a0c], 6
jne 0x406582
cmp dword [0x5224c0], 2
jne 0x406582
mov dword [ebp - 0x150], 0x114
push 0x50ca70
push 0x50ca80
call dword [sym.imp.KERNEL32.dll_GetModuleHandleA]
push eax
call dword [sym.imp.KERNEL32.dll_GetProcAddress]
mov dword [ebp - 8], eax
lea ecx, [ebp - 0x150]
push ecx
call dword [ebp - 8]
test eax, eax
jne 0x406582
mov edx, dword [ebp - 0x14c]
mov dword [0x522a0c], edx
mov eax, dword [ebp - 0x148]
mov dword [0x5224c0], eax
push str.dwmapi.dll
call dword [sym.imp.KERNEL32.dll_LoadLibraryA]
mov dword [ebp - 0xb4], eax
cmp dword [ebp - 0xb4], 0
je 0x4065b3
push str.DwmIsCompositionEnabled
mov ecx, dword [ebp - 0xb4]
push ecx
call dword [sym.imp.KERNEL32.dll_GetProcAddress]
mov dword [0x514f0c], eax
push str.msimg32.dll
call dword [sym.imp.KERNEL32.dll_LoadLibraryA]
mov dword [ebp - 0xc], eax
push str.GradientFill
mov edx, dword [ebp - 0xc]
push edx
call dword [sym.imp.KERNEL32.dll_GetProcAddress]
mov dword [0x522870], eax
mov ecx, dword [ebp - 0x154]
imul ecx, dword [ebp - 4]
mov eax, 1
shl eax, cl
mov dword [0x522034], eax
mov ecx, dword [ebp + 0x14]
mov edx, dword [0x522034]
mov dword [ecx], edx
mov eax, dword [0x522034]
mov dword [ebp - 0x15c], eax
cmp dword [ebp - 0x15c], 2
je 0x406621
cmp dword [ebp - 0x15c], 0x10
je 0x40662c
cmp dword [ebp - 0x15c], 0x100
je 0x406637
jmp 0x406642
mov ecx, dword [ebp + 0x18]
mov dword [ecx], 2
jmp 0x40664b
mov edx, dword [ebp + 0x18]
mov dword [edx], 8
jmp 0x40664b
mov eax, dword [ebp + 0x18]
mov dword [eax], 0x10
jmp 0x40664b
mov ecx, dword [ebp + 0x18]
mov dword [ecx], 0x100
mov edx, dword [ebp + 0x18]
mov eax, dword [edx]
mov dword [0x522184], eax
mov esp, ebp
pop ebp
ret