// File: acliusBackHome[P]kamaya/dist/ParseNode.cpp
// Function: ParseNode::collect_parameters_list() const
void ParseNode::collect_parameters_list() const {
    auto &the_map = tree.node_param_list;
    // 结果
    vector<ParseVariable> res;
    switch (type) {
        case N_PARAM_LIST: {
            // 允许此操作的节点
            // 收集所有对应子节点类型的信息
            for (const auto &each : tree.node_children[node_id]) {
                const ParseNode &node = tree.nodes[each];
                if (node.type == N_PARAM_DECLARATION) {
                    res.emplace_back(node.get_variable());
                }
            }
            break;
        }
        default: {
            // 不允许此操作的节点
            string info = "ParseNode::collect_parameters_list(): node_type=";
            info += get_node_type_name(type);
            info += " node_id=" + to_string(node_id);
            throw ParseException(EX_NODE_NOT_ALLOW_OP, info);
        }
    }
    // 这里强制转换成非常量指针来改变keys表示该节点拥有这个键值
    ((ParseNode *) this)->keys |= K_PARAM_LIST;
    the_map[node_id] = res;
}

// Assembly:
pushq %rbp
movq %rsp, %rbp
subq $0x120, %rsp            # imm = 0x120
movq %rdi, -0x8(%rbp)
movq -0x8(%rbp), %rax
movq %rax, -0xf0(%rbp)
movq 0x10(%rax), %rax
addq $0x498, %rax            # imm = 0x498
movq %rax, -0x10(%rbp)
leaq -0x28(%rbp), %rdi
callq 0x16720
movq -0xf0(%rbp), %rax
movl 0x18(%rax), %eax
subl $0x8, %eax
jne 0x3f95f
jmp 0x3f896
movq -0xf0(%rbp), %rax
movq 0x10(%rax), %rdi
addq $0x60, %rdi
movq (%rax), %rsi
callq 0x340a0
movq %rax, -0x30(%rbp)
movq -0x30(%rbp), %rdi
callq 0x34240
movq %rax, -0x38(%rbp)
movq -0x30(%rbp), %rdi
callq 0x34270
movq %rax, -0x40(%rbp)
leaq -0x38(%rbp), %rdi
leaq -0x40(%rbp), %rsi
callq 0x342a0
testb $0x1, %al
jne 0x3f8de
jmp 0x3f95a
leaq -0x38(%rbp), %rdi
callq 0x342e0
movq %rax, %rcx
movq -0xf0(%rbp), %rax
movq %rcx, -0x48(%rbp)
movq 0x10(%rax), %rdi
movq -0x48(%rbp), %rax
movq (%rax), %rsi
callq 0x34080
movq %rax, -0x50(%rbp)
movq -0x50(%rbp), %rax
cmpl $0x9, 0x18(%rax)
jne 0x3f94a
movq -0x50(%rbp), %rdi
callq 0x3dd70
movq %rax, -0xf8(%rbp)
jmp 0x3f925
movq -0xf8(%rbp), %rsi
leaq -0x28(%rbp), %rdi
callq 0x48a50
jmp 0x3f937
jmp 0x3f94a
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x58(%rbp)
movl %eax, -0x5c(%rbp)
jmp 0x3fb57
jmp 0x3f94c
leaq -0x38(%rbp), %rdi
callq 0x34300
jmp 0x3f8cb
jmp 0x3fb12
leaq -0x81(%rbp), %rdi
movq %rdi, -0x100(%rbp)
callq 0x45f0
movq -0x100(%rbp), %rdx
leaq 0x50297(%rip), %rsi     # 0x8fc17
leaq -0x80(%rbp), %rdi
callq 0x4450
jmp 0x3f98b
leaq -0x81(%rbp), %rdi
callq 0x4380
movq -0xf0(%rbp), %rax
movl 0x18(%rax), %esi
leaq -0xa8(%rbp), %rdi
movq %rdi, -0x108(%rbp)
callq 0x3bcf0
movq -0x108(%rbp), %rsi
leaq -0x80(%rbp), %rdi
callq 0x43f0
jmp 0x3f9c6
leaq -0xa8(%rbp), %rdi
callq 0x4688
movq -0xf0(%rbp), %rax
movq (%rax), %rsi
leaq -0xe8(%rbp), %rdi
callq 0x15db0
jmp 0x3f9ea
leaq 0x4fd25(%rip), %rsi     # 0x8f716
leaq -0xc8(%rbp), %rdi
leaq -0xe8(%rbp), %rdx
callq 0x15d60
jmp 0x3fa06
leaq -0x80(%rbp), %rdi
leaq -0xc8(%rbp), %rsi
callq 0x43f0
jmp 0x3fa18
leaq -0xc8(%rbp), %rdi
callq 0x4688
leaq -0xe8(%rbp), %rdi
callq 0x4688
movl $0x28, %edi
callq 0x41c0
movq %rax, %rdi
movq %rdi, %rax
movq %rax, -0x110(%rbp)
movl $0x4, %esi
leaq -0x80(%rbp), %rdx
callq 0x73a90
jmp 0x3fa57
movq -0x110(%rbp), %rdi
leaq 0x862eb(%rip), %rsi     # 0xc5d50
leaq -0x29bdc(%rip), %rdx    # 0x15e90
callq 0x45b0
jmp 0x3fb69
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x58(%rbp)
movl %eax, -0x5c(%rbp)
leaq -0x81(%rbp), %rdi
callq 0x4380
jmp 0x3fb57
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x58(%rbp)
movl %eax, -0x5c(%rbp)
leaq -0xa8(%rbp), %rdi
callq 0x4688
jmp 0x3fb07
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x58(%rbp)
movl %eax, -0x5c(%rbp)
jmp 0x3fb07
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x58(%rbp)
movl %eax, -0x5c(%rbp)
jmp 0x3fae1
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x58(%rbp)
movl %eax, -0x5c(%rbp)
leaq -0xc8(%rbp), %rdi
callq 0x4688
leaq -0xe8(%rbp), %rdi
callq 0x4688
jmp 0x3fb07
movq -0x110(%rbp), %rdi
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x58(%rbp)
movl %eax, -0x5c(%rbp)
callq 0x4280
leaq -0x80(%rbp), %rdi
callq 0x4688
jmp 0x3fb57
movq -0xf0(%rbp), %rsi
movb 0xa(%rsi), %al
orb $0x10, %al
movb %al, 0xa(%rsi)
movq -0x10(%rbp), %rdi
callq 0x48ac0
movq %rax, -0x118(%rbp)
jmp 0x3fb33
movq -0x118(%rbp), %rdi
leaq -0x28(%rbp), %rsi
callq 0x48ba0
jmp 0x3fb45
leaq -0x28(%rbp), %rdi
callq 0x16740
addq $0x120, %rsp            # imm = 0x120
popq %rbp
retq
leaq -0x28(%rbp), %rdi
callq 0x16740
movq -0x58(%rbp), %rdi
callq 0x45e0
nopl (%rax)