Function at 0x403c20
Capabilities:
Create process on windows

Disassembly:
push ebp
mov ebp, esp
sub esp, 8
push 0x4012d6
mov eax, dword fs:[0]
push eax
mov dword fs:[0], esp
sub esp, 0x88
push ebx
push esi
push edi
mov dword [ebp - 8], esp
mov dword [ebp - 4], 0x401250
xor eax, eax
mov ecx, 0x11
mov dword [ebp - 0x30], eax
lea edi, [ebp - 0x74]
mov dword [ebp - 0x2c], eax
mov edx, dword [ebp + 0xc]
mov dword [ebp - 0x28], eax
xor esi, esi
rep stosd dword es:[edi], eax
xor ecx, ecx
mov dword [ebp - 0x14], esi
mov dword [ebp - 0x84], ecx
mov dword [ebp - 0x18], esi
mov dword [ebp - 0x80], ecx
mov dword [ebp - 0x1c], esi
mov dword [ebp - 0x7c], ecx
mov dword [ebp - 0x20], esi
mov dword [ebp - 0x78], ecx
lea ecx, [ebp - 0x14]
mov dword [ebp - 0x24], eax
mov dword [ebp - 0x88], esi
mov dword [ebp - 0x8c], esi
call dword [sym.imp.MSVBVM60.DLL___vbaStrCopy]
lea edx, [ebp - 0x84]
push 0x10
push edx
call dword [sym.imp.KERNEL32.DLL_RtlZeroMemory]
call dword [sym.imp.KERNEL32.DLL_WTSGetActiveConsoleSessionId]
cmp eax, esi
mov dword [ebp - 0x20], eax
jge 0x403cd4
lea eax, [ebp - 0x84]
lea ecx, [ebp - 0x30]
push eax
push ecx
push 0x10
call dword [sym.imp.MSVBVM60.DLL___vbaCopyBytes]
push 0x403ea7
jmp 0x403e9d
lea edx, [ebp - 0x18]
mov dword [ebp - 0x18], esi
push edx
push eax
call dword [sym.imp.WTSAPI32.DLL_WTSQueryUserToken]
cmp eax, esi
mov dword [ebp - 0x88], eax
je 0x403e76
mov eax, dword [ebp - 0x18]
cmp eax, esi
je 0x403e76
mov ebx, dword [sym.imp.KERNEL32.DLL_CloseHandle]
push eax
call ebx
mov dword [ebp - 0x18], esi
call dword [sym.imp.KERNEL32.DLL_GetCurrentProcess]
lea ecx, [ebp - 0x18]
push ecx
push 0xf01ff
push eax
call dword [sym.imp.ADVAPI32.DLL_OpenProcessToken]
mov eax, dword [ebp - 0x18]
cmp eax, esi
je 0x403e76
lea ecx, [ebp - 0x1c]
mov dword [ebp - 0x1c], esi
push ecx
push 1
push 2
push esi
push esi
push eax
call dword [sym.imp.ADVAPI32.DLL_DuplicateTokenEx]
mov edx, dword [ebp - 0x18]
push edx
call ebx
mov eax, dword [ebp - 0x1c]
cmp eax, esi
jne 0x403d66
lea eax, [ebp - 0x84]
lea ecx, [ebp - 0x30]
push eax
push ecx
push 0x10
call dword [sym.imp.MSVBVM60.DLL___vbaCopyBytes]
push 0x403ea7
jmp 0x403e9d
mov edi, dword [sym.imp.ADVAPI32.DLL_SetTokenInformation]
lea edx, [ebp - 0x20]
push 4
push edx
push 0xc
push eax
call edi
cmp eax, esi
mov dword [ebp - 0x88], eax
jne 0x403da4
mov eax, dword [ebp - 0x1c]
push eax
call ebx
lea ecx, [ebp - 0x84]
lea edx, [ebp - 0x30]
push ecx
push edx
push 0x10
call dword [sym.imp.MSVBVM60.DLL___vbaCopyBytes]
push 0x403ea7
jmp 0x403e9d
mov ecx, dword [ebp - 0x1c]
lea eax, [ebp - 0x88]
push 4
push eax
push 0x1a
push ecx
mov dword [ebp - 0x88], 1
call edi
lea edx, [ebp - 0x74]
push 0x44
push edx
call dword [sym.imp.KERNEL32.DLL_RtlZeroMemory]
cmp word [ebp + 0x10], si
mov ecx, 1
mov dword [ebp - 0x74], 0x44
mov dword [ebp - 0x48], ecx
jne 0x403de2
xor ecx, ecx
call dword [sym.imp.MSVBVM60.DLL___vbaI2I4]
mov word [ebp - 0x44], ax
lea eax, [ebp - 0x84]
mov edx, dword [ebp - 0x14]
lea ecx, [ebp - 0x74]
push eax
push ecx
push esi
push esi
push esi
push esi
push esi
push esi
lea eax, [ebp - 0x8c]
push edx
push eax
call dword [sym.imp.MSVBVM60.DLL___vbaStrToAnsi]
mov ecx, dword [ebp - 0x1c]
push eax
push esi
push ecx
call dword [sym.imp.ADVAPI32.DLL_CreateProcessAsUserA]
mov edx, dword [ebp - 0x8c]
mov edi, eax
lea eax, [ebp - 0x14]
push edx
push eax
call dword [sym.imp.MSVBVM60.DLL___vbaStrToUnicode]
lea ecx, [ebp - 0x8c]
mov dword [ebp - 0x88], edi
call dword [sym.imp.MSVBVM60.DLL___vbaFreeStr]
mov ecx, dword [ebp - 0x1c]
push ecx
call ebx
cmp dword [ebp - 0x88], esi
jne 0x403e5c
lea edx, [ebp - 0x84]
push 0x10
push edx
call dword [sym.imp.KERNEL32.DLL_RtlZeroMemory]
lea eax, [ebp - 0x84]
lea ecx, [ebp - 0x30]
push eax
push ecx
push 0x10
call dword [sym.imp.MSVBVM60.DLL___vbaCopyBytes]
push 0x403ea7
jmp 0x403e9d
lea edx, [ebp - 0x84]
lea eax, [ebp - 0x30]
push edx
push eax
push 0x10
call dword [sym.imp.MSVBVM60.DLL___vbaCopyBytes]
push 0x403ea7
jmp 0x403e9d
lea ecx, [ebp - 0x14]
call dword [sym.imp.MSVBVM60.DLL___vbaFreeStr]
ret