BcpDisplayErrorInformation

INT64 __fastcall BcpDisplayErrorInformation(UINT64 a1, INT64 a2, INT64 a3, UINT16 *a4, INT64 a5, CHAR a6){
  int v6; 
  __int64 v7; 
  INT64 v9; 
  UINT64 *v10; 
  INT64 v11; 
  int v12; 
  int v13; 
  INT64 v14; 
  INT64 v15; 
  int v16; 
  INT64 v17; 
  INT64 v18; 
  WCHAR v19; 
  UINT64 v20; 
  INT64 v21; 
  INT64 v22; 
  __int64 v23; 
  int v24; 
  INT64 v25; 
  WCHAR v26; 
  UINT64 v27; 
  INT64 v28; 
  __int64 v29; 
  INT64 v30; 
  int v31; 
  INT64 v32; 
  INT64 result; 
  int v34; 
  int v35; 
  UINT64 v36; 
  unsigned int v37; 
  UNICODE_STRING SanitizedDriverName; 
  INT64 v39; 
  char v40; 
  v6 = BcpCursor;
  v7 = (unsigned int)a1;
  *(_DWORD *)(&SanitizedDriverName.MaximumLength + 1) = 0;
  v35 = a2;
  v39 = a5;
  v34 = BcpCursor;
  v9 = HIDWORD(qword_140C10E80[9 * (unsigned int)a1]);
  v10 = (UINT64 *)a3;
  BcpTextBoxLeftEdgeOverride = (__int64)&v34;
  BcpDisplayCriticalString(&stru_140C53BD0, v9, a3, (unsigned int)a1);
  BcpDisplayCriticalString(&stru_140C53BE0, HIDWORD(qword_140C10E80[9 * v7]), v11, (unsigned int)v7);
  v12 = HIDWORD(qword_140C10E80[9 * v7 + 5]);
  LODWORD(BcpCursor) = v6;
  HIDWORD(BcpCursor) = v12 + dword_140C4C328;
  v14 = LODWORD(qword_140C10E80[9 * v7]);
  dword_140C4C328 += v12 + v12;
  v13 = dword_140C4C328;
  BcpDisplayCriticalString(&stru_140C53B20, v14, v15, (unsigned int)v7);
  v16 = v13 + HIDWORD(qword_140C10E80[9 * v7 + 5]);
  HIDWORD(BcpCursor) = v13;
  LODWORD(BcpCursor) = v6;
  v17 = LODWORD(qword_140C10E80[9 * v7]);
  dword_140C4C328 = v16;
  BcpDisplayCriticalString(&stru_140C53BC0, v17, v18, (unsigned int)v7);
  BcpDisplayCriticalCharacter(v19, LODWORD(qword_140C10E80[9 * v7]), v20);
  BcpDisplayCriticalString((UINT16 *)(a5 + 16), LODWORD(qword_140C10E80[9 * v7]), v21, (unsigned int)v7);
  v23 = 0i64;
  if( a4 )
  {
    v24 = HIDWORD(qword_140C10E80[9 * v7 + 5]);
    LODWORD(BcpCursor) = v6;
    dword_140C4C328 = v16 + v24;
    v25 = LODWORD(qword_140C10E80[9 * v7]);
    HIDWORD(BcpCursor) = v16;
    BcpDisplayCriticalString(&stru_140C53BB0, v25, v22, (unsigned int)v7);
    BcpDisplayCriticalCharacter(v26, LODWORD(qword_140C10E80[9 * v7]), v27);
    *(_DWORD *)&SanitizedDriverName.Length = 0x800000;
    SanitizedDriverName.Buffer = (wchar_t *)&v40;
    BcpSanitizeDriverName((UNICODE_STRING *)a4, &SanitizedDriverName);
    BcpDisplayCriticalString(&SanitizedDriverName.Length, LODWORD(qword_140C10E80[9 * v7]), v28, (unsigned int)v7);
  }
  v29 = 4i64;
  v36 = BcpCursor;
  v30 = v39;
  v31 = v35;
  v37 = dword_140C4C328;
  BcpCursor = 0i64;
  dword_140C4C328 = 0;
  do
  {
    BcpConvertBugDataToString(*v10, (UNICODE_STRING *)(v23 + v30 + 32));
    if( BcpDisplayParameters || (a6 & 8) != 0 && v31 == 317 )
    {
      BcpDisplayCriticalString((UINT16 *)(v23 + v30 + 32), LODWORD(qword_140C10E80[9 * v7]), v32, (unsigned int)v7);
      LODWORD(BcpCursor) = 0;
      HIDWORD(BcpCursor) = dword_140C4C328;
    }
    v23 += 16i64;
    ++v10;
    --v29;
  }
  while( v29 );
  result = v37;
  BcpTextBoxLeftEdgeOverride = 0i64;
  BcpCursor = v36;
  dword_140C4C328 = v37;
  return result;
}

Referenced by:

BgpFwDisplayBugCheckScreen