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; 
  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; 
  unsigned __int8 v21; 
  char v22; 
  __int64 v23; 
  _BYTE *v24; 
  unsigned int v25; 
  NTSTATUS v26; 
  int v27; 
  _DWORD *v28; 
  INT64 v29; 
  int v30; 
  int v31; 
  int v32; 
  int v33; 
  _iobuf *v34; 
  NTSTATUS v35; 
  __int64 v36; 
  wchar_t v37; 
  int v38; 
  __int64 v39; 
  NTSTATUS v40; 
  __int64 v41; 
  int v42; 
  wchar_t v43; 
  int v44; 
  int v45; 
  NTSTATUS v46; 
  int v47; 
  int v48; 
  unsigned int v49; 
  NTSTATUS StringDelimited; 
  int v51; 
  bool v52; 
  int v53; 
  INT64 v55; 
  char v56; 
  char v57; 
  char v58; 
  unsigned int v59; 
  INT64 v60; 
  INT64 v61; 
  int v62; 
  int v63; 
  int v64; 
  int v65; 
  int v66; 
  __int64 v67; 
  int v68; 
  _DWORD v69[3]; 
  INT64 v70; 
  _BYTE *v71; 
  INT64 v73; 
  _BYTE **v74; 
  char v75; 

  v74 = (_BYTE **)a3;
  v3 = 0;
  v4 = (_BYTE **)a3;
  v67 = 0i64;
  v5 = 0;
  HIDWORD(v61) = 0;
  v6 = (unsigned __int8 *)a2;
  HIDWORD(v60) = 0;
  v7 = File;
  v66 = 0;
  *(_QWORD *)&v69[1] = 0i64;
  if( !a2 || !File )
  {
    v10 = -1;
LABEL_220:
    xHalTimerWatchdogStop(0i64, 0i64);
    return v10;
  }
  v8 = *(_BYTE *)a2;
  v9 = 0;
  v57 = 0;
  v10 = 0;
  LODWORD(v61) = 0;
  LODWORD(v60) = 0;
  v59 = 0;
  v69[0] = 0;
  if( !v8 )
    return v10;
  v11 = -1;
  while( 1 )
  {
    v12 = v8;
    if( (pctype[v8] & 8) == 0 )
      break;
    --v9;
    while( 1 )
    {
      LODWORD(v61) = ++v9;
      LODWORD(v60) = v9;
      v13 = inc(v7);
      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(v61) = ++v9;
    LODWORD(v60) = v9;
    v5 = inc(v7);
    HIDWORD(v61) = v5;
    HIDWORD(v60) = v5;
    v51 = *v6++;
    if( v51 == v5 )
      goto LABEL_192;
    v11 = -1;
    if( v5 == -1 )
      goto LABEL_215;
    ungetc_nolock(v5, v7);
    v53 = v66;
    v11 = -1;
    goto LABEL_212;
  }
  v14 = 0;
  v64 = 0;
  v58 = 0;
  v15 = 0;
  v75 = 0;
  v16 = 0;
  v17 = 0;
  v68 = 0;
  v18 = 0;
  v19 = 1;
  do
  {
    v73 = (INT64)++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;
        }
        v73 = (INT64)++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 )
    {
      v22 = ++v75;
      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;
      }
      v21 = v6[1];
      if( v21 == 54 )
      {
        v12 = (unsigned __int64)(v6 + 2);
        if( v6[2] == 52 )
        {
          v6 += 2;
          v73 = v12;
LABEL_29:
          ++v17;
          v67 = 0i64;
          goto LABEL_44;
        }
      }
      if( v21 == 51 )
      {
        v12 = (unsigned __int64)(v6 + 2);
        if( v6[2] == 50 )
        {
          v6 += 2;
          v73 = v12;
          goto LABEL_44;
        }
      }
LABEL_40:
      LOBYTE(v12) = v6[1] - 88;
      if( (unsigned __int8)v12 > 0x20u || (v23 = 0x120821001i64, !_bittest64(&v23, v12)) )
      {
        ++v17;
        v67 = 0i64;
LABEL_43:
        ++v15;
        goto LABEL_44;
      }
      goto LABEL_29;
    }
