AuthzBasepOperandValueTypesCompatible
BOOL __fastcall AuthzBasepOperandValueTypesCompatible(INT64 a1){
BOOL result;
_WORD *v3;
INT64 v4;
unsigned __int16 *v5;
__int16 v6;
unsigned __int16 v7;
bool v8;
__int64 v9;
char v10;
result = *(_DWORD *)(a1 + 12);
if( result || *(_DWORD *)(a1 + 52) == 1 )
{
v3 = (_WORD *)(a1 + 40);
v4 = a1;
v5 = (unsigned __int16 *)(a1 + 40);
if( !result )
v4 = (INT64)v3;
if( !result )
v5 = (unsigned __int16 *)a1;
v6 = *(_WORD *)v4;
if( *(_WORD *)v4 == 16 && *(_BYTE *)(v4 + 4) )
goto LABEL_15;
v7 = *v5;
if( v7 == 16 )
{
if( (unsigned __int16)(v6 - 2) <= 1u )
goto LABEL_15;
}
else
{
result = v7;
LOWORD(result) = v7 - 1;
if( (unsigned __int16)(v7 - 1) <= 1u && v6 == 2 )
{
v9 = *(_QWORD *)(v4 + 32);
v10 = *(_BYTE *)(v9 + 8);
if( v7 == 2 )
{
if( v10 != 2 )
goto LABEL_15;
}
else if( v7 == 1 )
{
if( v10 == 2 )
goto LABEL_15;
result = -1;
if( *(_QWORD *)v9 <= 0x7FFFFFFFFFFFFFFFui64 )
goto LABEL_15;
}
LABEL_14:
LOBYTE(result) = 0;
return result;
}
if( v7 == 6 )
{
if( v6 == 2 )
goto LABEL_15;
}
else if( v7 == 5 && v6 == 16 )
{
goto LABEL_15;
}
}
v8 = *(_WORD *)a1 == *v3;
}
else
{
result = *(unsigned __int16 *)(a1 + 40);
v8 = *(_WORD *)a1 == result;
}
if( !v8 )
goto LABEL_14;
LABEL_15:
LOBYTE(result) = 1;
return result;
}Referenced by:
AuthzBasepComputeExpression
AuthzBasepEvaluateExpression
AuthzBasepValueInSet