int __fastcall ImageRenderDecode(int *p_n26, int a2)
{
int PaletteEntry; // eax
int PaletteEntry_1; // edi
int v6; // eax
int *p_n2; // edi
int v8; // ebx
int v9; // eax
PaletteEntry = 0;
while ( 1 )
{
PaletteEntry_1 = PaletteEntry;
v6 = BitmapRenderBlock((int)p_n26, PaletteEntry, a2);
PaletteEntry = BitmapGetPaletteEntry((v6 + 7) / 8, p_n26[1], a2);
if ( PaletteEntry < 0 )
break;
if ( PaletteEntry <= PaletteEntry_1 )
goto LABEL_6;
}
PaletteEntry = -1;
LABEL_6:
if ( PaletteEntry > *p_n26 && !p_n26[4] && (unsigned int)PaletteEntry <= 0x28 )
LABEL_9:
*p_n26 = PaletteEntry;
while ( 1 )
{
p_n2 = (int *)p_n26[2];
v8 = 0;
if ( p_n2 )
break;
LABEL_14:
PaletteEntry = BitmapGetPaletteEntry((v8 + 7) / 8, p_n26[1], a2);
if ( PaletteEntry < 0 )
return -1;
if ( PaletteEntry <= *p_n26 )
return 0;
if ( !p_n26[4] && PaletteEntry <= 40 )
goto LABEL_9;
}
while ( 1 )
{
v9 = ImageRenderFull(p_n2, *p_n26, p_n26[4], a2);
if ( v9 < 0 )
return -1;
p_n2 = (int *)p_n2[4];
v8 += v9;
if ( !p_n2 )
{
if ( v8 < 0 )
return -1;
goto LABEL_14;
}
}
}