BcpDisplayProgress
INT64 __fastcall BcpDisplayProgress(UINT64 ProgressValue, UINT64 a2, INT64 a3){
unsigned int v3;
unsigned int v4;
bool v5;
__int64 v6;
INT64 v7;
INT64 v8;
struct _UNICODE_STRING *v9;
INT64 v10;
INT64 v11;
struct _UNICODE_STRING *v12;
__int64 v13;
int v14;
unsigned int v15;
unsigned int v16;
unsigned int v17;
int v18;
unsigned int v19;
int v20;
unsigned __int64 v22;
int v23;
int v24;
unsigned __int64 v25;
int v26;
UINT64 a1;
int v28;
UNICODE_STRING ProgressValueString;
char v30;
v3 = a2;
v4 = ProgressValue;
v25 = 0i64;
v26 = 0;
v23 = 0;
v5 = (_DWORD)ProgressValue == 1;
v24 = 0;
v6 = 9i64 * (int)a2;
v7 = (unsigned int)a2;
v8 = LODWORD(qword_140C10E80[9 * (int)a2 + 1]);
v9 = &stru_140C53B70;
if( !v5 )
v9 = (struct _UNICODE_STRING *)&stru_140C53B90;
BcpDisplayCriticalString(&v9->Length, v8, a3, v7);
*(_QWORD *)&ProgressValueString.Length = 0x80000i64;
ProgressValueString.Buffer = (wchar_t *)&v30;
BcpConvertProgressToString(v4, &ProgressValueString);
BcpDisplayCriticalString(&ProgressValueString.Length, LODWORD(qword_140C10E80[v6 + 1]), v10, v3);
v12 = &stru_140C53B80;
if( v4 != 1 )
v12 = (struct _UNICODE_STRING *)&stru_140C53BA0;
BcpDisplayCriticalString(&v12->Length, LODWORD(qword_140C10E80[v6 + 1]), v11, v3);
v13 = BcpCursor;
v14 = dword_140C4C328;
a1 = BcpCursor;
v28 = dword_140C4C328;
if( BcpCursorLessThan(&a1) )
{
v15 = a1;
v16 = HIDWORD(a1);
v25 = a1;
v17 = *(_DWORD *)(*(_QWORD *)(qword_140C53C30 + 24) + 40i64);
if( BcpTextBoxLeftEdgeOverride )
v18 = *(_DWORD *)BcpTextBoxLeftEdgeOverride;
else
v18 = LODWORD(qword_140C10E80[v6 + 4]) + LODWORD(qword_140C10E80[v6 + 2]);
if( BcpTextBoxRightEdgeOverride )
v19 = *(_DWORD *)BcpTextBoxRightEdgeOverride;
else
v19 = LODWORD(qword_140C10E80[v6 + 4]) + LODWORD(qword_140C10E80[v6 + 3]) + LODWORD(qword_140C10E80[v6 + 2]);
while( BcpCursorLessThan(&v25) )
{
BgpDisplayCharacterEx(0x20u, qword_140C53C30, v15, v16, v17, v17, &v23, &v24, v22, &BcpWorkspace);
if( v20 < 0 )
return 0i64;
v15 += v23;
LODWORD(v25) = v15;
if( v15 > v19 )
{
v16 += v24;
v15 = v18;
v25 = __PAIR64__(v16, v18);
}
}
v13 = a1;
}
if( (dword_140C13310 & 0x1000000) == 0 )
{
BcpProgressEnd = v13;
dword_140C13258 = v14;
}
return 0i64;
}Referenced by:
BcpGetComponentOffsets
BgpFwDisplayBugCheckProgressUpdate
BgpFwDisplayBugCheckScreen