winput_s
__int64 __fastcall winput_s(FILE *File, wint_t *a2, __int64 a3){
unsigned int v3;
wint_t *v4;
int v5;
FILE *v6;
wint_t v7;
int v8;
unsigned int v9;
__int64 v10;
__int64 v11;
wint_t v12;
int v13;
int v14;
char v15;
char v16;
char v17;
char v18;
int v19;
unsigned int v20;
wint_t v21;
unsigned __int16 *v22;
unsigned __int16 *v23;
unsigned __int64 v24;
__int64 v25;
__int64 Src;
int *v27;
char v28;
char v29;
unsigned int v30;
wint_t v31;
int v32;
int v33;
int v34;
char v35;
char v36;
char v37;
int v38;
FILE *v39;
wint_t v40;
int v41;
int v42;
wint_t v43;
wint_t v44;
__int64 v45;
wchar_t v46;
__int64 v47;
wint_t v48;
__int64 v49;
int v50;
wchar_t v51;
int v52;
wint_t v53;
wint_t v54;
wint_t v55;
int v56;
bool v57;
int v59;
char v60;
int v61;
char v62;
char v63;
unsigned int v64;
int v65;
int v66;
int v67;
int v68;
int v69;
__int64 v70;
int v71;
_DWORD v72[3];
int *v73;
__int64 v74[10];
unsigned __int16 *v76;
__int64 v77;
char v78;
v77 = a3;
v3 = 0;
v4 = a2;
v70 = 0i64;
LOWORD(v5) = 0;
v65 = 0;
v6 = File;
LOWORD(v59) = 0;
*(_QWORD *)&v72[1] = 0i64;
if( !a2 || !File )
{
v9 = -1;
LABEL_210:
xHalTimerWatchdogStop(0i64, 0i64);
return v9;
}
v7 = *a2;
v8 = 0;
v60 = 0;
v9 = 0;
v61 = 0;
v64 = 0;
v72[0] = 0;
if( !v7 )
return v9;
while( iswctype(v7, 8u) )
{
v61 = v8 - 1;
v12 = whiteout(&v61, v6, v10, v11);
if( v12 != 0xFFFF )
ungetwc_nolock(v12, v6);
do
++v4;
while( iswctype(*v4, 8u) );
v8 = v61;
LABEL_188:
v7 = *v4;
if( !*v4 )
goto LABEL_189;
}
if( *v4 != 37 )
goto LABEL_184;
if( v4[1] == 37 )
{
++v4;
LABEL_184:
v61 = ++v8;
v54 = fgetwc_nolock(v6);
v5 = v54;
LOWORD(v59) = v54;
v55 = *v4++;
v65 = v5;
if( v55 == (_WORD)v5 )
goto LABEL_185;
if( (_WORD)v5 == 0xFFFF )
goto LABEL_205;
ungetwc_nolock(v5, v6);
LABEL_189:
v56 = 0;
goto LABEL_194;
}
v68 = 0;
v71 = 0;
v13 = 0;
v14 = 0;
v62 = 0;
v15 = 0;
v16 = 0;
v17 = 0;
v18 = 1;
v19 = 0;
do
{
v76 = ++v4;
v20 = *v4;
if( (v20 & 0xFF00) == 0 && (pctype[(unsigned __int8)v20] & 4) != 0 )
{
++v13;
v14 = v20 + 2 * (5 * v14 - 24);
continue;
}
if( v20 <= 0x68 )
{
switch( v20 )
{
case 'h':
--v18;
--v17;
continue;
case '*':
++v15;
continue;
case 'F':
continue;
case 'I':
v21 = v4[1];
if( v21 == 54 )
{
v22 = v4 + 2;
if( v4[2] == 52 )
{
LABEL_26:
v4 = v22;
v76 = v22;
LABEL_27:
++v19;
v70 = 0i64;
continue;
}
}
if( v21 == 51 )
{
v23 = v4 + 2;
if( v4[2] == 50 )
{
v4 += 2;
v76 = v23;
continue;
}
}
LABEL_38:
v24 = v4[1];
LOWORD(v24) = v24 - 88;
if( (unsigned __int16)v24 <= 0x20u )
{
v25 = 0x120821001i64;
if( _bittest64(&v25, v24) )
goto LABEL_27;
}
++v19;
v70 = 0i64;
break;
case 'L':
++v18;
continue;
case 'N':
continue;
}
LABEL_41:
++v16;
continue;
}
switch( v20 )
{
case 'j':
goto LABEL_27;
case 'l':
v22 = v4 + 1;
if( v4[1] == 108 )
goto LABEL_26;
++v18;
break;
case 't':
goto LABEL_38;
case 'w':
break;
case 'z':
goto LABEL_38;
default:
goto LABEL_41;
}
++v17;
}
while( !v16 );
v5 = v65;
LOBYTE(v10) = v15;
v8 = v61;
v78 = v18;
Src = 0i64;
v63 = v15;
v69 = v19;
v67 = v13;
v66 = v14;
if( v15 )
{
v27 = 0i64;
v73 = 0i64;
}
else
{
*(_QWORD *)&v72[1] = v77;
v77 += 8i64;
v27 = *(int **)(v77 - 8);
v73 = v27;
}
v74[0] = (__int64)v27;
v28 = 0;
if( !v17 )
v17 = ((*v4 - 67) & 0xFFEF) != 0 ? 1 : -1;
v29 = 32;
v30 = *v4 | 0x20;
if( v30 == 110 )
{
LABEL_58:
if( v13 && !v14 )
{
if( (_WORD)v5 == 0xFFFF )
goto LABEL_205;
ungetwc_nolock(v5, File);
LABEL_192:
v56 = 0;
LABEL_193:
v9 = v64;
goto LABEL_194;
}
if( (_BYTE)v10
|| v30 != 99 && v30 != 115 && v30 != 123
|| (*(_QWORD *)&v72[1] += 8i64,
v27 = *(int **)(*(_QWORD *)&v72[1] - 8i64),
v73 = v27,
v74[0] = (__int64)v27,
v77 = *(_QWORD *)&v72[1] + 8i64,
Src = (unsigned int)**(_DWORD **)&v72[1],
**(_DWORD **)&v72[1]) )
{
if( v30 > 0x70 )
{
if( v30 != 115 )
{
if( v30 == 117 )
goto LABEL_72;
if( v30 == 120 )
goto LABEL_78;
if( v30 != 123 )
{
LABEL_98:
if( *v4 == (_WORD)v5 )
{
--v60;
if( !(_BYTE)v10 )
v77 = *(_QWORD *)&v72[1];
goto LABEL_75;
}
if( (_WORD)v5 != 0xFFFF )
ungetwc_nolock(v5, File);
v56 = 1;
goto LABEL_193;
}
v29 = 64;
}
}
else
{
if( v30 == 112 )
{
++v69;
v78 = 1;
v70 = 0i64;
goto LABEL_72;
}
if( v30 != 99 )
{
if( v30 != 100 )
{
if( v30 != 105 )
{
if( v30 == 110 )
{
v32 = v8;
if( (_BYTE)v10 )
goto LABEL_75;
goto LABEL_175;
}
if( v30 == 111 )
goto LABEL_72;
goto LABEL_98;
}
v30 = 100;
LABEL_78:
if( (_WORD)v5 == 45 )
{
v62 = 1;
}
else if( (_WORD)v5 != 43 )
{
goto LABEL_106;
}
v66 = v14 - 1;
if( v14 != 1 || !v13 )
{
v39 = File;
v61 = ++v8;
v43 = fgetwc_nolock(File);
v5 = v43;
LOWORD(v59) = v43;
v65 = v43;
LABEL_107:
if( (_WORD)v5 == 48 )
{
v61 = ++v8;
v40 = fgetwc_nolock(v39);
v5 = v40;
LOWORD(v59) = v40;
v65 = v40;
if( ((v40 - 88) & 0xFFDF) == 0 )
{
v61 = ++v8;
v44 = fgetwc_nolock(v39);
v41 = v67;
v5 = v44;
v42 = v66;
v65 = v44;
LOWORD(v59) = v44;
if( v67 )
{
v42 = v66 - 2;
if( v66 - 2 < 1 )
++v28;
}
v30 = 120;
goto LABEL_130;
}
v71 = 1;
if( v30 != 120 )
{
v41 = v67;
v42 = v66;
if( v67 )
{
v42 = v66 - 1;
if( v66 == 1 )
++v28;
}
v30 = 111;
goto LABEL_130;
}
v61 = --v8;
if( v40 != 0xFFFF )
ungetwc_nolock(v40, v39);
v5 = 48;
LABEL_127:
LOWORD(v59) = v5;
v65 = v5;
goto LABEL_128;
}
goto LABEL_128;
}
v28 = 1;
LABEL_106:
v39 = File;
goto LABEL_107;
}
LABEL_72:
if( (_WORD)v5 == 45 )
{
v62 = 1;
goto LABEL_123;
}
if( (_WORD)v5 == 43 )
{
LABEL_123:
v66 = v14 - 1;
if( v14 == 1 && v13 )
{
v28 = 1;
v42 = 0;
LABEL_129:
v41 = v67;
LABEL_130:
if( v69 )
{
if( !v28 )
{
while( 1 )
{
if( ((v30 - 112) & 0xFFFFFFF7) != 0 )
{
if( (v5 & 0xFF00) != 0 || (pctype[(unsigned __int8)v5] & 4) == 0 )
goto LABEL_146;
if( v30 == 111 )
{
if( (unsigned __int16)v5 >= 0x38u )
goto LABEL_146;
v45 = 8 * v70;
}
else
{
v45 = 10 * v70;
}
}
else
{
if( (v5 & 0xFF00) != 0 || (v46 = pctype[(unsigned __int8)v5], (v46 & 0x80u) == 0) )
{
LABEL_146:
v61 = --v8;
if( (_WORD)v5 != 0xFFFF )
ungetwc_nolock(v5, File);
break;
}
v45 = 16 * v70;
if( (v46 & 4) == 0 )
{
LOWORD(v5) = (v5 & 0xFFDF) - 7;
v65 = v5;
LOWORD(v59) = v5;
}
}
++v71;
v47 = (unsigned __int16)v5 + v45 - 48;
v70 = v47;
if( v41 )
{
if( !--v42 )
goto LABEL_149;
}
v61 = ++v8;
v48 = fgetwc_nolock(File);
v41 = v67;
v5 = v48;
v65 = v48;
LOWORD(v59) = v48;
}
}
v47 = v70;
LABEL_149:
v49 = -v47;
if( !v62 )
v49 = v47;
v70 = v49;
}
else
{
if( !v28 )
{
while( 1 )
{
if( ((v30 - 112) & 0xFFFFFFF7) != 0 )
{
if( (v5 & 0xFF00) != 0 || (pctype[(unsigned __int8)v5] & 4) == 0 )
goto LABEL_167;
if( v30 == 111 )
{
if( (unsigned __int16)v5 >= 0x38u )
goto LABEL_167;
v50 = 8 * v68;
}
else
{
v50 = 10 * v68;
}
}
else
{
if( (v5 & 0xFF00) != 0 || (v51 = pctype[(unsigned __int8)v5], (v51 & 0x80u) == 0) )
{
LABEL_167:
v61 = --v8;
if( (_WORD)v5 != 0xFFFF )
ungetwc_nolock(v5, File);
break;
}
v50 = 16 * v68;
if( (v51 & 4) == 0 )
{
LOWORD(v5) = (v5 & 0xFFDF) - 7;
v65 = v5;
LOWORD(v59) = v5;
}
}
++v71;
v52 = (unsigned __int16)v5 + v50 - 48;
v68 = v52;
if( v41 )
{
if( !--v42 )
goto LABEL_170;
}
v61 = ++v8;
v53 = fgetwc_nolock(File);
v41 = v67;
v5 = v53;
v65 = v53;
LOWORD(v59) = v53;
}
}
v52 = v68;
LABEL_170:
if( v62 )
v68 = -v52;
}
if( !v71 )
goto LABEL_192;
if( v63 )
goto LABEL_75;
v27 = v73;
v72[0] = ++v64;
v32 = v68;
LABEL_175:
if( !v69 )
{
v9 = v64;
if( v78 )
*v27 = v32;
else
*(_WORD *)v27 = v32;
goto LABEL_76;
}
*(_QWORD *)v27 = v70;
LABEL_75:
v9 = v64;
LABEL_76:
++v60;
v6 = File;
++v4;
LABEL_185:
if( (_WORD)v5 == 0xFFFF && (*v4 != 37 || v4[1] != 110) )
goto LABEL_205;
goto LABEL_188;
}
v61 = ++v8;
v5 = fgetwc_nolock(File);
goto LABEL_127;
}
LABEL_128:
v42 = v66;
goto LABEL_129;
}
v33 = v14 + 1;
v29 = 16;
if( v13 )
v33 = v14;
v14 = v33;
v34 = 1;
if( v13 )
v34 = v13;
v13 = v34;
}
v35 = v29 | 1;
if( !v13 )
v35 = v29;
v36 = v35 | 2;
if( v17 <= 0 )
v36 = v35;
v37 = v36 | 4;
if( !(_BYTE)v10 )
v37 = v36;
if( v30 == 123 )
{
v38 = ReadStringDelimited_0(v37, &v76, (wint_t *)&v59, &v61, (__int64)v74, v14, File, Src, (__int64)v72);
v4 = v76;
}
else
{
v38 = ReadString_0(v37, 0i64, (wint_t *)&v59, &v61, (__int64)v74, v14, File, Src, (__int64)v72);
}
v9 = v72[0];
LOWORD(v5) = v59;
v64 = v72[0];
if( v38 )
goto LABEL_189;
v8 = v61;
v65 = (unsigned __int16)v59;
goto LABEL_76;
}
v9 = v64;
v57 = v17 <= 0;
v56 = 0;
if( v57 )
*(_BYTE *)v27 = 0;
else
*(_WORD *)v27 = 0;
LABEL_194:
if( (_WORD)v5 == 0xFFFF )
goto LABEL_205;
if( v56 != 1 )
return v9;
goto LABEL_210;
}
if( v30 == 99 || v30 == 123 )
{
v8 = ++v61;
v31 = fgetwc_nolock(File);
}
else
{
v31 = whiteout(&v61, File, v10, 0i64);
v8 = v61;
}
v5 = v31;
LOWORD(v59) = v31;
v65 = v31;
if( v31 != 0xFFFF )
{
v27 = v73;
Src = 0i64;
v14 = v66;
v29 = 32;
v13 = v67;
LOBYTE(v10) = v63;
goto LABEL_58;
}
LABEL_205:
if( v64 || v60 )
return v64;
return v3;
}Referenced by:
swinput_s