// File: /workspace/github_c_makefile_star2_O0/BernardTatin[P]s7sh/s7.c
// Function: i_syntax_ok
static bool i_syntax_ok(s7_scheme *sc, s7_pointer car_x, int32_t len)
                {
                    if ((car(car_x) == sc->set_symbol) &&
                            (len == 3))
                    {
                        opt_info *opc;
                        opc = alloc_opo(sc, car_x);
                        if (is_symbol(cadr(car_x)))  /* (set! i 3) */
                        {
                            s7_pointer settee;
                            if ((is_immutable(cadr(car_x))) ||
                                    (symbol_has_setter(cadr(car_x))))
                                return(return_false(sc, car_x, __func__, __LINE__));
                            settee = symbol_to_slot(sc, cadr(car_x));
                            if ((is_slot(settee)) &&
                                    (!is_immutable(settee)))
                            {
                                opc->v[1].p = settee;
                                if ((is_t_integer(slot_value(settee))) &&
                                        (int_optimize(sc, cddr(car_x))))
                                {
                                    if (set_i_i_f_combinable(sc, opc))
                                        return(true);

                                    if (is_mutable_integer(slot_value(opc->v[1].p)))
                                        opc->v[0].fi = opt_set_i_i_fm;
                                    else opc->v[0].fi = opt_set_i_i_f;
                                    return(oo_set_type_1(opc, 2, 1, OO_P)); /* or OO_I? */
                                }
                            }
                        }
                        else
                        {
                            if ((is_pair(cadr(car_x))) &&    /* if is_pair(settee) get setter */
                                    (is_symbol(caadr(car_x))) &&
                                    (is_pair(cdadr(car_x))))
                            {
                                if (is_null(cddadr(car_x)))
                                    return(opt_int_vector_set(sc, OO_AV, opc, caadr(car_x), cdadr(car_x), NULL, cddr(car_x)));
                                if (is_null(cdddr(cadr(car_x))))
                                    return(opt_int_vector_set(sc, OO_AV, opc, caadr(car_x), cdadr(car_x), cddadr(car_x), cddr(car_x)));
                            }
                        }
                    }
                    return(return_false(sc, car_x, __func__, __LINE__));
                }

