// File: /workspace/github_cpp_makefile_star2_O1/eniac[P]Mantis/src/compile/compile_c.cpp
// Function: generateDialogueNode(std::vector<AstNode*, std::allocator<AstNode*>>, std::__cxx11::basic_ostringstream<char, std::char_traits<char>, std::allocator<char>>&, std::__cxx11::basic_ostringstream<char, std::char_traits<char>, std::allocator<char>>&)
UnanchoredNode* generateDialogueNode(std::vector<AstNode*> nodeArray, ostringstream& oss_reaction_mirror, ostringstream& oss_reaction_update) {

	// Assume single global reaction and initialization node (if any)
	P4RReactionNode * react_node = findReaction(nodeArray);
    string * dialogue_str = NULL;
    string p4r_reaction_user_str = "";
    if (react_node != 0) {
        p4r_reaction_user_str = react_node->body_->toString();
    }

    // Translate mantis style variable assignment to macros to be further processed by C preprocessor
    // regrex matching ${var} = <alter>;
    std::regex e_val ("\\$\\{([^ ]*)\\}\\s*[=]\\s*([^\\; ]*)\\s*\\;");
    p4r_reaction_user_str = std::regex_replace (p4r_reaction_user_str, e_val, "__mantis__mod_var_$1($2);");
    // regrex matching ${var} = <header>.<field>;
    std::regex e_field ("\\$\\{([^ ]*)\\}\\s*[=]\\s*([^\\. ]*)\\s*\\.\\s*([^\\; ]*)\\s*\\;");
    p4r_reaction_user_str = std::regex_replace (p4r_reaction_user_str, e_field, "__mantis__mod_var_$1_$2_$3;");

    // Change field arg format to C compatible variable
    vector<ReactionArgNode*> reaction_args = findReactionArgs(nodeArray);
    for (auto ra : reaction_args) {    
        if (ra->argType_==ReactionArgNode::INGRESS_FIELD) {
            FieldNode* fieldnode = dynamic_cast<FieldNode*>(ra->arg_);
            std::regex e_fieldarg (fieldnode->headerName_->toString()+"\\s*([^\\. ]*)\\s*\\.\\s*"+fieldnode->fieldName_->toString());
            p4r_reaction_user_str = std::regex_replace (p4r_reaction_user_str, e_fieldarg, fieldnode->headerName_->toString()+"_"+fieldnode->fieldName_->toString());
        }    
    }

    if (react_node != 0) {
        dialogue_str = new string(
            str(boost::format(kDialogueT) % oss_reaction_mirror.str() % p4r_reaction_user_str % oss_reaction_update.str()));
    } else {
        dialogue_str = new string(
            str(boost::format(kDialogueT) % oss_reaction_mirror.str() % "" % oss_reaction_update.str()));
    }

    UnanchoredNode * dialogue_cnode = new UnanchoredNode(dialogue_str, new string ("dialogue"), new string("pd_dialogue"));
    return dialogue_cnode;
}

