
int _u_n_d_e_r_s_c_o_r_e_s_;
int a_r_e_;
int _c_o_o_l;
int _X_Xtwo_Xunderscores_Xat_Xthe_Xfront;
int two_Xunderscores_X_Xin_Xthe_Xmiddle;
int two_Xunderscores_Xat_Xthe_Xend_X_X;
int _X_X;
int three_X_X_Xunderscores;
int contains_Xmangle_Xmarker_XX_X;
struct two_Xunderscores_X_Xin_Xa_Xstructname {
    int two_Xunderscores_X_Xin_Xa_Xstruct_Xfield;
};
two_Xunderscores_X_Xin_Xa_Xstructname two_Xunderscores_X_Xin_Xstruct_Xvar;
two_Xunderscores_X_Xin_Xan_Xinterface_Xblock {
    int two_Xunderscores_X_Xin_Xa_Xinterface_Xblock_Xfield;
} two_Xunderscores_X_Xin_Xa_Xinterface_Xblock_Xvar;
two_Xunderscores_X_Xin_Xa_Xstructname two_Xunderscores_X_Xin_Xa_Xfuncname_XSS(two_Xunderscores_X_Xin_Xa_Xstructname two_Xunderscores_X_Xin_Xa_Xparameter) {
    if (_X_Xtwo_Xunderscores_Xat_Xthe_Xfront == two_Xunderscores_Xat_Xthe_Xend_X_X) {
        if (two_Xunderscores_X_Xin_Xthe_Xmiddle == contains_Xmangle_Xmarker_XX_X) {
            ++contains_Xmangle_Xmarker_XX_X;
        }
    }
    two_Xunderscores_X_Xin_Xa_Xparameter.two_Xunderscores_X_Xin_Xa_Xstruct_Xfield = _X_X;
    return two_Xunderscores_X_Xin_Xa_Xstructname(three_X_X_Xunderscores);
}
void main() {
    _u_n_d_e_r_s_c_o_r_e_s_ = (a_r_e_ = _c_o_o_l);
    two_Xunderscores_X_Xin_Xa_Xfuncname_XSS(two_Xunderscores_X_Xin_Xstruct_Xvar);
}
