func_code_string: #include <bits/stdc++.h>   using namespace std;   const int inf = 0x3f3f3f3f;   int n, k, tot, root;   int ak[30];   int son[20000005][2], g[20000005];   long long ans;   void calc(int v, int *a) {     memset(a, 0, 120);     int i = 0;     while (v) {       a[i++] = v & 1;       v >>= 1;     }     return;   }   int make_node() {     ++tot;     return tot;   }   int get_ans(int x, int d) {     if (!son[x][d]) return 0;     return g[son[x][d]];   }   int ax[30];   void update(int x) {     int nd = root;     g[root]++;     for (int i = 30 - 1; i >= 0; i--) {       if (!son[nd][ax[i]]) son[nd][ax[i]] = make_node();       nd = son[nd][ax[i]];       g[nd]++;     }     return;   }   void query(int x) {     int nd = root;     for (int i = 30 - 1; i >= 0; i--) {       if (!ak[i]) {         ans += get_ans(nd, ax[i] ^ 1);         nd = son[nd][ax[i]];       } else         nd = son[nd][ax[i] ^ 1];       if (!nd) return;     }     ans += g[nd];     return;   }   int main() {     int x, y = 0;     scanf( %d %d , &n, &k);     root = make_node();     update(0);     calc(k, ak);     for (int i = 1; i <= n; i++) {       scanf( %d , &x);       y ^= x;       calc(y, ax);       query(y);       update(y);     }     printf( %I64d n , ans);     return 0;   }   