// File: /workspace/github_cpp_makefile_star2_O3/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 0x2cee2
movl 0x28(%r14), %eax
cmpl $0x19, %eax
ja 0x2d16f
movl $0x3fe07f0, %ecx        # imm = 0x3FE07F0
btl %eax, %ecx
jae 0x2cebc
leaq (%r14,%rbx,8), %r14
jmp 0x2ced4
movl $0x1f800, %ecx          # imm = 0x1F800
btl %eax, %ecx
jae 0x2d096
cmpq $0x1, %rbx
je 0x2cfbb
movq (%r14), %rax
addq $0x68, %rsp
popq %rbx
popq %r14
popq %r15
popq %rbp
retq
leaq -0x48(%rbp), %r15
movq %r15, -0x10(%r15)
leaq 0x19723(%rip), %rsi     # 0x46614
leaq 0x1974e(%rip), %rdx     # 0x46646
leaq -0x58(%rbp), %rdi
callq 0xf868
movq 0x10(%r14), %rsi
leaq -0x38(%rbp), %rdi
callq 0xe50f
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 0x2cf31
callq 0x42b0
leaq -0x78(%rbp), %rdi
movq %rbx, %rsi
callq 0xe50f
leaq 0x19703(%rip), %rsi     # 0x46647
leaq -0x38(%rbp), %rdi
leaq -0x78(%rbp), %rdx
callq 0xe495
movq -0x38(%rbp), %rsi
movq -0x30(%rbp), %rdx
leaq -0x58(%rbp), %rdi
callq 0x4110
movq -0x38(%rbp), %rdi
cmpq %r14, %rdi
je 0x2cf70
callq 0x42b0
leaq -0x68(%rbp), %rax
movq -0x10(%rax), %rdi
cmpq %rax, %rdi
je 0x2cf82
callq 0x42b0
movl $0x28, %edi
callq 0x4190
movq %rax, %r14
leaq -0x58(%rbp), %rdx
movq %rax, %rdi
movl $0x11, %esi
callq 0x333ee
leaq 0x2ddc9(%rip), %rsi     # 0x5ad70
leaq -0x1ea0e(%rip), %rdx    # 0xe5a0
movq %r14, %rdi
callq 0x4540
jmp 0x2d240
leaq -0x48(%rbp), %r15
movq %r15, -0x10(%r15)
leaq 0x19686(%rip), %rsi     # 0x46650
leaq 0x196bc(%rip), %rdx     # 0x4668d
leaq -0x58(%rbp), %rdi
callq 0xf868
movq 0x10(%r14), %rsi
leaq -0x38(%rbp), %rdi
callq 0xe50f
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 0x2d00a
callq 0x42b0
leaq -0x78(%rbp), %rdi
movl $0x1, %esi
callq 0xe50f
leaq 0x19628(%rip), %rsi     # 0x46647
leaq -0x38(%rbp), %rdi
leaq -0x78(%rbp), %rdx
callq 0xe495
movq -0x38(%rbp), %rsi
movq -0x30(%rbp), %rdx
leaq -0x58(%rbp), %rdi
callq 0x4110
movq -0x38(%rbp), %rdi
cmpq %r14, %rdi
je 0x2d04b
callq 0x42b0
leaq -0x68(%rbp), %rax
movq -0x10(%rax), %rdi
cmpq %rax, %rdi
je 0x2d05d
callq 0x42b0
movl $0x28, %edi
callq 0x4190
movq %rax, %r14
leaq -0x58(%rbp), %rdx
movq %rax, %rdi
movl $0x11, %esi
callq 0x333ee
leaq 0x2dcee(%rip), %rsi     # 0x5ad70
leaq -0x1eae9(%rip), %rdx    # 0xe5a0
movq %r14, %rdi
callq 0x4540
jmp 0x2d240
leaq -0x48(%rbp), %r15
movq %r15, -0x10(%r15)
leaq 0x195ab(%rip), %rsi     # 0x46650
leaq 0x195e1(%rip), %rdx     # 0x4668d
leaq -0x58(%rbp), %rdi
callq 0xf868
movq 0x10(%r14), %rsi
leaq -0x38(%rbp), %rdi
callq 0xe50f
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 0x2d0e5
callq 0x42b0
leaq -0x78(%rbp), %rdi
movq %rbx, %rsi
callq 0xe50f
leaq 0x1954f(%rip), %rsi     # 0x46647
leaq -0x38(%rbp), %rdi
leaq -0x78(%rbp), %rdx
callq 0xe495
movq -0x38(%rbp), %rsi
movq -0x30(%rbp), %rdx
leaq -0x58(%rbp), %rdi
callq 0x4110
movq -0x38(%rbp), %rdi
cmpq %r14, %rdi
je 0x2d124
callq 0x42b0
leaq -0x68(%rbp), %rax
movq -0x10(%rax), %rdi
cmpq %rax, %rdi
je 0x2d136
callq 0x42b0
movl $0x28, %edi
callq 0x4190
movq %rax, %r14
leaq -0x58(%rbp), %rdx
movq %rax, %rdi
movl $0x11, %esi
callq 0x333ee
leaq 0x2dc15(%rip), %rsi     # 0x5ad70
leaq -0x1ebc2(%rip), %rdx    # 0xe5a0
movq %r14, %rdi
callq 0x4540
jmp 0x2d240
leaq -0x48(%rbp), %r15
movq %r15, -0x10(%r15)
leaq 0x194d2(%rip), %rsi     # 0x46650
leaq 0x19508(%rip), %rdx     # 0x4668d
leaq -0x58(%rbp), %rdi
callq 0xf868
movq 0x10(%r14), %rsi
leaq -0x38(%rbp), %rdi
callq 0xe50f
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 0x2d1be
callq 0x42b0
leaq -0x78(%rbp), %rdi
movq %rbx, %rsi
callq 0xe50f
leaq 0x19476(%rip), %rsi     # 0x46647
leaq -0x38(%rbp), %rdi
leaq -0x78(%rbp), %rdx
callq 0xe495
movq -0x38(%rbp), %rsi
movq -0x30(%rbp), %rdx
leaq -0x58(%rbp), %rdi
callq 0x4110
movq -0x38(%rbp), %rdi
cmpq %r14, %rdi
je 0x2d1fd
callq 0x42b0
leaq -0x68(%rbp), %rax
movq -0x10(%rax), %rdi
cmpq %rax, %rdi
je 0x2d20f
callq 0x42b0
movl $0x28, %edi
callq 0x4190
movq %rax, %r14
leaq -0x58(%rbp), %rdx
movq %rax, %rdi
xorl %esi, %esi
callq 0x333ee
leaq 0x2db3f(%rip), %rsi     # 0x5ad70
leaq -0x1ec98(%rip), %rdx    # 0xe5a0
movq %r14, %rdi
callq 0x4540
jmp 0x2d2b4
jmp 0x2d25c
jmp 0x2d26f
jmp 0x2d288
jmp 0x2d2b4
jmp 0x2d25c
jmp 0x2d2b4
jmp 0x2d25c
jmp 0x2d2b4
jmp 0x2d26f
jmp 0x2d26f
jmp 0x2d29b
jmp 0x2d288
jmp 0x2d2b4
movq %rax, %rbx
movq %r14, %rdi
callq 0x4250
jmp 0x2d2b7
jmp 0x2d288
jmp 0x2d2b4
jmp 0x2d2b4
movq %rax, %rbx
movq -0x38(%rbp), %rdi
cmpq %r14, %rdi
je 0x2d28b
callq 0x42b0
jmp 0x2d28b
jmp 0x2d2b4
jmp 0x2d2c7
jmp 0x2d29b
movq %rax, %rbx
leaq -0x68(%rbp), %rax
jmp 0x2d2a2
jmp 0x2d29b
jmp 0x2d2b4
jmp 0x2d2b4
jmp 0x2d2b4
jmp 0x2d2c7
movq %rax, %rbx
leaq -0x28(%rbp), %rax
movq -0x10(%rax), %rdi
cmpq %rax, %rdi
je 0x2d2b7
callq 0x42b0
jmp 0x2d2b7
jmp 0x2d2c7
movq %rax, %rbx
movq -0x58(%rbp), %rdi
cmpq %r15, %rdi
je 0x2d2ca
callq 0x42b0
jmp 0x2d2ca
movq %rax, %rbx
movq %rbx, %rdi
callq 0x4560