// File: /workspace/github_c_makefile_star2_O0/BernardTatin[P]s7sh/s7.c
// Function: c_object_iterate
static s7_pointer c_object_iterate(s7_scheme *sc, s7_pointer obj)
    {
        if (iterator_position(obj) < iterator_length(obj))
        {
            s7_pointer result, p, cur;
            p = iterator_sequence(obj);
            cur = iterator_current(obj);
            set_car(sc->z2_1, sc->x);
            set_car(sc->z2_2, sc->z); /* is this necessary? */
            set_car(cur, p);
            set_car(cdr(cur), make_integer(sc, iterator_position(obj)));
            result = (*(c_object_ref(sc, p)))(sc, cur);
            sc->x = car(sc->z2_1);
            sc->z = car(sc->z2_2);
            iterator_position(obj)++;
            if (result == ITERATOR_END)
            {
                iterator_next(obj) = iterator_finished;
                clear_iter_ok(obj);
            }
            return(result);
        }
        return(iterator_quit(obj));
    }

// Assembly:
subq $0x58, %rsp
movq %rdi, 0x48(%rsp)
movq %rsi, 0x40(%rsp)
movq 0x40(%rsp), %rax
movq 0x18(%rax), %rax
movq 0x40(%rsp), %rcx
cmpq 0x20(%rcx), %rax
jge 0x2c9d4
movq 0x40(%rsp), %rax
movq 0x8(%rax), %rax
movq %rax, 0x30(%rsp)
movq 0x40(%rsp), %rax
movq 0x10(%rax), %rax
movq %rax, 0x28(%rsp)
movq 0x48(%rsp), %rax
movq 0x4e0(%rax), %rcx
movq 0x48(%rsp), %rax
movq 0x598(%rax), %rax
movq %rcx, 0x8(%rax)
movq 0x48(%rsp), %rax
movq 0x4f0(%rax), %rcx
movq 0x48(%rsp), %rax
movq 0x5a0(%rax), %rax
movq %rcx, 0x8(%rax)
movq 0x30(%rsp), %rcx
movq 0x28(%rsp), %rax
movq %rcx, 0x8(%rax)
movq 0x40(%rsp), %rax
movq 0x18(%rax), %rax
movq %rax, 0x20(%rsp)
movq 0x20(%rsp), %rax
andq $-0x800, %rax           # imm = 0xF800
cmpq $0x0, %rax
jne 0x2c88d
movq 0x20(%rsp), %rcx
leaq 0x1e9bfd(%rip), %rax    # 0x216480
movq (%rax,%rcx,8), %rax
movq %rax, (%rsp)
jmp 0x2c903
jmp 0x2c88f
movq 0x48(%rsp), %rax
movq 0x90(%rax), %rax
movq 0x48(%rsp), %rcx
cmpq 0x98(%rcx), %rax
ja 0x2c8b3
movq 0x48(%rsp), %rdi
callq 0xc670
movq 0x48(%rsp), %rcx
movq 0x90(%rcx), %rax
movq %rax, %rdx
addq $-0x8, %rdx
movq %rdx, 0x90(%rcx)
movq -0x8(%rax), %rax
movq %rax, 0x10(%rsp)
movq 0x10(%rsp), %rax
movq $0xb, (%rax)
movq 0x20(%rsp), %rcx
movq 0x10(%rsp), %rax
movq %rcx, 0x8(%rax)
movq 0x10(%rsp), %rax
movq %rax, 0x8(%rsp)
movq 0x8(%rsp), %rax
movq %rax, (%rsp)
movq (%rsp), %rax
movq %rax, 0x18(%rsp)
movq 0x18(%rsp), %rcx
movq 0x28(%rsp), %rax
movq 0x10(%rax), %rax
movq %rcx, 0x8(%rax)
movq 0x48(%rsp), %rax
movq 0x8d8(%rax), %rax
movq 0x30(%rsp), %rcx
movq 0x8(%rcx), %rcx
movq (%rax,%rcx,8), %rax
movq 0x48(%rax), %rax
movq 0x48(%rsp), %rdi
movq 0x28(%rsp), %rsi
callq *%rax
movq %rax, 0x38(%rsp)
movq 0x48(%rsp), %rax
movq 0x598(%rax), %rax
movq 0x8(%rax), %rcx
movq 0x48(%rsp), %rax
movq %rcx, 0x4e0(%rax)
movq 0x48(%rsp), %rax
movq 0x5a0(%rax), %rax
movq 0x8(%rax), %rcx
movq 0x48(%rsp), %rax
movq %rcx, 0x4f0(%rax)
movq 0x40(%rsp), %rax
movq 0x18(%rax), %rcx
addq $0x1, %rcx
movq %rcx, 0x18(%rax)
movq 0x38(%rsp), %rax
cmpq 0x1e98ef(%rip), %rax    # 0x216290
jne 0x2c9c8
movq 0x40(%rsp), %rax
leaq -0x5ef(%rip), %rcx      # 0x2c3c0
movq %rcx, 0x28(%rax)
movq 0x40(%rsp), %rax
movabsq $-0x80000001, %rcx      # imm = 0xFFFFFFFF7FFFFFFF
andq (%rax), %rcx
movq %rcx, (%rax)
movq 0x38(%rsp), %rax
movq %rax, 0x50(%rsp)
jmp 0x2c9e3
movq 0x40(%rsp), %rdi
callq 0xcfdf0
movq %rax, 0x50(%rsp)
movq 0x50(%rsp), %rax
addq $0x58, %rsp
retq
nopl (%rax)