KiBugCheckConvertProgressValueToUnicodeString

INT16 __stdcall KiBugCheckConvertProgressValueToUnicodeString(UINT64 a1, INT64 a2){
  __int64 v2; 
  unsigned int v3; 
  __int64 v4; 
  __int64 v5; 
  _WORD *v6; 
  __int64 v7; 
  _WORD *v8; 
  INT16 result; 

  v2 = *(_QWORD *)(a2 + 8);
  v3 = a1;
  v4 = (*(unsigned __int16 *)(a2 + 2) >> 1) - 1;
  if( (unsigned int)a1 > 0x64 )
  {
    if( *(unsigned __int16 *)(a2 + 2) >> 1 != 1 )
    {
      v7 = (unsigned int)v4;
      v8 = *(_WORD **)(a2 + 8);
      while( v7 )
      {
        *v8++ = 45;
        --v7;
      }
    }
  }
  else
  {
    LODWORD(v5) = (*(unsigned __int16 *)(a2 + 2) >> 1) - 1;
    do
    {
      v5 = (unsigned int)(v5 - 1);
      v6 = (_WORD *)(v2 + 2 * v5);
      *v6 = v3 % 0xA + 48;
      v3 /= 0xAu;
    }
    while( v3 && (_DWORD)v5 );
    for( ; (_DWORD)v5; LODWORD(v5) = v5 - 1 )
      *--v6 = 32;
  }
  *(_WORD *)(v2 + 2 * v4) = 0;
  result = *(_WORD *)(a2 + 2) - 2;
  *(_WORD *)a2 = result;
  return result;
}

Referenced by:

KiBugCheckProgress