char *__fastcall ImageRenderColorConvert(int n2, int a2)
{
int v3; // esi
char *buf; // eax
int buf_2; // edi
int v6; // ebx
int buf_4; // eax
int n7; // edx
_BYTE *v9; // ecx
_BYTE *v10; // eax
int n8; // ecx
_BYTE *v12; // eax
int n7_1; // ecx
int v14; // ecx
_BYTE *v15; // edx
int v16; // edi
char v17; // al
unsigned int v18; // ecx
int v19; // edx
int n6_1; // ebx
_BYTE *v21; // edi
unsigned int v22; // edx
int n3; // ebp
char v24; // al
int n6; // ebp
char *v26; // ebx
int i; // edx
char v28; // al
unsigned int v29; // [esp+10h] [ebp-10h]
char *buf_3; // [esp+14h] [ebp-Ch]
int v32; // [esp+18h] [ebp-8h]
_BYTE *buf_1; // [esp+1Ch] [ebp-4h]
v3 = *(_DWORD *)(28 * n2 + a2 + 804);
buf = (char *)PeiAllocatePool((void *)(v3 * v3));
buf_2 = (int)buf;
buf_3 = buf;
if ( buf )
{
if ( v3 * v3 )
SetMem(buf, v3 * v3, 0);
ImageRenderGetPixel(buf_2, v3, 0, 0);
ImageRenderGetPixel(buf_2, v3, v3 - 7, 0);
ImageRenderGetPixel(buf_2, v3, 0, v3 - 7);
v6 = v3 * (v3 - 7);
buf_4 = buf_2;
n7 = 7;
v9 = (_BYTE *)(buf_2 + v6 + 7);
do
{
*(_BYTE *)(buf_4 + 7) = -64;
buf_4 += v3;
*(_BYTE *)(buf_4 - 8) = -64;
*v9 = -64;
v9 += v3;
--n7;
}
while ( n7 );
SetMem((void *)(buf_2 + 7 * v3), 8u, 192);
SetMem((void *)(buf_2 + 8 * (v3 - 1)), 8u, 192);
buf_1 = (_BYTE *)(buf_2 + v3 * (v3 - 8));
SetMem(buf_1, 8u, 192);
SetMem((void *)(buf_2 + 8 * v3), 9u, 132);
SetMem((void *)(buf_2 + 9 * v3 - 8), 8u, 132);
v10 = (_BYTE *)(buf_2 + 8);
n8 = 8;
do
{
*v10 = -124;
v10 += v3;
--n8;
}
while ( n8 );
v12 = (_BYTE *)(buf_2 + v6 + 8);
n7_1 = 7;
do
{
*v12 = -124;
v12 += v3;
--n7_1;
}
while ( n7_1 );
v14 = 1;
v15 = (_BYTE *)(buf_2 + 8 * v3 + 6);
if ( v3 - 15 > 1 )
{
v16 = buf_2 + 6 * v3 + 7;
do
{
v17 = v14 & 1 | 0x90;
*(_BYTE *)(v16 + v14) = v17;
*v15 = v17;
v15 += v3;
++v14;
}
while ( v14 < v3 - 15 );
buf_2 = (int)buf_3;
}
ImageRenderDither(n2, buf_2, v3, a2);
if ( n2 >= 7 )
{
if ( n2 > 40 )
v18 = 0;
else
v18 = *(_DWORD *)(a2 + 4 * n2 + 312);
v29 = v18;
v19 = buf_2 + v3 * (v3 - 11);
n6_1 = 0;
v32 = v19;
do
{
v21 = (_BYTE *)(n6_1 + v19);
v22 = v29;
n3 = 3;
do
{
v24 = v22;
v22 >>= 1;
*v21 = v24 & 1 | 0x88;
v21 += v3;
--n3;
}
while ( n3 );
++n6_1;
v29 = v22;
v19 = v32;
n6 = 6;
}
while ( n6_1 < 6 );
buf_2 = (int)buf_3;
v26 = &buf_3[v3 - 11];
do
{
for ( i = 0; i < 3; ++i )
{
v28 = v18;
v18 >>= 1;
v26[i] = v28 & 1 | 0x88;
}
v26 += v3;
--n6;
}
while ( n6 );
}
buf_1[8] = -127;
return (char *)buf_2;
}
return buf;
}