BcpGetComponentOffsets
__int64 __fastcall BcpGetComponentOffsets(__int64 *a1, _DWORD *a2, int *a3, int a4, int a5, char a6){
__int64 *v6;
int v8;
__int64 v9;
int v11;
int v12;
__int64 v13;
int v14;
int v15;
unsigned int v16;
unsigned int v17;
int v18;
int v19;
__int64 v21;
int *v22;
v22 = a3;
v6 = a1 + 1;
*a1 = BcpCursor;
v8 = 0;
v9 = a4;
v11 = dword_140C4C328;
v12 = 0;
*((_DWORD *)a1 + 2) = dword_140C4C328;
v13 = 9 * v9;
*(_DWORD *)a1 = LODWORD(qword_140C10E80[9 * v9 + 2]) + LODWORD(qword_140C10E80[9 * v9 + 4]);
v14 = v11 + HIDWORD(qword_140C10E80[9 * v9 + 5]);
*((_DWORD *)a1 + 1) = v14;
*(_DWORD *)v6 = HIDWORD(qword_140C10E80[9 * v9 + 5]) + v14;
v15 = *((_DWORD *)a1 + 2);
v21 = *a1;
if( a6 )
{
dword_140C13310 |= 0x1000000u;
v16 = 0;
v17 = HIDWORD(v21);
while( 1 )
{
v12 = BcpDisplayProgress(v16, (unsigned int)v9, (INT64)a3);
if( v12 < 0 )
break;
if( __PAIR64__(v17, v21) < BcpProgressEnd )
{
v15 = dword_140C13258;
LODWORD(v21) = BcpProgressEnd;
v17 = HIDWORD(BcpProgressEnd);
}
BcpCursor = *a1;
if( v6 )
dword_140C4C328 = *(_DWORD *)v6;
LODWORD(v9) = a4;
if( ++v16 > 0x64 )
{
dword_140C13310 &= ~0x1000000u;
a3 = v22;
goto LABEL_10;
}
}
}
else
{
LABEL_10:
v18 = LODWORD(qword_140C10E80[v13 + 2]) + LODWORD(qword_140C10E80[v13 + 4]);
*a3 = v18;
a3[1] = v15 + HIDWORD(qword_140C10E80[v13 + 6]);
if( a5 )
v8 = a5 + LODWORD(qword_140C10E80[v13 + 7]);
*a2 = v18 + v8;
v19 = v15 + HIDWORD(qword_140C10E80[v13 + 7]);
a2[1] = v19;
a2[2] = HIDWORD(qword_140C10E80[v13 + 5]) + v19;
}
return(unsigned int)v12;
}Referenced by:
BgpFwDisplayBugCheckScreen