Function at 0x465de7
Capabilities:
Create a process with modified i/o handles and window
Create pipe
Create process on windows
Create two anonymous pipes
Read file on windows
Terminate process
Write and execute a file
Write file on windows

Disassembly:
mov edi, edi
push ebp
mov ebp, esp
push 0xffffffffffffffff
push 0x4705f7
mov eax, dword fs:[0]
push eax
mov eax, 0x1094
call fcn.00460a40
mov eax, dword [0x4a2018]
xor eax, ebp
mov dword [ebp - 0x10], eax
push ebx
push esi
push edi
push eax
lea eax, [ebp - 0xc]
mov dword fs:[0], eax
mov eax, dword [ebp + 8]
mov edi, dword [sym.imp.KERNEL32.dll_CreatePipe]
mov dword [ebp - 0x1038], eax
mov eax, dword [ebp + 0xc]
mov dword [ebp - 0x1018], eax
xor ebx, ebx
push ebx
lea eax, [ebp - 0x1044]
push eax
lea eax, [ebp - 0x1034]
push eax
xor esi, esi
lea eax, [ebp - 0x1024]
inc esi
push eax
mov dword [ebp - 0x103c], esi
mov dword [ebp - 0x1040], ebx
mov dword [ebp - 0x1044], 0xc
call edi
push ebx
test eax, eax
jne 0x465e88
push dword [0x4b4c00]
push str.create_pipe1_failed.
push ebx
call dword [sym.imp.BCGCBPRO120090.dll_int___cdecl_BCGPMessageBox_struct_HWND_____char_const___char_const___unsigned_int_]
add esp, 0x10
or eax, 0xffffffff
jmp 0x466182
lea eax, [ebp - 0x1044]
push eax
lea eax, [ebp - 0x1030]
push eax
lea eax, [ebp - 0x101c]
push eax
call edi
push ebx
test eax, eax
jne 0x465eb1
push dword [0x4b4c00]
push str.create_pipe2_failed.
jmp 0x465e76
mov edi, dword [sym.imp.KERNEL32.dll_SetHandleInformation]
push esi
push dword [ebp - 0x101c]
call edi
push ebx
push esi
push dword [ebp - 0x1034]
call edi
xor eax, eax
lea edi, [ebp - 0x1054]
stosd dword es:[edi], eax
stosd dword es:[edi], eax
stosd dword es:[edi], eax
stosd dword es:[edi], eax
lea eax, [ebp - 0x10a0]
push eax
call dword [sym.imp.KERNEL32.dll_GetStartupInfoA]
lea ecx, [ebp - 0x1054]
push ecx
xor eax, eax
lea ecx, [ebp - 0x10a0]
push ecx
push dword [0x4b4be8]
mov word [ebp - 0x1070], ax
mov eax, dword [ebp - 0x1024]
push ebx
push 0x20
mov dword [ebp - 0x1068], eax
mov eax, dword [ebp - 0x1030]
push esi
mov dword [ebp - 0x1064], eax
mov dword [ebp - 0x1060], eax
mov eax, dword [ebp - 0x1018]
mov eax, dword [eax]
push ebx
push ebx
push eax
push ebx
mov dword [ebp - 0x10a0], 0x44
mov dword [ebp - 0x1074], 0x101
call dword [sym.imp.KERNEL32.dll_CreateProcessA]
test eax, eax
jne 0x465f5d
push ebx
push dword [0x4b4c00]
push str.can_not_create_downloading.
jmp 0x465e76
push dword [ebp - 0x1030]
mov edi, dword [sym.imp.KERNEL32.dll_CloseHandle]
call edi
lea eax, [ebp - 0x102c]
push str.e.dat
push eax
mov esi, 0x4b4aec
call fcn.004012f4
mov dword [ebp - 4], ebx
push 0x49597c
push dword [ebp - 0x102c]
call dword [sym.imp.MSVCR90.dll_fopen]
mov esi, 0xfff
push esi
mov dword [ebp - 0x1020], eax
lea eax, [ebp - 0x100f]
push ebx
push eax
mov dword [ebp - 0x1014], ebx
mov byte [ebp - 0x1010], bl
call sub.MSVCR90.dll_memset
add esp, 0x1c
push ebx
lea eax, [ebp - 0x1028]
push eax
push esi
lea eax, [ebp - 0x1010]
push eax
push dword [ebp - 0x101c]
call dword [sym.imp.KERNEL32.dll_ReadFile]
test eax, eax
je 0x466125
cmp dword [ebp - 0x1020], ebx
je 0x466007
push dword [ebp - 0x1020]
lea eax, [ebp - 0x1010]
push 1
push dword [ebp - 0x1028]
push eax
call dword [sym.imp.MSVCR90.dll_fwrite]
add esp, 0x10
mov eax, dword [ebp - 0x1028]
cmp eax, ebx
je 0x46611c
cmp dword [0x4b3b04], ebx
jne 0x4660ef
mov esi, dword [sym.imp.MSVCR90.dll_strstr]
mov byte [ebp + eax - 0x1010], bl
lea eax, [ebp - 0x1010]
push str.has_already_been_downloaded
push eax
call esi
pop ecx
pop ecx
test eax, eax
je 0x46604c
mov dword [ebp - 0x1014], 1
lea eax, [ebp - 0x1010]
push str.__of
push eax
call esi
mov esi, eax
pop ecx
pop ecx
cmp esi, ebx
je 0x4660c5
mov dword [ebp - 0x1014], 1
fldz
lea eax, [ebp - 0x1018]
push eax
fstp dword [ebp - 0x1018]
lea eax, [esi - 5]
push 0x497c84
push eax
call dword [sym.imp.MSVCR90.dll_sscanf]
fld dword [ebp - 0x1018]
add esp, 0xc
push ebx
call fcn.00460af6
push eax
mov eax, dword [ebp - 0x1038]
push 0x4a2
push dword [eax + 0x10]
call dword [sym.imp.USER32.dll_PostMessageA]
push str.__of
add esi, 5
push esi
call dword [sym.imp.MSVCR90.dll_strstr]
mov esi, eax
pop ecx
pop ecx
cmp esi, ebx
jne 0x46606c
push ebx
lea eax, [ebp - 0x1028]
push eax
push 0xfff
lea eax, [ebp - 0x1010]
push eax
push dword [ebp - 0x101c]
call dword [sym.imp.KERNEL32.dll_ReadFile]
test eax, eax
jne 0x465fe1
jmp 0x46611c
push dword [ebp - 0x1024]
call edi
push ebx
push ebx
call dword [sym.imp.KERNEL32.dll_GenerateConsoleCtrlEvent]
push ebx
push dword [0x4b4c00]
push str.canceled_by_user.
push ebx
call dword [sym.imp.BCGCBPRO120090.dll_int___cdecl_BCGPMessageBox_struct_HWND_____char_const___char_const___unsigned_int_]
add esp, 0x10
or dword [ebp - 0x1014], 0xffffffff
cmp dword [ebp - 0x1014], 0xffffffff
je 0x46612d
push dword [ebp - 0x1024]
call edi
push dword [ebp - 0x1034]
call edi
push dword [ebp - 0x101c]
call edi
push 0xffffffffffffffff
push dword [ebp - 0x1054]
call dword [sym.imp.KERNEL32.dll_TerminateProcess]
push dword [ebp - 0x1054]
call edi
push dword [ebp - 0x1050]
call edi
cmp dword [ebp - 0x1020], ebx
je 0x466170
push dword [ebp - 0x1020]
call dword [sym.imp.MSVCR90.dll_fclose]
pop ecx
lea ecx, [ebp - 0x102c]
call dword [sym.imp.mfc90.dll_Ordinal_601]
mov eax, dword [ebp - 0x1014]
mov ecx, dword [ebp - 0xc]
mov dword fs:[0], ecx
pop ecx
pop edi
pop esi
pop ebx
mov ecx, dword [ebp - 0x10]
xor ecx, ebp
call fcn.00403cb8
leave
ret