// Assembly:
pushq %rbp
movq %rsp, %rbp
pushq %r15
pushq %r14
pushq %r13
pushq %r12
pushq %rbx
subq $0x238, %rsp            # imm = 0x238
movq %rdx, %r12
movq %rsi, %r13
movq %rdi, %rbx
leaq -0x258(%rbp), %r14
movq %r14, %rdi
movq %rbx, %rsi
callq 0x32d96
movq %r14, %rdi
callq 0x6fe8f
movq %rax, %r14
movq -0x258(%rbp), %rdi
testq %rdi, %rdi
je 0x40d34
callq 0x2e360
leaq -0xa0(%rbp), %rax
movq %rax, -0x10(%rax)
leaq 0x36b95(%rip), %rdx     # 0x778db
leaq -0xb0(%rbp), %rdi
movq %rdx, %rsi
callq 0x33112
testq %r14, %r14
je 0x40d9a
movq %r14, %r15
movq 0x50(%r14), %rsi
movq (%rsi), %rax
leaq -0x200(%rbp), %rdi
callq *(%rax)
leaq -0xb0(%rbp), %rdi
leaq -0x200(%rbp), %r14
movq %r14, %rsi
callq 0x2e4c0
movq (%r14), %rdi
leaq -0x1f0(%rbp), %rax
cmpq %rax, %rdi
je 0x40d97
callq 0x2e360
movq %r15, %r14
leaq 0x3594f(%rip), %rsi     # 0x766f0
leaq -0x240(%rbp), %rdi
movl $0x10, %edx
callq 0x50bf8
movq %r14, -0x108(%rbp)
leaq -0x1f0(%rbp), %r15
movq %r15, -0x10(%r15)
movq $0x0, -0x8(%r15)
movb $0x0, (%r15)
movq -0xb0(%rbp), %rsi
movq -0xa8(%rbp), %rdx
addq %rsi, %rdx
movl $0x0, (%rsp)
leaq 0x35926(%rip), %r8      # 0x76715
leaq -0x200(%rbp), %rdi
leaq -0x240(%rbp), %rcx
movl $0x19, %r9d
callq 0x6095a
leaq -0xb0(%rbp), %rdi
leaq -0x200(%rbp), %r14
movq %r14, %rsi
callq 0x2e4c0
movq (%r14), %rdi
cmpq %r15, %rdi
je 0x40e2b
callq 0x2e360
leaq 0x358fd(%rip), %rsi     # 0x7672f
leaq -0x220(%rbp), %rdi
movl $0x10, %edx
callq 0x50bf8
leaq -0x200(%rbp), %rdi
movq %r15, (%rdi)
movq $0x0, 0x8(%rdi)
movb $0x0, 0x10(%rdi)
movq -0xb0(%rbp), %rsi
movq -0xa8(%rbp), %rdx
addq %rsi, %rdx
movl $0x0, (%rsp)
leaq 0x358ed(%rip), %r8      # 0x76765
leaq -0x220(%rbp), %rcx
movl $0x1b, %r9d
callq 0x6095a
leaq -0xb0(%rbp), %rdi
movq %r14, %rsi
callq 0x2e4c0
movq (%r14), %rdi
cmpq %r15, %rdi
je 0x40ea6
callq 0x2e360
movq %r13, -0xe0(%rbp)
movq %r12, -0xd8(%rbp)
leaq -0x120(%rbp), %rdi
movq %rbx, %rsi
callq 0x70010
movq -0x120(%rbp), %rbx
movq -0x118(%rbp), %rdx
cmpq %rdx, %rbx
je 0x412a0
leaq -0x60(%rbp), %r14
leaq -0x90(%rbp), %rcx
leaq -0xd0(%rbp), %r12
movq %rdx, -0x30(%rbp)
movq (%rbx), %rax
cmpl $0x0, 0x3c(%rax)
jne 0x41293
movq 0x40(%rax), %rdi
testq %rdi, %rdi
je 0x40f27
leaq 0x4b723(%rip), %rsi     # 0x8c630
leaq 0x4c48c(%rip), %rdx     # 0x8d3a0
xorl %ecx, %ecx
callq 0x2e430
leaq -0x90(%rbp), %rcx
movq %rax, %r15
jmp 0x40f2a
xorl %r15d, %r15d
movq 0x40(%r15), %rsi
movq (%rsi), %rax
movq %rcx, %rdi
movq %rcx, %r13
callq *(%rax)
movq %r13, %rdi
leaq 0x3583e(%rip), %rsi     # 0x76781
callq 0x2e7e0
leaq -0x40(%rbp), %rsi
movq %rsi, -0x50(%rbp)
movq (%rax), %rdx
movq %rax, %rcx
addq $0x10, %rcx
cmpq %rcx, %rdx
je 0x40f6c
movq %rdx, -0x50(%rbp)
movq (%rcx), %rdx
movq %rdx, -0x40(%rbp)
jmp 0x40f72
movups (%rcx), %xmm0
movups %xmm0, (%rsi)
movq 0x8(%rax), %rdx
movq %rdx, -0x48(%rbp)
movq %rcx, (%rax)
movq $0x0, 0x8(%rax)
movb $0x0, 0x10(%rax)
movq 0x48(%r15), %rsi
movq (%rsi), %rax
movq %r12, %rdi
callq *(%rax)
movq -0x50(%rbp), %rcx
movl $0xf, %esi
leaq -0x40(%rbp), %rax
cmpq %rax, %rcx
je 0x40fab
movq -0x40(%rbp), %rsi
movq -0x48(%rbp), %r8
movq -0xc8(%rbp), %rdx
leaq (%rdx,%r8), %rax
cmpq %rsi, %rax
jbe 0x40fe0
movl $0xf, %esi
leaq -0xc0(%rbp), %rdi
cmpq %rdi, -0xd0(%rbp)
je 0x40fdb
movq -0xc0(%rbp), %rsi
cmpq %rsi, %rax
jbe 0x40ff2
movq -0xd0(%rbp), %rsi
leaq -0x50(%rbp), %rdi
callq 0x2e130
jmp 0x40ffe
movq %r12, %rdi
xorl %esi, %esi
xorl %edx, %edx
callq 0x2e420
movq %r14, -0x70(%rbp)
movq (%rax), %rdx
leaq 0x10(%rax), %rcx
cmpq %rcx, %rdx
je 0x4101b
movq %rdx, -0x70(%rbp)
movq (%rcx), %rdx
movq %rdx, -0x60(%rbp)
jmp 0x41022
movups (%rcx), %xmm0
movups %xmm0, (%r14)
movq %rax, %rdx
addq $0x8, %rdx
movq 0x8(%rax), %rsi
movq %rsi, -0x68(%rbp)
movq %rcx, (%rax)
movq $0x0, (%rdx)
movb $0x0, (%rcx)
leaq -0x200(%rbp), %rdi
leaq -0x70(%rbp), %rsi
movl $0x10, %edx
callq 0x50c64
movq -0x70(%rbp), %rdi
cmpq %r14, %rdi
je 0x41061
callq 0x2e360
movq -0xd0(%rbp), %rdi
leaq -0xc0(%rbp), %rax
cmpq %rax, %rdi
je 0x41079
callq 0x2e360
movq -0x50(%rbp), %rdi
leaq -0x40(%rbp), %rax
cmpq %rax, %rdi
je 0x4108b
callq 0x2e360
movq -0x90(%rbp), %rdi
leaq -0x80(%rbp), %rax
cmpq %rax, %rdi
je 0x410a0
callq 0x2e360
movq 0x40(%r15), %rsi
movq (%rsi), %rax
movq %r12, %r13
movq %r12, %rdi
callq *(%rax)
movq %r13, %rdi
leaq 0x36851(%rip), %rsi     # 0x7790a
callq 0x2e7e0
leaq -0x80(%rbp), %rsi
movq %rsi, -0x90(%rbp)
movq (%rax), %rdx
movq %rax, %rcx
addq $0x10, %rcx
cmpq %rcx, %rdx
je 0x410e8
movq %rdx, -0x90(%rbp)
movq (%rcx), %rdx
movq %rdx, -0x80(%rbp)
jmp 0x410ee
movups (%rcx), %xmm0
movups %xmm0, (%rsi)
movq 0x8(%rax), %rdx
movq %rdx, -0x88(%rbp)
movq %rcx, (%rax)
movq $0x0, 0x8(%rax)
movb $0x0, 0x10(%rax)
movq 0x48(%r15), %rsi
movq (%rsi), %rax
leaq -0x100(%rbp), %rdi
callq *(%rax)
movq -0x90(%rbp), %rcx
movl $0xf, %esi
leaq -0x80(%rbp), %r15
cmpq %r15, %rcx
je 0x41131
movq -0x80(%rbp), %rsi
movq -0x88(%rbp), %r8
movq -0xf8(%rbp), %rdx
leaq (%rdx,%r8), %rax
cmpq %rsi, %rax
jbe 0x41169
movl $0xf, %esi
leaq -0xf0(%rbp), %rdi
cmpq %rdi, -0x100(%rbp)
je 0x41164
movq -0xf0(%rbp), %rsi
cmpq %rsi, %rax
jbe 0x4117e
movq -0x100(%rbp), %rsi
leaq -0x90(%rbp), %rdi
callq 0x2e130
jmp 0x4118e
leaq -0x100(%rbp), %rdi
xorl %esi, %esi
xorl %edx, %edx
callq 0x2e420
leaq -0x40(%rbp), %rsi
movq %rsi, -0x50(%rbp)
movq (%rax), %rdx
leaq 0x10(%rax), %rcx
cmpq %rcx, %rdx
je 0x411af
movq %rdx, -0x50(%rbp)
movq (%rcx), %rdx
movq %rdx, -0x40(%rbp)
jmp 0x411b5
movups (%rcx), %xmm0
movups %xmm0, (%rsi)
movq %rax, %rdx
addq $0x8, %rdx
movq 0x8(%rax), %rsi
movq %rsi, -0x48(%rbp)
movq %rcx, (%rax)
xorl %eax, %eax
movq %rax, (%rdx)
movb %al, (%rcx)
movq %r14, -0x70(%rbp)
movq %rax, -0x68(%rbp)
movb %al, -0x60(%rbp)
movq -0xb0(%rbp), %rsi
movq -0xa8(%rbp), %rdx
addq %rsi, %rdx
movq -0x50(%rbp), %r8
movq -0x48(%rbp), %r9
movl $0x0, (%rsp)
leaq -0x70(%rbp), %r13
movq %r13, %rdi
leaq -0x200(%rbp), %rcx
callq 0x6095a
leaq -0xb0(%rbp), %rdi
movq %r13, %rsi
callq 0x2e4c0
movq -0x70(%rbp), %rdi
cmpq %r14, %rdi
je 0x41229
callq 0x2e360
movq -0x50(%rbp), %rdi
leaq -0x40(%rbp), %rax
cmpq %rax, %rdi
je 0x4123b
callq 0x2e360
movq -0x100(%rbp), %rdi
leaq -0xf0(%rbp), %rax
cmpq %rax, %rdi
je 0x41253
callq 0x2e360
movq -0x90(%rbp), %rdi
cmpq %r15, %rdi
je 0x41264
callq 0x2e360
movq -0xd0(%rbp), %rdi
leaq -0xc0(%rbp), %rax
cmpq %rax, %rdi
je 0x4127c
callq 0x2e360
leaq -0x200(%rbp), %rdi
callq 0x50cce
leaq -0x90(%rbp), %rcx
movq -0x30(%rbp), %rdx
addq $0x8, %rbx
cmpq %rdx, %rbx
jne 0x40ef0
cmpq $0x0, -0x108(%rbp)
je 0x41381
movl $0x20, %edi
callq 0x2e3a0
movq -0xe0(%rbp), %r14
movq %rax, %r12
leaq 0x354cd(%rip), %rsi     # 0x76796
leaq -0x200(%rbp), %rdi
callq 0x50a34
addq $0x8, %r14
leaq -0x70(%rbp), %rbx
movq %rbx, %rdi
movq %r14, %rsi
callq 0x2e660
leaq -0x50(%rbp), %rsi
movq %rbx, (%rsi)
leaq 0x13be2(%rip), %r15     # 0x54ed8
movq %r15, 0x8(%rsi)
leaq 0x13bdd(%rip), %r13     # 0x54ede
movq %r13, 0x10(%rsi)
leaq -0x200(%rbp), %rdi
callq 0x53d75
leaq -0x50(%rbp), %rsi
leaq -0xb0(%rbp), %rcx
movq %rcx, (%rsi)
leaq 0x22241(%rip), %rcx     # 0x63567
movq %rcx, 0x8(%rsi)
leaq 0x2223c(%rip), %rcx     # 0x6356d
movq %rcx, 0x10(%rsi)
movq %rax, %rdi
callq 0x53d75
movq %rax, %rbx
movq -0xd8(%rbp), %rsi
addq $0x8, %rsi
leaq -0x50(%rbp), %r14
movq %r14, %rdi
callq 0x2e660
leaq -0x90(%rbp), %rsi
movq %r14, (%rsi)
movq %r15, 0x8(%rsi)
movq %r13, 0x10(%rsi)
movq %rbx, %rdi
callq 0x53d75
movq %r12, %rdi
movq %rax, %rsi
callq 0x54ef2
jmp 0x4144f
movl $0x20, %edi
callq 0x2e3a0
movq -0xe0(%rbp), %r14
movq %rax, %r12
leaq 0x353fa(%rip), %rsi     # 0x76796
leaq -0x200(%rbp), %rdi
callq 0x50a34
addq $0x8, %r14
leaq -0x70(%rbp), %rbx
movq %rbx, %rdi
movq %r14, %rsi
callq 0x2e660
leaq -0x50(%rbp), %rsi
movq %rbx, (%rsi)
leaq 0x13b0f(%rip), %r15     # 0x54ed8
movq %r15, 0x8(%rsi)
leaq 0x13b0a(%rip), %r13     # 0x54ede
movq %r13, 0x10(%rsi)
leaq -0x200(%rbp), %rdi
callq 0x53d75
leaq -0x50(%rbp), %rsi
leaq 0x364ec(%rip), %rcx     # 0x778db
movq %rcx, (%rsi)
leaq 0x140ae(%rip), %rcx     # 0x554a7
movq %rcx, 0x8(%rsi)
leaq 0x140a9(%rip), %rcx     # 0x554ad
movq %rcx, 0x10(%rsi)
movq %rax, %rdi
callq 0x53d75
movq %rax, %rbx
movq -0xd8(%rbp), %rsi
addq $0x8, %rsi
leaq -0x50(%rbp), %r14
movq %r14, %rdi
callq 0x2e660
leaq -0x90(%rbp), %rsi
movq %r14, (%rsi)
movq %r15, 0x8(%rsi)
movq %r13, 0x10(%rsi)
movq %rbx, %rdi
callq 0x53d75
movq %r12, %rdi
movq %rax, %rsi
callq 0x54ef2
leaq -0x40(%rbp), %rax
movq -0x10(%rax), %rdi
cmpq %rax, %rdi
je 0x41461
callq 0x2e360
leaq -0x60(%rbp), %rax
movq -0x10(%rax), %rdi
cmpq %rax, %rdi
je 0x41473
callq 0x2e360
cmpb $0x1, -0x130(%rbp)
jne 0x4148f
leaq -0x128(%rbp), %rbx
movq %rbx, %rdi
callq 0x2e580
movb $0x0, -0x8(%rbx)
leaq -0x188(%rbp), %rbx
movq %rbx, %rdi
callq 0x50d82
movq -0x28(%rbx), %rdi
leaq -0x1a0(%rbp), %rax
cmpq %rax, %rdi
je 0x414b3
callq 0x2e360
movq -0x1e8(%rbp), %rdi
testq %rdi, %rdi
je 0x414e7
callq 0x2e360
xorl %eax, %eax
movq %rax, -0x1e8(%rbp)
movl %eax, -0x1e0(%rbp)
movq %rax, -0x1d8(%rbp)
movl %eax, -0x1d0(%rbp)
movq %rax, -0x1c8(%rbp)
leaq -0x200(%rbp), %rdi
callq 0x50de0
movl $0x58, %edi
callq 0x2e3a0
movq %rax, %r14
movl $0x20, %edi
callq 0x2e3a0
movq %rax, %r15
addq $0x10, %rax
movq %rax, (%r15)
movb $0x1, %bl
leaq 0x35319(%rip), %rsi     # 0x76836
leaq 0x3531a(%rip), %rdx     # 0x7683e
movq %r15, %rdi
callq 0x33112
xorl %ebx, %ebx
movl $0x20, %edi
callq 0x2e3a0
movq %rax, %r13
addq $0x10, %rax
movq %rax, (%r13)
movb $0x1, %bl
leaq 0x352e7(%rip), %rsi     # 0x76833
leaq 0x352eb(%rip), %rdx     # 0x7683e
movq %r13, %rdi
callq 0x33112
xorl %ebx, %ebx
movq %r14, %rdi
movq %r12, %rsi
movq %r15, %rdx
movq %r13, %rcx
callq 0x3e566
movq -0x120(%rbp), %rdi
testq %rdi, %rdi
je 0x4157f
callq 0x2e360
leaq -0x220(%rbp), %rdi
callq 0x50cce
leaq -0x240(%rbp), %rdi
callq 0x50cce
movq -0xb0(%rbp), %rdi
leaq -0xa0(%rbp), %rax
cmpq %rax, %rdi
je 0x415af
callq 0x2e360
movq %r14, %rax
addq $0x238, %rsp            # imm = 0x238
popq %rbx
popq %r12
popq %r13
popq %r14
popq %r15
popq %rbp
retq
jmp 0x4168f
jmp 0x415d2
jmp 0x415db
jmp 0x4168f
movq %rax, -0x30(%rbp)
jmp 0x416a5
movq %rax, -0x30(%rbp)
jmp 0x416b1
jmp 0x4164c
jmp 0x41677
jmp 0x4168f
movq %rax, -0x30(%rbp)
jmp 0x416dd
jmp 0x416f9
jmp 0x416f9
movq %rax, -0x30(%rbp)
jmp 0x417f7
movq %rax, -0x30(%rbp)
movq -0x200(%rbp), %rdi
cmpq %r15, %rdi
jne 0x417f2
jmp 0x417f7
movq %rax, -0x30(%rbp)
jmp 0x41803
movq %rax, -0x30(%rbp)
movq -0x200(%rbp), %rdi
cmpq %r15, %rdi
je 0x41803
callq 0x2e360
jmp 0x41803
movq %rax, -0x30(%rbp)
jmp 0x4180f
movq %rax, -0x30(%rbp)
jmp 0x41827
movq %rax, -0x30(%rbp)
movq -0x258(%rbp), %rdi
testq %rdi, %rdi
jne 0x41822
jmp 0x41827
movq %rax, -0x30(%rbp)
leaq -0x40(%rbp), %rax
movq -0x10(%rax), %rdi
cmpq %rax, %rdi
je 0x41693
callq 0x2e360
jmp 0x41693
movq %rax, -0x30(%rbp)
leaq -0x60(%rbp), %rax
movq -0x10(%rax), %rdi
cmpq %rax, %rdi
je 0x416a5
callq 0x2e360
leaq -0x200(%rbp), %rdi
callq 0x50b98
movq %r12, %rdi
jmp 0x4178a
movq %rax, -0x30(%rbp)
testb %bl, %bl
je 0x416c9
movq %r13, %rdi
callq 0x2e360
xorl %ebx, %ebx
jmp 0x416d1
movq %rax, -0x30(%rbp)
testb %bl, %bl
je 0x416dd
movq %r15, %rdi
callq 0x2e360
movq %r14, %rdi
jmp 0x4178a
movq %rax, -0x30(%rbp)
movq -0x70(%rbp), %rdi
cmpq %r14, %rdi
je 0x4170f
callq 0x2e360
jmp 0x4170f
movq %rax, -0x30(%rbp)
jmp 0x417e6
movq %rax, -0x30(%rbp)
jmp 0x417ad
movq %rax, -0x30(%rbp)
movq -0xd0(%rbp), %rdi
leaq -0xc0(%rbp), %rax
cmpq %rax, %rdi
je 0x41736
callq 0x2e360
jmp 0x41736
movq %rax, -0x30(%rbp)
jmp 0x417c2
movq %rax, -0x30(%rbp)
movq -0x50(%rbp), %rdi
leaq -0x40(%rbp), %rax
cmpq %rax, %rdi
je 0x4177a
callq 0x2e360
jmp 0x4177a
movq %rax, -0x30(%rbp)
movq -0x70(%rbp), %rdi
cmpq %r14, %rdi
je 0x4175c
callq 0x2e360
movq -0x50(%rbp), %rdi
leaq -0x40(%rbp), %rax
cmpq %rax, %rdi
je 0x41795
callq 0x2e360
jmp 0x41795
movq %rax, -0x30(%rbp)
jmp 0x417da
movq %rax, -0x30(%rbp)
movq -0x90(%rbp), %rdi
leaq -0x80(%rbp), %rax
cmpq %rax, %rdi
je 0x417e6
callq 0x2e360
jmp 0x417e6
movq %rax, -0x30(%rbp)
movq -0x100(%rbp), %rdi
leaq -0xf0(%rbp), %rax
cmpq %rax, %rdi
je 0x417ad
callq 0x2e360
movq -0x90(%rbp), %rdi
leaq -0x80(%rbp), %rax
cmpq %rax, %rdi
je 0x417c2
callq 0x2e360
movq -0xd0(%rbp), %rdi
leaq -0xc0(%rbp), %rax
cmpq %rax, %rdi
je 0x417da
callq 0x2e360
leaq -0x200(%rbp), %rdi
callq 0x50cce
movq -0x120(%rbp), %rdi
testq %rdi, %rdi
je 0x417f7
callq 0x2e360
leaq -0x220(%rbp), %rdi
callq 0x50cce
leaq -0x240(%rbp), %rdi
callq 0x50cce
movq -0xb0(%rbp), %rdi
leaq -0xa0(%rbp), %rax
cmpq %rax, %rdi
je 0x41827
callq 0x2e360
movq -0x30(%rbp), %rdi
callq 0x2e730