// File: /workspace/github_c_makefile_star2_O0/BernardTatin[P]s7sh/s7.c
// Function: fx_less_length_i
static s7_pointer fx_less_length_i(s7_scheme *sc, s7_pointer arg)
                {
                    s7_int ilen;
                    s7_pointer val;

                    val = lookup(sc, opt3_sym(cdr(arg)));  /* cadadr(arg) */
                    ilen = integer(opt2_con(cdr(arg)));    /* caddr(arg) */

                    switch (type(val))
                    {
                        case T_PAIR:         return(make_boolean(sc, s7_list_length(sc, val) < ilen));
                        case T_NIL:          return(make_boolean(sc, ilen > 0));
                        case T_STRING:       return(make_boolean(sc, string_length(val) < ilen));
                        case T_HASH_TABLE:   return(make_boolean(sc, (hash_table_mask(val) + 1) < ilen)); /* was <=? -- changed 15-Dec-15, then again 6-Jan-17: mask is len-1 */
                        case T_C_OBJECT:     return(make_boolean(sc, c_object_length_to_int(sc, val) < ilen));
                        case T_LET:          return(make_boolean(sc, let_length(sc, val) < ilen));  /* this works because let_length handles the length method itself! */

                        case T_BYTE_VECTOR:
                        case T_INT_VECTOR:
                        case T_FLOAT_VECTOR:
                        case T_VECTOR:
                                             return(make_boolean(sc, vector_length(val) < ilen));

                        case T_ITERATOR:
                                             {
                                                 s7_pointer len;
                                                 len = s7_length(sc, iterator_sequence(val));
                                                 return(make_boolean(sc, (is_t_integer(len)) && (integer(len) < ilen)));
                                             }

                        case T_CLOSURE:
                        case T_CLOSURE_STAR:
                                             if (has_active_methods(sc, val))
                                                 return(make_boolean(sc, closure_length(sc, val) < ilen));
                                             /* fall through */

                        default:
                                             return(simple_wrong_type_argument_with_type(sc, sc->length_symbol, val, a_sequence_string)); /* no check method here because we checked above */
                    }
                    return(sc->F);
                }

