#include <cstdint>
#include <iostream>
#include <string>
using namespace std;
string hexNumber(int32_t n) {
const char* digits = "0123456789ABCDEF";
uint32_t x = n < 0 ? 0u - uint32_t(n) : uint32_t(n);
string s;
do {
s = digits[x % 16] + s;
x /= 16;
} while (x);
return (n < 0 ? "-0x" : "0x") + s;
}
int main() {
int32_t A, C, D, E;
int b;
cout << "A B C: ";
cin >> A >> b >> C;
if (!cin || b < 1 || b > 255) return 1;
uint8_t B = b;
int32_t q = A, remainder;
int32_t divisor = B;
D = C;
asm volatile(
"cdq\n\t"
"idivl %[b]\n\t"
"subl %%eax, %[d]"
: "+a"(q), "=&d"(remainder), [d] "+r"(D)
: [b] "r"(divisor)
: "cc"
);
E = B;
asm volatile(
"imull %%eax, %%eax\n\t"
"subl %[a], %%eax\n\t"
"addl %[c], %%eax"
: "+a"(E)
: [a] "r"(A), [c] "r"(C)
: "cc"
);
cout << "A = " << A << " = " << hexNumber(A) << '\n';
cout << "B = " << b << " = " << hexNumber(b) << '\n';
cout << "C = " << C << " = " << hexNumber(C) << '\n';
cout << "D = " << D << " = " << hexNumber(D) << '\n';
cout << "E = " << E << " = " << hexNumber(E) << '\n';
}