ungetc_nolock

int __cdecl ungetc_nolock(int Ch, FILE *File){
  int flag; 
  char *base; 
  char *ptr; 
  char *v5; 
  int result; 

  if( !File )
    goto LABEL_14;
  if( Ch == -1 )
    return -1;
  flag = File->_flag;
  if( (flag & 1) == 0 && (flag & 0x82) != 0x80 )
    return -1;
  base = File->_base;
  if( !base )
  {
LABEL_14:
    xHalTimerWatchdogStop(0i64, 0i64);
    return -1;
  }
  ptr = File->_ptr;
  if( File->_ptr != base )
  {
LABEL_9:
    v5 = ptr - 1;
    File->_ptr = ptr - 1;
    if( (flag & 0x40) != 0 )
    {
      if( *v5 != (_BYTE)Ch )
      {
        File->_ptr = ptr;
        return -1;
      }
    }
    else
    {
      *v5 = Ch;
      flag = File->_flag;
    }
    ++File->_cnt;
    result = (unsigned __int8)Ch;
    File->_flag = flag & 0xFFFFFFEE | 1;
    return result;
  }
  if( !File->_cnt )
  {
    ++ptr;
    goto LABEL_9;
  }
  return -1;
}

Referenced by:

ReadString
input_s