input_s
__int64 __fastcall input_s(FILE *File, __int64 a2, __int64 a3){
int v3;
_BYTE **v4;
int v5;
unsigned __int8 *v6;
FILE *v7;
unsigned __int8 v8;
unsigned int v9;
unsigned int v10;
unsigned int v11;
unsigned __int64 v12;
int v13;
char v14;
char v15;
char v16;
int v17;
int v18;
char v19;
__int64 v20;
char v21;
__int64 v22;
_BYTE *v23;
unsigned int v24;
int v25;
int v26;
_DWORD *v27;
unsigned int v28;
int v29;
int v30;
int v31;
FILE *v32;
__int64 v33;
int v34;
__int64 v35;
unsigned __int16 v36;
int v37;
int v38;
__int64 v39;
int v40;
unsigned __int16 v41;
int v42;
int v43;
int v44;
int v45;
unsigned int v46;
int String;
int v48;
bool v49;
int v50;
PVOID *pointer;
char v53;
char v54;
char v55;
unsigned int v56;
INT64 v57;
INT64 v58;
int v59;
int v60;
unsigned int v61;
int v62;
int v63;
__int64 v64;
int v65;
_DWORD stream[3];
INT64 pCharCount;
_BYTE *v68;
UINT8 *v70;
_BYTE **v71;
char v72;
v71 = (_BYTE **)a3;
v3 = 0;
v4 = (_BYTE **)a3;
v64 = 0i64;
v5 = 0;
HIDWORD(v58) = 0;
v6 = (unsigned __int8 *)a2;
HIDWORD(v57) = 0;
v7 = File;
v63 = 0;
*(_QWORD *)&stream[1] = 0i64;
if( !a2 || !File )
{
v10 = -1;
LABEL_220:
xHalTimerWatchdogStop(0i64, 0i64);
return v10;
}
v8 = *(_BYTE *)a2;
v9 = 0;
v54 = 0;
v10 = 0;
LODWORD(v58) = 0;
LODWORD(v57) = 0;
v56 = 0;
stream[0] = 0;
if( !v8 )
return v10;
v11 = -1;
while( 1 )
{
v12 = v8;
if( (pctype[v8] & 8) == 0 )
break;
--v9;
while( 1 )
{
LODWORD(v58) = ++v9;
LODWORD(v57) = v9;
v13 = inc(v7, a2);
v11 = -1;
if( v13 == -1 )
break;
if( (pctype[(unsigned __int8)v13] & 8) == 0 )
{
ungetc_nolock(v13, v7);
v11 = -1;
goto LABEL_10;
}
}
do
LABEL_10:
++v6;
while( (pctype[*v6] & 8) != 0 );
LABEL_195:
v8 = *v6;
v3 = 0;
if( !*v6 )
goto LABEL_206;
}
if( v8 != 37 )
goto LABEL_191;
if( v6[1] == 37 )
{
++v6;
LABEL_191:
LODWORD(v58) = ++v9;
LODWORD(v57) = v9;
v5 = inc(v7, a2);
HIDWORD(v58) = v5;
HIDWORD(v57) = v5;
v48 = *v6++;
if( v48 == v5 )
goto LABEL_192;
v11 = -1;
if( v5 == -1 )
goto LABEL_215;
ungetc_nolock(v5, v7);
v50 = v63;
v11 = -1;
goto LABEL_212;
}
v14 = 0;
v61 = 0;
v55 = 0;
v15 = 0;
v72 = 0;
v16 = 0;
v17 = 0;
v65 = 0;
v18 = 0;
v19 = 1;
do
{
v70 = ++v6;
v20 = *v6;
if( (pctype[v20] & 4) != 0 )
{
++v18;
v3 = v20 + 2 * (5 * v3 - 24);
goto LABEL_44;
}
if( (unsigned int)v20 > 0x68 )
{
if( (_DWORD)v20 == 106 )
goto LABEL_29;
if( (_DWORD)v20 == 108 )
{
if( v6[1] != 108 )
{
++v19;
LABEL_51:
++v16;
goto LABEL_44;
}
v70 = ++v6;
goto LABEL_29;
}
if( (_DWORD)v20 != 116 )
{
if( (_DWORD)v20 == 119 )
goto LABEL_51;
if( (_DWORD)v20 != 122 )
goto LABEL_43;
}
goto LABEL_40;
}
if( (_DWORD)v20 == 104 )
{
--v19;
--v16;
goto LABEL_44;
}
if( (_DWORD)v20 == 42 )
{
v21 = ++v72;
continue;
}
if( (_DWORD)v20 != 70 )
{
if( (_DWORD)v20 != 73 )
{
if( (_DWORD)v20 == 76 )
{
++v19;
}
else if( (_DWORD)v20 != 78 )
{
goto LABEL_43;
}
goto LABEL_44;
}
LOBYTE(a2) = v6[1];
if( (_BYTE)a2 == 54 )
{
v12 = (unsigned __int64)(v6 + 2);
if( v6[2] == 52 )
{
v6 += 2;
v70 = (UINT8 *)v12;
LABEL_29:
++v17;
v64 = 0i64;
goto LABEL_44;
}
}
if( (_BYTE)a2 == 51 )
{
v12 = (unsigned __int64)(v6 + 2);
if( v6[2] == 50 )
{
v6 += 2;
v70 = (UINT8 *)v12;
goto LABEL_44;
}
}
LABEL_40:
LOBYTE(v12) = v6[1] - 88;
if( (unsigned __int8)v12 > 0x20u || (v22 = 0x120821001i64, !_bittest64(&v22, v12)) )
{
++v17;
v64 = 0i64;
LABEL_43:
++v15;
goto LABEL_44;
}
goto LABEL_29;
}
LABEL_44:
v21 = v72;
}
while( !v15 );
v53 = v19;
v5 = HIDWORD(v58);
v60 = v18;
v9 = v58;
v62 = v17;
v59 = v3;
if( v21 )
{
v23 = 0i64;
v68 = 0i64;
}
else
{
*(_QWORD *)&stream[1] = v4;
v71 = v4 + 1;
v23 = *v4;
v68 = v23;
}
pCharCount = (INT64)v23;
if( !v16 )
v16 = ((*v6 - 67) & 0xEF) != 0 ? -1 : 1;
v24 = *v6 | 0x20;
if( v24 == 110 )
{
LABEL_64:
v26 = v60;
if( v60 && !v3 )
{
if( v5 == -1 )
goto LABEL_215;
ungetc_nolock(v5, File);
v11 = -1;
LABEL_210:
v50 = v63;
LABEL_211:
v10 = v56;
goto LABEL_212;
}
if( !v21 && (v24 == 99 || v24 == 115 || v24 == 123) )
{
v27 = (_DWORD *)(*(_QWORD *)&stream[1] + 8i64);
*(_QWORD *)&stream[1] = v27;
v23 = (_BYTE *)*((_QWORD *)v27 - 1);
pCharCount = (INT64)v23;
v71 = (_BYTE **)(v27 + 2);
a2 = (unsigned int)*v27;
if( !*v27 )
{
v10 = v56;
v49 = v16 <= 0;
v50 = 0;
if( v49 )
*v23 = 0;
else
*(_WORD *)v23 = 0;
goto LABEL_212;
}
}
else
{
v27 = *(_DWORD **)&stream[1];
a2 = 0i64;
}
if( v24 > 0x70 )
{
switch( v24 )
{
case 's':
v30 = 32;
break;
case 'u':
goto LABEL_93;
case 'x':
goto LABEL_85;
case '{':
v30 = 64;
break;
default:
goto LABEL_99;
}
}
else
{
if( v24 == 112 )
{
++v62;
v53 = 1;
v64 = 0i64;
goto LABEL_93;
}
if( v24 != 99 )
{
if( v24 != 100 )
{
if( v24 != 105 )
{
if( v24 == 110 )
{
v28 = v9;
if( v72 )
goto LABEL_81;
goto LABEL_172;
}
if( v24 != 111 )
{
v21 = v72;
LABEL_99:
if( *v6 == v5 )
{
--v54;
if( !v21 )
{
v4 = (_BYTE **)v27;
v71 = (_BYTE **)v27;
goto LABEL_82;
}
LABEL_81:
v4 = v71;
LABEL_82:
v10 = v56;
LABEL_83:
++v54;
v7 = File;
++v6;
LABEL_192:
v11 = -1;
if( v5 == -1 && (*v6 != 37 || v6[1] != 110) )
goto LABEL_215;
goto LABEL_195;
}
if( v5 != -1 )
{
ungetc_nolock(v5, File);
v11 = -1;
}
v50 = 1;
goto LABEL_211;
}
goto LABEL_93;
}
v24 = 100;
LABEL_85:
if( v5 == 45 )
{
v55 = 1;
}
else if( v5 != 43 )
{
goto LABEL_107;
}
v59 = v3 - 1;
if( v3 != 1 || !v60 )
{
v32 = File;
LODWORD(v58) = ++v9;
LODWORD(v57) = v9;
v5 = inc(File, a2);
HIDWORD(v58) = v5;
HIDWORD(v57) = v5;
LABEL_108:
if( v5 == 48 )
{
LODWORD(v58) = ++v9;
LODWORD(v57) = v9;
v5 = inc(v32, a2);
HIDWORD(v58) = v5;
HIDWORD(v57) = v5;
if( (((_BYTE)v5 - 88) & 0xDF) != 0 )
{
v65 = 1;
if( v24 == 120 )
{
LODWORD(v58) = --v9;
LODWORD(v57) = v9;
if( v5 != -1 )
ungetc_nolock(v5, File);
v26 = v60;
v5 = 48;
HIDWORD(v58) = 48;
HIDWORD(v57) = 48;
}
else
{
v26 = v60;
if( v60 )
{
if( !--v59 )
++v14;
}
v24 = 111;
}
}
else
{
LODWORD(v58) = ++v9;
LODWORD(v57) = v9;
v34 = inc(v32, v33);
v26 = v60;
HIDWORD(v58) = v34;
v5 = v34;
HIDWORD(v57) = v34;
if( v60 )
{
v59 -= 2;
if( v59 < 1 )
++v14;
}
v24 = 120;
}
goto LABEL_129;
}
goto LABEL_128;
}
v14 = 1;
LABEL_107:
v32 = File;
goto LABEL_108;
}
LABEL_93:
if( v5 == 45 )
{
v55 = 1;
}
else if( v5 != 43 )
{
LABEL_129:
if( v62 )
{
if( !v14 )
{
while( 1 )
{
if( ((v24 - 112) & 0xFFFFFFF7) != 0 )
{
if( (pctype[(unsigned __int8)v5] & 4) == 0 )
goto LABEL_144;
if( v24 == 111 )
{
if( v5 >= 56 )
goto LABEL_144;
v35 = 8 * v64;
}
else
{
v35 = 10 * v64;
}
}
else
{
v36 = pctype[(unsigned __int8)v5];
if( (v36 & 0x80u) == 0 )
{
LABEL_144:
LODWORD(v58) = --v9;
LODWORD(v57) = v9;
if( v5 != -1 )
ungetc_nolock(v5, File);
break;
}
v37 = (char)v5;
v35 = 16 * v64;
v5 = ((char)v5 & 0xFFFFFFDF) - 7;
if( (v36 & 4) != 0 )
v5 = v37;
HIDWORD(v58) = v5;
HIDWORD(v57) = v5;
}
++v65;
a2 = v5 - 48 + v35;
v64 = a2;
if( v26 )
{
if( !--v59 )
goto LABEL_147;
}
LODWORD(v58) = ++v9;
LODWORD(v57) = v9;
v38 = inc(File, a2);
v26 = v60;
v5 = v38;
HIDWORD(v58) = v38;
HIDWORD(v57) = v38;
}
}
a2 = v64;
LABEL_147:
v39 = -a2;
if( !v55 )
v39 = a2;
v64 = v39;
}
else
{
if( !v14 )
{
while( 1 )
{
if( ((v24 - 112) & 0xFFFFFFF7) != 0 )
{
if( (pctype[(unsigned __int8)v5] & 4) == 0 )
goto LABEL_164;
if( v24 == 111 )
{
if( v5 >= 56 )
goto LABEL_164;
v40 = 8 * v61;
}
else
{
v40 = 10 * v61;
}
}
else
{
v41 = pctype[(unsigned __int8)v5];
if( (v41 & 0x80u) == 0 )
{
LABEL_164:
LODWORD(v58) = --v9;
LODWORD(v57) = v9;
if( v5 != -1 )
ungetc_nolock(v5, File);
break;
}
v42 = (char)v5;
v40 = 16 * v61;
v5 = ((char)v5 & 0xFFFFFFDF) - 7;
if( (v41 & 4) != 0 )
v5 = v42;
HIDWORD(v58) = v5;
HIDWORD(v57) = v5;
}
++v65;
a2 = (unsigned int)(v5 + v40 - 48);
v61 = a2;
if( v26 )
{
if( !--v59 )
goto LABEL_167;
}
LODWORD(v58) = ++v9;
LODWORD(v57) = v9;
v43 = inc(File, a2);
v26 = v60;
v5 = v43;
HIDWORD(v58) = v43;
HIDWORD(v57) = v43;
}
}
a2 = v61;
LABEL_167:
if( v55 )
{
a2 = (unsigned int)-(int)a2;
v61 = a2;
}
}
if( !v65 )
{
v11 = -1;
goto LABEL_210;
}
if( v72 )
goto LABEL_81;
stream[0] = ++v56;
v28 = v61;
LABEL_172:
if( v62 )
{
*(_QWORD *)v23 = v64;
goto LABEL_81;
}
v10 = v56;
if( v53 )
*(_DWORD *)v23 = v28;
else
*(_WORD *)v23 = v28;
LABEL_177:
v4 = v71;
goto LABEL_83;
}
v59 = v3 - 1;
if( v3 == 1 && v60 )
{
v14 = 1;
goto LABEL_129;
}
LODWORD(v58) = ++v9;
LODWORD(v57) = v9;
v5 = inc(File, a2);
HIDWORD(v58) = v5;
HIDWORD(v57) = v5;
LABEL_128:
v26 = v60;
goto LABEL_129;
}
v29 = v3 + 1;
v30 = 16;
if( v60 )
v29 = v3;
v3 = v29;
v31 = 1;
if( v60 )
v31 = v60;
v26 = v31;
}
v44 = v30 | 1;
if( !v26 )
v44 = v30;
v45 = v44 | 2;
if( v16 <= 0 )
v45 = v44;
v46 = v45 | 4;
if( !v72 )
v46 = v45;
LODWORD(pointer) = v3;
if( v24 == 123 )
{
String = ReadStringDelimited(
v46,
&v70,
(INT64)&v57 + 4,
(INT64)&v57,
(INT64)&pCharCount,
pointer,
File,
a2,
(INT64)stream);
v6 = v70;
}
else
{
String = ReadString(
v46,
0i64,
(INT64)&v57 + 4,
(INT64)&v57,
(PVOID *)&pCharCount,
(INT64)pointer,
File,
a2,
(INT64)stream);
}
v10 = stream[0];
v5 = HIDWORD(v57);
v56 = stream[0];
if( !String )
{
v9 = v57;
v58 = v57;
goto LABEL_177;
}
v11 = -1;
LABEL_206:
v50 = 0;
LABEL_212:
if( v5 == -1 )
goto LABEL_215;
if( v50 != 1 )
return v10;
goto LABEL_220;
}
if( v24 == 99 || v24 == 123 )
{
v9 = v58 + 1;
LODWORD(v58) = v9;
LODWORD(v57) = v9;
v5 = inc(File, a2);
HIDWORD(v58) = v5;
HIDWORD(v57) = v5;
v11 = -1;
}
else
{
do
{
LODWORD(v57) = ++v9;
v25 = inc(File, a2);
v11 = -1;
v5 = v25;
HIDWORD(v58) = v25;
}
while( v25 != -1 && (pctype[(unsigned __int8)v25] & 8) != 0 );
v23 = v68;
LODWORD(v58) = v9;
HIDWORD(v57) = v25;
}
if( v5 != -1 )
{
v3 = v59;
v21 = v72;
goto LABEL_64;
}
LABEL_215:
if( v56 || v54 )
return v56;
return v11;
}Referenced by:
sinput_s