Function at 0x4038f0
Capabilities:
Create process on windows
Get common file path
Self delete
Write and execute a file
Write file on windows

Disassembly:
push ebp
mov ebp, esp
sub esp, 0x394
mov eax, dword [0x438c20]
xor eax, ebp
mov dword [ebp - 4], eax
push esi
push edi
mov eax, dword [0x433a74]
mov dword [ebp - 0x230], eax
mov ecx, dword [0x433a78]
mov dword [ebp - 0x22c], ecx
mov edx, dword [0x433a7c]
mov dword [ebp - 0x228], edx
mov ax, word [0x433a80]
mov word [ebp - 0x224], ax
mov byte [ebp - 0x218], 0
push 0x103
push 0
lea ecx, [ebp - 0x217]
push ecx
call fcn.0041a170
add esp, 0xc
mov byte [ebp - 0x110], 0
push 0x103
push 0
lea edx, [ebp - 0x10f]
push edx
call fcn.0041a170
add esp, 0xc
mov byte [ebp - 0x338], 0
push 0x103
push 0
lea eax, [ebp - 0x337]
push eax
call fcn.0041a170
add esp, 0xc
lea ecx, [ebp - 0x110]
push ecx
push 0x104
call dword [sym.imp.KERNEL32.dll_GetTempPathA]
lea edx, [ebp - 0x230]
mov dword [ebp - 0x33c], edx
mov eax, dword [ebp - 0x33c]
mov dword [ebp - 0x340], eax
mov ecx, dword [ebp - 0x33c]
mov dl, byte [ecx]
mov byte [ebp - 0x341], dl
add dword [ebp - 0x33c], 1
cmp byte [ebp - 0x341], 0
jne 0x4039b6
mov eax, dword [ebp - 0x33c]
sub eax, dword [ebp - 0x340]
mov ecx, dword [ebp - 0x340]
mov dword [ebp - 0x348], ecx
mov dword [ebp - 0x34c], eax
lea edx, [ebp - 0x110]
add edx, 0xffffffff
mov dword [ebp - 0x350], edx
mov eax, dword [ebp - 0x350]
mov cl, byte [eax + 1]
mov byte [ebp - 0x351], cl
add dword [ebp - 0x350], 1
cmp byte [ebp - 0x351], 0
jne 0x403a01
mov edi, dword [ebp - 0x350]
mov esi, dword [ebp - 0x348]
mov edx, dword [ebp - 0x34c]
mov ecx, edx
shr ecx, 2
rep movsd dword es:[edi], dword [esi]
mov ecx, edx
and ecx, 3
rep movsb byte es:[edi], byte [esi]
push 0x104
lea eax, [ebp - 0x218]
push eax
push 0
call dword [sym.imp.KERNEL32.dll_GetModuleFileNameA]
lea ecx, [ebp - 0x218]
push ecx
push 0x104
lea edx, [ebp - 0x338]
push edx
call fcn.004191e4
add esp, 0xc
push 0x5c
lea eax, [ebp - 0x338]
push eax
call fcn.00402ac0
add esp, 8
mov dword [ebp - 0x220], eax
cmp dword [ebp - 0x220], 0
je 0x403a98
mov ecx, dword [ebp - 0x220]
mov byte [ecx], 0
mov dword [ebp - 0x21c], 0
push 0x433a84
lea edx, [ebp - 0x110]
push edx
call fcn.00419310
add esp, 8
mov dword [ebp - 0x21c], eax
cmp dword [ebp - 0x21c], 0
jne 0x403aca
jmp 0x403d7c
mov eax, dword [ebp - 0x21c]
push eax
push 1
push 9
push 0x433a88
call fcn.004183fc
add esp, 0x10
mov ecx, dword [ebp - 0x21c]
push ecx
push 1
push 5
push 0x433a94
call fcn.004183fc
add esp, 0x10
lea edx, [ebp - 0x218]
mov dword [ebp - 0x358], edx
mov eax, dword [ebp - 0x358]
add eax, 1
mov dword [ebp - 0x35c], eax
mov ecx, dword [ebp - 0x358]
mov dl, byte [ecx]
mov byte [ebp - 0x35d], dl
add dword [ebp - 0x358], 1
cmp byte [ebp - 0x35d], 0
jne 0x403b15
mov eax, dword [ebp - 0x358]
sub eax, dword [ebp - 0x35c]
mov dword [ebp - 0x364], eax
mov ecx, dword [ebp - 0x21c]
push ecx
push 1
mov edx, dword [ebp - 0x364]
push edx
lea eax, [ebp - 0x218]
push eax
call fcn.004183fc
add esp, 0x10
mov ecx, dword [ebp - 0x21c]
push ecx
push 1
push 2
push 0x433a9c
call fcn.004183fc
add esp, 0x10
mov edx, dword [ebp - 0x21c]
push edx
push 1
push 0xa
push 0x433aa0
call fcn.004183fc
add esp, 0x10
lea eax, [ebp - 0x218]
mov dword [ebp - 0x368], eax
mov ecx, dword [ebp - 0x368]
add ecx, 1
mov dword [ebp - 0x36c], ecx
mov edx, dword [ebp - 0x368]
mov al, byte [edx]
mov byte [ebp - 0x36d], al
add dword [ebp - 0x368], 1
cmp byte [ebp - 0x36d], 0
jne 0x403baf
mov ecx, dword [ebp - 0x368]
sub ecx, dword [ebp - 0x36c]
mov dword [ebp - 0x374], ecx
mov edx, dword [ebp - 0x21c]
push edx
push 1
mov eax, dword [ebp - 0x374]
push eax
lea ecx, [ebp - 0x218]
push ecx
call fcn.004183fc
add esp, 0x10
mov edx, dword [ebp - 0x21c]
push edx
push 1
push 0xf
push 0x433aac
call fcn.004183fc
add esp, 0x10
mov eax, dword [ebp - 0x21c]
push eax
push 1
push 7
push 0x433abc
call fcn.004183fc
add esp, 0x10
lea ecx, [ebp - 0x338]
mov dword [ebp - 0x378], ecx
mov edx, dword [ebp - 0x378]
add edx, 1
mov dword [ebp - 0x37c], edx
mov eax, dword [ebp - 0x378]
mov cl, byte [eax]
mov byte [ebp - 0x37d], cl
add dword [ebp - 0x378], 1
cmp byte [ebp - 0x37d], 0
jne 0x403c49
mov edx, dword [ebp - 0x378]
sub edx, dword [ebp - 0x37c]
mov dword [ebp - 0x384], edx
mov eax, dword [ebp - 0x21c]
push eax
push 1
mov ecx, dword [ebp - 0x384]
push ecx
lea edx, [ebp - 0x338]
push edx
call fcn.004183fc
add esp, 0x10
mov eax, dword [ebp - 0x21c]
push eax
push 1
push 3
push 0x433ac4
call fcn.004183fc
add esp, 0x10
mov ecx, dword [ebp - 0x21c]
push ecx
push 1
push 5
push 0x433ac8
call fcn.004183fc
add esp, 0x10
lea edx, [ebp - 0x110]
mov dword [ebp - 0x388], edx
mov eax, dword [ebp - 0x388]
add eax, 1
mov dword [ebp - 0x38c], eax
mov ecx, dword [ebp - 0x388]
mov dl, byte [ecx]
mov byte [ebp - 0x38d], dl
add dword [ebp - 0x388], 1
cmp byte [ebp - 0x38d], 0
jne 0x403ce3
mov eax, dword [ebp - 0x388]
sub eax, dword [ebp - 0x38c]
mov dword [ebp - 0x394], eax
mov ecx, dword [ebp - 0x21c]
push ecx
push 1
mov edx, dword [ebp - 0x394]
push edx
lea eax, [ebp - 0x110]
push eax
call fcn.004183fc
add esp, 0x10
mov ecx, dword [ebp - 0x21c]
push ecx
push 1
push 1
push 0x433ad0
call fcn.004183fc
add esp, 0x10
cmp dword [ebp - 0x21c], 0
je 0x403d62
mov edx, dword [ebp - 0x21c]
push edx
call fcn.0041821e
add esp, 4
push 0
push 0
push 0
lea eax, [ebp - 0x110]
push eax
push 0x433ad4
push 0
call dword [sym.imp.SHELL32.dll_ShellExecuteA]
pop edi
pop esi
mov ecx, dword [ebp - 4]
xor ecx, ebp
call fcn.00417d45
mov esp, ebp
pop ebp
ret