Function at 0x4013af
Capabilities:
Create process on windows
Get common file path
Query or enumerate registry value
Set registry value

Disassembly:
push ebp
mov ebp, esp
sub esp, 0x314
mov eax, dword [0x41704c]
xor eax, ebp
mov dword [ebp - 4], eax
push ebx
push esi
push edi
xor eax, eax
push 0x206
mov word [ebp - 0x300], ax
xor ebx, ebx
lea eax, [ebp - 0x2fe]
push ebx
push eax
call fcn.004080b0
add esp, 0xc
xor eax, eax
push 9
mov word [ebp - 0x2c], ax
pop ecx
lea edi, [ebp - 0x2a]
rep stosd dword es:[edi], eax
stosw word es:[edi], ax
mov edi, 0x419948
mov eax, edi
mov dword [ebp - 0x308], ebx
mov dword [ebp - 0x30c], 0x104
lea edx, [eax + 2]
mov cx, word [eax]
inc eax
inc eax
cmp cx, bx
jne 0x40140f
mov esi, dword [sym.imp.KERNEL32.dll_OpenEventW]
sub eax, edx
sar eax, 1
je 0x401436
push edi
push ebx
push 0x20000
call esi
test eax, eax
jne 0x4015f7
lea eax, [ebp - 0x304]
push eax
push 0xf003f
push ebx
push 0x414cc0
push closesocket
call dword [sym.imp.ADVAPI32.dll_RegOpenKeyExW]
test eax, eax
jne 0x40149f
lea eax, [ebp - 0x30c]
push eax
lea eax, [ebp - 0x2c]
push eax
lea eax, [ebp - 0x308]
push eax
push ebx
push 0x414d2c
push dword [ebp - 0x304]
call dword [sym.imp.ADVAPI32.dll_RegQueryValueExW]
test eax, eax
jne 0x401493
lea eax, [ebp - 0x2c]
push eax
push ebx
push 0x20000
call esi
test eax, eax
jne 0x4015eb
push dword [ebp - 0x304]
call dword [sym.imp.ADVAPI32.dll_RegCloseKey]
lea eax, [ebp - 0x300]
push eax
mov esi, 0x104
push esi
call dword [sym.imp.KERNEL32.dll_GetTempPathW]
mov eax, edi
lea edx, [eax + 2]
mov cx, word [eax]
inc eax
inc eax
cmp cx, bx
jne 0x4014b7
sub eax, edx
sar eax, 1
jne 0x4014f6
push 0x414d3c
push 0x414d48
mov edi, 0x419bc0
push edi
call fcn.00401ae7
add esp, 0xc
xor eax, eax
movzx ecx, word [eax + 0x414d3c]
mov word [ebp + eax - 0x2c], cx
inc eax
inc eax
cmp cx, bx
jne 0x4014e1
jmp 0x40151f
push edi
push 0x414d48
mov edi, 0x419bc0
push edi
call fcn.00401ae7
add esp, 0xc
xor eax, eax
movzx ecx, word [eax + 0x419948]
mov word [ebp + eax - 0x2c], cx
inc eax
inc eax
cmp cx, bx
jne 0x40150c
push edi
lea eax, [ebp - 0x300]
push esi
push eax
call fcn.00404595
add esp, 0xc
cmp dword [0x418070], 3
jne 0x401540
push 0x2b66
jmp 0x401545
push 0x2b70
call fcn.004016a3
pop ecx
cmp eax, ebx
jne 0x4015f7
push 0x64
call dword [sym.imp.KERNEL32.dll_Sleep]
push 1
push ebx
push 0x414c50
lea eax, [ebp - 0x300]
push eax
push ebx
push ebx
call dword [sym.imp.SHELL32.dll_ShellExecuteW]
push 0x1a
pop ecx
mov esi, 0x414cc0
lea edi, [ebp - 0xf8]
rep movsd dword es:[edi], dword [esi]
push 0x5e
lea eax, [ebp - 0x8e]
push ebx
push eax
movsw word es:[edi], word [esi]
call fcn.004080b0
add esp, 0xc
lea eax, [ebp - 0x304]
push eax
push 3
push ebx
lea eax, [ebp - 0xf8]
push eax
push closesocket
call dword [sym.imp.ADVAPI32.dll_RegOpenKeyExW]
test eax, eax
jne 0x4015f7
lea eax, [ebp - 0x2c]
lea edx, [eax + 2]
mov cx, word [eax]
inc eax
inc eax
cmp cx, bx
jne 0x4015bc
sub eax, edx
sar eax, 1
lea eax, [eax + eax + 2]
push eax
lea eax, [ebp - 0x2c]
push eax
push 1
push ebx
push 0x414d2c
push dword [ebp - 0x304]
call dword [sym.imp.ADVAPI32.dll_RegSetValueExW]
test eax, eax
jne 0x4015f7
push dword [ebp - 0x304]
call dword [sym.imp.ADVAPI32.dll_RegCloseKey]
mov ecx, dword [ebp - 4]
pop edi
pop esi
xor ecx, ebp
xor eax, eax
pop ebx
call fcn.00404586
leave
ret