// Assembly:
subq $0x38, %rsp
movq %rdi, 0x28(%rsp)
movq %rsi, 0x20(%rsp)
movl %edx, 0x1c(%rsp)
movq 0x20(%rsp), %rax
movq 0x8(%rax), %rax
movq 0x28(%rsp), %rcx
cmpq 0x18d8(%rcx), %rax
jne 0xe6946
cmpl $0x3, 0x1c(%rsp)
jne 0xe6946
movq 0x28(%rsp), %rdi
callq 0xe15e0
movq %rax, 0x10(%rsp)
movq 0x20(%rsp), %rax
movq 0x10(%rax), %rax
movq 0x8(%rax), %rax
movzbl (%rax), %eax
cmpl $0xa, %eax
jne 0xe67ea
movq 0x20(%rsp), %rax
movq 0x10(%rax), %rax
movq 0x8(%rax), %rax
movq (%rax), %rax
andq $0x1000000, %rax        # imm = 0x1000000
cmpq $0x0, %rax
jne 0xe66c8
movq 0x20(%rsp), %rax
movq 0x10(%rax), %rax
movq 0x8(%rax), %rax
movq (%rax), %rax
andq $0x40000, %rax          # imm = 0x40000
cmpq $0x0, %rax
je 0xe66d2
movb $0x0, 0x37(%rsp)
jmp 0xe694b
movq 0x28(%rsp), %rdi
movq 0x20(%rsp), %rax
movq 0x10(%rax), %rax
movq 0x8(%rax), %rsi
callq 0xfc80
movq %rax, 0x8(%rsp)
movq 0x8(%rsp), %rax
movzbl (%rax), %eax
cmpl $0x20, %eax
jne 0xe67e5
movq 0x8(%rsp), %rax
movq (%rax), %rax
andq $0x1000000, %rax        # imm = 0x1000000
cmpq $0x0, %rax
jne 0xe67e5
movq 0x8(%rsp), %rcx
movq 0x10(%rsp), %rax
movq %rcx, 0x8(%rax)
movq 0x8(%rsp), %rax
movq 0x10(%rax), %rax
movzbl (%rax), %eax
cmpl $0xb, %eax
jne 0xe67e3
movq 0x28(%rsp), %rdi
movq 0x20(%rsp), %rax
movq 0x10(%rax), %rax
movq 0x10(%rax), %rsi
callq 0xe59c0
testb $0x1, %al
jne 0xe675a
jmp 0xe67e3
movq 0x28(%rsp), %rdi
movq 0x10(%rsp), %rsi
callq 0xe8970
testb $0x1, %al
jne 0xe676f
jmp 0xe6779
movb $0x1, 0x37(%rsp)
jmp 0xe694b
movq 0x10(%rsp), %rax
movq 0x8(%rax), %rax
movq 0x10(%rax), %rax
movq (%rax), %rax
andq $0x4000000, %rax        # imm = 0x4000000
cmpq $0x0, %rax
je 0xe67a6
movq 0x10(%rsp), %rax
leaq 0x22ef(%rip), %rcx      # 0xe8a90
movq %rcx, (%rax)
jmp 0xe67b5
movq 0x10(%rsp), %rax
leaq 0x234e(%rip), %rcx      # 0xe8b00
movq %rcx, (%rax)
movq 0x10(%rsp), %rdi
movl $0x2, %esi
movl $0x1, %edx
xorl %ecx, %ecx
leaq 0x108a7e(%rip), %r8     # 0x1ef24b
movl $0xdda3, %r9d           # imm = 0xDDA3
callq 0xe4950
andb $0x1, %al
movb %al, 0x37(%rsp)
jmp 0xe694b
jmp 0xe67e5
jmp 0xe6944
movq 0x20(%rsp), %rax
movq 0x10(%rax), %rax
movq 0x8(%rax), %rax
movzbl (%rax), %eax
cmpl $0x1, %eax
jne 0xe6942
movq 0x20(%rsp), %rax
movq 0x10(%rax), %rax
movq 0x8(%rax), %rax
movq 0x8(%rax), %rax
movzbl (%rax), %eax
cmpl $0xa, %eax
jne 0xe6942
movq 0x20(%rsp), %rax
movq 0x10(%rax), %rax
movq 0x8(%rax), %rax
movq 0x10(%rax), %rax
movzbl (%rax), %eax
cmpl $0x1, %eax
jne 0xe6942
movq 0x20(%rsp), %rax
movq 0x10(%rax), %rax
movq 0x8(%rax), %rax
movq 0x10(%rax), %rax
movq 0x10(%rax), %rax
movq 0x28(%rsp), %rcx
cmpq 0x110(%rcx), %rax
jne 0xe68b5
movq 0x28(%rsp), %rdi
movq 0x10(%rsp), %rdx
movq 0x20(%rsp), %rax
movq 0x10(%rax), %rax
movq 0x8(%rax), %rax
movq 0x8(%rax), %rcx
movq 0x20(%rsp), %rax
movq 0x10(%rax), %rax
movq 0x8(%rax), %rax
movq 0x10(%rax), %r8
movq 0x20(%rsp), %rax
movq 0x10(%rax), %rax
movq 0x10(%rax), %rax
movl $0xd, %esi
xorl %r9d, %r9d
movq %rax, (%rsp)
callq 0xe8c30
andb $0x1, %al
movb %al, 0x37(%rsp)
jmp 0xe694b
movq 0x20(%rsp), %rax
movq 0x10(%rax), %rax
movq 0x8(%rax), %rax
movq 0x10(%rax), %rax
movq 0x10(%rax), %rax
movq 0x10(%rax), %rax
movq 0x28(%rsp), %rcx
cmpq 0x110(%rcx), %rax
jne 0xe6940
movq 0x28(%rsp), %rdi
movq 0x10(%rsp), %rdx
movq 0x20(%rsp), %rax
movq 0x10(%rax), %rax
movq 0x8(%rax), %rax
movq 0x8(%rax), %rcx
movq 0x20(%rsp), %rax
movq 0x10(%rax), %rax
movq 0x8(%rax), %rax
movq 0x10(%rax), %r8
movq 0x20(%rsp), %rax
movq 0x10(%rax), %rax
movq 0x8(%rax), %rax
movq 0x10(%rax), %rax
movq 0x10(%rax), %r9
movq 0x20(%rsp), %rax
movq 0x10(%rax), %rax
movq 0x10(%rax), %rax
movl $0xd, %esi
movq %rax, (%rsp)
callq 0xe8c30
andb $0x1, %al
movb %al, 0x37(%rsp)
jmp 0xe694b
jmp 0xe6942
jmp 0xe6944
jmp 0xe6946
movb $0x0, 0x37(%rsp)
movb 0x37(%rsp), %al
andb $0x1, %al
addq $0x38, %rsp
retq
nopw %cs:(%rax,%rax)