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