ApiSetValidateSchemaFormat
INT64 __fastcall ApiSetValidateSchemaFormat(_DWORD *a1, UINT64 a2){
unsigned int v4;
__int64 v5;
unsigned int v6;
unsigned int v7;
__int64 v8;
__int64 v9;
CHAR *v10;
unsigned int v11;
__int64 v12;
unsigned int v13;
unsigned int v14;
__int64 v15;
int v16;
__int64 i;
_DWORD *v18;
unsigned int v19;
unsigned int v20;
unsigned int v21;
unsigned int v22;
unsigned int v23;
int v24;
unsigned int v25;
if( *a1 > 4u )
{
if( (unsigned int)a2 >= 0x1C )
{
v4 = a1[1];
if( v4 <= (unsigned int)a2 )
{
v5 = (unsigned int)a1[3];
v6 = 24 * v5;
if( (unsigned __int64)(24 * v5) > 0xFFFFFFFF )
return(unsigned int)-1073741675;
v7 = v6 + 28;
if( v6 >= 0xFFFFFFE4 )
return(unsigned int)-1073741675;
if( v7 <= v4 )
{
v8 = 0i64;
if( (_DWORD)v5 )
{
v9 = (unsigned int)a1[4];
do
{
v10 = (char *)&a1[6 * v8] + v9;
v11 = *((_DWORD *)v10 + 2);
if( v11 > 0xFFFF )
return(unsigned int)-1073741596;
if( *((_DWORD *)v10 + 3) > 0xFFFFu )
return(unsigned int)-1073741596;
v12 = *((unsigned int *)v10 + 1);
if( (_DWORD)v12 )
{
if( (unsigned int)v12 < v7 )
return(unsigned int)-1073741596;
}
v13 = v12 + v11;
if( v13 < (unsigned int)v12 )
return(unsigned int)-1073741675;
if( v13 > v4 )
return(unsigned int)-1073741596;
if( ApiSetpSearchForApiSet(a1, (WCHAR *)((char *)a1 + v12), *((_WORD *)v10 + 6) >> 1) != v10 )
return(unsigned int)-1073741596;
v14 = *((_DWORD *)v10 + 4);
if( v14 )
{
if( v14 < v7 )
return(unsigned int)-1073741596;
}
v15 = *((unsigned int *)v10 + 5);
v16 = 20 * v15;
if( (unsigned __int64)(20 * v15) > 0xFFFFFFFF || v14 + v16 < v14 )
return(unsigned int)-1073741675;
if( v14 + v16 > v4 )
return(unsigned int)-1073741596;
for( i = 0i64; (unsigned int)i < (unsigned int)v15; i = (unsigned int)(i + 1) )
{
v18 = (_DWORD *)((char *)&a1[5 * i] + *((unsigned int *)v10 + 4));
v19 = v18[2];
if( v19 > 0xFFFF )
return(unsigned int)-1073741596;
v20 = v18[4];
if( v20 > 0xFFFF )
return(unsigned int)-1073741596;
v21 = v18[1];
if( v21 )
{
if( v21 < v7 )
return(unsigned int)-1073741596;
}
v22 = v21 + v19;
if( v22 < v21 )
return(unsigned int)-1073741675;
if( v22 > v4 )
return(unsigned int)-1073741596;
v23 = v18[3];
if( v23 )
{
if( v23 < v7 )
return(unsigned int)-1073741596;
}
if( v20 + v23 < v23 )
return(unsigned int)-1073741675;
if( v20 + v23 > v4 )
return(unsigned int)-1073741596;
}
v8 = (unsigned int)(v8 + 1);
}
while( (unsigned int)v8 < (unsigned int)v5 );
}
v24 = 8 * v5;
if( (unsigned __int64)(8 * v5) <= 0xFFFFFFFF )
{
v25 = a1[5];
if( v25 + v24 >= v25 )
return v4 < v25 + v24 ? 0xC00000E4 : 0;
}
return(unsigned int)-1073741675;
}
}
}
return(unsigned int)-1073741596;
}
return(unsigned int)-1073741637;
}Referenced by:
ApiSetComposeSchema