Function at 0x4222b0
Capabilities:
Check os version
Hide graphical window
Link many functions at runtime
Set registry value

Disassembly:
push ebp
mov ebp, esp
sub esp, 0x258
mov eax, dword [0x4739c8]
xor eax, ebp
mov dword [ebp - 4], eax
push esi
mov esi, dword [ebp + 8]
push 0
push 0
push 0x45cd88
call fcn.00401bb0
add esp, 0xc
test eax, eax
jne 0x4222f2
mov eax, 1
pop esi
mov ecx, dword [ebp - 4]
xor ecx, ebp
call fcn.004297e8
mov esp, ebp
pop ebp
ret 0x10
push edi
push 0x208
lea eax, [ebp - 0x20c]
push 0
push eax
call fcn.0042cf60
add esp, 0xc
lea eax, [ebp - 0x210]
push 0
push eax
push 0
push 2
push 0
push 0
push 0
push 0x45cd98
push SysReAllocString
call dword [sym.imp.ADVAPI32.dll_RegCreateKeyExW]
test eax, eax
jne 0x4223af
push 0x102
lea eax, [ebp - 0x20a]
push eax
push 0
call dword [sym.imp.KERNEL32.dll_GetModuleFileNameW]
lea eax, [ebp - 0x20c]
mov edi, 0x22
push 0
push eax
mov word [ebp - 0x20c], di
call fcn.0042dddb
lea ecx, [ebp - 0x20c]
add esp, 8
lea edx, [ecx + 2]
mov word [eax], di
nop dword [eax]
mov ax, word [ecx]
add ecx, 2
test ax, ax
jne 0x422370
sub ecx, edx
sar ecx, 1
lea eax, [ecx*2 + 2]
push eax
lea eax, [ebp - 0x20c]
push eax
push 1
push 0
push 0x45cdd4
push dword [ebp - 0x210]
call dword [sym.imp.ADVAPI32.dll_RegSetValueExW]
push dword [ebp - 0x210]
call dword [sym.imp.ADVAPI32.dll_RegCloseKey]
push ebx
push str.IsWow64Process
push 0x45c9c8
mov dword [ebp - 0x210], 0
call dword [sym.imp.KERNEL32.dll_GetModuleHandleW]
mov edi, dword [sym.imp.KERNEL32.dll_GetProcAddress]
push eax
call edi
mov ebx, eax
test ebx, ebx
je 0x4223e9
lea eax, [ebp - 0x210]
push eax
call dword [sym.imp.KERNEL32.dll_GetCurrentProcess]
push eax
call ebx
cmp dword [ebp - 0x210], 0
je 0x42240a
call fcn.00417fb0
pop ebx
pop edi
pop esi
mov ecx, dword [ebp - 4]
xor ecx, ebp
call fcn.004297e8
mov esp, ebp
pop ebp
ret 0x10
mov ebx, dword [sym.imp.KERNEL32.dll_CreateEventW]
push 0x45db28
push 0
push 0
push 0
call ebx
test eax, eax
jne 0x42242b
push 0x45db50
push eax
push eax
push eax
call ebx
call dword [sym.imp.KERNEL32.dll_GetLastError]
cmp eax, 0xb7
jne 0x4224b1
mov ebx, dword [sym.imp.USER32.dll_FindWindowW]
push 0
push 0x45cf60
call ebx
mov dword [0x47896c], eax
test eax, eax
je 0x422975
push 0
push 0x3ec
push 0x111
push eax
call dword [sym.imp.USER32.dll_PostMessageW]
xor esi, esi
nop dword [eax]
push 0x45db70
push 0
inc esi
call ebx
mov edi, eax
test edi, edi
jne 0x422492
push 0x64
call dword [sym.imp.KERNEL32.dll_Sleep]
cmp esi, 5
jl 0x422470
jmp 0x422975
push edi
call dword [sym.imp.USER32.dll_SetForegroundWindow]
push 0x43
push 0
push 0
push 0
push 0
push 0xffffffffffffffff
push edi
call dword [sym.imp.USER32.dll_SetWindowPos]
jmp 0x422975
call dword [sym.imp.KERNEL32.dll_GetVersion]
push 0x45dbc8
movzx eax, ax
push esi
mov dword [0x478964], eax
call dword [sym.imp.USER32.dll_LoadAcceleratorsW]
push 0
mov dword [ebp - 0x210], eax
call dword [sym.imp.ole32.dll_CoInitialize]
test eax, eax
js 0x422975
call dword [sym.imp.COMCTL32.dll_InitCommonControls]
push 0x45dbe4
push 0x45dc00
call dword [sym.imp.KERNEL32.dll_GetModuleHandleW]
push eax
call edi
push 0x45dc18
push 1
push 0x45dc2c
mov dword [0x478488], eax
call fcn.00401550
add esp, 8
push eax
call edi
push 0x45dc44
push 1
push 0x45dc2c
mov dword [0x47897c], eax
call fcn.00401550
add esp, 8
push eax
call edi
push 0x45dc54
push 1
push 0x45dc64
mov dword [0x478978], eax
call fcn.00401550
add esp, 8
push eax
call edi
push 0x45dc7c
push 1
push 0x45dc98
mov dword [0x478980], eax
call fcn.00401550
add esp, 8
push eax
call edi
push 0x45dcb0
push 1
push 0x45dcc4
mov dword [0x478984], eax
call fcn.00401550
add esp, 8
push eax
call edi
push 0x45dce8
push 1
push 0x45dc98
mov dword [0x47898c], eax
call fcn.00401550
add esp, 8
push eax
call edi
push 0x45dcf8
push 1
push 0x45dc98
mov dword [0x4789a8], eax
call fcn.00401550
add esp, 8
push eax
call edi
push 0x45dd0c
push 1
push 0x45dcc4
mov dword [0x4789ac], eax
call fcn.00401550
add esp, 8
push eax
call edi
push 0x45dd1c
push 1
push 0x45dcc4
mov dword [0x4789a0], eax
call fcn.00401550
add esp, 8
push eax
call edi
push 0x45dd34
mov dword [0x478990], eax
push 1
push 0x45dcc4
call fcn.00401550
add esp, 8
push eax
call edi
push 0x45dd50
push 1
push 0x45dcc4
mov dword [0x478994], eax
call fcn.00401550
add esp, 8
push eax
call edi
push 0x45dd68
push 1
push 0x45dcc4
mov dword [0x478998], eax
call fcn.00401550
add esp, 8
push eax
call edi
push 0x45dd7c
push 1
push 0x45dd9c
mov dword [0x47899c], eax
call fcn.00401550
add esp, 8
push eax
call edi
push 0x45ddb4
push 1
push 0x45ddcc
mov dword [0x4789b8], eax
call fcn.00401550
add esp, 8
push eax
call edi
push 0x45dde4
push 1
push 0x45dc2c
mov dword [0x4789a4], eax
call fcn.00401550
add esp, 8
push eax
call edi
push 0x45ddf8
push 1
push 0x45dc2c
mov dword [0x478988], eax
call fcn.00401550
add esp, 8
push eax
call edi
push 0x45de14
push 1
push 0x45dc2c
mov dword [0x4789b0], eax
call fcn.00401550
add esp, 8
push eax
call edi
push 0x45de24
push 1
push 0x45de4c
mov dword [0x4789b4], eax
call fcn.00401550
add esp, 8
push eax
call edi
push 0x45de60
push 1
push 0x45de4c
mov dword [0x4789bc], eax
call fcn.00401550
add esp, 8
push eax
call edi
push 0x45de88
push 1
mov dword [0x4789c0], eax
push 0x45de4c
call fcn.00401550
add esp, 8
push eax
call edi
mov dword [0x4789c4], eax
lea eax, [ebp - 0x23c]
push eax
call fcn.004022c0
add esp, 4
cmp eax, 0x4f7c
je 0x422758
cmp eax, 0x55f0
jne 0x42277a
cmp dword [ebp - 0x23c], 0x33d
jae 0x42277a
cmp dword [0x478994], 0
je 0x42277a
mov eax, dword [0x478970]
mov ecx, 1
cmp dword [0x478998], 0
cmovne eax, ecx
mov dword [0x478970], eax
mov eax, dword [0x478988]
test eax, eax
je 0x422785
call eax
cmp dword [0x4789a0], 0
mov edi, dword [sym.imp.USER32.dll_LoadCursorW]
mov ebx, dword [sym.imp.USER32.dll_RegisterClassW]
mov dword [0x47848c], esi
je 0x422810
push 0x7f00
push 0
mov dword [ebp - 0x238], 3
mov dword [ebp - 0x234], 0x410e60
mov dword [ebp - 0x230], 0
mov dword [ebp - 0x22c], 0
mov dword [ebp - 0x228], esi
mov dword [ebp - 0x224], 0
call edi
mov dword [ebp - 0x220], eax
lea eax, [ebp - 0x238]
push eax
mov dword [ebp - 0x21c], 0
mov dword [ebp - 0x218], 0
mov dword [ebp - 0x214], 0x45d87c
call ebx
jmp 0x42281a
mov dword [0x473474], 0
push 0x45dae8
push esi
mov dword [ebp - 0x238], 0
mov dword [ebp - 0x234], 0x411b40
mov dword [ebp - 0x230], 0
mov dword [ebp - 0x22c], 0
mov dword [ebp - 0x228], esi
mov dword [ebp - 0x224], 0
call edi
mov dword [ebp - 0x220], eax
lea eax, [ebp - 0x238]
push eax
mov dword [ebp - 0x21c], 0
mov dword [ebp - 0x218], 0
mov dword [ebp - 0x214], 0x45cf60
call ebx
test ax, ax
je 0x42296b
push 0
push esi
push 0
push 0
push 0
push 0
push 0
push 0
push SysReAllocString
push 0x45db00
push 0x45cf60
push 0x80
call dword [sym.imp.USER32.dll_CreateWindowExW]
mov esi, eax
test esi, esi
je 0x42296b
push 0
push esi
call dword [sym.imp.USER32.dll_ShowWindow]
movzx ecx, byte [0x47348e]
push ecx
push esi
call fcn.0040fa90
add esp, 8
mov dword [0x47896c], esi
mov esi, dword [sym.imp.USER32.dll_GetMessageW]
lea eax, [ebp - 0x258]
push 0
push 0
push 0
push eax
call esi
test eax, eax
je 0x422952
mov edi, dword [sym.imp.USER32.dll_TranslateMessage]
mov ebx, dword [sym.imp.USER32.dll_DispatchMessageW]
nop dword [eax + eax]
lea eax, [ebp - 0x258]
push eax
push dword [ebp - 0x210]
push dword [0x47896c]
call dword [sym.imp.USER32.dll_TranslateAcceleratorW]
test eax, eax
jne 0x42293f
lea eax, [ebp - 0x258]
push eax
call edi
lea eax, [ebp - 0x258]
push eax
call ebx
push 0
push 0
push 0
lea eax, [ebp - 0x258]
push eax
call esi
test eax, eax
jne 0x422910
mov eax, dword [ebp - 0x250]
pop ebx
pop edi
pop esi
mov ecx, dword [ebp - 4]
xor ecx, ebp
call fcn.004297e8
mov esp, ebp
pop ebp
ret 0x10
mov dword [0x47896c], 0
mov ecx, dword [ebp - 4]
xor eax, eax
pop ebx
pop edi
xor ecx, ebp
pop esi
call fcn.004297e8
mov esp, ebp
pop ebp
ret 0x10