Так тоже не получается:
public struct Array {
int el[2];
} ar;
ar.el[0] = 1;
ar.el[1] = 2;
void* result = userFunc(ar);
В окне Disassembly выглядит это вот так:
public struct Array {
int el[3];
} ar;
ar.el[1] = 1;
0000015e mov dword ptr [rsp+000000F4h],1
ar.el[2] = 2;
00000169 mov dword ptr [rsp+000000F8h],2
void* result = userFunc(ar);
00000174 mov r11,83CD720h
0000017e mov r10,qword ptr [rsp+28h]
00000183 lea rcx,[rsp+000000F0h]
0000018b mov rax,qword ptr [rcx]
0000018e mov qword ptr [rsp+60h],rax
00000193 mov eax,dword ptr [rcx+8]
00000196 mov dword ptr [rsp+68h],eax
0000019a lea rcx,[rsp+60h]
0000019f call 000000000867A524