I am trying to figure out the value stored in %edi throughout each loop iteration:0x40106e      movl   $0x2b, 0xffffffdc(%ebp)0x401075      movl   $0x31, 0xffffffe4(%ebp)0x40107c      movl   $0x74, 0xffffffec(%ebp)0x401083      movl   $0x19, 0xffffffe8(%ebp)0x40108a      movl   $0x7, 0xffffffd8(%ebp)0x401091      movl   $0x14, 0xffffffe0(%ebp)0x401098      mov    $0xdead, %edi0x40109d      mov    $0x2, %ecx0x4010a2      mov    %ecx, %esi0x4010a4      mov    $0x3, %ecx0x4010a9      mov    $0x2, %ebx0x4010ae      sub    %esi, %ebx0x4010b0      imul   $0xc, %ebx, %ebx0x4010b3      mov    $0x3, %edx0x4010b8      sub    %ecx, %edx0x4010ba      lea    0xffffffd8(%ebp), %eax0x4010bd      lea    (%ebx, %edx, 4), %ebx0x4010c0      add    %ebx, %eax0x4010c2      mov    (%eax), %edi0x4010c4      loop   0x4010a90x4010c6      mov    %esi, %ecx0x4010c8      loop   0x4010a20x4010ca      mov    $0xbeef, %ediI have created the following in C++ to have it print out the values as the loops run, but the values don't match any of the multiple choice answers:int main() {    int a = 7;    int b = 2;    int c = 2;    int d = 0;    int s = 2;    for (int i = 2; i > 0; --i) {        c = 3;        for (int j = 3; j > 0; --j) {            c = j;            b = 2;             b -= s;            b = b * 12;            d = 3;            d -= c;            a = 7;            b = (4 * d) + b;            a = a + b;            d = a;            cout << This is d:  << d << endl;        }        c = i;    }}The output I get is:7, 11, 15, 7, 11, 15Can you point me in the right direction and let me know what I have translated wrong in the C++ version?
Assembly loop to c++
assembly;decompilation