AlpcpLocateSectionView

INT64 __fastcall AlpcpLocateSectionView(INT64 a1, INT64 a2, INT64 a3, _QWORD *a4){
  INT64 *v4; 
  INT64 v8; 
  INT64 v9; 
  int v10; 
  INT64 v12; 
  ULONG_PTR v13; 
  v12 = a3;
  *a4 = 0i64;
  v4 = (INT64 *)(a2 + 352);
  v13 = 0i64;
  do
  {
    ExAcquirePushLockSharedEx((UINT64)v4, 0i64);
    v10 = AlpcpEnumerateResourcesPort(a2, v8, v9, &v12);
    if( _InterlockedCompareExchange64(v4, 0i64, 17i64) != 17 )
      ExfReleasePushLockShared(v4);
    KeAbPostRelease(v4);
  }
  while( v10 == -1073741267 );
  if( !v13 )
    return 3221225793i64;
  if( *(_QWORD *)(*(_QWORD *)(v13 + 16) + 16i64) != a1 )
  {
    AlpcpDereferenceView(v13);
    return 3221225793i64;
  }
  *a4 = v13;
  return 0i64;
}

Referenced by:

AlpcpCaptureViewAttributeInternal