PspReleaseEnclaveThread

INT64 __fastcall PspReleaseEnclaveThread(INT64 a1){
  INT64 result; 
  __int64 *v3; 
  __int64 *v4; 
  __int64 **v5; 
  result = a1 + 56;
  v3 = *(__int64 **)(a1 + 56);
  if( v3 == (__int64 *)result )
  {
    ++*(_DWORD *)(a1 + 72);
  }
  else
  {
    v4 = (__int64 *)*v3;
    if( *(__int64 **)(*v3 + 8) != v3 || (v5 = (__int64 **)v3[1], *v5 != v3) )
      __fastfail(3u);
    *v5 = v4;
    v4[1] = (__int64)v5;
    *v3 = 0i64;
    *((_DWORD *)v3 + 10) = 0;
    LODWORD(result) = KeSetEvent((PRKEVENT)(v3 + 2), 0);
  }
  return result;
}

Referenced by:

PsCallEnclave