func_code_string: #include <bits/stdc++.h>   int a[26];   int w[256];   int n;   int LIMIT = 1;   int su[26], sv[26], sk[26];   int go(int lev) {     if (a[lev] == n) {       printf( %d n , lev);       for (int i = 0; i < lev; i++)         if (su[i] == -1) {           printf( lea e%cx, [%d*e%cx] n ,  a  + i + 1, 1 << sk[i],  a  + sv[i]);         } else if (sk[i] == 0)           printf( lea e%cx, [e%cx + e%cx] n ,  a  + i + 1,  a  + su[i],                   a  + sv[i]);         else           printf( lea e%cx, [e%cx + %d*e%cx] n ,  a  + i + 1,  a  + su[i],                  1 << sk[i],  a  + sv[i]);       return 1;     }     if (lev >= LIMIT) return 0;     int &i = su[lev], &j = sv[lev], &k = sk[lev];     i = -1;     for (j = 0; j <= lev; j++)       for (k = 0; k <= 3; k++) {         int v = (a[j] << k);         if (v > a[lev] && v <= n) {           a[lev + 1] = v;           if (go(lev + 1)) return 1;           a[lev + 1] = 0;         }       }     for (i = 0; i <= lev; i++)       for (j = 0; j <= lev; j++) {         for (k = 0; k <= 3; k++) {           int v = a[i] + (a[j] << k);           if (v > a[lev] && v <= n) {             a[lev + 1] = v;             if (go(lev + 1)) return 1;             a[lev + 1] = 0;           }         }       }     return 0;   }   int main(void) {     scanf( %d , &n);     if (n == 1) {       printf( 0 n );       return 0;     }     a[0] = 1;     w[1] = 1;     for (LIMIT = 1;; LIMIT++) {       if (go(0)) {         break;       }     }     return 0;   }   