5A7EEC 8B442404;        MOV EAX,[ESP+4]
5A7EF0 53;              PUSH EBX
5A7EF1 8A800C2B4000;    MOV AL,BYTE [EAX+402B0C]
5A7EF7 A20C7F5A00;      MOV [5A7F0C],AL
5A7EFC 8BDA;            MOV EBX,EDX
5A7EFE C1EB05;          SHR EBX,5
5A7F01 B820000000;      MOV EAX,20
5A7F06 0FAFC3;          IMUL EAX,EBX
5A7F09 2BD0;            SUB EDX,EAX
5A7F0B 0FAB1499;        BTS [ECX+EBX*4],EDX
5A7F0F 0F92C0;          SETB AL
5A7F12 5B;              POP EBX
5A7F13 C20400;          RETN 4
402B0C A3;
402B0D BB;
402B0E B3;
402B0F AB;Функция длиной всего в 46 байт (42 байта кода + 4 байта данных). Команды PUSH EBX и POP EBX вообще-то могут быть опущены, и тогда будет уже 44 байта. Но так как EBX - долгосрочный регистр в большинстве программ, то для использования в них этой функции его лучше сохранять.
Разгадайте:
- Соглашение вызова;
 - Количество параметров;
 - Значения для последнего параметра;
 - Возвращаемый результат;
 - Главную особенность, используемую чаще всего для шифрования кода, а не для краткости.
 
Дополнительное задание на дополнительный балл - представить, для чего это может быть нужно.




