// File: /workspace/github_cpp_makefile_star2_O2/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
pushq %r14
pushq %rbx
subq $0x60, %rsp
movq %rsi, %rbx
movq %rdi, %r14
cmpq $0x2, %rsi
jae 0x26052
movl 0x28(%r14), %eax
cmpl $0x19, %eax
ja 0x26253
movl $0x3fe07f0, %ecx        # imm = 0x3FE07F0
btl %eax, %ecx
jae 0x2602e
leaq (%r14,%rbx,8), %r14
jmp 0x26046
movl $0x1f800, %ecx          # imm = 0x1F800
btl %eax, %ecx
jae 0x261a8
cmpq $0x1, %rbx
je 0x260fd
movq (%r14), %rax
addq $0x60, %rsp
popq %rbx
popq %r14
popq %rbp
retq
leaq 0x15553(%rip), %rsi     # 0x3b5ac
leaq -0x50(%rbp), %rdi
leaq -0x30(%rbp), %rdx
callq 0x4130
movq 0x10(%r14), %rsi
leaq -0x30(%rbp), %rdi
callq 0xc865
leaq -0x50(%rbp), %rdi
leaq -0x30(%rbp), %rsi
callq 0x4580
leaq -0x30(%rbp), %rdi
callq 0x4598
leaq -0x70(%rbp), %rdi
movq %rbx, %rsi
callq 0xc865
leaq 0x15543(%rip), %rsi     # 0x3b5df
leaq -0x30(%rbp), %rdi
leaq -0x70(%rbp), %rdx
callq 0xc837
leaq -0x50(%rbp), %rdi
leaq -0x30(%rbp), %rsi
callq 0x4580
leaq -0x30(%rbp), %rdi
callq 0x4598
leaq -0x70(%rbp), %rdi
callq 0x4598
pushq $0x28
popq %rdi
callq 0x4180
movq %rax, %r14
pushq $0x11
popq %rsi
leaq -0x50(%rbp), %rdx
movq %rax, %rdi
callq 0x2b53c
leaq 0x2cc87(%rip), %rsi     # 0x52d70
leaq -0x19848(%rip), %rdx    # 0xc8a8
movq %r14, %rdi
callq 0x44e0
jmp 0x262f8
leaq 0x154e4(%rip), %rsi     # 0x3b5e8
leaq -0x50(%rbp), %rdi
leaq -0x30(%rbp), %rdx
callq 0x4130
movq 0x10(%r14), %rsi
leaq -0x30(%rbp), %rdi
callq 0xc865
leaq -0x50(%rbp), %rdi
leaq -0x30(%rbp), %rsi
callq 0x4580
leaq -0x30(%rbp), %rdi
callq 0x4598
leaq -0x70(%rbp), %rdi
pushq $0x1
popq %rsi
callq 0xc865
leaq 0x15498(%rip), %rsi     # 0x3b5df
leaq -0x30(%rbp), %rdi
leaq -0x70(%rbp), %rdx
callq 0xc837
leaq -0x50(%rbp), %rdi
leaq -0x30(%rbp), %rsi
callq 0x4580
leaq -0x30(%rbp), %rdi
callq 0x4598
leaq -0x70(%rbp), %rdi
callq 0x4598
pushq $0x28
popq %rdi
callq 0x4180
movq %rax, %r14
pushq $0x11
popq %rsi
leaq -0x50(%rbp), %rdx
movq %rax, %rdi
callq 0x2b53c
leaq 0x2cbdc(%rip), %rsi     # 0x52d70
leaq -0x198f3(%rip), %rdx    # 0xc8a8
movq %r14, %rdi
callq 0x44e0
jmp 0x262f8
leaq 0x15439(%rip), %rsi     # 0x3b5e8
leaq -0x50(%rbp), %rdi
leaq -0x30(%rbp), %rdx
callq 0x4130
movq 0x10(%r14), %rsi
leaq -0x30(%rbp), %rdi
callq 0xc865
leaq -0x50(%rbp), %rdi
leaq -0x30(%rbp), %rsi
callq 0x4580
leaq -0x30(%rbp), %rdi
callq 0x4598
leaq -0x70(%rbp), %rdi
movq %rbx, %rsi
callq 0xc865
leaq 0x153ed(%rip), %rsi     # 0x3b5df
leaq -0x30(%rbp), %rdi
leaq -0x70(%rbp), %rdx
callq 0xc837
leaq -0x50(%rbp), %rdi
leaq -0x30(%rbp), %rsi
callq 0x4580
leaq -0x30(%rbp), %rdi
callq 0x4598
leaq -0x70(%rbp), %rdi
callq 0x4598
pushq $0x28
popq %rdi
callq 0x4180
movq %rax, %r14
pushq $0x11
popq %rsi
leaq -0x50(%rbp), %rdx
movq %rax, %rdi
callq 0x2b53c
leaq 0x2cb31(%rip), %rsi     # 0x52d70
leaq -0x1999e(%rip), %rdx    # 0xc8a8
movq %r14, %rdi
callq 0x44e0
jmp 0x262f8
leaq 0x1538e(%rip), %rsi     # 0x3b5e8
leaq -0x50(%rbp), %rdi
leaq -0x30(%rbp), %rdx
callq 0x4130
movq 0x10(%r14), %rsi
leaq -0x30(%rbp), %rdi
callq 0xc865
leaq -0x50(%rbp), %rdi
leaq -0x30(%rbp), %rsi
callq 0x4580
leaq -0x30(%rbp), %rdi
callq 0x4598
leaq -0x70(%rbp), %rdi
movq %rbx, %rsi
callq 0xc865
leaq 0x15342(%rip), %rsi     # 0x3b5df
leaq -0x30(%rbp), %rdi
leaq -0x70(%rbp), %rdx
callq 0xc837
leaq -0x50(%rbp), %rdi
leaq -0x30(%rbp), %rsi
callq 0x4580
leaq -0x30(%rbp), %rdi
callq 0x4598
leaq -0x70(%rbp), %rdi
callq 0x4598
pushq $0x28
popq %rdi
callq 0x4180
movq %rax, %r14
leaq -0x50(%rbp), %rdx
movq %rax, %rdi
xorl %esi, %esi
callq 0x2b53c
leaq 0x2ca87(%rip), %rsi     # 0x52d70
leaq -0x19a48(%rip), %rdx    # 0xc8a8
movq %r14, %rdi
callq 0x44e0
jmp 0x2635e
jmp 0x26314
jmp 0x26327
jmp 0x2633b
jmp 0x2635e
jmp 0x26314
jmp 0x2635e
jmp 0x26314
jmp 0x2635e
jmp 0x26327
jmp 0x26327
jmp 0x2634e
jmp 0x2633b
jmp 0x2635e
movq %rax, %rbx
movq %r14, %rdi
callq 0x4220
jmp 0x26361
jmp 0x2633b
jmp 0x2635e
jmp 0x2635e
movq %rax, %rbx
leaq -0x30(%rbp), %rdi
callq 0x4598
jmp 0x2633e
jmp 0x2635e
jmp 0x2636c
jmp 0x2634e
movq %rax, %rbx
leaq -0x70(%rbp), %rdi
jmp 0x26355
jmp 0x2634e
jmp 0x2635e
jmp 0x2635e
jmp 0x2635e
jmp 0x2636c
movq %rax, %rbx
leaq -0x30(%rbp), %rdi
callq 0x4598
jmp 0x26361
jmp 0x2636c
movq %rax, %rbx
leaq -0x50(%rbp), %rdi
callq 0x4598
jmp 0x2636f
movq %rax, %rbx
movq %rbx, %rdi
callq 0x4500
nop