x64tow_s

INT64 __fastcall x64tow_s(UINT64 val, WCHAR *buf, UINT64 sizeInTChars, UINT64 radix, INT64 is_neg){
  UINT64 v8; 
  WCHAR *v9; 
  WCHAR *v10; 
  unsigned __int64 v11; 
  _WORD *v12; 
  WCHAR *v13; 
  UINT64 v14; 
  __int16 v15; 
  WCHAR v16; 
  if( !buf || !sizeInTChars )
    goto LABEL_18;
  *buf = 0;
  if( sizeInTChars <= (unsigned __int64)((_DWORD)is_neg != 0) + 1 )
  {
LABEL_4:
    xHalTimerWatchdogStop(0i64, 0i64);
    return 34i64;
  }
  if( (unsigned int)(radix - 2) <= 0x22 )
  {
    v8 = 0i64;
    v9 = buf;
    if( (_DWORD)is_neg )
    {
      v9 = buf + 1;
      *buf = 45;
      val = -(__int64)val;
      v8 = 1i64;
    }
    v10 = v9;
    v11 = (unsigned int)radix;
    do
    {
      v12 = v9 + 1;
      v13 = v9;
      v14 = val % v11;
      val /= v11;
      v15 = 87;
      if( (unsigned int)v14 <= 9 )
        v15 = 48;
      ++v8;
      *v9 = v14 + v15;
      if( !val )
        break;
      ++v9;
    }
    while( v8 < sizeInTChars );
    if( v8 >= sizeInTChars )
    {
      *buf = 0;
      goto LABEL_4;
    }
    *v12 = 0;
    do
    {
      v16 = *v13;
      *v13-- = *v10;
      *v10++ = v16;
    }
    while( v10 < v13 );
    return 0i64;
  }
  else
  {
LABEL_18:
    xHalTimerWatchdogStop(0i64, 0i64);
    return 22i64;
  }
}

Referenced by:

i64tow_s
ui64tow_s