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