// File: acliusBackHome[P]kamaya/dist/ParseExpression.cpp
// Function: ParseExpression::get_child(unsigned long) const
size_t ParseExpression::get_child(size_t _child) const {
    if (_child >= 2) {
        string info = "ParseExpression::get_child(size_t _child) expr_id=";
        info += to_string(expr_id);
        info += " _child=" + to_string(_child);
        throw ParseException(EX_EXPRESSION_CAN_NOT_ACCESS, info);
    }
    switch (expr_type) {
        case E_ADD:
        case E_SUB:
        case E_MUL:
        case E_DIV:
        case E_MOD:
        case E_POW:
        case E_LOGIC_OR:
        case E_LOGIC_AND:
        case E_G:
        case E_GE:
        case E_EQUAL:
        case E_NE:
        case E_L:
        case E_LE:
        case E_GET_ITEM:
        case E_ASSIGN:
            return child[_child];
        case E_ADR:
        case E_PTR:
        case E_NEG:
        case E_POS:
        case E_BIT_NOT:
        case E_NOT:
            // 只有一个子表达式
            if (_child >= 1) {
                string info = "ParseExpression::get_child_expression(size_t _child) expr_id=";
                info += to_string(expr_id);
                info += " _child=" + to_string(_child);
                throw ParseException(EX_EXPRESSION_CAN_NOT_ACCESS, info);
            }
            return child[_child];
        case E_VAR:
        case E_CONST:
        case E_FUN:
        case E_UNDEFINED: {
            string info = "ParseExpression::get_child_expression(size_t _child) expr_id=";
            info += to_string(expr_id);
            info += " _child=" + to_string(_child);
            throw ParseException(EX_EXPRESSION_CAN_NOT_ACCESS, info);
        }
    }
    // 应该不可能有控制流到达此
    string info = "ParseExpression::get_child_expression(size_t _child) expr_id=";
    info += to_string(expr_id);
    info += " _child=" + to_string(_child);
    throw ParseException(EX_UNKNOWN, info);
}

