// File: acliusBackHome[P]kamaya/dist/ParseNode.cpp
// Function: void ParseNode::set_field<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char>>>(NodeKey, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char>> const&, bool)
void ParseNode::set_field(NodeKey key, const MapType &object, bool is_update) {
    const auto key_iter = tree.node_key2map.find(key);
    if (key_iter == tree.node_key2map.end()) {
        string info = "ParseNode::set_field(NodeKey key, const MapType &object, bool is_update): key=";
        info += get_key_name(key) + ", node_id=";
        info += to_string(node_id);
        throw ParseException(EX_NODE_KEY_NOT_DEFINED, info);
    }
    keys |= key;
    map<size_t, MapType> &the_map = *((map<size_t, MapType> *) (key_iter->second));
    typedef typename map<size_t, MapType>::iterator MapIter;
    const MapIter &iter = the_map.find(node_id);
    if (iter != the_map.end()) {
        the_map.erase(iter);
        if (!is_update) {
            printf("ParseNode::set_field(NodeKey key, const MapType &object):"
                   "警告:试图覆盖节点%zu的%s键\n", node_id, get_key_name(key).c_str());
        }
    }
    the_map.insert(pair<size_t, MapType>(node_id, object));
}

// Assembly:
pushq %rbp
movq %rsp, %rbp
subq $0x1b0, %rsp            # imm = 0x1B0
movb %cl, %al
movq %rdi, -0x8(%rbp)
movl %esi, -0xc(%rbp)
movq %rdx, -0x18(%rbp)
andb $0x1, %al
movb %al, -0x19(%rbp)
movq -0x8(%rbp), %rax
movq %rax, -0x158(%rbp)
movq 0x10(%rax), %rdi
addq $0x558, %rdi            # imm = 0x558
leaq -0xc(%rbp), %rsi
callq 0x49790
movq %rax, %rcx
movq -0x158(%rbp), %rax
movq %rcx, -0x28(%rbp)
movq 0x10(%rax), %rdi
addq $0x558, %rdi            # imm = 0x558
callq 0x368a0
movq %rax, -0x30(%rbp)
leaq -0x28(%rbp), %rdi
leaq -0x30(%rbp), %rsi
callq 0x36870
testb $0x1, %al
jne 0x40404
jmp 0x405aa
leaq -0x51(%rbp), %rdi
movq %rdi, -0x160(%rbp)
callq 0x45f0
movq -0x160(%rbp), %rdx
leaq 0x4f857(%rip), %rsi     # 0x8fc79
leaq -0x50(%rbp), %rdi
callq 0x4450
jmp 0x4042d
leaq -0x51(%rbp), %rdi
callq 0x4380
movl -0xc(%rbp), %esi
leaq -0xa8(%rbp), %rdi
movq %rdi, -0x168(%rbp)
callq 0x3b620
movq -0x168(%rbp), %rsi
leaq 0x4f86e(%rip), %rdx     # 0x8fcc8
leaq -0x88(%rbp), %rdi
callq 0x15ed0
jmp 0x40468
leaq -0x50(%rbp), %rdi
leaq -0x88(%rbp), %rsi
callq 0x43f0
jmp 0x4047a
leaq -0x88(%rbp), %rdi
callq 0x4688
leaq -0xa8(%rbp), %rdi
callq 0x4688
movq -0x158(%rbp), %rax
movq (%rax), %rsi
leaq -0xc8(%rbp), %rdi
callq 0x15db0
jmp 0x404aa
leaq -0x50(%rbp), %rdi
leaq -0xc8(%rbp), %rsi
callq 0x43f0
jmp 0x404bc
leaq -0xc8(%rbp), %rdi
callq 0x4688
movl $0x28, %edi
callq 0x41c0
movq %rax, %rdi
movq %rdi, %rax
movq %rax, -0x170(%rbp)
movl $0x1, %esi
leaq -0x50(%rbp), %rdx
callq 0x73a90
jmp 0x404ef
movq -0x170(%rbp), %rdi
leaq 0x85853(%rip), %rsi     # 0xc5d50
leaq -0x2a674(%rip), %rdx    # 0x15e90
callq 0x45b0
jmp 0x4077e
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x60(%rbp)
movl %eax, -0x64(%rbp)
leaq -0x51(%rbp), %rdi
callq 0x4380
jmp 0x40775
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x60(%rbp)
movl %eax, -0x64(%rbp)
jmp 0x4054e
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x60(%rbp)
movl %eax, -0x64(%rbp)
leaq -0x88(%rbp), %rdi
callq 0x4688
leaq -0xa8(%rbp), %rdi
callq 0x4688
jmp 0x4059c
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x60(%rbp)
movl %eax, -0x64(%rbp)
jmp 0x4059c
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x60(%rbp)
movl %eax, -0x64(%rbp)
leaq -0xc8(%rbp), %rdi
callq 0x4688
jmp 0x4059c
movq -0x170(%rbp), %rdi
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x60(%rbp)
movl %eax, -0x64(%rbp)
callq 0x4280
leaq -0x50(%rbp), %rdi
callq 0x4688
jmp 0x40775
movq -0x158(%rbp), %rax
movl -0xc(%rbp), %ecx
orq 0x8(%rax), %rcx
movq %rcx, 0x8(%rax)
leaq -0x28(%rbp), %rdi
callq 0x497c0
movq -0x158(%rbp), %rsi
movq 0x8(%rax), %rax
movq %rax, -0xd0(%rbp)
movq -0xd0(%rbp), %rdi
callq 0x497f0
movq %rax, -0xe0(%rbp)
leaq -0xe0(%rbp), %rax
movq %rax, -0xd8(%rbp)
movq -0xd8(%rbp), %rax
movq %rax, -0x178(%rbp)
movq -0xd0(%rbp), %rdi
callq 0x49850
movq -0x178(%rbp), %rdi
movq %rax, -0xe8(%rbp)
leaq -0xe8(%rbp), %rsi
callq 0x49820
testb $0x1, %al
jne 0x40635
jmp 0x406e0
movq -0xd0(%rbp), %rdi
movq -0xd8(%rbp), %rax
movq (%rax), %rax
movq %rax, -0xf0(%rbp)
movq -0xf0(%rbp), %rsi
callq 0x49880
movq %rax, -0xf8(%rbp)
testb $0x1, -0x19(%rbp)
jne 0x406de
movq -0x158(%rbp), %rax
movq (%rax), %rax
movq %rax, -0x180(%rbp)
movl -0xc(%rbp), %esi
leaq -0x118(%rbp), %rdi
movq %rdi, -0x188(%rbp)
callq 0x3b620
movq -0x188(%rbp), %rdi
callq 0x4180
movq -0x180(%rbp), %rsi
movq %rax, %rdx
leaq 0x4f629(%rip), %rdi     # 0x8fcd3
xorl %eax, %eax
callq 0x4080
jmp 0x406b3
leaq -0x118(%rbp), %rdi
callq 0x4688
jmp 0x406de
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x60(%rbp)
movl %eax, -0x64(%rbp)
leaq -0x118(%rbp), %rdi
callq 0x4688
jmp 0x40775
jmp 0x406e0
movq -0x158(%rbp), %rsi
movq -0xd0(%rbp), %rax
movq %rax, -0x1a8(%rbp)
movq -0x18(%rbp), %rdx
leaq -0x140(%rbp), %rdi
movq %rdi, -0x1a0(%rbp)
callq 0x49900
movq -0x1a8(%rbp), %rdi
movq -0x1a0(%rbp), %rsi
callq 0x498c0
movb %dl, -0x191(%rbp)
movq %rax, -0x190(%rbp)
jmp 0x4072e
movb -0x191(%rbp), %al
movq -0x190(%rbp), %rcx
movq %rcx, -0x150(%rbp)
movb %al, -0x148(%rbp)
leaq -0x140(%rbp), %rdi
callq 0x49940
addq $0x1b0, %rsp            # imm = 0x1B0
popq %rbp
retq
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x60(%rbp)
movl %eax, -0x64(%rbp)
leaq -0x140(%rbp), %rdi
callq 0x49940
movq -0x60(%rbp), %rdi
callq 0x45e0
nop