// File: /workspace/github_cpp_makefile_star2_O1/xjrueda[P]fixprime/src/Node.cpp
// Function: fprime::Node::operator=(fprime::Node const&)
fprime::Node& Node::operator=(const fprime::Node& other) {
        _type = other._type;
        value = other.value;
        isRequired = other.isRequired;
        field = other.field;
        protocolPtr = other.protocolPtr;
        componentPtr = other.componentPtr;

        fprime::DataHolderFactory factory;

        if (other._type == fprime::Node::NodeType::FIELD_NODE) {
            fprime::DataHolderFactory factory;
            value = factory.create(other.field->getDataType());
            this->value = factory.create(other.field->getDataType());
            const string val = other.value->get();
            this->value->set(val);
        }

        childsVector.clear();
        childsByFieldId.clear();

        for (NodeVector::const_iterator itr = other.childsVector.begin(); itr != other.childsVector.end(); itr++) {
            NodePtr newNode(new Node(**itr));
            childsVector.push_back(newNode);
            if (other._type == fprime::Node::NodeType::ROOT_NODE || other._type == fprime::Node::NodeType::GROUP_INSTANCE)
                childsByFieldId[newNode->getField()->getId()] = newNode;

            if (other._type == fprime::Node::NodeType::REPEATING_GROUP)
                childsByFieldId[childsVector.size()] = newNode;
        }
        return *this;
    }

