Function at 0x405e30
Capabilities:
Create process on windows
Read file on windows
Terminate process
Write and execute a file
Write file on windows

Disassembly:
push 0xffffffffffffffff
push 0x4cbaaf
mov eax, dword fs:[0]
push eax
sub esp, 0x588
mov eax, dword [0x512f80]
xor eax, esp
mov dword [esp + 0x580], eax
push ebx
push ebp
push esi
push edi
mov eax, dword [0x512f80]
xor eax, esp
push eax
lea eax, [esp + 0x59c]
mov dword fs:[0], eax
cmp dword [esp + 0x5b0], 0
mov ebp, dword [esp + 0x5b4]
mov edi, ecx
jg 0x405ea1
push str.EnoughCmdLineArgs
push ecx
call fcn.0042c7e0
add esp, 4
push eax
mov eax, 0x519
mov ecx, str..BootStrapper.cpp
mov edx, str.argc___0
call fcn.0042ca40
test ebp, ebp
jne 0x405ec8
push str.ProvidedACmdLine
push ecx
call fcn.0042c7e0
add esp, 4
push eax
mov eax, 0x51a
mov ecx, str..BootStrapper.cpp
mov edx, str.argv
call fcn.0042ca40
mov eax, dword [0x51af6c]
mov ebx, 0x10
cmp dword [0x51af80], ebx
jae 0x405edf
mov eax, 0x51af6c
push 0x4e27d4
push eax
call fcn.00482a90
mov esi, eax
add esp, 8
test esi, esi
jne 0x405f43
lea eax, [esp + 0x74]
push 0x51af68
push eax
mov ecx, str.unable_to_open
call fcn.004089d0
mov dword [esp + 0x5ac], esi
push eax
lea ecx, [esp + 0x64]
push ecx
mov ecx, str._for_reading__copying_
call fcn.00408aa0
add esp, 0x10
mov byte [esp + 0x5a4], 1
push eax
lea edx, [esp + 0x30]
push edx
call fcn.0040e350
push 0x5026f0
lea eax, [esp + 0x30]
push eax
call fcn.00488a7c
lea ecx, [esp + 0x90]
push esi
push ecx
call fcn.004090b0
mov dword [esp + 0x5ac], 2
lea edx, [esp + 0x180]
push edi
push edx
mov ecx, str.Tmp.exe
call fcn.00408aa0
add esp, 0x10
mov byte [esp + 0x5a4], 3
cmp dword [esp + 0x190], ebx
mov eax, dword [esp + 0x17c]
jae 0x405f91
lea eax, [esp + 0x17c]
push 0x4e2808
push eax
call fcn.00482a90
add esp, 8
test eax, eax
mov dword [esp + 0x18], eax
jne 0x405ffe
lea eax, [esp + 0x178]
push eax
lea ecx, [esp + 0x5c]
push ecx
mov ecx, str.unable_to_open
call fcn.004089d0
mov byte [esp + 0x5ac], 4
push eax
lea edx, [esp + 0x80]
push edx
mov ecx, str._for_writing__copying_
call fcn.00408aa0
add esp, 0x10
mov byte [esp + 0x5a4], 5
push eax
lea eax, [esp + 0x30]
push eax
call fcn.0040e350
push 0x5026f0
lea ecx, [esp + 0x30]
push ecx
call fcn.00488a7c
push eax
lea edx, [esp + 0xa4]
push edx
call fcn.004090b0
mov byte [esp + 0x5ac], 6
push 2
push 0
push esi
call fcn.00482c18
add esp, 0x14
test eax, eax
je 0x406044
push 0x535
push str..BootStrapper.cpp
push str._fseek_fpInFile__0L__2___0____false
push ecx
call fcn.0042c7e0
add esp, 4
mov ecx, eax
call fcn.0042ca10
push esi
call fcn.00482e35
mov edi, eax
add esp, 4
cmp edi, 0xffffffff
jne 0x406073
push 0x537
push str..BootStrapper.cpp
push str.lTmpSize____1
push ecx
call fcn.0042c7e0
add esp, 4
mov ecx, eax
call fcn.0042ca10
push esi
call fcn.00482ea3
add esp, 4
push edi
call fcn.00481d2d
mov ebx, eax
add esp, 4
test ebx, ebx
jne 0x4060ab
push str.unable_to_allocate_enough_memory_to_self_update
lea eax, [esp + 0x30]
push eax
xor cl, cl
call fcn.0040e5f0
push 0x5026f0
lea ecx, [esp + 0x30]
push ecx
call fcn.00488a7c
push esi
push edi
push 1
push ebx
call fcn.00483204
add esp, 0x10
cmp eax, edi
je 0x406110
lea edx, [esp + 0x58]
push 0x51af68
push edx
mov ecx, str.unable_to_read
call fcn.004089d0
mov byte [esp + 0x5ac], 7
push eax
lea eax, [esp + 0x80]
push eax
mov ecx, str._while_self_updating
call fcn.00408aa0
add esp, 0x10
mov byte [esp + 0x5a4], 8
push eax
lea ecx, [esp + 0x30]
push ecx
call fcn.0040e350
push 0x5026f0
lea edx, [esp + 0x30]
push edx
call fcn.00488a7c
mov eax, dword [esp + 0x18]
push eax
push edi
push 1
push ebx
call fcn.0048337e
add esp, 0x10
cmp eax, edi
je 0x40617c
lea ecx, [esp + 0x178]
push ecx
lea edx, [esp + 0x5c]
push edx
mov ecx, str.unable_to_write
call fcn.004089d0
mov byte [esp + 0x5ac], 9
push eax
lea eax, [esp + 0x80]
push eax
mov ecx, str._while_self_updating
call fcn.00408aa0
add esp, 0x10
mov byte [esp + 0x5a4], 0xa
push eax
lea ecx, [esp + 0x30]
push ecx
call fcn.0040e350
push 0x5026f0
lea edx, [esp + 0x30]
push edx
call fcn.00488a7c
push ebx
call fcn.00481df0
add esp, 4
push esi
call fcn.00482b15
mov eax, dword [esp + 0x1c]
add esp, 4
push eax
call fcn.00482b15
add esp, 4
push 0x44
lea ecx, [esp + 0xe0]
push 0
push ecx
call fcn.00488650
xor eax, eax
add esp, 0xc
cmp dword [esp + 0x190], 0x10
mov dword [esp + 0x1c], eax
mov dword [esp + 0x20], eax
mov dword [esp + 0x24], eax
mov dword [esp + 0x28], eax
mov eax, dword [esp + 0x17c]
mov dword [esp + 0xdc], 0x44
jae 0x4061e4
lea eax, [esp + 0x17c]
mov edx, dword [esp + 0x5ac]
mov ecx, dword [ebp]
push edx
push ecx
push str.SelfUpdate
push eax
push str._s__s___s___d
mov edi, 0x400
lea esi, [esp + 0x1a8]
call fcn.00442f10
mov edi, dword [esp + 0x5c4]
mov esi, 1
add esp, 0x14
cmp edi, esi
jle 0x40628c
mov eax, dword [ebp + esi*4]
push 0x20
push eax
call fcn.00483410
add esp, 8
test eax, eax
push 0x400
lea ebx, [esp + 0x198]
je 0x406260
mov eax, 0x4e28e0
call fcn.00442d50
mov eax, dword [ebp + esi*4]
add esp, 4
push 0x400
call fcn.00442d50
mov eax, 0x4e28e4
jmp 0x40626e
mov eax, 0x4e2284
call fcn.00442d50
mov eax, dword [ebp + esi*4]
add esp, 4
push 0x400
lea ebx, [esp + 0x198]
call fcn.00442d50
add esi, 1
add esp, 4
cmp esi, edi
jl 0x40621f
lea edx, [esp + 0x1c]
push edx
lea eax, [esp + 0xe0]
push eax
push 0
push 0
push 0x20
push 0
push 0
push 0
lea ecx, [esp + 0x1b4]
push ecx
push 0
call dword [sym.imp.KERNEL32.dll_CreateProcessA]
test eax, eax
jne 0x406381
call fcn.00483509
mov edx, dword [eax]
push edx
lea eax, [esp + 0x5c]
push eax
call fcn.00408d70
mov esi, eax
mov byte [esp + 0x5ac], 0xb
lea ecx, [esp + 0x7c]
push str.Could_not_spawn_self_updater
push ecx
call fcn.0041baf0
mov byte [esp + 0x5b4], 0xc
lea edx, [esp + 0x188]
push edx
push eax
lea eax, [esp + 0x174]
push eax
call fcn.00408900
add esp, 0x1c
mov byte [esp + 0x5a4], 0xd
push eax
lea ecx, [esp + 0x128]
push ecx
mov ecx, 0x4e28ec
call fcn.00408aa0
mov byte [esp + 0x5ac], 0xe
push esi
push eax
lea edx, [esp + 0x150]
push edx
call fcn.00408900
add esp, 0x14
mov byte [esp + 0x5a4], 0xf
push eax
lea eax, [esp + 0x30]
push eax
mov ecx, 0x4e28e8
call fcn.00408aa0
add esp, 8
mov byte [esp + 0x5a4], 0x10
push eax
lea ecx, [esp + 0xb4]
push ecx
call fcn.0040e350
push 0x5026f0
lea edx, [esp + 0xb4]
push edx
call fcn.00488a7c
push 0
call fcn.004837dd
int3