Function at 0x10003ae0
Capabilities:
Copy file
Create process on windows
Delete file
Get common file path

Disassembly:
mov eax, dword [esp + 0xc]
sub esp, 0x514
push eax
call fcn.10004b00
add esp, 4
lea ecx, [esp]
push 0x104
push ecx
call dword [sym.imp.KERNEL32.dll_GetWindowsDirectoryA]
test eax, eax
jne 0x10003b14
call dword [sym.imp.KERNEL32.dll_GetLastError]
add esp, 0x514
ret
mov eax, dword [esp + 0x518]
push edi
push esi
push ebp
xor ebp, ebp
push ebx
test eax, eax
jle 0x10003d17
mov ebx, dword [esp + 0x52c]
mov edi, dword [ebx]
test edi, edi
je 0x10003d07
mov eax, dword [esp + 0x530]
test eax, eax
je 0x10003bdd
test ebp, ebp
jne 0x10003bdd
mov esi, edi
mov eax, str.mapi32.dll
mov dl, byte [eax]
mov cl, dl
cmp dl, byte [esi]
jne 0x10003b7c
test cl, cl
je 0x10003b78
mov dl, byte [eax + 1]
mov cl, dl
cmp dl, byte [esi + 1]
jne 0x10003b7c
add eax, 2
add esi, 2
test cl, cl
jne 0x10003b58
xor eax, eax
jmp 0x10003b81
sbb eax, eax
sbb eax, 0xffffffff
test eax, eax
jne 0x10003bdd
push edi
lea eax, [esp + 0x21c]
push 0x1000dbb4
push eax
call fcn.10005dd0
add esp, 0xc
lea ecx, [esp + 0x10]
lea edx, [esp + 0x114]
push str.mapi32x.dll
push str.system32
push ecx
push 0x1000dc9c
push edx
call fcn.10005dd0
add esp, 0x14
lea eax, [esp + 0x10]
lea ecx, [esp + 0x31c]
push str.mapi32x.dll
push str.system
push eax
push 0x1000dc9c
push ecx
jmp 0x10003c34
mov edx, dword [ebx + ebp*4]
lea eax, [esp + 0x218]
push edx
push 0x1000dbb4
push eax
call fcn.10005dd0
mov ecx, dword [ebx + ebp*4]
add esp, 0xc
lea edx, [esp + 0x10]
lea eax, [esp + 0x114]
push ecx
push str.system32
push edx
push 0x1000dc9c
push eax
call fcn.10005dd0
mov ecx, dword [ebx + ebp*4]
add esp, 0x14
lea edx, [esp + 0x10]
lea eax, [esp + 0x31c]
push ecx
push str.system
push edx
push 0x1000dc9c
push eax
call fcn.10005dd0
add esp, 0x14
lea ecx, [esp + 0x114]
lea edx, [esp + 0x218]
push 0
push ecx
push edx
call dword [sym.imp.KERNEL32.dll_CopyFileA]
test eax, eax
jne 0x10003cb9
lea eax, [esp + 0x114]
lea ecx, [esp + 0x218]
push eax
push ecx
lea edx, [esp + 0x428]
push str.Copy_file_from__s_to__s_fails_
push edx
call fcn.10005dd0
mov esi, dword [sym.imp.SETUPAPI.dll_SetupLogErrorA]
add esp, 0x10
lea eax, [esp + 0x420]
push 2
push eax
call esi
call dword [sym.imp.KERNEL32.dll_GetLastError]
push eax
lea ecx, [esp + 0x424]
push str.Copy_file_fails_with_error_code__d
push ecx
call fcn.10005dd0
add esp, 0xc
lea edx, [esp + 0x420]
push 2
push edx
call esi
jmp 0x10003d07
mov eax, dword [esp + 0x534]
test eax, eax
je 0x10003cf9
mov eax, dword [ebx + ebp*4]
mov esi, str.mapisrvr.exe
mov dl, byte [eax]
mov cl, dl
cmp dl, byte [esi]
jne 0x10003cf0
test cl, cl
je 0x10003cec
mov dl, byte [eax + 1]
mov cl, dl
cmp dl, byte [esi + 1]
jne 0x10003cf0
add eax, 2
add esi, 2
test cl, cl
jne 0x10003ccc
xor eax, eax
jmp 0x10003cf5
sbb eax, eax
sbb eax, 0xffffffff
test eax, eax
je 0x10003d07
lea eax, [esp + 0x31c]
push eax
call dword [sym.imp.KERNEL32.dll_DeleteFileA]
mov eax, dword [esp + 0x528]
inc ebp
cmp ebp, eax
jl 0x10003b30
mov eax, dword [esp + 0x530]
test eax, eax
je 0x10003d54
push str.mapi32.dll
lea ecx, [esp + 0x14]
push str.system
push ecx
lea edx, [esp + 0x328]
push 0x1000dc9c
push edx
call fcn.10005dd0
add esp, 0x14
lea eax, [esp + 0x31c]
push eax
call dword [sym.imp.KERNEL32.dll_DeleteFileA]
push str.mlcfg32.cpl
lea ecx, [esp + 0x14]
push str.system
push ecx
lea edx, [esp + 0x224]
push 0x1000dc9c
push edx
call fcn.10005dd0
add esp, 0x14
lea eax, [esp + 0x10]
lea ecx, [esp + 0x114]
push str.mlcfg32.cpl
push str.system32
push eax
push 0x1000dc9c
push ecx
call fcn.10005dd0
add esp, 0x14
lea edx, [esp + 0x114]
lea eax, [esp + 0x218]
push 0
push edx
push eax
call dword [sym.imp.KERNEL32.dll_CopyFileA]
test eax, eax
je 0x10003dc6
lea ecx, [esp + 0x218]
push ecx
call dword [sym.imp.KERNEL32.dll_DeleteFileA]
lea edx, [esp + 0x10]
push str.system32
push edx
lea eax, [esp + 0x11c]
push 0x1000d914
push eax
call fcn.10005dd0
add esp, 0x10
lea ecx, [esp + 0x114]
push 0
push ecx
push 0
push str.fixmapi.exe
push str.open
push 0
call dword [sym.imp.SHELL32.dll_ShellExecuteA]
pop ebx
pop ebp
pop esi
xor eax, eax
pop edi
add esp, 0x514
ret