GetOperatorIndexByName

NTSTATUS __stdcall GetOperatorIndexByName(WCHAR *Op){
  UINT8 v1; 
  UINT64 v2; 
  WCHAR *v3; 
  NTSTATUS v4; 
  __int64 v5; 
  unsigned int v7; 
  int v8; 
  UINT64 v9; 
  UINT64 v10; 
  WCHAR v11; 
  WCHAR *v12; 
  const wchar_t *v13; 
  __int64 v14; 
  int *v15; 
  const wchar_t *v16; 
  __int64 v17; 
  __int64 v18; 
  WCHAR *Context; 
  WCHAR Control[4]; 
  int v22; 
  WCHAR Dst[64]; 

  v3 = Dst;
  v4 = -1;
  v22 = *(_DWORD *)L"}";
  v5 = -1i64;
  *(_QWORD *)Control = *(_QWORD *)L" (){}";
  Context = 0i64;
  v7 = 0;
  v8 = 0;
  do
    ++v5;
  while( Op[v5] );
  v9 = (unsigned int)v5;
  v10 = 2i64 * (unsigned int)v5;
  if( v10 <= 0x80 || (v3 = (WCHAR *)SddlpAlloc(v10, v1, v2)) != 0i64 )
  {
    wcsncpy_s(v3, v9, Op, 0xFFFFFFFFFFFFFFFFui64);
    v12 = wcstok_s(v3, Control, &Context, v11);
    v13 = v12;
    if( v12 )
    {
      v14 = -1i64;
      do
        ++v14;
      while( v12[v14] );
      v15 = &dword_1400063F4;
      while( 1 )
      {
        v16 = *(const wchar_t **)(v15 - 5);
        v17 = -1i64;
        do
          ++v17;
        while( v16[v17] );
        if( (unsigned int)v14 <= (unsigned int)v17 )
        {
          v18 = -1i64;
          do
            ++v18;
          while( v16[v18] );
        }
        else
        {
          LODWORD(v18) = v14;
        }
        if( !*(_BYTE *)v15 )
        {
          v18 = -1i64;
          do
            ++v18;
          while( v16[v18] );
        }
        if( !wcsnicmp(v13, v16, v18) )
          break;
        ++v7;
        v15 += 6;
        if( v7 >= 0x18 )
          goto LABEL_22;
      }
      v8 = 1;
    }
  }
LABEL_22:
  if( v3 != Dst && v3 )
    ExFreePoolWithTag(v3, 0);
  if( v8 )
    return v7;
  return v4;
}

Referenced by:

GetConditionToken