PipQueryBindingResolution

INT64 *__fastcall PipQueryBindingResolution(INT64 a1){
  INT64 *v1; 
  __int64 *v3; 
  INT64 *v4; 
  UNICODE_STRING *v5; 
  UNICODE_STRING *v6; 
  UNICODE_STRING *v7; 
  __int64 v9; 
  v1 = 0i64;
  if( *(_DWORD *)a1 )
  {
    if( *(_DWORD *)a1 == 1 )
    {
      v3 = (__int64 *)PiDependencyNodeListHead;
LABEL_4:
      while( v3 != &PiDependencyNodeListHead )
      {
        v4 = v3;
        v3 = (__int64 *)*v3;
        v5 = (UNICODE_STRING *)v4[7];
        if( v5 != (UNICODE_STRING *)(v4 + 7) )
        {
          v6 = *(UNICODE_STRING **)(a1 + 8);
          while( 1 )
          {
            v7 = v5;
            v5 = *(UNICODE_STRING **)&v5->Length;
            if( RtlEqualUnicodeString(v7 + 1, v6, 1u) )
              return v4;
            if( v5 == (UNICODE_STRING *)(v4 + 7) )
              goto LABEL_4;
          }
        }
      }
    }
  }
  else
  {
    v9 = *(_QWORD *)(a1 + 8);
    if( v9 )
      return *(INT64 **)(*(_QWORD *)(v9 + 312) + 80i64);
  }
  return v1;
}

Referenced by:

IoDuplicateDependency
IoResolveDependency
PipSetDependency