PnpFixupID

__int64 __fastcall PnpFixupID(int *a1, unsigned int a2, int a3, unsigned int a4, const VOID **a5){
  unsigned int v7; 
  int *v8; 
  int *v9; 
  int *v10; 
  __int16 v11; 
  const VOID **v13; 
  unsigned __int64 *p_OutputLength; 
  size_t v15; 
  const VOID *v16[2]; 
  unsigned int v17; 

  HIDWORD(v16[0]) = 0;
  v7 = 0;
  v8 = 0i64;
  v9 = a1;
  v10 = (int *)((char *)a1 + 2 * a2);
  if( a1 < v10 )
  {
    while( 1 )
    {
      v11 = *(_WORD *)v9;
      if( *(_WORD *)v9 )
      {
        if( v11 == 32 )
        {
          *(_WORD *)v9 = 95;
        }
        else
        {
          if( (unsigned __int16)(v11 - 32) > 0x5Fu || v11 == 44 )
          {
            v13 = a5;
            if( !a5 )
              return 0i64;
            LODWORD(v16[0]) = 2359330;
            p_OutputLength = &stru_1407D01E0.OutputLength;
            v15 = 2;
LABEL_26:
            v16[1] = p_OutputLength;
            PnpLogEvent(v13, v16, -1073479624, v9, v15);
            return 0i64;
          }
          if( v11 == 92 )
          {
            v17 = ++v7;
            if( v7 > a4 )
            {
              v13 = a5;
              if( !a5 )
                return 0i64;
              LODWORD(v16[0]) = 2621478;
              p_OutputLength = &stru_1407D01E0._Rsi;
              v15 = 4;
              v9 = (int *)&v17;
              goto LABEL_26;
            }
          }
        }
      }
      else
      {
        if( !a3 || v8 && v9 == (int *)((char *)v8 + 2) )
        {
LABEL_8:
          if( v9 < v10 && (v7 == a4 || a4 == -1) )
            return(unsigned int)(((char *)v9 - (char *)a1) >> 1) + 1;
          break;
        }
        v8 = v9;
      }
      v9 = (int *)((char *)v9 + 2);
      if( v9 >= v10 )
        goto LABEL_8;
    }
  }
  v13 = a5;
  if( a5 )
  {
    LODWORD(v16[0]) = 7471216;
    p_OutputLength = (unsigned __int64 *)L"not terminated, too long or invalid number of separators";
    v15 = 0;
    v9 = 0i64;
    goto LABEL_26;
  }
  return 0i64;
}

Referenced by:

PnpQueryID