// Assembly:
pushq %rbp
pushq %r15
pushq %r14
pushq %r13
pushq %r12
pushq %rbx
subq $0x108, %rsp            # imm = 0x108
movq %rsi, %r14
movq %rdi, %rbx
movl 0x8(%rsi), %eax
movl %eax, 0x8(%rdi)
movq 0x10(%rsi), %rax
movq %rax, 0x10(%rdi)
addq $0x18, %rdi
addq $0x18, %rsi
callq 0x30cf0
movb 0x20(%r14), %al
movb %al, 0x20(%rbx)
movq 0x28(%r14), %rax
movq %rax, 0x28(%rbx)
leaq 0x30(%rbx), %rdi
leaq 0x30(%r14), %rsi
callq 0x30cf0
movq 0xd0(%r14), %rax
movq %rax, 0xd0(%rbx)
movq 0xd8(%r14), %rax
movq %rax, 0xd8(%rbx)
movl $0xe0, %esi
movq %rbx, 0x8(%rsp)
leaq (%rbx,%rsi), %rdi
addq %r14, %rsi
callq 0x30cf0
leaq 0xd0(%rsp), %rdi
callq 0x30d70
cmpl $0x1, 0x8(%r14)
jne 0x3ef20
leaq 0x38(%rsp), %rdi
callq 0x30d70
movq 0x28(%r14), %rsi
leaq 0xb0(%rsp), %rdi
callq 0x2fdd0
leaq 0x10(%rsp), %rdi
leaq 0x38(%rsp), %rsi
leaq 0xb0(%rsp), %rdx
callq 0x2f9f0
movaps 0x10(%rsp), %xmm0
xorps %xmm1, %xmm1
movaps %xmm1, 0x10(%rsp)
movq 0x8(%rsp), %rax
movq 0x18(%rax), %rdi
movups %xmm0, 0x10(%rax)
testq %rdi, %rdi
je 0x3ee14
callq 0x2f370
movq 0x18(%rsp), %rdi
testq %rdi, %rdi
je 0x3ee23
callq 0x2f370
leaq 0xc0(%rsp), %rax
movq -0x10(%rax), %rdi
cmpq %rax, %rdi
je 0x3ee39
callq 0x2f6c0
movq 0x28(%r14), %rsi
leaq 0x90(%rsp), %rdi
callq 0x2fdd0
leaq 0x10(%rsp), %rdi
leaq 0x38(%rsp), %rsi
leaq 0x90(%rsp), %rdx
callq 0x2f9f0
movaps 0x10(%rsp), %xmm0
xorps %xmm1, %xmm1
movaps %xmm1, 0x10(%rsp)
movq 0x8(%rsp), %rax
movq 0x18(%rax), %rdi
movups %xmm0, 0x10(%rax)
testq %rdi, %rdi
je 0x3ee85
callq 0x2f370
movq 0x18(%rsp), %rdi
testq %rdi, %rdi
je 0x3ee94
callq 0x2f370
leaq 0xa0(%rsp), %rax
movq -0x10(%rax), %rdi
cmpq %rax, %rdi
je 0x3eeaa
callq 0x2f6c0
movq 0x10(%r14), %rsi
movq (%rsi), %rax
leaq 0x10(%rsp), %rdi
callq *0x18(%rax)
movq 0x8(%rsp), %rax
movq 0x10(%rax), %r15
leaq 0x80(%rsp), %r12
movq %r12, -0x10(%r12)
movq 0x10(%rsp), %rsi
movq 0x18(%rsp), %rdx
addq %rsi, %rdx
leaq 0x70(%rsp), %rdi
callq 0x2e8a0
movq (%r15), %rax
leaq 0x70(%rsp), %rsi
movq %r15, %rdi
callq *0x10(%rax)
movq 0x70(%rsp), %rdi
cmpq %r12, %rdi
je 0x3ef03
callq 0x2f6c0
leaq 0x20(%rsp), %rax
movq -0x10(%rax), %rdi
cmpq %rax, %rdi
je 0x3ef16
callq 0x2f6c0
leaq 0x38(%rsp), %rdi
callq 0x30da0
movq 0x8(%rsp), %rbx
leaq 0x38(%rbx), %r15
movq %r15, %rdi
callq 0x30360
leaq 0x50(%rbx), %r12
movq %r12, %rdi
callq 0x2eb60
movq 0x38(%r14), %rbx
cmpq 0x40(%r14), %rbx
je 0x3f03f
leaq 0x40(%rsp), %r13
movl $0xe8, %edi
callq 0x2f830
movq %rax, %rbp
movq (%rbx), %rsi
movq %rax, %rdi
callq 0x30c90
movq %rbp, 0x38(%rsp)
movq %r13, %rdi
movq %rbp, %rsi
callq 0x2e4a0
movq %r15, %rdi
leaq 0x38(%rsp), %rsi
callq 0x2fd90
movl 0x8(%r14), %eax
cmpl $0x3, %eax
je 0x3ef92
testl %eax, %eax
jne 0x3efe2
movq 0x38(%rsp), %rsi
leaq 0x10(%rsp), %rdi
callq 0x2f8c0
movq 0x10(%rsp), %rdi
callq 0x2f6e0
movl %eax, 0x34(%rsp)
movq %r12, %rdi
leaq 0x34(%rsp), %rsi
callq 0x2f1a0
movq 0x38(%rsp), %rcx
movq %rcx, (%rax)
addq $0x8, %rax
movq %rax, %rdi
movq %r13, %rsi
callq 0x30cf0
movq 0x18(%rsp), %rdi
testq %rdi, %rdi
je 0x3efe2
callq 0x2f370
cmpl $0x2, 0x8(%r14)
jne 0x3f022
movq 0x8(%rsp), %rcx
movq 0x40(%rcx), %rax
subq 0x38(%rcx), %rax
shrq $0x4, %rax
movl %eax, 0x10(%rsp)
movq %r12, %rdi
leaq 0x10(%rsp), %rsi
callq 0x2f1a0
movq 0x38(%rsp), %rcx
movq %rcx, (%rax)
addq $0x8, %rax
movq %rax, %rdi
movq %r13, %rsi
callq 0x30cf0
movq 0x40(%rsp), %rdi
testq %rdi, %rdi
je 0x3f031
callq 0x2f370
addq $0x10, %rbx
cmpq 0x40(%r14), %rbx
jne 0x3ef50
leaq 0xd0(%rsp), %rdi
callq 0x30da0
movq 0x8(%rsp), %rax
addq $0x108, %rsp            # imm = 0x108
popq %rbx
popq %r12
popq %r13
popq %r14
popq %r15
popq %rbp
retq
movq %rax, %rbx
movq 0x70(%rsp), %rdi
cmpq %r12, %rdi
je 0x3f07a
callq 0x2f6c0
jmp 0x3f07a
movq %rax, %rbx
leaq 0x20(%rsp), %rax
jmp 0x3f09d
jmp 0x3f0ad
movq %rax, %rbx
leaq 0xa0(%rsp), %rax
jmp 0x3f09d
jmp 0x3f0ad
movq %rax, %rbx
leaq 0xc0(%rsp), %rax
movq -0x10(%rax), %rdi
cmpq %rax, %rdi
je 0x3f0b0
callq 0x2f6c0
jmp 0x3f0b0
movq %rax, %rbx
leaq 0x38(%rsp), %rdi
callq 0x30da0
jmp 0x3f0fa
jmp 0x3f0f7
jmp 0x3f0cf
jmp 0x3f0cf
movq %rax, %rbx
movq %rbp, %rdi
callq 0x2f6c0
jmp 0x3f0fa
movq %rax, %rbx
jmp 0x3f0e6
movq %rax, %rbx
movq 0x18(%rsp), %rdi
testq %rdi, %rdi
je 0x3f0e6
callq 0x2f370
movq 0x40(%rsp), %rdi
testq %rdi, %rdi
je 0x3f0fa
callq 0x2f370
jmp 0x3f0fa
movq %rax, %rbx
leaq 0xd0(%rsp), %rdi
callq 0x30da0
movq %rbx, %rdi
callq 0x30a20
nop