PipDeleteBindingId

INT64 __fastcall PipDeleteBindingId(INT64 a1, const UNICODE_STRING *a2){
  INT64 v2; 
  UNICODE_STRING *v4; 
  unsigned int v5; 
  __int64 v6; 
  wchar_t *Buffer; 
  v2 = a1 + 56;
  v4 = *(UNICODE_STRING **)(a1 + 56);
  v5 = -1073741275;
  if( v4 != (UNICODE_STRING *)(a1 + 56) )
  {
    while( 1 )
    {
      v6 = *(_QWORD *)&v4->Length;
      if( RtlEqualUnicodeString(v4 + 1, (UNICODE_STRING *)a2, 0) )
        break;
      v4 = (UNICODE_STRING *)v6;
      if( v6 == v2 )
        return v5;
    }
    if( *(UNICODE_STRING **)(v6 + 8) != v4 || (Buffer = v4->Buffer, *(UNICODE_STRING **)Buffer != v4) )
      __fastfail(3u);
    *(_QWORD *)Buffer = v6;
    *(_QWORD *)(v6 + 8) = Buffer;
    PipFreeBindingId(v4);
    return 0;
  }
  return v5;
}

Referenced by:

IoResolveDependency