// File: /workspace/github_c_makefile_star2_O2/BernardTatin[P]s7sh/s7.c
// Function: s7_let_set
s7_pointer s7_let_set(s7_scheme *sc, s7_pointer env, s7_pointer symbol, s7_pointer value)
    {
        if (!is_let(env))
            return(wrong_type_argument_with_type(sc, sc->let_set_symbol, 1, env, a_let_string));

        if (is_immutable(env)) /* opt_p_ppp_fff can't check at opt time for immutable let, and it calls us */
            return(immutable_object_error(sc, set_elist_3(sc, immutable_error_string, sc->let_set_symbol, env)));

        if (!is_symbol(symbol))
        {
            if (has_let_set_fallback(env))
                return(call_let_set_fallback(sc, env, symbol, value));
            return(wrong_type_argument_with_type(sc, sc->let_set_symbol, 2, symbol, a_symbol_string));
        }

        check_method_uncopied(sc, env, sc->let_set_symbol, sc->w = list_3(sc, env, symbol, value));
        return(let_set_1(sc, env, symbol, value));
    }

// Assembly:
pushq %rbp
pushq %r15
pushq %r14
pushq %r13
pushq %r12
pushq %rbx
pushq %rax
movq %rsi, %r14
movq %rdi, %rbx
cmpb $0x1c, (%rsi)
jne 0xabed
movq (%r14), %rax
btl $0x18, %eax
jb 0xac26
movq %rcx, %r12
movq %rdx, %r15
cmpb $0xa, (%rdx)
jne 0xac6c
btl $0x1e, %eax
jae 0xac91
cmpb $0x1, 0x24c(%rbx)
jne 0xac91
movq %rbx, %rdi
movq %r14, %rsi
callq 0x88f3
movq 0x1240(%rbx), %rdx
movq %rbx, %rdi
movq %rax, %rsi
callq 0x888f
cmpq 0x128(%rbx), %rax
je 0xac91
movq %rax, %r13
movq 0x90(%rbx), %rax
movq 0x110(%rbx), %rbp
cmpq 0x98(%rbx), %rax
ja 0xab6c
movq %rbx, %rdi
callq 0x9c27
movq 0x90(%rbx), %rax
leaq -0x8(%rax), %rcx
movq %rcx, 0x90(%rbx)
movq -0x8(%rax), %rax
movl $0x200001, %ecx         # imm = 0x200001
movq %rcx, (%rax)
movq %r12, 0x8(%rax)
movq %rbp, 0x10(%rax)
movq 0x90(%rbx), %rdx
leaq -0x8(%rdx), %rsi
movq %rsi, 0x90(%rbx)
movq -0x8(%rdx), %rsi
movq %rcx, (%rsi)
movq %r15, 0x8(%rsi)
movq %rax, 0x10(%rsi)
movq 0x90(%rbx), %rax
leaq -0x8(%rax), %rdx
movq %rdx, 0x90(%rbx)
movq -0x8(%rax), %rdx
movq %rcx, (%rdx)
movq %r14, 0x8(%rdx)
movq %rsi, 0x10(%rdx)
movq %rdx, 0x4d8(%rbx)
movq %rbx, %rdi
movq %r13, %rsi
addq $0x8, %rsp
popq %rbx
popq %r12
popq %r13
popq %r14
popq %r15
popq %rbp
jmp 0xa34c
movq 0x1240(%rbx), %rax
movq 0x8(%rax), %rsi
movq 0x10ad59(%rip), %rdx    # 0x115958
movq 0x140(%rbx), %r8
movq 0x10ed4b(%rip), %r9     # 0x119958
movq %rbx, %rdi
movq %r14, %rcx
addq $0x8, %rsp
popq %rbx
popq %r12
popq %r13
popq %r14
popq %r15
popq %rbp
jmp 0x9bbb
movq 0x10ed3b(%rip), %rax    # 0x119968
movq 0x1240(%rbx), %rcx
movq 0x6e8(%rbx), %rdx
movq %rax, 0x8(%rdx)
movq 0x10(%rdx), %rax
movq %rcx, 0x8(%rax)
movq 0x10(%rax), %rax
movq %r14, 0x8(%rax)
movq 0x6e8(%rbx), %rsi
movq %rbx, %rdi
addq $0x8, %rsp
popq %rbx
popq %r12
popq %r13
popq %r14
popq %r15
popq %rbp
jmp 0x972b
notl %eax
testl $0x48000000, %eax       # imm = 0x48000000
jne 0xacb0
movq %rbx, %rdi
movq %r14, %rsi
movq %r15, %rdx
movq %r12, %rcx
addq $0x8, %rsp
popq %rbx
popq %r12
popq %r13
popq %r14
popq %r15
popq %rbp
jmp 0xacdb
movq %rbx, %rdi
movq %r14, %rsi
movq %r15, %rdx
movq %r12, %rcx
addq $0x8, %rsp
popq %rbx
popq %r12
popq %r13
popq %r14
popq %r15
popq %rbp
jmp 0xad88
movq 0x1240(%rbx), %rax
movq 0x8(%rax), %rsi
movq 0x10ac9e(%rip), %rdx    # 0x115960
movq 0x140(%rbx), %r8
movq 0x10ec90(%rip), %r9     # 0x119960
movq %rbx, %rdi
movq %r15, %rcx
jmp 0xac13