// Assembly:
subq $0x88, %rsp
movq %rdi, 0x78(%rsp)
movq %rsi, 0x70(%rsp)
movq 0x78(%rsp), %rdi
movq 0x70(%rsp), %rax
movq 0x10(%rax), %rax
movq 0x28(%rax), %rsi
callq 0xde990
movq %rax, 0x60(%rsp)
movq 0x70(%rsp), %rax
movq 0x10(%rax), %rax
movq 0x20(%rax), %rax
movq 0x8(%rax), %rax
movq %rax, 0x68(%rsp)
movq 0x60(%rsp), %rax
movzbl (%rax), %eax
decl %eax
movl %eax, %ecx
movq %rcx, 0x50(%rsp)
subl $0x28, %eax
ja 0x10c7d4
movq 0x50(%rsp), %rax
leaq 0xd3aaf(%rip), %rcx     # 0x1dffa8
movslq (%rcx,%rax,4), %rax
addq %rcx, %rax
jmpq *%rax
movq 0x78(%rsp), %rdi
movq 0x60(%rsp), %rsi
callq 0x31900
cmpq 0x68(%rsp), %rax
jge 0x10c52b
movq 0x78(%rsp), %rax
movq 0x118(%rax), %rax
movq %rax, 0x48(%rsp)
jmp 0x10c53c
movq 0x78(%rsp), %rax
movq 0x120(%rax), %rax
movq %rax, 0x48(%rsp)
movq 0x48(%rsp), %rax
movq %rax, 0x80(%rsp)
jmp 0x10c80e
cmpq $0x0, 0x68(%rsp)
jle 0x10c569
movq 0x78(%rsp), %rax
movq 0x118(%rax), %rax
movq %rax, 0x40(%rsp)
jmp 0x10c57a
movq 0x78(%rsp), %rax
movq 0x120(%rax), %rax
movq %rax, 0x40(%rsp)
movq 0x40(%rsp), %rax
movq %rax, 0x80(%rsp)
jmp 0x10c80e
movq 0x60(%rsp), %rax
movq 0x8(%rax), %rax
cmpq 0x68(%rsp), %rax
jge 0x10c5af
movq 0x78(%rsp), %rax
movq 0x118(%rax), %rax
movq %rax, 0x38(%rsp)
jmp 0x10c5c0
movq 0x78(%rsp), %rax
movq 0x120(%rax), %rax
movq %rax, 0x38(%rsp)
movq 0x38(%rsp), %rax
movq %rax, 0x80(%rsp)
jmp 0x10c80e
movq 0x60(%rsp), %rax
movq 0x8(%rax), %rax
addq $0x1, %rax
cmpq 0x68(%rsp), %rax
jge 0x10c5f9
movq 0x78(%rsp), %rax
movq 0x118(%rax), %rax
movq %rax, 0x30(%rsp)
jmp 0x10c60a
movq 0x78(%rsp), %rax
movq 0x120(%rax), %rax
movq %rax, 0x30(%rsp)
movq 0x30(%rsp), %rax
movq %rax, 0x80(%rsp)
jmp 0x10c80e
movq 0x78(%rsp), %rdi
movq 0x60(%rsp), %rsi
callq 0x2c710
cmpq 0x68(%rsp), %rax
jge 0x10c645
movq 0x78(%rsp), %rax
movq 0x118(%rax), %rax
movq %rax, 0x28(%rsp)
jmp 0x10c656
movq 0x78(%rsp), %rax
movq 0x120(%rax), %rax
movq %rax, 0x28(%rsp)
movq 0x28(%rsp), %rax
movq %rax, 0x80(%rsp)
jmp 0x10c80e
movq 0x78(%rsp), %rdi
movq 0x60(%rsp), %rsi
callq 0xda510
cmpq 0x68(%rsp), %rax
jge 0x10c691
movq 0x78(%rsp), %rax
movq 0x118(%rax), %rax
movq %rax, 0x20(%rsp)
jmp 0x10c6a2
movq 0x78(%rsp), %rax
movq 0x120(%rax), %rax
movq %rax, 0x20(%rsp)
movq 0x20(%rsp), %rax
movq %rax, 0x80(%rsp)
jmp 0x10c80e
movq 0x60(%rsp), %rax
movq 0x8(%rax), %rax
cmpq 0x68(%rsp), %rax
jge 0x10c6d7
movq 0x78(%rsp), %rax
movq 0x118(%rax), %rax
movq %rax, 0x18(%rsp)
jmp 0x10c6e8
movq 0x78(%rsp), %rax
movq 0x120(%rax), %rax
movq %rax, 0x18(%rsp)
movq 0x18(%rsp), %rax
movq %rax, 0x80(%rsp)
jmp 0x10c80e
movq 0x78(%rsp), %rdi
movq 0x60(%rsp), %rax
movq 0x8(%rax), %rsi
callq 0x10f040
movq %rax, 0x58(%rsp)
movq 0x58(%rsp), %rax
movzbl (%rax), %eax
cmpl $0xb, %eax
jne 0x10c742
movq 0x58(%rsp), %rax
movq 0x8(%rax), %rax
cmpq 0x68(%rsp), %rax
jge 0x10c742
movq 0x78(%rsp), %rax
movq 0x118(%rax), %rax
movq %rax, 0x10(%rsp)
jmp 0x10c753
movq 0x78(%rsp), %rax
movq 0x120(%rax), %rax
movq %rax, 0x10(%rsp)
movq 0x10(%rsp), %rax
movq %rax, 0x80(%rsp)
jmp 0x10c80e
movq 0x60(%rsp), %rax
movq (%rax), %rax
andq $0x40000000, %rax       # imm = 0x40000000
cmpq $0x0, %rax
je 0x10c7d2
movq 0x78(%rsp), %rax
testb $0x1, 0x24c(%rax)
je 0x10c7d2
movq 0x78(%rsp), %rdi
movq 0x60(%rsp), %rsi
callq 0x2c5e0
cltq
cmpq 0x68(%rsp), %rax
jge 0x10c7b2
movq 0x78(%rsp), %rax
movq 0x118(%rax), %rax
movq %rax, 0x8(%rsp)
jmp 0x10c7c3
movq 0x78(%rsp), %rax
movq 0x120(%rax), %rax
movq %rax, 0x8(%rsp)
movq 0x8(%rsp), %rax
movq %rax, 0x80(%rsp)
jmp 0x10c80e
jmp 0x10c7d4
movq 0x78(%rsp), %rdi
movq 0x78(%rsp), %rax
movq 0x1218(%rax), %rax
movq 0x8(%rax), %rsi
movq 0x60(%rsp), %rdx
movq 0x78(%rsp), %rax
movq 0x140(%rax), %rcx
movq 0x10df3f(%rip), %r8     # 0x21a740
callq 0x14a60
movq %rax, 0x80(%rsp)
movq 0x80(%rsp), %rax
addq $0x88, %rsp
retq
nop