Function at 0x452bd2
Capabilities:
Create process on windows
Get common file path
Resolve function by parsing pe exports
Write and execute a file
Write file on windows

Disassembly:
push ebp
mov ebp, esp
and esp, 0xfffffff8
sub esp, 0xc68
push ebx
push ebp
push esi
push edi
push 0x3c
xor ebp, ebp
lea eax, [esp + 0x30]
push ebp
push eax
mov esi, ecx
call fcn.0041c3f0
add esp, 0xc
lea eax, [esp + 0x270]
mov edi, 0x208
push edi
push ebp
push eax
call fcn.0041c3f0
add esp, 0xc
lea eax, [esp + 0x68]
push edi
push ebp
push eax
call fcn.0041c3f0
add esp, 0xc
lea eax, [esp + 0x478]
push 0x800
push ebp
push eax
call fcn.0041c3f0
add esp, 0xc
lea eax, [esp + 0x270]
mov ebx, 0x104
mov edi, ebp
mov dword [esp + 0x1c], edi
push ebx
push eax
push ebp
call dword [sym.imp.KERNEL32.DLL_GetModuleFileNameW]
lea eax, [esp + 0x68]
push eax
push ebx
call dword [sym.imp.KERNEL32.DLL_GetTempPathW]
dec ebx
test eax, eax
jne 0x452caa
push 0xffffffffffffffff
lea eax, [esp + 0x274]
push eax
lea eax, [esp + 0x70]
push ebx
push eax
call fcn.00428a3a
lea eax, [esp + 0x78]
push 0x5c
push eax
call fcn.0041b939
mov edi, eax
add esp, 0x18
test edi, edi
je 0x452c9a
lea eax, [esp + 0x68]
sub edi, eax
sar edi, 1
mov dword [esp + 0x1c], edi
mov eax, edi
je 0x452caa
jmp 0x452ca3
or eax, 0xffffffff
or edi, eax
mov dword [esp + 0x1c], edi
xor ecx, ecx
mov word [esp + eax*2 + 0x68], cx
push str.mtuninstall.bat
mov edx, ebx
lea ecx, [esp + 0x6c]
call fcn.004081a7
mov eax, dword [esi + 0x58]
pop ecx
test byte [eax + 0x83c], 1
je 0x452d09
mov esi, dword [0x48bebc]
call dword [sym.imp.KERNEL32.DLL_GetCurrentProcessId]
lea ecx, [esp + 0x68]
push ecx
push esi
lea ecx, [esp + 0x278]
push ecx
push eax
mov eax, ecx
push eax
push str.cd_r_n__S___processwait:_u_r_ndel__Q___S__r_nrd___S__r_ndel__Q___S__r_n
lea eax, [esp + 0x490]
push 0x7ff
push eax
call fcn.00404e2f
add esp, 0x20
mov ebx, eax
neg ebx
sbb bl, bl
inc bl
jmp 0x452d46
lea eax, [esp + 0x68]
push eax
lea eax, [esp + 0x274]
push eax
call dword [sym.imp.KERNEL32.DLL_GetCurrentProcessId]
push eax
lea eax, [esp + 0x27c]
push eax
push str.cd_r_n__S___processwait:_u_r_ndel__Q___S__r_ndel__Q___S__r_n
lea eax, [esp + 0x48c]
push 0x7ff
push eax
call fcn.00404e2f
add esp, 0x1c
neg eax
sbb al, al
lea ebx, [eax + 1]
mov dword [esp + 0x24], ebx
test bl, bl
je 0x452e8c
lea eax, [esp + 0x1c]
push eax
lea ecx, [esp + 0x47c]
call fcn.004529df
mov edi, dword [esp + 0x1c]
xor ecx, ecx
test eax, eax
sete bl
cmovs edi, ecx
mov dword [esp + 0x24], ebx
test bl, bl
je 0x452e8c
push ebp
push 0x80
push 2
push ebp
push 3
push 0x40000000
lea eax, [esp + 0x80]
push eax
call dword [sym.imp.KERNEL32.DLL_CreateFileW]
mov ebp, eax
cmp ebp, 0xffffffff
je 0x452e8c
mov esi, edi
xor edx, edx
mov dword [esp + 0x28], edx
xorps xmm0, xmm0
movlpd qword [esp + 0x10], xmm0
test esi, esi
jne 0x452dc1
mov ecx, dword [esp + 0x14]
jmp 0x452e36
mov eax, dword [esp + 0x14]
mov ebx, dword [esp + 0x10]
mov dword [esp + 0x20], eax
and dword [esp + 0x10], 0
test edx, edx
jb 0x452de7
ja 0x452de0
cmp esi, 0xfffffff
jbe 0x452de7
mov eax, 0xfffffff
jmp 0x452de9
mov eax, esi
push 0
lea ecx, [esp + 0x14]
push ecx
push eax
lea eax, [esp + 0x484]
add eax, ebx
push eax
push ebp
call dword [sym.imp.KERNEL32.DLL_WriteFile]
mov ecx, dword [esp + 0x20]
test eax, eax
je 0x452e2e
add ebx, dword [esp + 0x10]
mov edx, dword [esp + 0x28]
adc ecx, 0
sub esi, dword [esp + 0x10]
mov dword [esp + 0x20], ecx
sbb edx, 0
mov dword [esp + 0x28], edx
test edx, edx
ja 0x452dcd
jb 0x452e2e
test esi, esi
jne 0x452dcd
mov dword [esp + 0x10], ebx
mov ebx, dword [esp + 0x24]
mov eax, dword [esp + 0x10]
cmp eax, edi
jne 0x452e85
test ecx, ecx
jne 0x452e85
push ebp
call dword [sym.imp.KERNEL32.DLL_CloseHandle]
and dword [esp + 0x40], 0
lea eax, [esp + 0x68]
and dword [esp + 0x48], 0
mov dword [esp + 0x3c], eax
lea eax, [esp + 0x2c]
push eax
mov dword [esp + 0x30], 0x3c
mov dword [esp + 0x3c], str.Open
mov dword [esp + 0x34], 0x40
call dword [sym.imp.SHELL32.dll_ShellExecuteExW]
test eax, eax
setne bl
jmp 0x452e8c
push ebp
call dword [sym.imp.KERNEL32.DLL_CloseHandle]
pop edi
mov al, bl
pop esi
pop ebp
pop ebx
mov esp, ebp
pop ebp
ret