RaspLoadCompositeGlyphData
__int64 __fastcall RaspLoadCompositeGlyphData(
__int64 a1,
int a2,
__int64 a3,
_QWORD *a4,
_BG_RASTERIZER_WORKSPACE *Workspace){
int v9;
unsigned int v10;
_FILE_IMAGE *v11;
unsigned int v12;
__int64 result;
_BG_RASTERIZER_WORKSPACE *v14;
int v15;
VOID **v16;
__int64 v17;
VOID *v18;
UINT64 Offset;
int v20;
int v21;
__int64 v22;
VOID *v23;
UINT16 Buffer[4];
UINT16 v25;
VOID *v26[2];
UINT16 v27;
*(_QWORD *)Buffer = 0i64;
v25 = 0;
LODWORD(v22) = 0;
v27 = 0;
LOWORD(v20) = 0;
LOWORD(v21) = 0;
v23 = 0i64;
*(_OWORD *)v26 = 0i64;
if( !a1 )
return 3221225473i64;
v9 = *(_DWORD *)(a1 + 60);
if( !v9 )
return 3221225473i64;
v10 = v9 + a2;
v11 = *(_FILE_IMAGE **)(*(_QWORD *)(a1 + 16) + 16i64);
FioFwReadUshortAtOffset(v11, (unsigned int)(v9 + a2), Buffer);
FioFwReadUshortAtOffset(v11, v10 + 2, &Buffer[1]);
v10 += 4;
FioFwReadUshortAtOffset(v11, v10, &Buffer[2]);
FioFwReadUshortAtOffset(v11, v10 + 2, &Buffer[3]);
v12 = v10 + 4;
FioFwReadUshortAtOffset(v11, v12, &v25);
if( (Buffer[0] & 0x8000u) == 0 )
return 3221225485i64;
v14 = Workspace;
result = RaspGetCompositeGlyphList(a1, a2, &v21, &v20, &v27, (__int64)&v22, (__int64)v26, Workspace);
if( (int)result >= 0 )
{
LODWORD(Offset) = v12 + v22 + 2;
v15 = RaspInitializeCompositeGlyphData(v11, v26, (__int64)Buffer, v21, v20, v27, Offset, a3, (__int64)&v23, v14);
if( v15 >= 0 )
{
v18 = v23;
}
else
{
while( 1 )
{
v16 = (VOID **)v26[0];
if( v26[0] == v26 )
break;
if( *((VOID ***)v26[0] + 1) != v26 || (v17 = *(_QWORD *)v26[0], *(VOID **)(*(_QWORD *)v26[0] + 8i64) != v26[0]) )
__fastfail(3u);
v26[0] = *(VOID **)v26[0];
*(_QWORD *)(v17 + 8) = v26;
RaspFreeMemory(v16[2], v14);
RaspFreeMemory(v16, v14);
}
v18 = v23;
if( v23 )
{
RaspFreeMemory(v23, v14);
v18 = 0i64;
}
}
*a4 = v18;
return(unsigned int)v15;
}
return result;
}Referenced by:
RaspLoadGlyphData