// File: /workspace/github_cpp_makefile_star2_O2/acliusBackHome[P]kamaya/dist/ParseExpression.cpp
// Function: ParseExpression::get_info[abi:cxx11]() const
string ParseExpression::get_info() const {
    char buff[64];
    string res = "ParseExpression-";
    if (!expr_id) {
        update(*this);
    }
    sprintf(buff, "%zu", expr_id);
    res += buff;
    res += " {";
    switch (expr_type) {
        case E_UNDEFINED:
            return res + "undefined }";
        case E_ADD:
        case E_SUB:
        case E_MUL:
        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_ASSIGN:
        case E_DIV: {
            const ParseExpression &expr1 = get_expression(child[0]),
                    &expr2 = get_expression(child[1]);
            sprintf(buff, "{ Expr-%zu ", child[0]);
            res += buff;
            res += get_expr_type_name(expr_type);
            sprintf(buff, " Expr-%zu }, ", child[1]);
            res += buff;
            break;
        }
        case E_POS:
        case E_ADR:
        case E_PTR:
        case E_NEG:
        case E_BIT_NOT:
        case E_NOT: {
            res += get_expr_type_name(expr_type);
            sprintf(buff, " { Expr-%zu }", child[0]);
            res += buff;
            break;
        }
        case E_FUN: {
            const auto &func_ptrs = *(DecFuncPtrList *)(child[0]);
            res += "function:{ " + (func_ptrs[0])->get_symbol() + " }, ";
            break;
        }
        case E_VAR: {
            res += "variable:{ " + ((ParseVariable *) child[0])->get_info() + " }, ";
            break;
        }
        case E_CONST: {
            res += "constant: " + ((ParseConstant *) child[0])->get_info() + ", ";
            break;
        }
        case E_GET_ITEM: {
            const ParseExpression &expr1 = get_expression(child[0]),
                    &expr2 = get_expression(child[1]);
            sprintf(buff, "[] { Expr-%zu ", child[0]);
            res += buff;
            res += get_expr_type_name(expr_type);
            sprintf(buff, " Expr-%zu }, ", child[1]);
            res += buff;
            break;
        }
    }
    if (expr_type != E_CONST && is_const()) {
        res += "const_value: " + ((ParseConstant *) const_value)->get_info() + ", ";
    }
    res += "return_type: " + get_ret_type().get_info() + ", ";
    res += "address: " + to_string(get_address()) + "}";
    return res;
}

