RaspLoadBearings
NTSTATUS __fastcall RaspLoadBearings(__int64 a1, unsigned int a2, __int64 a3, int *a4){
unsigned int v4;
__int64 v5;
int v7;
_FILE_IMAGE *v11;
NTSTATUS result;
unsigned __int16 v13;
int v14;
signed __int16 v15;
int v16;
__int64 v17;
__int64 v18;
int v19;
int v20;
__int64 v21;
__int64 v22;
int v23;
int v24;
UINT16 Buffer;
v4 = *(unsigned __int16 *)(a1 + 88);
v5 = *(_QWORD *)(a1 + 16);
v7 = *(_DWORD *)(a1 + 68);
v24 = 0;
Buffer = 0;
v11 = *(_FILE_IMAGE **)(v5 + 16);
if( a2 >= v4 )
{
v23 = v7 + 4 * v4;
result = FioFwReadBytesAtOffset(v11, (unsigned int)(v23 - 4), 4ui64, &v24);
if( result < 0 )
return result;
v14 = (unsigned __int16)__ROR2__(v24, 8);
result = FioFwReadUshortAtOffset(*(_FILE_IMAGE **)(*(_QWORD *)(a1 + 16) + 16i64), v23 + 2 * (a2 - v4), &Buffer);
if( result < 0 )
return result;
v15 = Buffer;
}
else
{
result = FioFwReadBytesAtOffset(v11, v7 + 4 * a2, 4ui64, &v24);
if( result < 0 )
return result;
v13 = __ROR2__(v24, 8);
v14 = v13;
v15 = __ROR2__(HIWORD(v24), 8);
if( !v13 )
{
result = FioFwReadBytesAtOffset(
*(_FILE_IMAGE **)(*(_QWORD *)(a1 + 16) + 16i64),
*(_DWORD *)(a1 + 68) - 4 + 4 * v4,
4ui64,
&v24);
if( result < 0 )
return result;
v14 = (unsigned __int16)__ROR2__(v24, 8);
}
}
if( v15 < 0 )
v15 = 0;
v16 = *(_DWORD *)(a3 + 18);
v17 = *(unsigned __int16 *)(a3 + 24);
v18 = *(_QWORD *)(a3 + 50);
v19 = v15 + *(_DWORD *)(a3 + 10) - v16;
if( v14 >= v19 )
v19 = v14;
*(_DWORD *)(v18 + 4 * v17) = v16 - v15;
v20 = *(_DWORD *)(a3 + 18) - v15;
*a4 = v19;
*(_DWORD *)(v18 + 4 * v17 + 4) = v19 + v20;
v21 = *(unsigned __int16 *)(a3 + 24);
v22 = *(_QWORD *)(a3 + 58);
*(_DWORD *)(v22 + 4 * v21) = *(__int16 *)(a1 + 82) + *(__int16 *)(a1 + 84);
result = 0;
*(_DWORD *)(v22 + 4 * v21 + 4) = *(__int16 *)(a1 + 82) + *(__int16 *)(a1 + 84);
*(_WORD *)(a3 + 24) += 2;
return result;
}Referenced by:
RaspGetUnscaledGlyphData