// File: acliusBackHome[P]kamaya/dist/ParseExpression.cpp
// Function: ParseExpression::get_item(ParseExpression const&) const
const ParseExpression &ParseExpression::get_item(const ParseExpression &expr) const {
    const ParseType &this_type = get_ret_type();
    ParseExpression res;
    if (!this_type.get_array_size() && !this_type.get_ptr_lv()) {
        string info = "ParseExpression::get_item(const ParseExpression &expr)";
        info += " this_expr=" + to_string(get_id());
        info += " expr=" + to_string(get_id());
        throw ParseException(EX_NOT_AN_ARRAY_TYPE, info);
    }
    res.expr_type = E_GET_ITEM;
    res.ret_type_id = this_type.get_lower_type().get_id();
    res.child[0] = get_id();
    res.child[1] = expr.get_id();
    update(res);
    return get_expression(res.get_id());
}

// Assembly:
pushq %rbp
movq %rsp, %rbp
subq $0x1a0, %rsp            # imm = 0x1A0
movq %rdi, -0x8(%rbp)
movq %rsi, -0x10(%rbp)
movq -0x8(%rbp), %rdi
movq %rdi, -0x148(%rbp)
callq 0x61800
movq %rax, -0x18(%rbp)
leaq -0x48(%rbp), %rdi
callq 0x61e30
movq -0x18(%rbp), %rdi
callq 0x57280
movq %rax, -0x140(%rbp)
jmp 0x64b52
movq -0x140(%rbp), %rax
cmpq $0x0, %rax
jne 0x64da8
movq -0x18(%rbp), %rdi
callq 0x59100
movq %rax, -0x150(%rbp)
jmp 0x64b75
movq -0x150(%rbp), %rax
cmpq $0x0, %rax
jne 0x64da8
leaq -0x79(%rbp), %rdi
movq %rdi, -0x158(%rbp)
callq 0x45f0
movq -0x158(%rbp), %rdx
leaq 0x2bad2(%rip), %rsi     # 0x90676
leaq -0x78(%rbp), %rdi
callq 0x4450
jmp 0x64baf
leaq -0x79(%rbp), %rdi
callq 0x4380
movq -0x148(%rbp), %rdi
callq 0x63810
movq %rax, -0x160(%rbp)
jmp 0x64bcd
movq -0x160(%rbp), %rsi
leaq -0xc0(%rbp), %rdi
callq 0x15db0
jmp 0x64be2
leaq 0x2bac4(%rip), %rsi     # 0x906ad
leaq -0xa0(%rbp), %rdi
leaq -0xc0(%rbp), %rdx
callq 0x15d60
jmp 0x64bfe
leaq -0x78(%rbp), %rdi
leaq -0xa0(%rbp), %rsi
callq 0x43f0
jmp 0x64c10
leaq -0xa0(%rbp), %rdi
callq 0x4688
leaq -0xc0(%rbp), %rdi
callq 0x4688
movq -0x148(%rbp), %rdi
callq 0x63810
movq %rax, -0x168(%rbp)
jmp 0x64c3d
movq -0x168(%rbp), %rsi
leaq -0x100(%rbp), %rdi
callq 0x15db0
jmp 0x64c52
leaq 0x2b874(%rip), %rsi     # 0x904cd
leaq -0xe0(%rbp), %rdi
leaq -0x100(%rbp), %rdx
callq 0x15d60
jmp 0x64c6e
leaq -0x78(%rbp), %rdi
leaq -0xe0(%rbp), %rsi
callq 0x43f0
jmp 0x64c80
leaq -0xe0(%rbp), %rdi
callq 0x4688
leaq -0x100(%rbp), %rdi
callq 0x4688
movl $0x28, %edi
callq 0x41c0
movq %rax, %rdi
movq %rdi, %rax
movq %rax, -0x170(%rbp)
movl $0x12, %esi
leaq -0x78(%rbp), %rdx
callq 0x73a90
jmp 0x64cbf
movq -0x170(%rbp), %rdi
leaq 0x61083(%rip), %rsi     # 0xc5d50
leaq -0x4ee44(%rip), %rdx    # 0x15e90
callq 0x45b0
jmp 0x64e9f
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x50(%rbp)
movl %eax, -0x54(%rbp)
jmp 0x64e8d
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x50(%rbp)
movl %eax, -0x54(%rbp)
leaq -0x79(%rbp), %rdi
callq 0x4380
jmp 0x64e8d
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x50(%rbp)
movl %eax, -0x54(%rbp)
jmp 0x64d9a
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x50(%rbp)
movl %eax, -0x54(%rbp)
jmp 0x64d40
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x50(%rbp)
movl %eax, -0x54(%rbp)
leaq -0xa0(%rbp), %rdi
callq 0x4688
leaq -0xc0(%rbp), %rdi
callq 0x4688
jmp 0x64d9a
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x50(%rbp)
movl %eax, -0x54(%rbp)
jmp 0x64d74
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x50(%rbp)
movl %eax, -0x54(%rbp)
leaq -0xe0(%rbp), %rdi
callq 0x4688
leaq -0x100(%rbp), %rdi
callq 0x4688
jmp 0x64d9a
movq -0x170(%rbp), %rdi
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x50(%rbp)
movl %eax, -0x54(%rbp)
callq 0x4280
leaq -0x78(%rbp), %rdi
callq 0x4688
jmp 0x64e8d
movl $0x4, -0x20(%rbp)
movq -0x18(%rbp), %rsi
leaq -0x138(%rbp), %rdi
callq 0x59120
jmp 0x64dc1
leaq -0x138(%rbp), %rdi
callq 0x56260
movq %rax, -0x178(%rbp)
jmp 0x64dd6
movq -0x178(%rbp), %rax
movq %rax, -0x28(%rbp)
leaq -0x138(%rbp), %rdi
callq 0x57350
movq -0x148(%rbp), %rdi
callq 0x63810
movq %rax, -0x180(%rbp)
jmp 0x64e02
movq -0x180(%rbp), %rax
movq %rax, -0x48(%rbp)
movq -0x10(%rbp), %rdi
callq 0x63810
movq %rax, -0x188(%rbp)
jmp 0x64e1f
movq -0x188(%rbp), %rax
movq %rax, -0x40(%rbp)
leaq -0x48(%rbp), %rdi
callq 0x60e20
jmp 0x64e35
leaq -0x48(%rbp), %rdi
callq 0x63810
movq %rax, -0x190(%rbp)
jmp 0x64e47
movq -0x190(%rbp), %rdi
callq 0x60f30
movq %rax, -0x198(%rbp)
jmp 0x64e5c
leaq -0x48(%rbp), %rdi
callq 0x62810
movq -0x198(%rbp), %rax
addq $0x1a0, %rsp            # imm = 0x1A0
popq %rbp
retq
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x50(%rbp)
movl %eax, -0x54(%rbp)
leaq -0x138(%rbp), %rdi
callq 0x57350
leaq -0x48(%rbp), %rdi
callq 0x62810
movq -0x50(%rbp), %rdi
callq 0x45e0
nop