// Assembly:
pushq %rbp
movq %rsp, %rbp
subq $0x2a0, %rsp            # imm = 0x2A0
movq %rdi, -0x10(%rbp)
movq %rsi, -0x18(%rbp)
movq -0x10(%rbp), %rax
movq %rax, -0x250(%rbp)
cmpq $0x2, -0x18(%rbp)
jb 0x643f0
leaq -0x39(%rbp), %rdi
movq %rdi, -0x258(%rbp)
callq 0x45f0
movq -0x258(%rbp), %rdx
leaq 0x2c385(%rip), %rsi     # 0x905fc
leaq -0x38(%rbp), %rdi
callq 0x4450
jmp 0x64282
leaq -0x39(%rbp), %rdi
callq 0x4380
movq -0x250(%rbp), %rax
movq 0x10(%rax), %rsi
leaq -0x70(%rbp), %rdi
callq 0x15db0
jmp 0x642a1
leaq -0x38(%rbp), %rdi
leaq -0x70(%rbp), %rsi
callq 0x43f0
jmp 0x642b0
leaq -0x70(%rbp), %rdi
callq 0x4688
movq -0x18(%rbp), %rsi
leaq -0xb0(%rbp), %rdi
callq 0x15db0
jmp 0x642cb
leaq 0x2c35d(%rip), %rsi     # 0x9062f
leaq -0x90(%rbp), %rdi
leaq -0xb0(%rbp), %rdx
callq 0x15d60
jmp 0x642e7
leaq -0x38(%rbp), %rdi
leaq -0x90(%rbp), %rsi
callq 0x43f0
jmp 0x642f9
leaq -0x90(%rbp), %rdi
callq 0x4688
leaq -0xb0(%rbp), %rdi
callq 0x4688
movl $0x28, %edi
callq 0x41c0
movq %rax, %rdi
movq %rdi, %rax
movq %rax, -0x260(%rbp)
movl $0x11, %esi
leaq -0x38(%rbp), %rdx
callq 0x73a90
jmp 0x64338
movq -0x260(%rbp), %rdi
leaq 0x61a0a(%rip), %rsi     # 0xc5d50
leaq -0x4e4bd(%rip), %rdx    # 0x15e90
callq 0x45b0
jmp 0x649bb
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x48(%rbp)
movl %eax, -0x4c(%rbp)
leaq -0x39(%rbp), %rdi
callq 0x4380
jmp 0x649b2
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x48(%rbp)
movl %eax, -0x4c(%rbp)
jmp 0x643e2
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x48(%rbp)
movl %eax, -0x4c(%rbp)
leaq -0x70(%rbp), %rdi
callq 0x4688
jmp 0x643e2
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x48(%rbp)
movl %eax, -0x4c(%rbp)
jmp 0x643bc
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x48(%rbp)
movl %eax, -0x4c(%rbp)
leaq -0x90(%rbp), %rdi
callq 0x4688
leaq -0xb0(%rbp), %rdi
callq 0x4688
jmp 0x643e2
movq -0x260(%rbp), %rdi
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x48(%rbp)
movl %eax, -0x4c(%rbp)
callq 0x4280
leaq -0x38(%rbp), %rdi
callq 0x4688
jmp 0x649b2
movq -0x250(%rbp), %rax
movl 0x28(%rax), %eax
movl %eax, -0x264(%rbp)
subl $0x4, %eax
jb 0x64635
jmp 0x6440b
movl -0x264(%rbp), %eax
addl $-0x4, %eax
subl $0x7, %eax
jb 0x6443f
jmp 0x6441b
movl -0x264(%rbp), %eax
addl $-0xb, %eax
subl $0x6, %eax
jb 0x64457
jmp 0x6442b
movl -0x264(%rbp), %eax
addl $-0x11, %eax
subl $0x8, %eax
ja 0x647f0
jmp 0x6443f
movq -0x250(%rbp), %rax
movq -0x18(%rbp), %rcx
movq (%rax,%rcx,8), %rax
movq %rax, -0x8(%rbp)
jmp 0x649a5
cmpq $0x1, -0x18(%rbp)
jb 0x6461d
leaq -0xd1(%rbp), %rdi
movq %rdi, -0x270(%rbp)
callq 0x45f0
movq -0x270(%rbp), %rdx
leaq 0x2c1b5(%rip), %rsi     # 0x90638
leaq -0xd0(%rbp), %rdi
callq 0x4450
jmp 0x64491
leaq -0xd1(%rbp), %rdi
callq 0x4380
movq -0x250(%rbp), %rax
movq 0x10(%rax), %rsi
leaq -0xf8(%rbp), %rdi
callq 0x15db0
jmp 0x644b6
leaq -0xd0(%rbp), %rdi
leaq -0xf8(%rbp), %rsi
callq 0x43f0
jmp 0x644cb
leaq -0xf8(%rbp), %rdi
callq 0x4688
movq -0x18(%rbp), %rsi
leaq -0x138(%rbp), %rdi
callq 0x15db0
jmp 0x644e9
leaq 0x2c13f(%rip), %rsi     # 0x9062f
leaq -0x118(%rbp), %rdi
leaq -0x138(%rbp), %rdx
callq 0x15d60
jmp 0x64505
leaq -0xd0(%rbp), %rdi
leaq -0x118(%rbp), %rsi
callq 0x43f0
jmp 0x6451a
leaq -0x118(%rbp), %rdi
callq 0x4688
leaq -0x138(%rbp), %rdi
callq 0x4688
movl $0x28, %edi
callq 0x41c0
movq %rax, %rdi
movq %rdi, %rax
movq %rax, -0x278(%rbp)
movl $0x11, %esi
leaq -0xd0(%rbp), %rdx
callq 0x73a90
jmp 0x6455c
movq -0x278(%rbp), %rdi
leaq 0x617e6(%rip), %rsi     # 0xc5d50
leaq -0x4e6e1(%rip), %rdx    # 0x15e90
callq 0x45b0
jmp 0x649bb
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x48(%rbp)
movl %eax, -0x4c(%rbp)
leaq -0xd1(%rbp), %rdi
callq 0x4380
jmp 0x649b2
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x48(%rbp)
movl %eax, -0x4c(%rbp)
jmp 0x6460c
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x48(%rbp)
movl %eax, -0x4c(%rbp)
leaq -0xf8(%rbp), %rdi
callq 0x4688
jmp 0x6460c
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x48(%rbp)
movl %eax, -0x4c(%rbp)
jmp 0x645e6
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x48(%rbp)
movl %eax, -0x4c(%rbp)
leaq -0x118(%rbp), %rdi
callq 0x4688
leaq -0x138(%rbp), %rdi
callq 0x4688
jmp 0x6460c
movq -0x278(%rbp), %rdi
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x48(%rbp)
movl %eax, -0x4c(%rbp)
callq 0x4280
leaq -0xd0(%rbp), %rdi
callq 0x4688
jmp 0x649b2
movq -0x250(%rbp), %rax
movq -0x18(%rbp), %rcx
movq (%rax,%rcx,8), %rax
movq %rax, -0x8(%rbp)
jmp 0x649a5
leaq -0x159(%rbp), %rdi
movq %rdi, -0x280(%rbp)
callq 0x45f0
movq -0x280(%rbp), %rdx
leaq 0x2bfe2(%rip), %rsi     # 0x90638
leaq -0x158(%rbp), %rdi
callq 0x4450
jmp 0x64664
leaq -0x159(%rbp), %rdi
callq 0x4380
movq -0x250(%rbp), %rax
movq 0x10(%rax), %rsi
leaq -0x180(%rbp), %rdi
callq 0x15db0
jmp 0x64689
leaq -0x158(%rbp), %rdi
leaq -0x180(%rbp), %rsi
callq 0x43f0
jmp 0x6469e
leaq -0x180(%rbp), %rdi
callq 0x4688
movq -0x18(%rbp), %rsi
leaq -0x1c0(%rbp), %rdi
callq 0x15db0
jmp 0x646bc
leaq 0x2bf6c(%rip), %rsi     # 0x9062f
leaq -0x1a0(%rbp), %rdi
leaq -0x1c0(%rbp), %rdx
callq 0x15d60
jmp 0x646d8
leaq -0x158(%rbp), %rdi
leaq -0x1a0(%rbp), %rsi
callq 0x43f0
jmp 0x646ed
leaq -0x1a0(%rbp), %rdi
callq 0x4688
leaq -0x1c0(%rbp), %rdi
callq 0x4688
movl $0x28, %edi
callq 0x41c0
movq %rax, %rdi
movq %rdi, %rax
movq %rax, -0x288(%rbp)
movl $0x11, %esi
leaq -0x158(%rbp), %rdx
callq 0x73a90
jmp 0x6472f
movq -0x288(%rbp), %rdi
leaq 0x61613(%rip), %rsi     # 0xc5d50
leaq -0x4e8b4(%rip), %rdx    # 0x15e90
callq 0x45b0
jmp 0x649bb
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x48(%rbp)
movl %eax, -0x4c(%rbp)
leaq -0x159(%rbp), %rdi
callq 0x4380
jmp 0x649b2
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x48(%rbp)
movl %eax, -0x4c(%rbp)
jmp 0x647df
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x48(%rbp)
movl %eax, -0x4c(%rbp)
leaq -0x180(%rbp), %rdi
callq 0x4688
jmp 0x647df
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x48(%rbp)
movl %eax, -0x4c(%rbp)
jmp 0x647b9
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x48(%rbp)
movl %eax, -0x4c(%rbp)
leaq -0x1a0(%rbp), %rdi
callq 0x4688
leaq -0x1c0(%rbp), %rdi
callq 0x4688
jmp 0x647df
movq -0x288(%rbp), %rdi
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x48(%rbp)
movl %eax, -0x4c(%rbp)
callq 0x4280
leaq -0x158(%rbp), %rdi
callq 0x4688
jmp 0x649b2
leaq -0x1e1(%rbp), %rdi
movq %rdi, -0x290(%rbp)
callq 0x45f0
movq -0x290(%rbp), %rdx
leaq 0x2be27(%rip), %rsi     # 0x90638
leaq -0x1e0(%rbp), %rdi
callq 0x4450
jmp 0x6481f
leaq -0x1e1(%rbp), %rdi
callq 0x4380
movq -0x250(%rbp), %rax
movq 0x10(%rax), %rsi
leaq -0x208(%rbp), %rdi
callq 0x15db0
jmp 0x64844
leaq -0x1e0(%rbp), %rdi
leaq -0x208(%rbp), %rsi
callq 0x43f0
jmp 0x64859
leaq -0x208(%rbp), %rdi
callq 0x4688
movq -0x18(%rbp), %rsi
leaq -0x248(%rbp), %rdi
callq 0x15db0
jmp 0x64877
leaq 0x2bdb1(%rip), %rsi     # 0x9062f
leaq -0x228(%rbp), %rdi
leaq -0x248(%rbp), %rdx
callq 0x15d60
jmp 0x64893
leaq -0x1e0(%rbp), %rdi
leaq -0x228(%rbp), %rsi
callq 0x43f0
jmp 0x648a8
leaq -0x228(%rbp), %rdi
callq 0x4688
leaq -0x248(%rbp), %rdi
callq 0x4688
movl $0x28, %edi
callq 0x41c0
movq %rax, %rdi
movq %rdi, %rax
movq %rax, -0x298(%rbp)
xorl %esi, %esi
leaq -0x1e0(%rbp), %rdx
callq 0x73a90
jmp 0x648e7
movq -0x298(%rbp), %rdi
leaq 0x6145b(%rip), %rsi     # 0xc5d50
leaq -0x4ea6c(%rip), %rdx    # 0x15e90
callq 0x45b0
jmp 0x649bb
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x48(%rbp)
movl %eax, -0x4c(%rbp)
leaq -0x1e1(%rbp), %rdi
callq 0x4380
jmp 0x649b2
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x48(%rbp)
movl %eax, -0x4c(%rbp)
jmp 0x64997
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x48(%rbp)
movl %eax, -0x4c(%rbp)
leaq -0x208(%rbp), %rdi
callq 0x4688
jmp 0x64997
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x48(%rbp)
movl %eax, -0x4c(%rbp)
jmp 0x64971
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x48(%rbp)
movl %eax, -0x4c(%rbp)
leaq -0x228(%rbp), %rdi
callq 0x4688
leaq -0x248(%rbp), %rdi
callq 0x4688
jmp 0x64997
movq -0x298(%rbp), %rdi
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x48(%rbp)
movl %eax, -0x4c(%rbp)
callq 0x4280
leaq -0x1e0(%rbp), %rdi
callq 0x4688
jmp 0x649b2
movq -0x8(%rbp), %rax
addq $0x2a0, %rsp            # imm = 0x2A0
popq %rbp
retq
movq -0x48(%rbp), %rdi
callq 0x45e0
nopl (%rax,%rax)