FsRtlRemoveDotsFromPath

NTSTATUS __stdcall FsRtlRemoveDotsFromPath(PWCHAR OriginalString, UINT16 PathLength, UINT16 *NewLength){
  unsigned __int16 v3; 
  __int16 v6; 
  unsigned __int16 v7; 
  int v8; 
  __int64 v9; 
  WCHAR v11; 
  int v12; 
  bool v13; 
  __int64 v14; 
  WCHAR *v15; 
  v3 = PathLength >> 1;
  v6 = 0;
  if( PathLength >> 1 == 3 )
  {
    if( *OriginalString == 92 && OriginalString[1] == 46 && OriginalString[2] == 46 )
      return -1073741192;
    goto LABEL_4;
  }
  if( v3 == 2 )
  {
    if( *OriginalString != 46 || OriginalString[1] != 46 )
      goto LABEL_5;
    return -1073741192;
  }
  if( v3 > 2u )
  {
LABEL_4:
    if( *OriginalString != 46 || OriginalString[1] != 46 || OriginalString[2] != 92 )
      goto LABEL_5;
    return -1073741192;
  }
LABEL_5:
  v7 = 0;
  if( v3 )
  {
    while( v7 )
    {
      v8 = v3 - 1;
      if( v7 < v8 && OriginalString[v7] == 92 && OriginalString[v7 + 1] == 92 )
        goto LABEL_12;
      v9 = v7;
      if( OriginalString[v7] != 46 )
        goto LABEL_10;
      if( v7 == v8 )
      {
        if( OriginalString[v7 - 1] == 92 )
        {
          if( v6 > 1 )
            --v6;
          goto LABEL_12;
        }
        goto LABEL_21;
      }
      v11 = OriginalString[v7 + 1];
      if( v11 == 92 )
      {
        if( OriginalString[v7 - 1] == 92 )
        {
          ++v7;
          goto LABEL_12;
        }
LABEL_21:
        OriginalString[v6] = 46;
LABEL_11:
        ++v6;
        goto LABEL_12;
      }
      if( v11 != 46 )
        goto LABEL_21;
      if( OriginalString[v7 - 1] != 92 )
        goto LABEL_21;
      v12 = v3 - 2;
      if( v7 != v12 && OriginalString[v7 + 2] != 92 )
        goto LABEL_21;
      v6 -= 2;
      v13 = v6 < 0;
      if( v6 > 0 )
      {
        do
        {
          if( OriginalString[v6] == 92 )
            break;
          --v6;
        }
        while( v6 > 0 );
        v13 = v6 < 0;
      }
      if( v13 || OriginalString[v6] != 92 )
        return -1073741192;
      if( !v6 )
        v6 = v7 == v12;
      ++v7;
LABEL_12:
      if( ++v7 >= v3 )
        goto LABEL_13;
    }
    v9 = 0i64;
LABEL_10:
    OriginalString[v6] = OriginalString[v9];
    goto LABEL_11;
  }
LABEL_13:
  *NewLength = 2 * v6;
  if( v6 < (int)v3 )
  {
    v14 = (__int16)(v3 - v6);
    v15 = &OriginalString[v6];
    while( v14 )
    {
      *v15++ = 0;
      --v14;
    }
  }
  return 0;
}

Referenced by:

IopReplaceSymlinkPath