есть блочный шифр, не из стандартных. появилась необходимость написать обратную функцию. завяз на следующем раунде: Код (Text): XOR ESI, ESI XOR EDI, EDI NEXT: BT EDX, 4h RCL ECX, 4h JNB ISEND XOR ESI, EAX XOR EDI, EBX PREP: RCR EDX, 5h BT EBX, 1Bh RCR EAX, 4h RCL EBX, 5h JNB NEXT XOR EAX, 800008h XOR EBX, 80000300h JMP NEXT ISEND: TEST EDX, EDX JNZ PREP TEST ECX, ECX JNZ PREP пары eax/ebx и ecx/edx получаются из предыдущего раунда следующим образом: Код (Text): eax = ebx = ecx = edx = 0; do { if (qword & 1) { eax ^= table[0]; ebx ^= table[1]; ecx ^= table[2]; edx ^= table[3]; } table += 4; } while (qword >>= 1); обе битовые матрицы из таблицы для каждой пары невырожденные, по каждой из пар можно восстановить куворд. вопрос: каким образом можно имея только пару esi/edi получить обе или хотя бы одну из пар eax/ebx, ecx/edx?