ReadString
NTSTATUS __stdcall ReadString(
INT64 a1,
INT64 a2,
INT64 a3,
INT64 a4,
INT64 a5,
INT64 a6,
_FILE *File,
INT64 a8,
INT64 a9){
_WORD **v9;
char v10;
_WORD *v13;
int v14;
int v15;
INT64 v16;
int v17;
int v18;
_iobuf *v19;
int v20;
int v21;
_WORD *v22;
_WORD *v24;
char v25;
INT64 v26;
int v27;
v26 = a2;
v9 = (_WORD **)a5;
v10 = a1;
v13 = *(_WORD **)a5;
v14 = -((a1 & 8) != 0);
--*(_DWORD *)a4;
v15 = *(_DWORD *)a3;
v27 = v14;
if( v15 != -1 )
ungetc_nolock(v15, (FILE *)File);
v16 = a8 - 1;
if( (v10 & 0x10) != 0 )
v16 = a8;
v17 = v10 & 1;
LODWORD(a5) = v17;
while( 1 )
{
if( v17 )
{
v18 = a6;
LODWORD(a6) = a6 - 1;
if( !v18 )
goto LABEL_31;
}
v19 = (_iobuf *)File;
++*(_DWORD *)a4;
v20 = inc(v19);
*(_DWORD *)a3 = v20;
if( v20 == -1 )
break;
if( (v10 & 0x10) == 0 && ((v10 & 0x20) == 0 || v20 >= 9 && v20 <= 13 || v20 == 32) )
{
if( (v10 & 0x40) == 0 )
break;
if( v20 < 0 )
break;
if( v20 < v20 >> 3 )
break;
v21 = v27 ^ *(char *)((v20 >> 3) + v26);
if( !_bittest(&v21, v20 & 7) )
break;
}
if( (v10 & 4) != 0 )
{
v13 = (_WORD *)((char *)v13 + 1);
}
else
{
if( !v16 )
{
if( (v10 & 2) != 0 )
*v13 = 0;
else
*(_BYTE *)v13 = 0;
return -1;
}
v22 = *v9;
--v16;
if( (v10 & 2) != 0 )
{
*v22 = (unsigned __int16)&v25;
++*v9;
}
else
{
*(_BYTE *)v22 = *(_BYTE *)a3;
*v9 = (_WORD *)((char *)*v9 + 1);
}
}
v17 = a5;
}
--*(_DWORD *)a4;
if( *(_DWORD *)a3 != -1 )
ungetc_nolock(*(_DWORD *)a3, (FILE *)File);
LABEL_31:
if( v13 == *v9 )
return -1;
if( (v10 & 4) == 0 )
{
++*(_DWORD *)a9;
if( (v10 & 0x10) == 0 )
{
v24 = *v9;
if( (v10 & 2) != 0 )
*v24 = 0;
else
*(_BYTE *)v24 = 0;
}
}
return 0;
}Referenced by:
ReadStringDelimited
input_s