// File: /workspace/github_c_makefile_star2_O0/BernardTatin[P]s7sh/s7.c
// Function: opt_let_temporarily
static s7_pointer opt_let_temporarily(opt_info *o)
                {
                    opt_info *o1;
                    int32_t i, len;
                    s7_pointer result;
#if S7_DEBUGGING
                    if (cur_sc->stack_end >= cur_sc->stack_resize_trigger) fprintf(stderr, "%s[%d]: skipped stack resize\n", __func__, __LINE__);
#endif
                    oo_rc(o->sc, o, 5, 1);
                    o1 = o->sc->opts[++o->sc->pc];
                    o->v[4].p = slot_value(o->v[1].p);         /* save and protect old value */
                    gc_protect_direct(o->sc, o->v[4].p);

                    if (is_immutable_slot(o->v[1].p))
                        immutable_object_error(o->sc, set_elist_3(o->sc, immutable_error_string, o->sc->let_temporarily_symbol, slot_symbol(o->v[1].p)));
                    slot_set_value(o->v[1].p, o1->v[0].fp(o1)); /* set new value */

                    len = o->v[2].i - 1;
                    for (i = 0; i < len; i++)
                    {
                        o1 = o->sc->opts[++o->sc->pc];
                        o1->v[0].fp(o1);
                    }
                    o1 = o->sc->opts[++o->sc->pc];
                    result = o1->v[0].fp(o1);

                    slot_set_value(o->v[1].p, o->v[4].p);      /* restore old */
                    o->sc->stack_end -= 4;

                    return(result);
                }

// Assembly:
subq $0x28, %rsp
movq %rdi, 0x20(%rsp)
movq 0x20(%rsp), %rax
movq 0x68(%rax), %rax
movq 0x20(%rsp), %rcx
movq 0x68(%rcx), %rdx
movl 0x2258(%rdx), %ecx
addl $0x1, %ecx
movl %ecx, 0x2258(%rdx)
movslq %ecx, %rcx
movq 0x2260(%rax,%rcx,8), %rax
movq %rax, 0x18(%rsp)
movq 0x20(%rsp), %rax
movq 0x8(%rax), %rax
movq 0x10(%rax), %rcx
movq 0x20(%rsp), %rax
movq %rcx, 0x20(%rax)
movq 0x20(%rsp), %rax
movq 0x68(%rax), %rdi
movq 0x20(%rsp), %rax
movq 0x20(%rax), %rsi
callq 0xfd720
movq 0x20(%rsp), %rax
movq 0x8(%rax), %rax
movq (%rax), %rax
andq $0x1000000, %rax        # imm = 0x1000000
cmpq $0x0, %rax
je 0xfd60a
movq 0x20(%rsp), %rax
movq 0x68(%rax), %rax
movq %rax, (%rsp)
movq 0x20(%rsp), %rax
movq 0x68(%rax), %rdi
movq 0x11cebc(%rip), %rsi    # 0x21a498
movq 0x20(%rsp), %rax
movq 0x68(%rax), %rax
movq 0x1248(%rax), %rdx
movq 0x20(%rsp), %rax
movq 0x8(%rax), %rax
movq 0x8(%rax), %rcx
callq 0xf240
movq (%rsp), %rdi
movq %rax, %rsi
callq 0xb800
movq 0x18(%rsp), %rax
movq (%rax), %rax
movq 0x18(%rsp), %rdi
callq *%rax
movq %rax, %rcx
movq 0x20(%rsp), %rax
movq 0x8(%rax), %rax
movq %rcx, 0x10(%rax)
movq 0x20(%rsp), %rax
movq 0x10(%rax), %rax
subq $0x1, %rax
movl %eax, 0x10(%rsp)
movl $0x0, 0x14(%rsp)
movl 0x14(%rsp), %eax
cmpl 0x10(%rsp), %eax
jge 0xfd699
movq 0x20(%rsp), %rax
movq 0x68(%rax), %rax
movq 0x20(%rsp), %rcx
movq 0x68(%rcx), %rdx
movl 0x2258(%rdx), %ecx
addl $0x1, %ecx
movl %ecx, 0x2258(%rdx)
movslq %ecx, %rcx
movq 0x2260(%rax,%rcx,8), %rax
movq %rax, 0x18(%rsp)
movq 0x18(%rsp), %rax
movq (%rax), %rax
movq 0x18(%rsp), %rdi
callq *%rax
movl 0x14(%rsp), %eax
addl $0x1, %eax
movl %eax, 0x14(%rsp)
jmp 0xfd642
movq 0x20(%rsp), %rax
movq 0x68(%rax), %rax
movq 0x20(%rsp), %rcx
movq 0x68(%rcx), %rdx
movl 0x2258(%rdx), %ecx
addl $0x1, %ecx
movl %ecx, 0x2258(%rdx)
movslq %ecx, %rcx
movq 0x2260(%rax,%rcx,8), %rax
movq %rax, 0x18(%rsp)
movq 0x18(%rsp), %rax
movq (%rax), %rax
movq 0x18(%rsp), %rdi
callq *%rax
movq %rax, 0x8(%rsp)
movq 0x20(%rsp), %rax
movq 0x20(%rax), %rcx
movq 0x20(%rsp), %rax
movq 0x8(%rax), %rax
movq %rcx, 0x10(%rax)
movq 0x20(%rsp), %rax
movq 0x68(%rax), %rax
movq 0x50(%rax), %rcx
addq $-0x20, %rcx
movq %rcx, 0x50(%rax)
movq 0x8(%rsp), %rax
addq $0x28, %rsp
retq
nopw %cs:(%rax,%rax)