LABEL_44:
    v22 = v75;
  }
  while( !v15 );
  v56 = v19;
  v5 = HIDWORD(v61);
  v63 = v18;
  v9 = v61;
  v65 = v17;
  v62 = v3;
  if( v22 )
  {
    v24 = 0i64;
    v71 = 0i64;
  }
  else
  {
    *(_QWORD *)&v69[1] = v4;
    v74 = v4 + 1;
    v24 = *v4;
    v71 = v24;
  }
  v70 = (INT64)v24;
  if( !v16 )
    v16 = ((*v6 - 67) & 0xEF) != 0 ? -1 : 1;
  v25 = *v6 | 0x20;
  if( v25 == 110 )
  {
LABEL_64:
    v27 = v63;
    if( v63 && !v3 )
    {
      if( v5 == -1 )
        goto LABEL_215;
      ungetc_nolock(v5, File);
      v11 = -1;
LABEL_210:
      v53 = v66;
LABEL_211:
      v10 = v59;
      goto LABEL_212;
    }
    if( !v22 && (v25 == 99 || v25 == 115 || v25 == 123) )
    {
      v28 = (_DWORD *)(*(_QWORD *)&v69[1] + 8i64);
      *(_QWORD *)&v69[1] = v28;
      v24 = (_BYTE *)*((_QWORD *)v28 - 1);
      v70 = (INT64)v24;
      v74 = (_BYTE **)(v28 + 2);
      v29 = (unsigned int)*v28;
      if( !*v28 )
      {
        v10 = v59;
        v52 = v16 <= 0;
        v53 = 0;
        if( v52 )
          *v24 = 0;
        else
          *(_WORD *)v24 = 0;
        goto LABEL_212;
      }
    }
    else
    {
      v28 = *(_DWORD **)&v69[1];
      v29 = 0i64;
    }
    if( v25 > 0x70 )
    {
      switch( v25 )
      {
        case 's':
          v32 = 32;
          break;
        case 'u':
          goto LABEL_93;
        case 'x':
          goto LABEL_85;
        case '{':
          v32 = 64;
          break;
        default:
          goto LABEL_99;
      }
    }
    else
    {
      if( v25 == 112 )
      {
        ++v65;
        v56 = 1;
        v67 = 0i64;
        goto LABEL_93;
      }
      if( v25 != 99 )
      {
        if( v25 != 100 )
        {
          if( v25 != 105 )
          {
            if( v25 == 110 )
            {
              v30 = v9;
              if( v75 )
                goto LABEL_81;
              goto LABEL_172;
            }
            if( v25 != 111 )
            {
              v22 = v75;
LABEL_99:
              if( *v6 == v5 )
              {
                --v57;
                if( !v22 )
                {
                  v4 = (_BYTE **)v28;
                  v74 = (_BYTE **)v28;
                  goto LABEL_82;
                }
LABEL_81:
                v4 = v74;
LABEL_82:
                v10 = v59;
LABEL_83:
                ++v57;
                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;
              }
              v53 = 1;
              goto LABEL_211;
            }
            goto LABEL_93;
          }
          v25 = 100;
LABEL_85:
          if( v5 == 45 )
          {
            v58 = 1;
          }
          else if( v5 != 43 )
          {
            goto LABEL_107;
          }
          v62 = v3 - 1;
          if( v3 != 1 || !v63 )
          {
            v34 = File;
            LODWORD(v61) = ++v9;
            LODWORD(v60) = v9;
            v5 = inc(File);
            HIDWORD(v61) = v5;
            HIDWORD(v60) = v5;
LABEL_108:
            if( v5 == 48 )
            {
              LODWORD(v61) = ++v9;
              LODWORD(v60) = v9;
              v5 = inc(v34);
              HIDWORD(v61) = v5;
              HIDWORD(v60) = v5;
              if( (((_BYTE)v5 - 88) & 0xDF) != 0 )
              {
                v68 = 1;
                if( v25 == 120 )
                {
                  LODWORD(v61) = --v9;
                  LODWORD(v60) = v9;
                  if( v5 != -1 )
                    ungetc_nolock(v5, File);
                  v27 = v63;
                  v5 = 48;
                  HIDWORD(v61) = 48;
                  HIDWORD(v60) = 48;
                }
                else
                {
                  v27 = v63;
                  if( v63 )
                  {
                    if( !--v62 )
                      ++v14;
                  }
                  v25 = 111;
                }
              }
              else
              {
                LODWORD(v61) = ++v9;
                LODWORD(v60) = v9;
                v35 = inc(v34);
                v27 = v63;
                HIDWORD(v61) = v35;
                v5 = v35;
                HIDWORD(v60) = v35;
                if( v63 )
                {
                  v62 -= 2;
                  if( v62 < 1 )
                    ++v14;
                }
                v25 = 120;
              }
              goto LABEL_129;
            }
            goto LABEL_128;
          }
          v14 = 1;
LABEL_107:
          v34 = File;
          goto LABEL_108;
        }
LABEL_93:
        if( v5 == 45 )
        {
          v58 = 1;
        }
        else if( v5 != 43 )
        {
LABEL_129:
          if( v65 )
          {
            if( !v14 )
            {
              while( 1 )
              {
                if( ((v25 - 112) & 0xFFFFFFF7) != 0 )
                {
                  if( (pctype[(unsigned __int8)v5] & 4) == 0 )
                    goto LABEL_144;
                  if( v25 == 111 )
                  {
                    if( v5 >= 56 )
                      goto LABEL_144;
                    v36 = 8 * v67;
                  }
                  else
                  {
                    v36 = 10 * v67;
                  }
                }
                else
                {
                  v37 = pctype[(unsigned __int8)v5];
                  if( (v37 & 0x80u) == 0 )
                  {
LABEL_144:
                    LODWORD(v61) = --v9;
                    LODWORD(v60) = v9;
                    if( v5 != -1 )
                      ungetc_nolock(v5, File);
                    break;
                  }
                  v38 = (char)v5;
                  v36 = 16 * v67;
                  v5 = ((char)v5 & 0xFFFFFFDF) - 7;
                  if( (v37 & 4) != 0 )
                    v5 = v38;
                  HIDWORD(v61) = v5;
                  HIDWORD(v60) = v5;
                }
                ++v68;
                v39 = v5 - 48 + v36;
                v67 = v39;
                if( v27 )
                {
                  if( !--v62 )
                    goto LABEL_147;
                }
                LODWORD(v61) = ++v9;
                LODWORD(v60) = v9;
                v40 = inc(File);
                v27 = v63;
                v5 = v40;
                HIDWORD(v61) = v40;
                HIDWORD(v60) = v40;
              }
            }
            v39 = v67;
LABEL_147:
            v41 = -v39;
            if( !v58 )
              v41 = v39;
            v67 = v41;
          }
          else
          {
            if( !v14 )
            {
              while( 1 )
              {
                if( ((v25 - 112) & 0xFFFFFFF7) != 0 )
                {
                  if( (pctype[(unsigned __int8)v5] & 4) == 0 )
                    goto LABEL_164;
                  if( v25 == 111 )
                  {
                    if( v5 >= 56 )
                      goto LABEL_164;
                    v42 = 8 * v64;
                  }
                  else
                  {
                    v42 = 10 * v64;
                  }
                }
                else
                {
                  v43 = pctype[(unsigned __int8)v5];
                  if( (v43 & 0x80u) == 0 )
                  {
LABEL_164:
                    LODWORD(v61) = --v9;
                    LODWORD(v60) = v9;
                    if( v5 != -1 )
                      ungetc_nolock(v5, File);
                    break;
                  }
                  v44 = (char)v5;
                  v42 = 16 * v64;
                  v5 = ((char)v5 & 0xFFFFFFDF) - 7;
                  if( (v43 & 4) != 0 )
                    v5 = v44;
                  HIDWORD(v61) = v5;
                  HIDWORD(v60) = v5;
                }
                ++v68;
                v45 = v5 + v42 - 48;
                v64 = v45;
                if( v27 )
                {
                  if( !--v62 )
                    goto LABEL_167;
                }
                LODWORD(v61) = ++v9;
                LODWORD(v60) = v9;
                v46 = inc(File);
                v27 = v63;
                v5 = v46;
                HIDWORD(v61) = v46;
                HIDWORD(v60) = v46;
              }
            }
            v45 = v64;
LABEL_167:
            if( v58 )
              v64 = -v45;
          }
          if( !v68 )
          {
            v11 = -1;
            goto LABEL_210;
          }
          if( v75 )
            goto LABEL_81;
          v69[0] = ++v59;
          v30 = v64;
LABEL_172:
          if( v65 )
          {
            *(_QWORD *)v24 = v67;
            goto LABEL_81;
          }
          v10 = v59;
          if( v56 )
            *(_DWORD *)v24 = v30;
          else
            *(_WORD *)v24 = v30;
LABEL_177:
          v4 = v74;
          goto LABEL_83;
        }
        v62 = v3 - 1;
        if( v3 == 1 && v63 )
        {
          v14 = 1;
          goto LABEL_129;
        }
        LODWORD(v61) = ++v9;
        LODWORD(v60) = v9;
        v5 = inc(File);
        HIDWORD(v61) = v5;
        HIDWORD(v60) = v5;
LABEL_128:
        v27 = v63;
        goto LABEL_129;
      }
      v31 = v3 + 1;
      v32 = 16;
      if( v63 )
        v31 = v3;
      v3 = v31;
      v33 = 1;
      if( v63 )
        v33 = v63;
      v27 = v33;
    }
    v47 = v32 | 1;
    if( !v27 )
      v47 = v32;
    v48 = v47 | 2;
    if( v16 <= 0 )
      v48 = v47;
    v49 = v48 | 4;
    if( !v75 )
      v49 = v48;
    LODWORD(v55) = v3;
    if( v25 == 123 )
    {
      StringDelimited = ReadStringDelimited(
                          v49,
                          (INT64)&v73,
                          (INT64)&v60 + 4,
                          (INT64)&v60,
                          (INT64)&v70,
                          v55,
                          (_FILE *)File,
                          v29,
                          (INT64)v69);
      v6 = (unsigned __int8 *)v73;
    }
    else
    {
      StringDelimited = ReadString(
                          v49,
                          0i64,
                          (INT64)&v60 + 4,
                          (INT64)&v60,
                          (INT64)&v70,
                          v55,
                          (_FILE *)File,
                          v29,
                          (INT64)v69);
    }
    v10 = v69[0];
    v5 = HIDWORD(v60);
    v59 = v69[0];
    if( !StringDelimited )
    {
      v9 = v60;
      v61 = v60;
      goto LABEL_177;
    }
    v11 = -1;
LABEL_206:
    v53 = 0;
LABEL_212:
    if( v5 == -1 )
      goto LABEL_215;
    if( v53 != 1 )
      return v10;
    goto LABEL_220;
  }
  if( v25 == 99 || v25 == 123 )
  {
    v9 = v61 + 1;
    LODWORD(v61) = v9;
    LODWORD(v60) = v9;
    v5 = inc(File);
    HIDWORD(v61) = v5;
    HIDWORD(v60) = v5;
    v11 = -1;
  }
  else
  {
    do
    {
      LODWORD(v60) = ++v9;
      v26 = inc(File);
      v11 = -1;
      v5 = v26;
      HIDWORD(v61) = v26;
    }
    while( v26 != -1 && (pctype[(unsigned __int8)v26] & 8) != 0 );
    v24 = v71;
    LODWORD(v61) = v9;
    HIDWORD(v60) = v26;
  }
  if( v5 != -1 )
  {
    v3 = v62;
    v22 = v75;
    goto LABEL_64;
  }
LABEL_215:
  if( v59 || v57 )
    return v59;
  return v11;
}

Referenced by:

sinput_s