BgpGxBlendRectangle
INT64 __fastcall BgpGxBlendRectangle(UINT64 *a1, _DWORD *a2, INT64 *a3, INT64 *a4){
__int64 v4;
int v5;
INT64 *v6;
_DWORD *v8;
UINT64 *v9;
unsigned int v10;
int v11;
unsigned int v12;
int v13;
int v14;
int v15;
int v16;
int v17;
__int64 v18;
unsigned int *v19;
unsigned int v20;
__int64 v21;
unsigned int v22;
unsigned int v23;
unsigned int *v24;
unsigned int v25;
__int64 v26;
__int64 v27;
bool v28;
int v30;
__int64 v31;
unsigned int v32;
__int64 v33;
int v34;
__int64 v35;
__int64 v36;
v34 = 0;
v4 = 0i64;
v5 = 0;
v31 = 0i64;
v6 = a4;
v8 = a2;
v9 = a1;
if( !a4
|| (v10 = *(_DWORD *)a1) == 0
|| (v11 = *a2) == 0
|| (v12 = *((_DWORD *)a1 + 1)) == 0
|| (v13 = a2[1]) == 0
|| *((_DWORD *)a1 + 2) != 32
|| a2[2] != 32
|| (v14 = *(_DWORD *)a3, v12 < *(_DWORD *)a3 + v13)
|| (v15 = *((_DWORD *)a3 + 1), v10 < v15 + v11) )
{
v5 = -1073741811;
goto LABEL_25;
}
v4 = *v6;
if( *v6 )
{
if( *(_DWORD *)(v4 + 4) == v13 && *(_DWORD *)v4 == v11 )
{
LABEL_15:
v17 = *(_DWORD *)v4;
v18 = *(_QWORD *)(v4 + 24);
v19 = (unsigned int *)*((_QWORD *)v8 + 3);
v20 = *(_DWORD *)(v4 + 8) >> 3;
v36 = v18;
LODWORD(v31) = v20;
v30 = v17;
v21 = v9[3] + v20 * (v14 + v12 * v15);
v35 = v21;
if( v17 )
{
v22 = *(_DWORD *)(v4 + 4);
v23 = v22;
do
{
v32 = 0;
v24 = v19;
if( v22 )
{
v25 = v32;
v33 = v20;
v26 = v21 - (_QWORD)v19;
v27 = v18 - (_QWORD)v19;
do
{
*(unsigned int *)((char *)v24 + v27) = BgpGxBlendColor(
*(unsigned int *)((char *)v24 + v26),
*v24,
*((_BYTE *)v24 + 3));
++v25;
v23 = *(_DWORD *)(v4 + 4);
v24 = (unsigned int *)((char *)v24 + v20);
}
while( v25 < v23 );
v9 = a1;
v8 = a2;
v20 = v31;
v21 = v35;
v18 = v36;
v17 = v30;
}
v22 = v23;
v19 = (unsigned int *)((char *)v19 + v20 * v8[1]);
v21 += v20 * *((_DWORD *)v9 + 1);
v35 = v21;
v18 += v20 * v23;
v28 = v17-- == 1;
v36 = v18;
v30 = v17;
}
while( !v28 );
v6 = a4;
}
LABEL_25:
if( v5 >= 0 )
goto LABEL_29;
goto LABEL_26;
}
v5 = -1073741670;
}
else
{
HIDWORD(v33) = *a2;
LODWORD(v33) = v13;
v16 = BgpGxRectangleCreate(&v33, 32, &v31);
v4 = v31;
v5 = v16;
if( v16 >= 0 )
{
v12 = *((_DWORD *)v9 + 1);
v15 = *((_DWORD *)a3 + 1);
v14 = *(_DWORD *)a3;
goto LABEL_15;
}
}
LABEL_26:
if( *v6 )
return(unsigned int)v5;
if( v4 )
{
BgpGxRectangleDestroy(v4);
v4 = 0i64;
}
LABEL_29:
if( !*v6 )
*v6 = v4;
return(unsigned int)v5;
}Referenced by:
BgpTxtDisplayCharacter
BgpTxtDisplayString