swoutput_s

__int64 __fastcall swoutput_s(char *a1, unsigned __int64 a2, unsigned __int16 *a3, int *a4){
  int v6; 
  unsigned int v7; 
  char *ptr; 
  FILE File; 

  *(&File._cnt + 1) = 0;
  memset(&File._file, 0, 20);
  if( a2 )
  {
    if( a2 == -1i64 )
    {
      File._cnt = 0x7FFFFFFF;
      goto LABEL_6;
    }
    if( a2 <= 0x3FFFFFFF )
    {
      File._cnt = 2 * a2;
LABEL_6:
      File._base = a1;
      File._ptr = a1;
      File._flag = 66;
      v6 = woutput_s((__int64)&File, a3, a4);
      *(_WORD *)&a1[2 * a2 - 2] = 0;
      v7 = v6;
      if( v6 < 0 )
      {
        if( File._cnt >= 0 )
        {
          if( a1 )
          {
            if( a2 )
              *(_WORD *)a1 = 0;
          }
          return v7;
        }
        return 4294967294i64;
      }
      if( --File._cnt < 0 )
      {
        if( flsbuf(0, &File) == -1 )
          return 4294967294i64;
        ptr = File._ptr;
      }
      else
      {
        *File._ptr = 0;
        ptr = ++File._ptr;
      }
      if( --File._cnt >= 0 )
      {
        *ptr = 0;
        return v7;
      }
      if( flsbuf(0, &File) != -1 )
        return v7;
      return 4294967294i64;
    }
  }
  xHalTimerWatchdogStop(0i64, 0i64);
  return 0xFFFFFFFFi64;
}

Referenced by:

vsnwprintf_s
vswprintf_s