ReadString_0
__int64 __fastcall ReadString_0(
char a1,
__int64 a2,
wint_t *a3,
_DWORD *a4,
__int64 a5,
int a6,
FILE *File,
__int64 Src,
__int64 a9){
UINT8 *v12;
int v13;
unsigned __int64 v14;
int v15;
wint_t v17;
int v18;
char v19;
__int64 v20;
UINT8 *v22;
int v24;
v12 = *(UINT8 **)a5;
--*a4;
v24 = -((a1 & 8) != 0);
if( *a3 != 0xFFFF )
ungetwc_nolock(*a3, File);
v13 = a1 & 0x10;
v14 = Src - 1;
if( (a1 & 0x10) != 0 )
v14 = Src;
v15 = a1 & 1;
while( 1 )
{
if( v15 )
{
if( !a6-- )
goto LABEL_38;
}
++*a4;
v17 = fgetwc_nolock(File);
*a3 = v17;
if( v17 == 0xFFFF )
break;
if( !v13 && ((a1 & 0x20) == 0 || v17 >= 9u && v17 <= 0xDu || v17 == 32) )
{
if( (a1 & 0x40) == 0 )
break;
if( v17 < (unsigned __int16)(v17 >> 3) )
break;
v18 = v24 ^ *(char *)((v17 >> 3) + a2);
if( !_bittest(&v18, v17 & 7) )
break;
}
if( (a1 & 4) != 0 )
{
v12 += 2;
LABEL_31:
v15 = a1 & 1;
}
else
{
if( !v14 )
goto LABEL_32;
if( (a1 & 2) != 0 )
{
**(_WORD **)a5 = v17;
*(_QWORD *)a5 += 2i64;
--v14;
goto LABEL_31;
}
if( v14 < _mb_cur_max )
{
LOBYTE(Src) = *(_BYTE *)a3;
v19 = Src;
if( (char)Src > 0 && (char)Src > v14 || (unsigned __int8)Src > 5u )
{
LABEL_32:
if( (a1 & 2) != 0 )
*(_WORD *)v12 = 0;
else
*v12 = 0;
return 0xFFFFFFFFi64;
}
memmove(*(UINT8 **)a5, (UINT8 *)&Src, (char)Src);
}
else
{
**(_BYTE **)a5 = *(_BYTE *)a3;
v19 = **(_BYTE **)a5;
}
v15 = a1 & 1;
if( v19 > 0 )
{
v20 = v19;
*(_QWORD *)a5 += v19;
v13 = a1 & 0x10;
v14 -= v20;
goto LABEL_31;
}
v13 = a1 & 0x10;
}
}
--*a4;
if( *a3 != 0xFFFF )
ungetwc_nolock(*a3, File);
LABEL_38:
if( v12 == *(UINT8 **)a5 )
return 0xFFFFFFFFi64;
if( (a1 & 4) == 0 )
{
++*(_DWORD *)a9;
if( !v13 )
{
v22 = *(UINT8 **)a5;
if( (a1 & 2) != 0 )
*(_WORD *)v22 = 0;
else
*v22 = 0;
}
}
return 0i64;
}Referenced by:
ReadStringDelimited_0
winput_s