int __fastcall ImageRenderDither(int n2, int buf, int a3, int a4)
{
int n2_1; // ebx
int n2_2; // edi
int v6; // ecx
int n6; // esi
int v8; // ebp
int n6_3; // eax
int v10; // edi
int v11; // edi
int n6_1; // esi
int v14; // [esp+Ch] [ebp-14h]
int n6_2; // [esp+10h] [ebp-10h]
int v16; // [esp+14h] [ebp-Ch]
int v17; // [esp+18h] [ebp-8h]
n2_1 = n2;
n2_2 = 2;
if ( n2 >= 2 )
{
v6 = a4;
n6 = *(_DWORD *)(a4 + 8 * n2_1 + 476);
v8 = *(_DWORD *)(a4 + 8 * n2_1 + 480) - n6;
if ( v8 >= 0 )
n2_2 = (a3 - n6) / v8 + 2;
if ( n2_2 * n2_2 == 4 )
{
return ImageRenderPutPixel(buf, a3, n6, *(_DWORD *)(a4 + 8 * n2_1 + 476));
}
else
{
v10 = n2_2 - 1;
v17 = v10;
if ( v10 > 1 )
{
v11 = v10 - 1;
do
{
ImageRenderPutPixel(buf, a3, 6, n6);
ImageRenderPutPixel(buf, a3, n6, 6);
n6 += v8;
--v11;
}
while ( v11 );
v10 = v17;
n2_1 = n2;
v6 = a4;
}
n6_3 = *(_DWORD *)(v6 + 8 * n2_1 + 476);
n6_2 = n6_3;
v16 = 0;
if ( v10 > 0 )
{
do
{
n6_1 = *(_DWORD *)(v6 + 8 * n2_1 + 476);
v14 = v10;
do
{
n6_3 = ImageRenderPutPixel(buf, a3, n6_1, n6_2);
n6_1 += v8;
--v14;
}
while ( v14 );
v10 = v17;
v6 = a4;
n6_2 += v8;
n2_1 = n2;
++v16;
}
while ( v16 < v17 );
}
}
}
return n6_3;
}