// Assembly:
pushq %rbp
movq %rsp, %rbp
pushq %r15
pushq %r14
pushq %rbx
subq $0xc8, %rsp
movq %rsi, %r14
movq %rdi, %rbx
leaq 0x16fd8(%rip), %rsi     # 0x3b1f9
leaq -0x58(%rbp), %rdi
leaq -0x38(%rbp), %rdx
callq 0x4130
movq 0x10(%r14), %rdx
testq %rdx, %rdx
jne 0x24243
movq %r14, %rdi
callq 0x24716
movq 0x10(%r14), %rdx
leaq 0x16fc0(%rip), %rsi     # 0x3b20a
leaq -0xe0(%rbp), %r15
movq %r15, %rdi
xorl %eax, %eax
callq 0x40b0
leaq -0x58(%rbp), %rdi
movq %r15, %rsi
callq 0x4540
leaq 0x16b9f(%rip), %rsi     # 0x3ae0d
leaq -0x58(%rbp), %rdi
callq 0x4540
movl 0x28(%r14), %esi
cmpq $0x19, %rsi
ja 0x244e9
leaq 0x16d74(%rip), %rax     # 0x3b000
movslq (%rax,%rsi,4), %rcx
addq %rax, %rcx
jmpq *%rcx
movq (%r14), %rdi
callq 0x247e8
movq 0x8(%r14), %rdi
callq 0x247e8
movq (%r14), %rdx
leaq 0x16fac(%rip), %rsi     # 0x3b25c
movq %r15, %rdi
xorl %eax, %eax
callq 0x40b0
leaq -0x58(%rbp), %rdi
movq %r15, %rsi
callq 0x4540
movl 0x28(%r14), %esi
leaq -0x38(%rbp), %rdi
callq 0x24852
leaq -0x58(%rbp), %rdi
leaq -0x38(%rbp), %rsi
callq 0x4580
leaq -0x38(%rbp), %rdi
callq 0x4598
movq 0x8(%r14), %rdx
leaq 0x16f26(%rip), %rsi     # 0x3b21a
movq %r15, %rdi
xorl %eax, %eax
callq 0x40b0
leaq -0x58(%rbp), %rdi
movq %r15, %rsi
callq 0x4540
jmp 0x244e5
leaq -0x38(%rbp), %rdi
callq 0x24852
leaq -0x58(%rbp), %rdi
leaq -0x38(%rbp), %rsi
callq 0x4580
leaq -0x38(%rbp), %rdi
callq 0x4598
movq (%r14), %rdx
leaq 0x16ef0(%rip), %rsi     # 0x3b228
movq %r15, %rdi
xorl %eax, %eax
callq 0x40b0
leaq -0x58(%rbp), %rdi
movq %r15, %rsi
callq 0x4540
jmp 0x244e5
movq (%r14), %rdi
callq 0x247e8
movq 0x8(%r14), %rdi
callq 0x247e8
movq (%r14), %rdx
leaq 0x16eeb(%rip), %rsi     # 0x3b259
movq %r15, %rdi
xorl %eax, %eax
callq 0x40b0
leaq -0x58(%rbp), %rdi
movq %r15, %rsi
callq 0x4540
movl 0x28(%r14), %esi
leaq -0x38(%rbp), %rdi
callq 0x24852
leaq -0x58(%rbp), %rdi
leaq -0x38(%rbp), %rsi
callq 0x4580
leaq -0x38(%rbp), %rdi
callq 0x4598
movq 0x8(%r14), %rdx
leaq 0x16e68(%rip), %rsi     # 0x3b21a
movq %r15, %rdi
xorl %eax, %eax
callq 0x40b0
leaq -0x58(%rbp), %rdi
movq %r15, %rsi
callq 0x4540
jmp 0x244e5
movq (%r14), %rax
movq (%rax), %rax
movq (%rax), %rsi
leaq -0x78(%rbp), %rdi
callq 0x276f6
leaq 0x16e50(%rip), %rsi     # 0x3b236
leaq -0x98(%rbp), %rdi
leaq -0x78(%rbp), %rdx
callq 0xc837
leaq 0x16e26(%rip), %rdx     # 0x3b223
leaq -0x38(%rbp), %rdi
leaq -0x98(%rbp), %rsi
callq 0xc8d6
leaq -0x58(%rbp), %rdi
leaq -0x38(%rbp), %rsi
callq 0x4580
jmp 0x244c7
movq (%r14), %rsi
leaq -0x78(%rbp), %rdi
callq 0x27de6
leaq 0x16e1c(%rip), %rsi     # 0x3b24e
leaq -0x98(%rbp), %rdi
leaq -0x78(%rbp), %rdx
callq 0xc837
leaq 0x1664b(%rip), %rdx     # 0x3aa94
leaq -0x38(%rbp), %rdi
leaq -0x98(%rbp), %rsi
callq 0xc8d6
leaq -0x58(%rbp), %rdi
leaq -0x38(%rbp), %rsi
callq 0x4580
jmp 0x244c7
leaq 0x16d9f(%rip), %rdx     # 0x3b20e
leaq -0x58(%rbp), %rsi
movq %rbx, %rdi
callq 0xca9e
jmp 0x24676
movq (%r14), %rsi
leaq -0x78(%rbp), %rdi
callq 0x273ac
leaq 0x16daf(%rip), %rsi     # 0x3b242
leaq -0x98(%rbp), %rdi
leaq -0x78(%rbp), %rdx
callq 0xc837
leaq 0x16d79(%rip), %rdx     # 0x3b223
leaq -0x38(%rbp), %rdi
leaq -0x98(%rbp), %rsi
callq 0xc8d6
leaq -0x58(%rbp), %rdi
leaq -0x38(%rbp), %rsi
callq 0x4580
leaq -0x38(%rbp), %rdi
callq 0x4598
leaq -0x98(%rbp), %rdi
callq 0x4598
leaq -0x78(%rbp), %rdi
callq 0x4598
movl 0x28(%r14), %esi
cmpl $0x3, %esi
je 0x24560
movq %r14, %rdi
callq 0x24972
testb %al, %al
je 0x24560
movq 0x18(%r14), %rsi
leaq -0x78(%rbp), %rdi
callq 0x27de6
leaq 0x16d5a(%rip), %rsi     # 0x3b268
leaq -0x98(%rbp), %rdi
leaq -0x78(%rbp), %rdx
callq 0xc837
leaq 0x1656f(%rip), %rdx     # 0x3aa94
leaq -0x38(%rbp), %rdi
leaq -0x98(%rbp), %rsi
callq 0xc8d6
leaq -0x58(%rbp), %rdi
leaq -0x38(%rbp), %rsi
callq 0x4580
leaq -0x38(%rbp), %rdi
callq 0x4598
leaq -0x98(%rbp), %rdi
callq 0x4598
leaq -0x78(%rbp), %rdi
callq 0x4598
movq %r14, %rdi
callq 0x249b0
leaq -0x78(%rbp), %rdi
movq %rax, %rsi
callq 0x215a0
leaq 0x16cfb(%rip), %rsi     # 0x3b276
leaq -0x98(%rbp), %rdi
leaq -0x78(%rbp), %rdx
callq 0xc837
leaq 0x16502(%rip), %rdx     # 0x3aa94
leaq -0x38(%rbp), %rdi
leaq -0x98(%rbp), %rsi
callq 0xc8d6
leaq -0x58(%rbp), %rdi
leaq -0x38(%rbp), %rsi
callq 0x4580
leaq -0x38(%rbp), %rdi
callq 0x4598
leaq -0x98(%rbp), %rdi
callq 0x4598
leaq -0x78(%rbp), %rdi
callq 0x4598
movq %r14, %rdi
callq 0x24c42
leaq -0x78(%rbp), %rdi
movq %rax, %rsi
callq 0xc865
leaq 0x16c9c(%rip), %rsi     # 0x3b284
leaq -0x98(%rbp), %rdi
leaq -0x78(%rbp), %rdx
callq 0xc837
leaq 0x16c19(%rip), %rdx     # 0x3b218
leaq -0x38(%rbp), %rdi
leaq -0x98(%rbp), %rsi
callq 0xc8d6
leaq -0x58(%rbp), %rdi
leaq -0x38(%rbp), %rsi
callq 0x4580
leaq -0x38(%rbp), %rdi
callq 0x4598
leaq -0x98(%rbp), %rdi
callq 0x4598
leaq -0x78(%rbp), %rdi
callq 0x4598
leaq 0x10(%rbx), %rcx
movq %rcx, (%rbx)
leaq -0x48(%rbp), %rax
movq -0x10(%rax), %rdx
cmpq %rax, %rdx
je 0x2465b
movq %rdx, (%rbx)
movq -0x48(%rbp), %rcx
movq %rcx, 0x10(%rbx)
jmp 0x24661
movups (%rax), %xmm0
movups %xmm0, (%rcx)
movq -0x50(%rbp), %rcx
movq %rcx, 0x8(%rbx)
movq %rax, -0x58(%rbp)
andq $0x0, -0x50(%rbp)
movb $0x0, -0x48(%rbp)
leaq -0x58(%rbp), %rdi
callq 0x4598
movq %rbx, %rax
addq $0xc8, %rsp
popq %rbx
popq %r14
popq %r15
popq %rbp
retq
jmp 0x246bc
jmp 0x246cf
jmp 0x246cf
jmp 0x246cf
jmp 0x24702
jmp 0x246dd
jmp 0x246dd
jmp 0x246dd
jmp 0x246ee
jmp 0x246ee
jmp 0x246ee
jmp 0x24702
jmp 0x24702
jmp 0x24702
jmp 0x24702
jmp 0x24702
jmp 0x246bc
jmp 0x24702
jmp 0x246cf
jmp 0x246dd
jmp 0x246ee
jmp 0x24702
movq %rax, %rbx
leaq -0x38(%rbp), %rdi
jmp 0x246f5
jmp 0x24702
jmp 0x24702
jmp 0x246cf
jmp 0x246dd
jmp 0x246ee
movq %rax, %rbx
leaq -0x38(%rbp), %rdi
callq 0x4598
jmp 0x246e0
movq %rax, %rbx
leaq -0x98(%rbp), %rdi
callq 0x4598
jmp 0x246f1
movq %rax, %rbx
leaq -0x78(%rbp), %rdi
callq 0x4598
jmp 0x24705
jmp 0x24702
jmp 0x24702
jmp 0x24702
movq %rax, %rbx
leaq -0x58(%rbp), %rdi
callq 0x4598
movq %rbx, %rdi
callq 0x4500