Function at 0x40b420
Capabilities:
Create process on windows
Delete file
Move file
Terminate process

Disassembly:
push ebp
mov ebp, esp
and esp, 0xfffffff8
push 0xffffffffffffffff
push 0x44b8b8
mov eax, dword fs:[0]
push eax
sub esp, 0x210
mov eax, dword [0x45e054]
xor eax, esp
mov dword [esp + 0x208], eax
push esi
mov eax, dword [0x45e054]
xor eax, esp
push eax
lea eax, [esp + 0x218]
mov dword fs:[0], eax
cmp byte [0x45ee29], 0
je 0x40b545
cmp byte [0x45ee0b], 0
je 0x40b552
sub esp, 0x18
mov ecx, esp
push 1
mov dword [ecx + 0x14], 0xf
mov dword [ecx + 0x10], 0
push 0x458f10
mov byte [ecx], 0
call fcn.00405d00
mov ecx, 0xf
call fcn.00401730
mov esi, esp
sub esp, 0x1c
mov ecx, esp
mov dword [esp + 0x44], esp
push 0xffffffffffffffff
push 0
mov dword [ecx + 0x14], 0xf
mov dword [ecx + 0x10], 0
push 0x45e170
mov byte [ecx], 0
call fcn.004059a0
sub esp, 0x18
mov dword [esp + 0x26c], 0
mov ecx, esp
push 0x45
mov dword [ecx + 0x14], 0xf
mov dword [ecx + 0x10], 0
push 0x4590b0
mov byte [ecx], 0
call fcn.00405d00
mov edx, 0x45
mov dword [esp + 0x26c], 0xffffffff
mov ecx, esi
call fcn.0040cdc0
add esp, 0x34
mov ecx, 0xc
call fcn.00401730
inc dword [0x45ee18]
add esp, 0x18
mov dword [0x45ee1c], 0
push 0x2710
call dword [sym.imp.KERNEL32.dll_Sleep]
push 1
call dword [sym.imp.MSVCR120.dll_exit]
cmp byte [0x45ee0b], 0
jne 0x40b871
sub esp, 0x18
mov byte [0x45ee0b], 1
mov esi, esp
mov byte [0x45ee29], 1
sub esp, 0x1c
mov ecx, esp
mov dword [esp + 0x40], esp
push 0xffffffffffffffff
push 0
mov dword [ecx + 0x14], 0xf
mov dword [ecx + 0x10], 0
push 0x45e170
mov byte [ecx], 0
call fcn.004059a0
sub esp, 0x18
mov dword [esp + 0x26c], 1
mov ecx, esp
push 0x4590f8
call fcn.00405e00
mov edx, 0x32
mov dword [esp + 0x26c], 0xffffffff
mov ecx, esi
call fcn.0040cdc0
add esp, 0x34
mov ecx, 2
call fcn.00401730
inc dword [0x45ee18]
lea ecx, [esp + 0xd4]
add esp, 0x18
mov dword [0x45ee1c], 0
mov edx, 0x45912c
mov byte [0x45ee0b], 1
push 0
push 9
call fcn.0040eff0
sub esp, 0x14
mov dword [esp + 0x23c], 2
mov esi, esp
push eax
sub esp, 0x1c
mov ecx, esp
mov dword [esp + 0x48], esp
push 0xffffffffffffffff
push 0
mov dword [ecx + 0x14], 0xf
mov dword [ecx + 0x10], 0
push 0x45e170
mov byte [ecx], 0
call fcn.004059a0
sub esp, 0x18
mov byte [esp + 0x274], 3
mov ecx, esp
push 0xa
mov dword [ecx + 0x14], 0xf
mov dword [ecx + 0x10], 0
push 0x459138
mov byte [ecx], 0
call fcn.00405d00
mov edx, 0xa
mov byte [esp + 0x274], 2
lea ecx, [esp + 0x128]
call fcn.0040cdc0
add esp, 0x34
mov edx, eax
mov byte [esp + 0x240], 4
mov ecx, esi
call fcn.00409380
add esp, 4
lea ecx, [esp + 0x108]
mov edx, 6
call fcn.0040f770
add esp, 0x1c
cmp dword [esp + 0xe8], 0x10
mov esi, dword [sym.imp.MSVCR120.dll_void___cdecl_operator_delete_void__]
jb 0x40b6bd
push dword [esp + 0xd4]
call esi
add esp, 4
mov dword [esp + 0xe8], 0xf
mov dword [esp + 0xe4], 0
mov byte [esp + 0xd4], 0
mov byte [esp + 0x220], 7
cmp dword [esp + 0xd0], 0x10
jb 0x40b6f9
push dword [esp + 0xbc]
call esi
add esp, 4
mov edx, 0x459144
mov dword [esp + 0xd0], 0xf
lea ecx, [esp + 0xec]
mov dword [esp + 0xcc], 0
mov byte [esp + 0xbc], 0
call fcn.004053b0
test al, al
je 0x40b7bb
sub esp, 0x18
mov esi, esp
sub esp, 0x1c
mov ecx, esp
mov dword [esp + 0x40], esp
push 0xffffffffffffffff
push 0
mov dword [ecx + 0x14], 0xf
mov dword [ecx + 0x10], 0
push 0x45e170
mov byte [ecx], 0
call fcn.004059a0
sub esp, 0x18
mov byte [esp + 0x26c], 8
mov ecx, esp
push 0x4590b0
call fcn.00405e00
mov edx, 0x45
mov byte [esp + 0x26c], 7
mov ecx, esi
call fcn.0040cdc0
add esp, 0x34
mov ecx, 0xc
call fcn.00401730
inc dword [0x45ee18]
add esp, 0x18
mov dword [0x45ee1c], 0
push 0x2710
call dword [sym.imp.KERNEL32.dll_Sleep]
push 0
call dword [sym.imp.MSVCR120.dll_exit]
sub esp, 0xc
lea ecx, [esp + 0x20]
push str.update.txt
call fcn.0040bd00
mov byte [esp + 0x220], 9
lea eax, [esp + 0xec]
cmp dword [esp + 0x100], 0x10
lea ecx, [esp + 0x14]
push 0
push dword [esp + 0x100]
cmovae eax, dword [esp + 0xf4]
push eax
call dword [sym.imp.MSVCP120.dll_public:_class_std::basic_ostream_char__struct_std::char_traits_char______thiscall_std::basic_ostream_char__struct_std::char_traits_char__::write_char_const___long_long___int64__]
lea ecx, [esp + 0x14]
call fcn.004086d0
push 0x104
lea eax, [esp + 0x108]
push eax
push 0
call dword [sym.imp.KERNEL32.dll_GetModuleFileNameA]
push str.chm_client_old.exe
call dword [sym.imp.MSVCR120.dll_remove]
mov esi, dword [sym.imp.MSVCR120.dll_rename]
lea eax, [esp + 0x108]
add esp, 4
push str.chm_client_old.exe
push eax
call esi
lea eax, [esp + 0x10c]
push eax
push str.update.txt
call esi
add esp, 0x10
lea eax, [esp + 0x104]
push 1
push eax
call dword [sym.imp.KERNEL32.dll_WinExec]
push 0
mov byte [0x45ee0a], 1
call dword [sym.imp.MSVCR120.dll_exit]
xor al, al
mov ecx, dword [esp + 0x218]
mov dword fs:[0], ecx
pop ecx
pop esi
mov ecx, dword [esp + 0x208]
xor ecx, esp
call fcn.0044998c
mov esp, ebp
pop ebp
ret