// File: /workspace/github_cpp_makefile_star2_O2/eniac[P]Mantis/src/compile/compile_c.cpp
// Function: generateMacroXorVersionBits(std::__cxx11::basic_ostringstream<char, std::char_traits<char>, std::allocator<char>>&, std::__cxx11::basic_ostringstream<char, std::char_traits<char>, std::allocator<char>>&, int, int)
void generateMacroXorVersionBits(ostringstream& oss_reaction_mirror, ostringstream& oss_preprocessor, int ing_iso_opt, int egr_iso_opt) {
    // Remember the current version bit values for reaction and measurement
    // We always pack field args and use mantis_mv_bit to index the replicas
    oss_reaction_mirror << "  static unsigned int __mantis__mv_ing = 0;\n";
    oss_reaction_mirror << "  static unsigned int __mantis__mv_egr = 0;\n";
    if(((unsigned int)ing_iso_opt) & 0b1) {
        // Create macros for flip version bit
        oss_preprocessor << "\n#define "
                        << "__mantis__flip_mv_ing "
                        << "__mantis__mv_ing=__mantis__mv_ing^0x1"
                        << "\n";        
    } 
    if (((unsigned int)ing_iso_opt) & 0b10) {
        oss_reaction_mirror << "  static unsigned int __mantis__vv_ing = 0x0;\n";
        oss_preprocessor << "\n#define "
                        << "__mantis__flip_vv_ing "
                        << "__mantis__vv_ing=__mantis__vv_ing^0x1"
                        << "\n";         
    }
    if(((unsigned int)egr_iso_opt) & 0b1) {
        oss_preprocessor << "\n#define "
                        << "__mantis__flip_mv_egr "
                        << "__mantis__mv_egr=__mantis__mv_egr^0x1"
                        << "\n";        
    } 
    if (((unsigned int)egr_iso_opt) & 0b10) {
        oss_reaction_mirror << "  static unsigned int __mantis__vv_egr = 0x0;\n";
        oss_preprocessor << "\n#define "
                        << "__mantis__flip_vv_egr "
                        << "__mantis__vv_egr=__mantis__vv_egr^0x1"
                        << "\n";         
    }    
}

// Assembly:
pushq %rbp
movq %rsp, %rbp
pushq %r15
pushq %r14
pushq %r12
pushq %rbx
movl %ecx, %r15d
movl %edx, %r12d
movq %rsi, %rbx
movq %rdi, %r14
leaq 0x288d7(%rip), %rsi     # 0x7a590
callq 0x413d0
leaq 0x288f8(%rip), %rsi     # 0x7a5bd
movq %r14, %rdi
callq 0x413d0
testb $0x1, %r12b
je 0x51d0f
leaq 0x28910(%rip), %rsi     # 0x7a5ea
movq %rbx, %rdi
callq 0x413d0
leaq 0x2890b(%rip), %rsi     # 0x7a5f4
movq %rax, %rdi
callq 0x413d0
leaq 0x28913(%rip), %rsi     # 0x7a60b
movq %rax, %rdi
callq 0x413d0
leaq 0x2709d(%rip), %rsi     # 0x78da4
movq %rax, %rdi
callq 0x413d0
testb $0x2, %r12b
je 0x51d60
leaq 0x28915(%rip), %rsi     # 0x7a631
movq %r14, %rdi
callq 0x413d0
leaq 0x288bf(%rip), %rsi     # 0x7a5ea
movq %rbx, %rdi
callq 0x413d0
leaq 0x28926(%rip), %rsi     # 0x7a660
movq %rax, %rdi
callq 0x413d0
leaq 0x2892e(%rip), %rsi     # 0x7a677
movq %rax, %rdi
callq 0x413d0
leaq 0x2704c(%rip), %rsi     # 0x78da4
movq %rax, %rdi
callq 0x413d0
testb $0x1, %r15b
je 0x51da2
leaq 0x2887d(%rip), %rsi     # 0x7a5ea
movq %rbx, %rdi
callq 0x413d0
leaq 0x28921(%rip), %rsi     # 0x7a69d
movq %rax, %rdi
callq 0x413d0
leaq 0x28929(%rip), %rsi     # 0x7a6b4
movq %rax, %rdi
callq 0x413d0
leaq 0x2700a(%rip), %rsi     # 0x78da4
movq %rax, %rdi
callq 0x413d0
testb $0x2, %r15b
jne 0x51db1
popq %rbx
popq %r12
popq %r14
popq %r15
popq %rbp
retq
leaq 0x28922(%rip), %rsi     # 0x7a6da
movq %r14, %rdi
callq 0x413d0
leaq 0x28823(%rip), %rsi     # 0x7a5ea
movq %rbx, %rdi
callq 0x413d0
leaq 0x28933(%rip), %rsi     # 0x7a709
movq %rax, %rdi
callq 0x413d0
leaq 0x2893b(%rip), %rsi     # 0x7a720
movq %rax, %rdi
callq 0x413d0
leaq 0x26fb0(%rip), %rsi     # 0x78da4
movq %rax, %rdi
popq %rbx
popq %r12
popq %r14
popq %r15
popq %rbp
jmp 0x413d0