LocalGetSDDLDeliminator

NTSTATUS __stdcall LocalGetSDDLDeliminator(WCHAR *AclString, WCHAR **End){
  _BOOL4 v3; 
  unsigned int v4; 
  NTSTATUS v5; 
  WORD *v6; 
  unsigned int v8; 

  v3 = 0;
  *End = 0i64;
  v4 = 0;
  v5 = 0;
  v6 = AclString;
  if( !FContainCallBackAce(AclString) )
  {
    *End = wcschr(v6, 58);
    return v5;
  }
  if( !*v6 )
    return v5;
  while( !*End && !v5 )
  {
    switch( *v6 )
    {
      case '"':
        if( v4 <= 1 )
        {
LABEL_21:
          v5 = 1336;
          break;
        }
        v3 = !v3;
        break;
      case '(':
        v8 = v4 + 1;
        if( v3 )
          v8 = v4;
        v4 = v8;
        break;
      case ')':
        if( !v3 )
        {
          if( !v4 )
            goto LABEL_21;
          --v4;
        }
        break;
      default:
        if( *v6 == 58 && !v4 )
          *End = v6;
        break;
    }
    if( !*++v6 )
      break;
  }
  if( v3 || v4 )
    return 1336;
  return v5;
}

Referenced by:

LocalGetAclForString