Function at 0x406c80
Capabilities:
Create process on windows
Persist via run registry key

Disassembly:
mov eax, dword fs:[0]
push ebp
mov ebp, esp
push 0xffffffffffffffff
push 0x406fc5
push eax
mov dword fs:[0], esp
sub esp, 0x2a8
mov dword [ebp - 0x14], ecx
push ebx
push esi
mov eax, dword [ecx]
push edi
push 0x41
mov edx, dword [eax + 0xdc]
push str.UnInstall
push 0
mov dword [ebp - 0x18], edx
push 8
call fcn.00403990
add esp, 8
mov ecx, dword [ebp - 0x14]
push eax
call dword [ebp - 0x18]
cmp eax, 1
je 0x406ce1
xor eax, eax
mov ecx, dword [ebp - 0xc]
pop edi
mov dword fs:[0], ecx
pop esi
pop ebx
mov esp, ebp
pop ebp
ret
push 1
lea ecx, [ebp - 0xac]
push 0x80000001
call fcn.00401540
push 0
lea ecx, [ebp - 0xac]
mov dword [ebp - 4], 0
push str.SoftwareMicrosoftWindowsCurrentVersionExplorerShell_Folders
call fcn.00401580
test eax, eax
je 0x406e08
mov dword [ebp - 0x28], str.Programs
mov dword [ebp - 0x24], str.Desktop
mov dword [ebp - 0x20], 0
mov eax, str.Programs
test eax, eax
je 0x406dfd
lea eax, [ebp - 0x28]
mov dword [ebp - 0x10], eax
push 0x104
lea eax, [ebp - 0x2b4]
push eax
mov ecx, dword [ebp - 0x10]
mov edx, dword [ecx]
lea ecx, [ebp - 0xac]
push edx
call fcn.00401890
test eax, eax
je 0x406ded
lea eax, [ebp - 0x28]
cmp dword [ebp - 0x10], eax
jne 0x406d7a
push 0
lea eax, [ebp - 0x2b4]
push eax
mov ecx, dword [ebp - 0x14]
call fcn.004070b0
push str.FastCopy.lnk
lea edi, [ebp - 0x2b4]
push 0x40c0b0
mov ecx, 0xffffffff
sub eax, eax
repne scasb al, byte es:[edi]
not ecx
lea eax, [ecx + ebp - 0x2b5]
push eax
call dword [sym.imp.USER32.dll_wsprintfA]
add esp, 0xc
cmp dword [0x40c6b4], 0
je 0x406dde
push 1
lea eax, [ebp - 0x2b4]
push eax
call fcn.00403db0
add esp, 8
mov dword [ebp - 0x1c], eax
mov byte [ebp - 4], 1
mov eax, dword [ebp - 0x1c]
push eax
call fcn.00404390
mov byte [ebp - 4], 0
add esp, 4
call fcn.00406f67
jmp 0x406ded
lea eax, [ebp - 0x2b4]
push eax
call fcn.00404390
add esp, 4
add dword [ebp - 0x10], 4
mov eax, dword [ebp - 0x10]
cmp dword [eax], 0
jne 0x406d3c
lea ecx, [ebp - 0xac]
call fcn.004016f0
mov al, byte [0x40bb8c]
lea edi, [ebp - 0x1af]
mov ecx, 0x40
mov byte [ebp - 0x1b0], al
xor eax, eax
push 0x104
rep stosd dword es:[edi], eax
stosw word es:[edi], ax
stosb byte es:[edi], al
lea eax, [ebp - 0x1b0]
push eax
push 0
xor esi, esi
call dword [sym.imp.KERNEL32.dll_GetModuleFileNameA]
lea ecx, [ebp - 0x1b0]
push ecx
push ecx
call fcn.00405c80
add esp, 8
lea ecx, [ebp - 0x1b0]
lea eax, [ebp - 0x2b4]
push str.FastExt1.dll
push ecx
push eax
call fcn.00403b50
add esp, 0xc
lea ecx, [ebp - 0x2b4]
push ecx
call fcn.00403b20
add esp, 4
mov ebx, eax
test ebx, ebx
je 0x406eb1
push str.IsRegistServer
mov edi, dword [sym.imp.KERNEL32.dll_GetProcAddress]
push ebx
call edi
push str.DllUnregisterServer
mov dword [ebp - 0x10], eax
push ebx
call edi
mov edi, eax
cmp dword [ebp - 0x10], esi
je 0x406eaa
test edi, edi
je 0x406eaa
call dword [ebp - 0x10]
mov esi, eax
test esi, esi
je 0x406eaa
call edi
push ebx
call dword [sym.imp.KERNEL32.dll_FreeLibrary]
cmp dword [0x40c6b4], 0
je 0x406edb
call fcn.00403e30
test eax, eax
je 0x406edb
push 5
push 0
push str.DllUnregisterServer_FastEx64.dll
push str.rundll32.exe
push 0
push 0
call dword [sym.imp.SHELL32.dll_ShellExecuteA]
push 0
lea ecx, [ebp - 0xac]
push str.SoftwareMicrosoftWindowsCurrentVersionUninstall
call fcn.00401580
test eax, eax
je 0x406f5d
push 0
lea ecx, [ebp - 0xac]
push 0x40bf24
call fcn.00401580
test eax, eax
je 0x406f42
push 0x104
lea eax, [ebp - 0x1b0]
push eax
lea ecx, [ebp - 0xac]
push str.UninstallString
call fcn.00401890
test eax, eax
je 0x406f37
lea eax, [ebp - 0x1b0]
push eax
push eax
call fcn.00405c80
add esp, 8
lea ecx, [ebp - 0xac]
call fcn.004016f0
push 0x40bf24
lea ecx, [ebp - 0xac]
call fcn.00401a50
lea ecx, [ebp - 0xac]
call fcn.004016f0
push 0
test esi, esi
je 0x406f6f
push 5
jmp 0x406f71
push 4
call fcn.00403990
add esp, 8
mov ecx, dword [ebp - 0x14]
push 0
push 0x40c124
push eax
call dword [ebp - 0x18]
cmp byte [ebp - 0x1b0], 0
je 0x406fa7
push 5
lea eax, [ebp - 0x1b0]
push 0
push 0
push eax
push 0
push 0
call dword [sym.imp.SHELL32.dll_ShellExecuteA]
push 0
call dword [sym.imp.USER32.dll_PostQuitMessage]
mov dword [ebp - 4], 0xffffffff
call fcn.00406fcf
mov eax, 1
jmp 0x406cd0