// File: /workspace/github_cpp_makefile_star2_O1/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 %r15
pushq %r14
pushq %rbx
subq $0x68, %rsp
movq %rsi, %rbx
movq %rdi, %r14
cmpq $0x2, %rsi
jae 0x2d7be
movl 0x28(%r14), %eax
cmpl $0x19, %eax
ja 0x2da4b
movl $0x3fe07f0, %ecx        # imm = 0x3FE07F0
btl %eax, %ecx
jae 0x2d798
leaq (%r14,%rbx,8), %r14
jmp 0x2d7b0
movl $0x1f800, %ecx          # imm = 0x1F800
btl %eax, %ecx
jae 0x2d972
cmpq $0x1, %rbx
je 0x2d897
movq (%r14), %rax
addq $0x68, %rsp
popq %rbx
popq %r14
popq %r15
popq %rbp
retq
leaq -0x48(%rbp), %r15
movq %r15, -0x10(%r15)
leaq 0x19e47(%rip), %rsi     # 0x47614
leaq 0x19e72(%rip), %rdx     # 0x47646
leaq -0x58(%rbp), %rdi
callq 0xf65c
movq 0x10(%r14), %rsi
leaq -0x38(%rbp), %rdi
callq 0xe329
movq -0x38(%rbp), %rsi
movq -0x30(%rbp), %rdx
leaq -0x58(%rbp), %rdi
callq 0x4110
leaq -0x28(%rbp), %r14
movq -0x10(%r14), %rdi
cmpq %r14, %rdi
je 0x2d80d
callq 0x42b0
leaq -0x78(%rbp), %rdi
movq %rbx, %rsi
callq 0xe329
leaq 0x19e27(%rip), %rsi     # 0x47647
leaq -0x38(%rbp), %rdi
leaq -0x78(%rbp), %rdx
callq 0xe2af
movq -0x38(%rbp), %rsi
movq -0x30(%rbp), %rdx
leaq -0x58(%rbp), %rdi
callq 0x4110
movq -0x38(%rbp), %rdi
cmpq %r14, %rdi
je 0x2d84c
callq 0x42b0
leaq -0x68(%rbp), %rax
movq -0x10(%rax), %rdi
cmpq %rax, %rdi
je 0x2d85e
callq 0x42b0
movl $0x28, %edi
callq 0x4190
movq %rax, %r14
leaq -0x58(%rbp), %rdx
movq %rax, %rdi
movl $0x11, %esi
callq 0x33d12
leaq 0x2e4ed(%rip), %rsi     # 0x5bd70
leaq -0x1f4d0(%rip), %rdx    # 0xe3ba
movq %r14, %rdi
callq 0x4540
jmp 0x2db1c
leaq -0x48(%rbp), %r15
movq %r15, -0x10(%r15)
leaq 0x19daa(%rip), %rsi     # 0x47650
leaq 0x19de0(%rip), %rdx     # 0x4768d
leaq -0x58(%rbp), %rdi
callq 0xf65c
movq 0x10(%r14), %rsi
leaq -0x38(%rbp), %rdi
callq 0xe329
movq -0x38(%rbp), %rsi
movq -0x30(%rbp), %rdx
leaq -0x58(%rbp), %rdi
callq 0x4110
leaq -0x28(%rbp), %r14
movq -0x10(%r14), %rdi
cmpq %r14, %rdi
je 0x2d8e6
callq 0x42b0
leaq -0x78(%rbp), %rdi
movl $0x1, %esi
callq 0xe329
leaq 0x19d4c(%rip), %rsi     # 0x47647
leaq -0x38(%rbp), %rdi
leaq -0x78(%rbp), %rdx
callq 0xe2af
movq -0x38(%rbp), %rsi
movq -0x30(%rbp), %rdx
leaq -0x58(%rbp), %rdi
callq 0x4110
movq -0x38(%rbp), %rdi
cmpq %r14, %rdi
je 0x2d927
callq 0x42b0
leaq -0x68(%rbp), %rax
movq -0x10(%rax), %rdi
cmpq %rax, %rdi
je 0x2d939
callq 0x42b0
movl $0x28, %edi
callq 0x4190
movq %rax, %r14
leaq -0x58(%rbp), %rdx
movq %rax, %rdi
movl $0x11, %esi
callq 0x33d12
leaq 0x2e412(%rip), %rsi     # 0x5bd70
leaq -0x1f5ab(%rip), %rdx    # 0xe3ba
movq %r14, %rdi
callq 0x4540
jmp 0x2db1c
leaq -0x48(%rbp), %r15
movq %r15, -0x10(%r15)
leaq 0x19ccf(%rip), %rsi     # 0x47650
leaq 0x19d05(%rip), %rdx     # 0x4768d
leaq -0x58(%rbp), %rdi
callq 0xf65c
movq 0x10(%r14), %rsi
leaq -0x38(%rbp), %rdi
callq 0xe329
movq -0x38(%rbp), %rsi
movq -0x30(%rbp), %rdx
leaq -0x58(%rbp), %rdi
callq 0x4110
leaq -0x28(%rbp), %r14
movq -0x10(%r14), %rdi
cmpq %r14, %rdi
je 0x2d9c1
callq 0x42b0
leaq -0x78(%rbp), %rdi
movq %rbx, %rsi
callq 0xe329
leaq 0x19c73(%rip), %rsi     # 0x47647
leaq -0x38(%rbp), %rdi
leaq -0x78(%rbp), %rdx
callq 0xe2af
movq -0x38(%rbp), %rsi
movq -0x30(%rbp), %rdx
leaq -0x58(%rbp), %rdi
callq 0x4110
movq -0x38(%rbp), %rdi
cmpq %r14, %rdi
je 0x2da00
callq 0x42b0
leaq -0x68(%rbp), %rax
movq -0x10(%rax), %rdi
cmpq %rax, %rdi
je 0x2da12
callq 0x42b0
movl $0x28, %edi
callq 0x4190
movq %rax, %r14
leaq -0x58(%rbp), %rdx
movq %rax, %rdi
movl $0x11, %esi
callq 0x33d12
leaq 0x2e339(%rip), %rsi     # 0x5bd70
leaq -0x1f684(%rip), %rdx    # 0xe3ba
movq %r14, %rdi
callq 0x4540
jmp 0x2db1c
leaq -0x48(%rbp), %r15
movq %r15, -0x10(%r15)
leaq 0x19bf6(%rip), %rsi     # 0x47650
leaq 0x19c2c(%rip), %rdx     # 0x4768d
leaq -0x58(%rbp), %rdi
callq 0xf65c
movq 0x10(%r14), %rsi
leaq -0x38(%rbp), %rdi
callq 0xe329
movq -0x38(%rbp), %rsi
movq -0x30(%rbp), %rdx
leaq -0x58(%rbp), %rdi
callq 0x4110
leaq -0x28(%rbp), %r14
movq -0x10(%r14), %rdi
cmpq %r14, %rdi
je 0x2da9a
callq 0x42b0
leaq -0x78(%rbp), %rdi
movq %rbx, %rsi
callq 0xe329
leaq 0x19b9a(%rip), %rsi     # 0x47647
leaq -0x38(%rbp), %rdi
leaq -0x78(%rbp), %rdx
callq 0xe2af
movq -0x38(%rbp), %rsi
movq -0x30(%rbp), %rdx
leaq -0x58(%rbp), %rdi
callq 0x4110
movq -0x38(%rbp), %rdi
cmpq %r14, %rdi
je 0x2dad9
callq 0x42b0
leaq -0x68(%rbp), %rax
movq -0x10(%rax), %rdi
cmpq %rax, %rdi
je 0x2daeb
callq 0x42b0
movl $0x28, %edi
callq 0x4190
movq %rax, %r14
leaq -0x58(%rbp), %rdx
movq %rax, %rdi
xorl %esi, %esi
callq 0x33d12
leaq 0x2e263(%rip), %rsi     # 0x5bd70
leaq -0x1f75a(%rip), %rdx    # 0xe3ba
movq %r14, %rdi
callq 0x4540
jmp 0x2db90
jmp 0x2db38
jmp 0x2db4b
jmp 0x2db64
jmp 0x2db90
jmp 0x2db38
jmp 0x2db90
jmp 0x2db38
jmp 0x2db90
jmp 0x2db4b
jmp 0x2db4b
jmp 0x2db77
jmp 0x2db64
jmp 0x2db90
movq %rax, %rbx
movq %r14, %rdi
callq 0x4250
jmp 0x2db93
jmp 0x2db64
jmp 0x2db90
jmp 0x2db90
movq %rax, %rbx
movq -0x38(%rbp), %rdi
cmpq %r14, %rdi
je 0x2db67
callq 0x42b0
jmp 0x2db67
jmp 0x2db90
jmp 0x2dba3
jmp 0x2db77
movq %rax, %rbx
leaq -0x68(%rbp), %rax
jmp 0x2db7e
jmp 0x2db77
jmp 0x2db90
jmp 0x2db90
jmp 0x2db90
jmp 0x2dba3
movq %rax, %rbx
leaq -0x28(%rbp), %rax
movq -0x10(%rax), %rdi
cmpq %rax, %rdi
je 0x2db93
callq 0x42b0
jmp 0x2db93
jmp 0x2dba3
movq %rax, %rbx
movq -0x58(%rbp), %rdi
cmpq %r15, %rdi
je 0x2dba6
callq 0x42b0
jmp 0x2dba6
movq %rax, %rbx
movq %rbx, %rdi
callq 0x4560