ГС
Гульнара Соколова

Что делает этот код ?

v1 = sub_67006140("GetDCPenColor");
v15 = v1;
v2 = a1;
v3 = sub_67006140("GetDCBrushColor");
v16 = v3;
v14 = 0;
v4 = a1 + 8 * *(_DWORD *)a1 + 4;
if ( *(_DWORD *)a1 )
{
v5 = a1 + 4;
while ( 1 )
{
switch ( *(_DWORD *)(v5 + 4) )
{
case 0:
v6 = GetObjectA(*(HANDLE *)v5, 24, (LPVOID)(v4 + 4));
*(_DWORD *)v4 = v6;
if ( !v6 )
{
GetLastError();
GetObjectType(*(HGDIOBJ *)v5);
GetObjectA(*(HANDLE *)v5, 0, 0);
}
v4 += 28;
break;
case 1:
hDC = GetDC(0);
if ( !hDC )
GetLastError();
if ( !GetObjectA(*(HANDLE *)v5, 24, &pv) )
GetLastError();
memset((void *)(v4 + 😎, 0, 0x2Cu);
*(_DWORD *)(v4 + 😎 = 40;
if ( !GetDIBits(hDC, *(HBITMAP *)v5, 0, cLines, 0, (LPBITMAPINFO)(v4 + 😎, 0) )
GetLastError();
v7 = *(_WORD *)(v4 + 22);
v8 = v4 + 52;
switch ( v7 )
{
case 8:
v8 = v4 + 1072;
break;
case 4:
v8 = v4 + 112;
break;
case 1:
v8 = v4 + 56;
break;
}
v13 = *(_DWORD *)(v4 + 28);
v9 = (void *)(v8 + 8);
if ( (unsigned int)((char *)v9 + v13 - a1) <= 0x800000 )
{
if ( !GetDIBits(hDC, *(HBITMAP *)v5, 0, cLines, v9, (LPBITMAPINFO)(v4 + 😎, 0) )
GetLastError();
v10 = v13;
}
else
{
v10 = 0;
}
if ( hDC )
ReleaseDC(0, hDC);
*(_DWORD *)(v4 + 4) = v10;
*(_DWORD *)v4 = (char *)v9 - v4;
v4 += v10 + 8;
v2 = a1;
break;
case 2:
*(_DWORD *)v4 = GetObjectA(*(HANDLE *)v5, 84, (LPVOID)(v4 + 4));
v4 += 88;
break;
case 3:
*(_DWORD *)v4 = GetObjectA(*(HANDLE *)v5, 2, (LPVOID)(v4 + 4));
v4 += 6;
break;
case 4:
*(_DWORD *)v4 = GetObjectA(*(HANDLE *)v5, 28, (LPVOID)(v4 + 4));
v4 += 32;
break;
case 5:
*(_DWORD *)v4 = GetObjectA(*(HANDLE *)v5, 16, (LPVOID)(v4 + 4));
v4 += 20;
break;
case 6:
*(_DWORD *)v4 = GetObjectA(*(HANDLE *)v5, 12, (LPVOID)(v4 + 4));
v4 += 16;
break;
case 7:
*(_DWORD *)v4 = GetObjectA(*(HANDLE *)v5, 60, (LPVOID)(v4 + 4));
v4 += 64;
break;
case 8:
*(_DWORD *)v4 = GetRgnBox(*(HRGN *)v5, (LPRECT)(v4 + 4));
v4 += 20;
break;
case 9:
if ( v3 )
*(_DWORD *)v4 = ((int (__stdcall *)(_DWORD))v3)(*(_DWORD *)v5);
if ( v1 )
*(_DWORD *)(v4 + 4) = ((int (__stdcall *)(_DWORD))v1)(*(_DWORD *)v5);
*(_DWORD *)(v4 + 😎 = GetDeviceCaps(*(HDC *)v5, 8);
*(_DWORD *)(v4 + 12) = GetDeviceCaps(*(HDC *)v5, 10);
*(_DWORD *)(v4 + 16) = GetCurrentObject(*(HDC *)v5, 7u);
*(_DWORD *)(v4 + 20) = GetCurrentObject(*(HDC *)v5, 2u);
*(_DWORD *)(v4 + 24) = GetCurrentObject(*(HDC *)v5, 0xEu);
*(_DWORD *)(v4 + 28) = GetCurrentObject(*(HDC *)v5, 6u);
*(_DWORD *)(v4 + 32) = GetCurrentObject(*(HDC *)v5, 5u);
*(_DWORD *)(v4 + 36) = GetCurrentObject(*(HDC *)v5, 1u);
*(_DWORD *)(v4 + 40) = WindowFromDC(*(HDC *)v5);
GetClipBox(*(HDC *)v5, (LPRECT)(v4 + 44));
v4 += 60;
break;
default:
break;
}
v5 += 8;
++v14;
if ( v14 >= *(_DWORD *)v2 )
break;
v1 = v15;
v3 = v16;
}
}

ОТ
Олеся Туркова

Вообще больше напоминает псевдокод генерируемый идой. тут используются winapi для работы с графикой windows (gdi). более точную инфу смотри на msdn.
нельзя просто так вот выдрать кусок дезасемблированного кода и получить ответ на вопрос, чо делает этот кусок кода.

ГА
Гульсина Ашурова

Понять с этого фрагмента очень сложно, скорей всего связан с рисованием или прорисовкой объекта (или объектов) .
Все действия выполняются в бесконечном цикле.

ВХ
Виктория Хатищева (Семенова)

Напоминает код генерируемый FreeBASIC для компиляции в GCC

Похожие вопросы
выходит баннер WINDOWS заблокирован, что делать (или код активации)
Невидимый код css, что делать?
Что делать просле компиляции кода на c++
Помогите Люди! что делает эта часть кода?
поставил код на клаву нокии x2-02 а теперь вожу код не верен что делать
Ассемблер. Что делает каждая строка в коде?
Ассемблер. Что делает каждая строка в коде?
В Дримвивере можно делать закладки в коде? Примерно так как на картинке (+)
Для чего делают отступы в написании кода?
Что делать если не пришел смс с кодом для App Store?