// File: /workspace/github_c_makefile_star2_O1/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 0xc765
movq (%r14), %rax
btl $0x18, %eax
jb 0xc79e
movq %rcx, %r12
movq %rdx, %r15
cmpb $0xa, (%rdx)
jne 0xc7f2
movb $0x1, %bpl
btl $0x1e, %eax
jae 0xc817
cmpb $0x1, 0x24c(%rbx)
jne 0xc817
movq %rbx, %rdi
movq %r14, %rsi
callq 0x9a55
movq 0x1240(%rbx), %rdx
movq %rbx, %rdi
movq %rax, %rsi
callq 0x99ef
cmpq 0x128(%rbx), %rax
je 0xc817
movq %rax, %r13
movq 0x90(%rbx), %rax
movq 0x110(%rbx), %rbp
cmpq 0x98(%rbx), %rax
ja 0xc6e1
movq %rbx, %rdi
callq 0xb389
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
callq 0xbd41
movq %rax, %r13
xorl %ebp, %ebp
jmp 0xc817
movq 0x1240(%rbx), %rax
movq 0x8(%rax), %rsi
movq 0x1421e1(%rip), %rdx    # 0x14e958
movq 0x140(%rbx), %r8
movq 0x1461d3(%rip), %r9     # 0x152958
movq %rbx, %rdi
movq %r14, %rcx
addq $0x8, %rsp
popq %rbx
popq %r12
popq %r13
popq %r14
popq %r15
popq %rbp
jmp 0xb31d
movq 0x1461c3(%rip), %rax    # 0x152968
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), %rdx
movq 0xea8(%rbx), %r13
movq %rbx, %rdi
movq %r13, %rsi
callq 0x3b366
movq %r13, %rax
addq $0x8, %rsp
popq %rbx
popq %r12
popq %r13
popq %r14
popq %r15
popq %rbp
retq
notl %eax
testl $0x48000000, %eax       # imm = 0x48000000
jne 0xc83b
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 0xc866
testb %bpl, %bpl
je 0xc7e0
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 0xc913
movq 0x1240(%rbx), %rax
movq 0x8(%rax), %rsi
movq 0x142113(%rip), %rdx    # 0x14e960
movq 0x140(%rbx), %r8
movq 0x146105(%rip), %r9     # 0x152960
movq %rbx, %rdi
movq %r15, %rcx
jmp 0xc78b