int __fastcall ImageRenderBlock(int *p_n2, int n26, int p_n2a, int a4)
{
unsigned int *p_count; // eax
int v8; // ecx
char *count; // edx
int v10; // ebx
int v11; // ebp
int v12; // edi
int n2; // eax
int v14; // eax
p_count = ImageRenderAllocContext();
p_n2[3] = (int)p_count;
if ( !p_count )
return -1;
if ( ImageRenderBits(p_count, (char *)4, 1) < 0 )
goto LABEL_18;
v8 = 0;
if ( n26 > 9 )
{
LOBYTE(v8) = n26 > 26;
++v8;
}
count = *(char **)(a4 + 4 * v8 + 128);
if ( count )
{
if ( ImageRenderBits((unsigned int *)p_n2[3], count, p_n2[1]) < 0 )
goto LABEL_18;
}
v10 = 0;
v11 = p_n2[1] / 3;
if ( v11 > 0 )
{
v12 = 0;
while ( ImageRenderBits(
(unsigned int *)p_n2[3],
(char *)0xA,
10 * (10 * *(unsigned __int8 *)(v12 + p_n2[2]) + *(unsigned __int8 *)(v12 + p_n2[2] + 1))
- 5328
+ *(unsigned __int8 *)(v12 + p_n2[2] + 2)) >= 0 )
{
++v10;
v12 += 3;
if ( v10 >= v11 )
goto LABEL_12;
}
goto LABEL_18;
}
LABEL_12:
n2 = p_n2[1] - 3 * v11;
if ( n2 == 1 )
{
v14 = ImageRenderBits((unsigned int *)p_n2[3], (char *)4, *(unsigned __int8 *)(p_n2[2] + 3 * v11) - 48);
}
else
{
if ( n2 != 2 )
return 0;
v14 = ImageRenderBits(
(unsigned int *)p_n2[3],
(char *)7,
*(unsigned __int8 *)(p_n2[2] + 3 * v11 + 1) - 528 + 10 * *(unsigned __int8 *)(p_n2[2] + 3 * v11));
}
if ( v14 >= 0 )
return 0;
LABEL_18:
p_n2[3] = 0;
return -1;
}