EmpParseRuleTermArgMapping
UINT8 __stdcall EmpParseRuleTermArgMapping(
PSTR ArgString,
UINT64 *MappingBuffer,
UINT64 ExpectedNumberOfStrings,
UINT64 ExpectedNumberOfNumerics,
UINT64 ExpectedNumberOfEntries){
UINT64 *v5;
unsigned int v6;
int v7;
CHAR *v9;
char v10;
char v11;
__int64 v12;
int v13;
unsigned int v14;
bool v15;
bool v16;
int v18;
__int64 v19;
int v20;
bool v21;
bool v22;
bool v23;
__int64 v24;
int v25;
char *EndPtr[11];
int v27;
int v29;
int v30;
v30 = ExpectedNumberOfNumerics;
v29 = ExpectedNumberOfStrings;
v5 = MappingBuffer;
v6 = ExpectedNumberOfEntries + ExpectedNumberOfStrings + ExpectedNumberOfNumerics;
v7 = 0;
v27 = 0;
v9 = 0i64;
v10 = 0;
v11 = 0;
EndPtr[0] = 0i64;
v12 = 0i64;
v13 = 0;
v14 = 0;
if( v5 )
{
while( 1 )
{
v15 = v11 == 0;
if( v11 )
return v15;
if( v14 == 5 )
break;
if( v14 <= 5 )
{
switch( v14 )
{
case 0u:
v16 = *ArgString == 40;
LABEL_10:
if( !v16 )
goto LABEL_64;
v14 = 1;
goto LABEL_12;
case 1u:
if( *ArgString == 41 )
{
v14 = 3;
}
else
{
if( (unsigned int)v12 >= v6 )
goto LABEL_63;
v18 = strtoul(ArgString, EndPtr, 10i64);
v9 = EndPtr[0];
LODWORD(ExpectedNumberOfNumerics) = v30;
LODWORD(ExpectedNumberOfStrings) = v29;
v7 = v27;
*((_DWORD *)v5 + v12) = v18;
if( ArgString == v9 )
goto LABEL_60;
v14 = 2;
v12 = (unsigned int)(v12 + 1);
}
goto LABEL_20;
case 2u:
if( *ArgString == 41 )
{
v14 = 3;
goto LABEL_12;
}
v16 = *ArgString == 46;
goto LABEL_10;
}
if( v14 != 3 )
{
if( *ArgString == 41 )
{
v14 = 6;
}
else
{
v19 = (unsigned int)(v13 + v12);
if( (unsigned int)v19 >= v6 )
goto LABEL_63;
v20 = strtoul(ArgString, EndPtr, 10i64);
v9 = EndPtr[0];
LODWORD(ExpectedNumberOfNumerics) = v30;
LODWORD(ExpectedNumberOfStrings) = v29;
*((_DWORD *)MappingBuffer + v19) = v20;
v7 = v27;
if( ArgString == v9 )
goto LABEL_60;
v14 = 5;
++v13;
}
goto LABEL_20;
}
if( !*ArgString )
{
if( (_DWORD)v12 != (_DWORD)ExpectedNumberOfStrings || (_DWORD)ExpectedNumberOfNumerics )
goto LABEL_64;
v22 = (_DWORD)ExpectedNumberOfEntries == 0;
LABEL_38:
if( !v22 )
goto LABEL_64;
LABEL_39:
v10 = 1;
goto LABEL_12;
}
v21 = *ArgString == 40;
goto LABEL_29;
}
switch( v14 )
{
case 6u:
if( !*ArgString )
{
if( (_DWORD)v12 == (_DWORD)ExpectedNumberOfStrings
&& v13 == (_DWORD)ExpectedNumberOfNumerics
&& !(_DWORD)ExpectedNumberOfEntries )
{
goto LABEL_39;
}
LABEL_60:
v11 = 1;
LABEL_20:
if( v9 )
{
ArgString = v9;
v9 = 0i64;
EndPtr[0] = 0i64;
goto LABEL_13;
}
goto LABEL_12;
}
v23 = *ArgString == 40;
break;
case 7u:
if( *ArgString == 41 )
{
v14 = 9;
}
else
{
v24 = (unsigned int)(v12 + v13 + v7);
if( (unsigned int)v24 >= v6 )
{
LABEL_63:
v11 = 1;
v10 = 1;
goto LABEL_12;
}
v25 = strtoul(ArgString, EndPtr, 10i64);
v9 = EndPtr[0];
LODWORD(ExpectedNumberOfNumerics) = v30;
LODWORD(ExpectedNumberOfStrings) = v29;
*((_DWORD *)MappingBuffer + v24) = v25;
v7 = v27;
if( ArgString == v9 )
goto LABEL_60;
v7 = v27 + 1;
v14 = 8;
++v27;
}
goto LABEL_20;
case 8u:
if( *ArgString == 41 )
{
v14 = 9;
goto LABEL_12;
}
v23 = *ArgString == 46;
break;
default:
if( *ArgString || (_DWORD)v12 != (_DWORD)ExpectedNumberOfStrings || v13 != (_DWORD)ExpectedNumberOfNumerics )
{
LABEL_64:
v11 = 1;
goto LABEL_12;
}
v22 = v7 == (_DWORD)ExpectedNumberOfEntries;
goto LABEL_38;
}
if( !v23 )
goto LABEL_64;
v14 = 7;
LABEL_12:
++ArgString;
LABEL_13:
v5 = MappingBuffer;
if( v10 )
return v11 == 0;
}
if( *ArgString == 41 )
{
v14 = 6;
goto LABEL_12;
}
v21 = *ArgString == 46;
LABEL_29:
if( !v21 )
goto LABEL_64;
v14 = 4;
goto LABEL_12;
}
return 0;
}Referenced by:
EmpParseRuleTerm