AlpcpExposeContextAttribute

INT64 __fastcall AlpcpExposeContextAttribute(INT64 a1, INT64 a2, INT64 a3, _DWORD *a4){
  __int64 v4; 
  int v5; 
  __int64 v6; 
  INT64 result; 
  if( *(_QWORD *)(a2 + 56) == a1 || *(_QWORD *)(a2 + 64) == a1 )
    v4 = *(_QWORD *)(a2 + 128);
  else
    v4 = *(_QWORD *)(a2 + 120);
  *(_QWORD *)a3 = v4;
  if( *(_QWORD *)(a2 + 56) == a1 || *(_QWORD *)(a2 + 64) == a1 )
    v5 = *(_DWORD *)(a2 + 72);
  else
    v5 = *(_DWORD *)(a2 + 44);
  *(_DWORD *)(a3 + 16) = v5;
  if( (*(_DWORD *)(a1 + 416) & 6) == 4 )
    v6 = *(_QWORD *)(a2 + 104);
  else
    v6 = *(_QWORD *)(a2 + 112);
  *(_QWORD *)(a3 + 8) = v6;
  *(_DWORD *)(a3 + 20) = *(_DWORD *)(a2 + 264);
  result = *(unsigned int *)(a2 + 272);
  *(_DWORD *)(a3 + 24) = result;
  if( a4 )
  {
    if( *(_QWORD *)a3 )
      *a4 |= 0x20000000u;
  }
  return result;
}

Referenced by:

AlpcpReturnMessageOnInsufficientBuffer