PspPrepareEnclaveThreadWait

INT64 __fastcall PspPrepareEnclaveThreadWait(INT64 a1, _QWORD *a2){
  INT64 result; 
  char *PoolWithQuotaTag; 
  _QWORD *v6; 
  _QWORD *v7; 
  if( !*(_DWORD *)(a1 + 40) )
    return 3221226770i64;
  PoolWithQuotaTag = (char *)ExAllocatePoolWithQuotaTag((POOL_TYPE)9, 0x30ui64, 0x57457350ui64);
  v6 = PoolWithQuotaTag;
  if( !PoolWithQuotaTag )
    return 3221225626i64;
  KeInitializeEvent((_KEVENT *)(PoolWithQuotaTag + 16), SynchronizationEvent, 0);
  v7 = *(_QWORD **)(a1 + 64);
  if( *v7 != a1 + 56 )
    __fastfail(3u);
  *v6 = a1 + 56;
  v6[1] = v7;
  *v7 = v6;
  *(_QWORD *)(a1 + 64) = v6;
  result = 0i64;
  *a2 = v6;
  return result;
}

Referenced by:

PsCallEnclave