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