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