soutput_s

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

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

Referenced by:

vsnprintf_s
vsprintf_s