// File: /workspace/github_c_makefile_star2_O2/BernardTatin[P]s7sh/s7.c
// Function: gc
static int64_t gc(s7_scheme *sc)
#endif
        {
            s7_cell **old_free_heap_top;
#if (!MS_WINDOWS)
            struct timeval start_time;
            struct timezone z0;
#endif

            /* mark all live objects (the symbol table is in permanent memory, not the heap) */

#if (!MS_WINDOWS)
            if (show_gc_stats(sc))
                gettimeofday(&start_time, &z0);
            /* this is apparently deprecated in favor of clock_gettime -- what compile-time switch to use here?
             *   _POSIX_TIMERS, or perhaps use CLOCK_REALTIME, but clock_gettime requires -lrt -- no thanks.
             */
#endif
            mark_rootlet(sc);
            mark_owlet(sc);

            gc_mark(sc->code);
            if (sc->args) gc_mark(sc->args);
            mark_let(sc->envir);
            mark_current_code(sc); /* probably redundant if with_history */

            mark_stack_1(sc->stack, s7_stack_top(sc));
            gc_mark(sc->u);
            gc_mark(sc->v);
            gc_mark(sc->w);
            gc_mark(sc->x);
            gc_mark(sc->y);
            gc_mark(sc->z);
            gc_mark(sc->value);

            gc_mark(sc->temp1);
            gc_mark(sc->temp2);
            gc_mark(sc->temp3);
            gc_mark(sc->temp4);
            gc_mark(sc->temp5);
            gc_mark(sc->temp6);
            gc_mark(sc->temp7);
            gc_mark(sc->temp8);
            gc_mark(sc->temp9);
            gc_mark(sc->temp10);

            set_mark(sc->input_port);
            mark_input_port_stack(sc);
            set_mark(sc->output_port);
            set_mark(sc->error_port);
            gc_mark(sc->stacktrace_defaults);
            gc_mark(sc->autoload_table);
            gc_mark(sc->default_rng);

            /* permanent lists that might escape and therefore need GC protection */
            mark_pair(sc->temp_cell_1);
            mark_pair(sc->temp_cell_2);
            gc_mark(car(sc->t1_1));
            gc_mark(car(sc->t2_1)); gc_mark(car(sc->t2_2));
            gc_mark(car(sc->t3_1)); gc_mark(car(sc->t3_2)); gc_mark(car(sc->t3_3)); gc_mark(car(sc->t4_1));
            gc_mark(car(sc->plist_1));
            gc_mark(car(sc->clist_1));
            gc_mark(car(sc->plist_2)); gc_mark(cadr(sc->plist_2));
            gc_mark(car(sc->qlist_2)); gc_mark(cadr(sc->qlist_2));
            gc_mark(car(sc->qlist_3)); gc_mark(cadr(sc->qlist_3)); gc_mark(caddr(sc->qlist_3));
            gc_mark(car(sc->u1_1));

            {
                s7_pointer p;
                for (p = sc->wrong_type_arg_info; is_pair(p); p = cdr(p)) gc_mark(car(p));
                for (p = sc->simple_wrong_type_arg_info; is_pair(p); p = cdr(p)) gc_mark(car(p));
                for (p = sc->out_of_range_info; is_pair(p); p = cdr(p)) gc_mark(car(p));
                for (p = sc->simple_out_of_range_info; is_pair(p); p = cdr(p)) gc_mark(car(p));
                gc_mark(car(sc->elist_1));
                gc_mark(car(sc->elist_2));
                gc_mark(cadr(sc->elist_2));
                for (p = sc->plist_3; is_pair(p); p = cdr(p)) gc_mark(car(p));
                for (p = sc->elist_3; is_pair(p); p = cdr(p)) gc_mark(car(p));
                for (p = sc->elist_4; is_pair(p); p = cdr(p)) gc_mark(car(p));
                for (p = sc->elist_5; is_pair(p); p = cdr(p)) gc_mark(car(p));
            }

            {
                s7_int i;
                s7_pointer p;
                for (i = 1; i < NUM_SAFE_LISTS; i++)
                    if ((is_pair(sc->safe_lists[i])) &&
                            (list_is_in_use(sc->safe_lists[i])))
                        for (p = sc->safe_lists[i]; is_pair(p); p = cdr(p))
                            gc_mark(car(p));

                for (i = 0; i < sc->setters_loc; i++)
                    gc_mark(cdr(sc->setters[i]));

                for (i = 0; i < sc->num_fdats; i++)
                    if (sc->fdats[i])
                        gc_mark(sc->fdats[i]->curly_arg);

                if (sc->rec_stack)
                {
                    just_mark(sc->rec_stack);
                    for (i = 0; i < sc->rec_loc; i++)
                        gc_mark(vector_element(sc->rec_stack, i));
                }
            }
            mark_vector(sc->protected_objects);
            mark_vector(sc->protected_setters);
            set_mark(sc->protected_setter_symbols);

            /* now protect recent allocations using the free_heap cells above the current free_heap_top (if any).
             * cells above sc->free_heap_top might be malloc'd garbage (after heap reallocation), so we keep track of
             *   where the last actually freed cells were after the previous GC call.  We're trying to
             *   GC protect the previous GC_TEMPS_SIZE allocated pointers so that the caller doesn't have
             *   to gc-protect every temporary cell.
             * There's one remaining possible problem.  s7_remove_from_heap frees cells outside
             *   the GC and might push free_heap_top beyond its previous_free_heap_top, then
             *   an immediate explicit gc call might not see those temp cells.
             */
            {
                s7_pointer *tmps, *tmps_top;

                tmps = sc->free_heap_top;
                tmps_top = tmps + GC_TEMPS_SIZE;
                if (tmps_top > sc->previous_free_heap_top)
                    tmps_top = sc->previous_free_heap_top;

                while (tmps < tmps_top)
                    gc_mark(*tmps++);
            }
            mark_op_stack(sc);
            mark_permanent_objects(sc);
            mark_lamlets(sc);

            /* free up all unmarked objects */
            old_free_heap_top = sc->free_heap_top;

            {
                s7_pointer *fp, *tp, *heap_top;
                fp = sc->free_heap_top;

                tp = sc->heap;
                heap_top = (s7_pointer *)(sc->heap + sc->heap_size);

#if S7_DEBUGGING
#define gc_call(P, Tp)							\
                p = (*tp++);							\
                if (is_marked(T_Any(p)))						\
                clear_mark(p);							\
                else								\
                {									\
                    if (!is_free_and_clear(p))					\
                    {								\
                        p->debugger_bits = 0; p->opt1_func = NULL; p->opt2_func = NULL; p->opt3_func = NULL; p->gc_func = func; p->gc_line = line; \
                        if (has_odd_bits(p))					\
                        {char *s; fprintf(stderr, "odd bits: %s\n", s = describe_type_bits(sc, p)); free(s);} \
                        clear_type(p);						\
                        (*fp++) = p;						\
                    }}
#else
#define gc_call(P, Tp) p = (*tp++); if (is_marked(p)) clear_mark(p); else {if (!is_free_and_clear(p)) {clear_type(p); (*fp++) = p;}}
#endif

                while (tp < heap_top)          /* != here or ^ makes no difference */
                {
                    s7_pointer p;
                    LOOP_8(gc_call(p, tp));
                    LOOP_8(gc_call(p, tp));
                    LOOP_8(gc_call(p, tp));
                    LOOP_8(gc_call(p, tp));
                }

                sc->free_heap_top = fp;
                sweep(sc);
            }

            unmark_permanent_objects(sc);
            sc->gc_freed = (int64_t)(sc->free_heap_top - old_free_heap_top);

            if (show_gc_stats(sc))
            {
#if (!MS_WINDOWS)
                struct timeval t0;
                double secs;
                gettimeofday(&t0, &z0);
                secs = (t0.tv_sec - start_time.tv_sec) +  0.000001 * (t0.tv_usec - start_time.tv_usec);
#if S7_DEBUGGING
                s7_warn(sc, 256, "%s[%d]: gc freed %" print_s7_int "/%" print_s7_int " (free: %" print_pointer "), time: %f\n",
                        func, line, sc->gc_freed, sc->heap_size, (intptr_t)(sc->free_heap_top - sc->free_heap), secs);
#else
                s7_warn(sc, 256, "gc freed %" print_s7_int "/%" print_s7_int " (free: %" print_pointer "), time: %f\n",
                        sc->gc_freed, sc->heap_size, (intptr_t)(sc->free_heap_top - sc->free_heap), secs);
#endif
#else
                s7_warn(sc, 128, "gc freed %" print_s7_int "/%" print_s7_int "\n", sc->gc_freed, sc->heap_size);
#endif
            }
            sc->previous_free_heap_top = sc->free_heap_top;

            return(sc->gc_freed);
        }

// Assembly:
pushq %rbp
pushq %r15
pushq %r14
pushq %r13
pushq %r12
pushq %rbx
subq $0x48, %rsp
movq %rdi, %rbx
testb $0x1, 0x21c(%rdi)
je 0x71517
leaq 0x28(%rsp), %rdi
leaq 0x20(%rsp), %rsi
callq 0x8240
movabsq $0x7fffffffffffffff, %rdx # imm = 0x7FFFFFFFFFFFFFFF
movq 0x150(%rbx), %rax
movq 0x160(%rbx), %rcx
movq 0x10(%rax), %r15
leaq (%r15,%rcx,8), %r12
leaq 0x1(%rdx), %r14
orq %r14, (%rax)
cmpq %r12, %r15
jae 0x71555
movq (%r15), %rax
addq $0x8, %r15
movq 0x10(%rax), %rdi
callq 0x72838
jmp 0x7153e
movq 0x1a0(%rbx), %rdi
callq 0x72969
movq 0x120(%rbx), %rax
movq 0x1a8(%rbx), %rcx
movq %rax, 0x10(%rcx)
movq 0x1a8(%rbx), %rdi
callq 0x72969
movq 0x1b0(%rbx), %rdi
callq 0x72969
movq 0x1b8(%rbx), %rdi
callq 0x72969
movq 0x1c0(%rbx), %rdi
callq 0x72969
movq 0x198(%rbx), %rax
orq %r14, (%rax)
movq 0x198(%rbx), %rax
movq 0x10(%rax), %rdi
callq 0x7284e
movq (%rbx), %rdi
callq 0x72838
movq 0x10(%rbx), %rdi
testq %rdi, %rdi
je 0x715d3
callq 0x72838
movq 0x8(%rbx), %rdi
callq 0x7284e
movq 0x28(%rbx), %rdi
callq 0x72838
movq 0x38(%rbx), %rdi
movq 0x50(%rbx), %rsi
subq 0x48(%rbx), %rsi
sarq $0x3, %rsi
callq 0x728c1
movq 0x4c8(%rbx), %rdi
callq 0x72838
movq 0x4d0(%rbx), %rdi
callq 0x72838
movq 0x4d8(%rbx), %rdi
callq 0x72838
movq 0x4e0(%rbx), %rdi
callq 0x72838
movq 0x4e8(%rbx), %rdi
callq 0x72838
movq 0x4f0(%rbx), %rdi
callq 0x72838
movq 0x20(%rbx), %rdi
callq 0x72838
movq 0x4f8(%rbx), %rdi
callq 0x72838
movq 0x500(%rbx), %rdi
callq 0x72838
movq 0x508(%rbx), %rdi
callq 0x72838
movq 0x510(%rbx), %rdi
callq 0x72838
movq 0x518(%rbx), %rdi
callq 0x72838
movq 0x520(%rbx), %rdi
callq 0x72838
movq 0x528(%rbx), %rdi
callq 0x72838
movq 0x530(%rbx), %rdi
callq 0x72838
movq 0x538(%rbx), %rdi
callq 0x72838
movq 0x540(%rbx), %rdi
callq 0x72838
movq 0x170(%rbx), %rax
orq %r14, (%rax)
movq 0x178(%rbx), %r15
movl 0x184(%rbx), %eax
leaq (%r15,%rax,8), %r12
cmpq %r12, %r15
jae 0x716f1
movq (%r15), %rdi
callq 0x72838
addq $0x8, %r15
jmp 0x716de
movq 0x188(%rbx), %rax
orq %r14, (%rax)
movq 0x190(%rbx), %rax
orq %r14, (%rax)
movq 0x2e0(%rbx), %rdi
callq 0x72838
movq 0x2140(%rbx), %rdi
callq 0x72838
movq 0xaa0(%rbx), %rdi
callq 0x72838
movq 0x550(%rbx), %rdi
callq 0x72903
movq 0x558(%rbx), %rdi
callq 0x72903
movq 0x568(%rbx), %rax
movq 0x8(%rax), %rdi
callq 0x72838
movq 0x570(%rbx), %rax
movq 0x8(%rax), %rdi
callq 0x72838
movq 0x578(%rbx), %rax
movq 0x8(%rax), %rdi
callq 0x72838
movq 0x580(%rbx), %rax
movq 0x8(%rax), %rdi
callq 0x72838
movq 0x588(%rbx), %rax
movq 0x8(%rax), %rdi
callq 0x72838
movq 0x590(%rbx), %rax
movq 0x8(%rax), %rdi
callq 0x72838
movq 0x5a8(%rbx), %rax
movq 0x8(%rax), %rdi
callq 0x72838
movq 0x700(%rbx), %rax
movq 0x8(%rax), %rdi
callq 0x72838
movq 0x730(%rbx), %rax
movq 0x8(%rax), %rdi
callq 0x72838
movq 0x708(%rbx), %rax
movq 0x8(%rax), %rdi
callq 0x72838
movq 0x708(%rbx), %rax
movq 0x10(%rax), %rax
movq 0x8(%rax), %rdi
callq 0x72838
movq 0x720(%rbx), %rax
movq 0x8(%rax), %rdi
callq 0x72838
movq 0x720(%rbx), %rax
movq 0x10(%rax), %rax
movq 0x8(%rax), %rdi
callq 0x72838
movq 0x728(%rbx), %rax
movq 0x8(%rax), %rdi
callq 0x72838
movq 0x728(%rbx), %rax
movq 0x10(%rax), %rax
movq 0x8(%rax), %rdi
callq 0x72838
movq 0x728(%rbx), %rax
movq 0x10(%rax), %rax
movq 0x10(%rax), %rax
movq 0x8(%rax), %rdi
callq 0x72838
movq 0x560(%rbx), %rax
movq 0x8(%rax), %rdi
callq 0x72838
leaq 0x1ee0(%rbx), %r15
movq (%r15), %r15
cmpb $0x1, (%r15)
jne 0x71884
movq 0x8(%r15), %rdi
callq 0x72838
addq $0x10, %r15
jmp 0x7186c
leaq 0x1ef0(%rbx), %r15
movq (%r15), %r15
cmpb $0x1, (%r15)
jne 0x718a3
movq 0x8(%r15), %rdi
callq 0x72838
addq $0x10, %r15
jmp 0x7188b
leaq 0x1ee8(%rbx), %r15
movq (%r15), %r15
cmpb $0x1, (%r15)
jne 0x718c2
movq 0x8(%r15), %rdi
callq 0x72838
addq $0x10, %r15
jmp 0x718aa
leaq 0x1ef8(%rbx), %r15
movq (%r15), %r15
cmpb $0x1, (%r15)
jne 0x718e1
movq 0x8(%r15), %rdi
callq 0x72838
addq $0x10, %r15
jmp 0x718c9
movq 0x6d8(%rbx), %rax
movq 0x8(%rax), %rdi
callq 0x72838
movq 0x6e0(%rbx), %rax
movq 0x8(%rax), %rdi
callq 0x72838
movq 0x6e0(%rbx), %rax
movq 0x10(%rax), %rax
movq 0x8(%rax), %rdi
callq 0x72838
leaq 0x718(%rbx), %r15
movq (%r15), %r15
cmpb $0x1, (%r15)
jne 0x71934
movq 0x8(%r15), %rdi
callq 0x72838
addq $0x10, %r15
jmp 0x7191c
leaq 0x6e8(%rbx), %r15
movq (%r15), %r15
cmpb $0x1, (%r15)
jne 0x71953
movq 0x8(%r15), %rdi
callq 0x72838
addq $0x10, %r15
jmp 0x7193b
leaq 0x6f0(%rbx), %r15
movq (%r15), %r15
cmpb $0x1, (%r15)
jne 0x71972
movq 0x8(%r15), %rdi
callq 0x72838
addq $0x10, %r15
jmp 0x7195a
leaq 0x6f8(%rbx), %r15
movq (%r15), %r15
cmpb $0x1, (%r15)
jne 0x71991
movq 0x8(%r15), %rdi
callq 0x72838
addq $0x10, %r15
jmp 0x71979
pushq $0x1
popq %r15
cmpq $0x40, %r15
je 0x719d2
movq 0x1f38(%rbx,%r15,8), %r12
cmpb $0x1, (%r12)
jne 0x719b4
movl (%r12), %eax
btl $0xa, %eax
jb 0x719b9
incq %r15
jmp 0x71995
cmpb $0x1, %al
jne 0x719b4
movq 0x8(%r12), %rdi
callq 0x72838
movq 0x10(%r12), %r12
movb (%r12), %al
jmp 0x719b9
xorl %r15d, %r15d
cmpq 0x7c0(%rbx), %r15
jge 0x719f7
movq 0x7b0(%rbx), %rax
movq (%rax,%r15,8), %rax
movq 0x10(%rax), %rdi
callq 0x72838
incq %r15
jmp 0x719d5
xorl %r15d, %r15d
movslq 0x6d0(%rbx), %rax
cmpq %rax, %r15
jge 0x71a24
movq 0x6c8(%rbx), %rax
movq (%rax,%r15,8), %rax
testq %rax, %rax
je 0x71a1f
movq 0x30(%rax), %rdi
callq 0x72838
incq %r15
jmp 0x719fa
movq 0x2e8(%rbx), %rax
testq %rax, %rax
je 0x71a58
orq %r14, (%rax)
xorl %r15d, %r15d
cmpq 0x2d0(%rbx), %r15
jge 0x71a58
movq 0x2e8(%rbx), %rax
movq 0x10(%rax), %rax
movq (%rax,%r15,8), %rdi
callq 0x72838
incq %r15
jmp 0x71a36
movq 0xd0(%rbx), %rdi
callq 0x7293a
movq 0xd8(%rbx), %rdi
callq 0x7293a
movq 0xe0(%rbx), %rax
orq %r14, (%rax)
movq 0x90(%rbx), %r14
movq 0xa0(%rbx), %rax
leaq 0x800(%r14), %r15
cmpq %rax, %r15
cmovaq %rax, %r15
cmpq %r15, %r14
jae 0x71aa9
movq (%r14), %rdi
addq $0x8, %r14
callq 0x72838
jmp 0x71a96
movq 0x60(%rbx), %r14
movq 0x68(%rbx), %r15
cmpq %r15, %r14
jae 0x71ac4
movq (%r14), %rdi
addq $0x8, %r14
callq 0x72838
jmp 0x71ab1
leaq 0xc0(%rbx), %r14
movq %r14, 0x18(%rsp)
movq (%r14), %r14
testq %r14, %r14
je 0x71ae6
movq (%r14), %rdi
callq 0x72838
addq $0x8, %r14
jmp 0x71ad0
leaq 0xc8(%rbx), %r15
movq %r15, %r14
movq (%r14), %r14
testq %r14, %r14
je 0x71b06
movq (%r14), %rdi
callq 0x72838
addq $0x8, %r14
jmp 0x71af0
movq %r15, 0x10(%rsp)
movq 0x7a8(%rbx), %r14
xorl %r15d, %r15d
cmpq 0x10(%r14), %r15
jge 0x71b86
movq (%r14), %rax
movq (%rax,%r15,8), %rax
cmpq $0x0, (%rax)
je 0x71b81
movq 0x28(%rax), %rdi
cmpb $0x1c, (%rdi)
jne 0x71b7c
movq (%rdi), %rax
testq %rax, %rax
js 0x71b7c
shrq $0x30, %rax
testb $0x1, %al
je 0x71b7c
movq 0x8(%rdi), %rcx
movq 0x10(%rcx), %rcx
cmpb $0x28, (%rcx)
jne 0x71b73
movq 0x18(%rcx), %rax
addq $0x8, %rax
movq (%rax), %rax
testq %rax, %rax
je 0x71b6f
movq 0x120(%rbx), %rcx
movq %rcx, 0x10(%rax)
addq $0x18, %rax
jmp 0x71b56
movzwl 0x6(%rdi), %eax
andl $0xfffe, %eax           # imm = 0xFFFE
movw %ax, 0x6(%rdi)
callq 0x72838
incq %r15
jmp 0x71b15
movq 0x80(%rbx), %rax
movq 0x90(%rbx), %rsi
movq 0xa8(%rbx), %rcx
leaq (%rax,%rcx,8), %rdx
movq %rsi, 0x8(%rsp)
movq %rsi, %rcx
movabsq $0x7fffffffffffffff, %r8 # imm = 0x7FFFFFFFFFFFFFFF
cmpq %rdx, %rax
jae 0x72014
movq (%rax), %rsi
movq (%rsi), %rdi
testq %rdi, %rdi
js 0x71bd4
je 0x71bda
andq $0x0, (%rsi)
movq %rsi, (%rcx)
addq $0x8, %rcx
jmp 0x71bda
andq %r8, %rdi
movq %rdi, (%rsi)
movq 0x8(%rax), %rsi
movq (%rsi), %rdi
testq %rdi, %rdi
js 0x71bf5
je 0x71bfb
andq $0x0, (%rsi)
movq %rsi, (%rcx)
addq $0x8, %rcx
jmp 0x71bfb
andq %r8, %rdi
movq %rdi, (%rsi)
movq 0x10(%rax), %rsi
movq (%rsi), %rdi
testq %rdi, %rdi
js 0x71c16
je 0x71c1c
andq $0x0, (%rsi)
movq %rsi, (%rcx)
addq $0x8, %rcx
jmp 0x71c1c
andq %r8, %rdi
movq %rdi, (%rsi)
movq 0x18(%rax), %rsi
movq (%rsi), %rdi
testq %rdi, %rdi
js 0x71c37
je 0x71c3d
andq $0x0, (%rsi)
movq %rsi, (%rcx)
addq $0x8, %rcx
jmp 0x71c3d
andq %r8, %rdi
movq %rdi, (%rsi)
movq 0x20(%rax), %rsi
movq (%rsi), %rdi
testq %rdi, %rdi
js 0x71c58
je 0x71c5e
andq $0x0, (%rsi)
movq %rsi, (%rcx)
addq $0x8, %rcx
jmp 0x71c5e
andq %r8, %rdi
movq %rdi, (%rsi)
movq 0x28(%rax), %rsi
movq (%rsi), %rdi
testq %rdi, %rdi
js 0x71c79
je 0x71c7f
andq $0x0, (%rsi)
movq %rsi, (%rcx)
addq $0x8, %rcx
jmp 0x71c7f
andq %r8, %rdi
movq %rdi, (%rsi)
movq 0x30(%rax), %rsi
movq (%rsi), %rdi
testq %rdi, %rdi
js 0x71c9a
je 0x71ca0
andq $0x0, (%rsi)
movq %rsi, (%rcx)
addq $0x8, %rcx
jmp 0x71ca0
andq %r8, %rdi
movq %rdi, (%rsi)
movq 0x38(%rax), %rsi
movq (%rsi), %rdi
testq %rdi, %rdi
js 0x71cbb
je 0x71cc1
andq $0x0, (%rsi)
movq %rsi, (%rcx)
addq $0x8, %rcx
jmp 0x71cc1
andq %r8, %rdi
movq %rdi, (%rsi)
movq 0x40(%rax), %rsi
movq (%rsi), %rdi
testq %rdi, %rdi
js 0x71cdc
je 0x71ce2
andq $0x0, (%rsi)
movq %rsi, (%rcx)
addq $0x8, %rcx
jmp 0x71ce2
andq %r8, %rdi
movq %rdi, (%rsi)
movq 0x48(%rax), %rsi
movq (%rsi), %rdi
testq %rdi, %rdi
js 0x71cfd
je 0x71d03
andq $0x0, (%rsi)
movq %rsi, (%rcx)
addq $0x8, %rcx
jmp 0x71d03
andq %r8, %rdi
movq %rdi, (%rsi)
movq 0x50(%rax), %rsi
movq (%rsi), %rdi
testq %rdi, %rdi
js 0x71d1e
je 0x71d24
andq $0x0, (%rsi)
movq %rsi, (%rcx)
addq $0x8, %rcx
jmp 0x71d24
andq %r8, %rdi
movq %rdi, (%rsi)
movq 0x58(%rax), %rsi
movq (%rsi), %rdi
testq %rdi, %rdi
js 0x71d3f
je 0x71d45
andq $0x0, (%rsi)
movq %rsi, (%rcx)
addq $0x8, %rcx
jmp 0x71d45
andq %r8, %rdi
movq %rdi, (%rsi)
movq 0x60(%rax), %rsi
movq (%rsi), %rdi
testq %rdi, %rdi
js 0x71d60
je 0x71d66
andq $0x0, (%rsi)
movq %rsi, (%rcx)
addq $0x8, %rcx
jmp 0x71d66
andq %r8, %rdi
movq %rdi, (%rsi)
movq 0x68(%rax), %rsi
movq (%rsi), %rdi
testq %rdi, %rdi
js 0x71d81
je 0x71d87
andq $0x0, (%rsi)
movq %rsi, (%rcx)
addq $0x8, %rcx
jmp 0x71d87
andq %r8, %rdi
movq %rdi, (%rsi)
movq 0x70(%rax), %rsi
movq (%rsi), %rdi
testq %rdi, %rdi
js 0x71da2
je 0x71da8
andq $0x0, (%rsi)
movq %rsi, (%rcx)
addq $0x8, %rcx
jmp 0x71da8
andq %r8, %rdi
movq %rdi, (%rsi)
movq 0x78(%rax), %rsi
movq (%rsi), %rdi
testq %rdi, %rdi
js 0x71dc3
je 0x71dc9
andq $0x0, (%rsi)
movq %rsi, (%rcx)
addq $0x8, %rcx
jmp 0x71dc9
andq %r8, %rdi
movq %rdi, (%rsi)
movq 0x80(%rax), %rsi
movq (%rsi), %rdi
testq %rdi, %rdi
js 0x71de7
je 0x71ded
andq $0x0, (%rsi)
movq %rsi, (%rcx)
addq $0x8, %rcx
jmp 0x71ded
andq %r8, %rdi
movq %rdi, (%rsi)
movq 0x88(%rax), %rsi
movq (%rsi), %rdi
testq %rdi, %rdi
js 0x71e0b
je 0x71e11
andq $0x0, (%rsi)
movq %rsi, (%rcx)
addq $0x8, %rcx
jmp 0x71e11
andq %r8, %rdi
movq %rdi, (%rsi)
movq 0x90(%rax), %rsi
movq (%rsi), %rdi
testq %rdi, %rdi
js 0x71e2f
je 0x71e35
andq $0x0, (%rsi)
movq %rsi, (%rcx)
addq $0x8, %rcx
jmp 0x71e35
andq %r8, %rdi
movq %rdi, (%rsi)
movq 0x98(%rax), %rsi
movq (%rsi), %rdi
testq %rdi, %rdi
js 0x71e53
je 0x71e59
andq $0x0, (%rsi)
movq %rsi, (%rcx)
addq $0x8, %rcx
jmp 0x71e59
andq %r8, %rdi
movq %rdi, (%rsi)
movq 0xa0(%rax), %rsi
movq (%rsi), %rdi
testq %rdi, %rdi
js 0x71e77
je 0x71e7d
andq $0x0, (%rsi)
movq %rsi, (%rcx)
addq $0x8, %rcx
jmp 0x71e7d
andq %r8, %rdi
movq %rdi, (%rsi)
movq 0xa8(%rax), %rsi
movq (%rsi), %rdi
testq %rdi, %rdi
js 0x71e9b
je 0x71ea1
andq $0x0, (%rsi)
movq %rsi, (%rcx)
addq $0x8, %rcx
jmp 0x71ea1
andq %r8, %rdi
movq %rdi, (%rsi)
movq 0xb0(%rax), %rsi
movq (%rsi), %rdi
testq %rdi, %rdi
js 0x71ebf
je 0x71ec5
andq $0x0, (%rsi)
movq %rsi, (%rcx)
addq $0x8, %rcx
jmp 0x71ec5
andq %r8, %rdi
movq %rdi, (%rsi)
movq 0xb8(%rax), %rsi
movq (%rsi), %rdi
testq %rdi, %rdi
js 0x71ee3
je 0x71ee9
andq $0x0, (%rsi)
movq %rsi, (%rcx)
addq $0x8, %rcx
jmp 0x71ee9
andq %r8, %rdi
movq %rdi, (%rsi)
movq 0xc0(%rax), %rsi
movq (%rsi), %rdi
testq %rdi, %rdi
js 0x71f07
je 0x71f0d
andq $0x0, (%rsi)
movq %rsi, (%rcx)
addq $0x8, %rcx
jmp 0x71f0d
andq %r8, %rdi
movq %rdi, (%rsi)
movq 0xc8(%rax), %rsi
movq (%rsi), %rdi
testq %rdi, %rdi
js 0x71f2b
je 0x71f31
andq $0x0, (%rsi)
movq %rsi, (%rcx)
addq $0x8, %rcx
jmp 0x71f31
andq %r8, %rdi
movq %rdi, (%rsi)
movq 0xd0(%rax), %rsi
movq (%rsi), %rdi
testq %rdi, %rdi
js 0x71f4f
je 0x71f55
andq $0x0, (%rsi)
movq %rsi, (%rcx)
addq $0x8, %rcx
jmp 0x71f55
andq %r8, %rdi
movq %rdi, (%rsi)
movq 0xd8(%rax), %rsi
movq (%rsi), %rdi
testq %rdi, %rdi
js 0x71f73
je 0x71f79
andq $0x0, (%rsi)
movq %rsi, (%rcx)
addq $0x8, %rcx
jmp 0x71f79
andq %r8, %rdi
movq %rdi, (%rsi)
movq 0xe0(%rax), %rsi
movq (%rsi), %rdi
testq %rdi, %rdi
js 0x71f97
je 0x71f9d
andq $0x0, (%rsi)
movq %rsi, (%rcx)
addq $0x8, %rcx
jmp 0x71f9d
andq %r8, %rdi
movq %rdi, (%rsi)
movq 0xe8(%rax), %rsi
movq (%rsi), %rdi
testq %rdi, %rdi
js 0x71fbb
je 0x71fc1
andq $0x0, (%rsi)
movq %rsi, (%rcx)
addq $0x8, %rcx
jmp 0x71fc1
andq %r8, %rdi
movq %rdi, (%rsi)
movq 0xf0(%rax), %rsi
movq (%rsi), %rdi
testq %rdi, %rdi
js 0x71fdf
je 0x71fe5
andq $0x0, (%rsi)
movq %rsi, (%rcx)
addq $0x8, %rcx
jmp 0x71fe5
andq %r8, %rdi
movq %rdi, (%rsi)
movq 0xf8(%rax), %rsi
movq (%rsi), %rdi
testq %rdi, %rdi
js 0x72003
je 0x72009
andq $0x0, (%rsi)
movq %rsi, (%rcx)
addq $0x8, %rcx
jmp 0x72009
andq %r8, %rdi
movq %rdi, (%rsi)
addq $0x100, %rax            # imm = 0x100
jmp 0x71bb1
movq %rcx, 0x90(%rbx)
movq 0x738(%rbx), %r14
movq 0x10(%r14), %rax
testq %rax, %rax
jle 0x72065
xorl %r15d, %r15d
xorl %r12d, %r12d
cmpq %rax, %r15
jge 0x72061
movq (%r14), %rdx
movq (%rdx,%r15,8), %rcx
cmpq $0x0, (%rcx)
je 0x7204c
movq %rcx, (%rdx,%r12,8)
incq %r12
jmp 0x7205c
movq 0x20(%rcx), %rsi
movq %rbx, %rdi
callq 0x9439
movq 0x10(%r14), %rax
incq %r15
jmp 0x72031
movq %r12, 0x10(%r14)
movq 0x778(%rbx), %r14
movq 0x10(%r14), %rax
testq %rax, %rax
jle 0x72105
xorl %r12d, %r12d
movl $0x7fed, %ebp           # imm = 0x7FED
xorl %r15d, %r15d
cmpq %rax, %r12
jge 0x720ff
movq (%r14), %rdx
movq (%rdx,%r12,8), %rcx
cmpq $0x0, (%rcx)
je 0x7209f
movq %rcx, (%rdx,%r15,8)
incq %r15
jmp 0x720fa
movq 0x8(%rcx), %rsi
movq 0x18(%rsi), %rax
xorl %edx, %edx
divq %rbp
movq 0x148(%rbx), %rax
movq 0x10(%rax), %rdi
movl %edx, %edx
movq (%rdi,%rdx,8), %rax
cmpq %rcx, 0x8(%rax)
je 0x720db
movq %rax, %rdx
movq 0x10(%rax), %rax
cmpb $0x1, (%rax)
jne 0x720ea
cmpq %rcx, 0x8(%rax)
jne 0x720c3
addq $0x10, %rdx
jmp 0x720df
leaq (%rdi,%rdx,8), %rdx
movq 0x10(%rax), %rax
movq %rax, (%rdx)
movq 0x8(%rcx), %rsi
movq 0x28(%rsi), %rsi
movq %rbx, %rdi
callq 0x9439
movq 0x10(%r14), %rax
incq %r12
jmp 0x72084
movq %r15, 0x10(%r14)
jmp 0x72108
movq %rax, %r15
testq %r15, %r15
jne 0x7211b
leaq -0x1372(%rip), %rax     # 0x70da2
movq %rax, 0xa36a5(%rip)     # 0x1157c0
movq 0x780(%rbx), %r14
movq 0x10(%r14), %rax
testq %rax, %rax
jle 0x72162
xorl %r15d, %r15d
xorl %r12d, %r12d
cmpq %rax, %r15
jge 0x7215e
movq (%r14), %rdx
movq (%rdx,%r15,8), %rcx
cmpq $0x0, (%rcx)
je 0x7214c
movq %rcx, (%rdx,%r12,8)
incq %r12
jmp 0x72159
movq 0x20(%rcx), %rdi
callq 0x8050
movq 0x10(%r14), %rax
incq %r15
jmp 0x72131
movq %r12, 0x10(%r14)
movq 0x768(%rbx), %r14
movq 0x10(%r14), %rax
testq %rax, %rax
jle 0x721b6
xorl %r15d, %r15d
xorl %r12d, %r12d
cmpq %rax, %r15
jge 0x721b2
movq (%r14), %rdx
movq (%rdx,%r15,8), %rcx
cmpq $0x0, (%rcx)
je 0x72193
movq %rcx, (%rdx,%r12,8)
incq %r12
jmp 0x721ad
movq 0x8d8(%rbx), %rax
movq 0x8(%rcx), %rdx
movq 0x10(%rcx), %rdi
movq (%rax,%rdx,8), %rax
callq *0x28(%rax)
movq 0x10(%r14), %rax
incq %r15
jmp 0x72178
movq %r12, 0x10(%r14)
movq 0x788(%rbx), %r14
movq 0x10(%r14), %rax
testq %rax, %rax
jle 0x72204
xorl %r15d, %r15d
xorl %r12d, %r12d
cmpq %rax, %r15
jge 0x72200
movq (%r14), %rdx
movq (%rdx,%r15,8), %rcx
cmpq $0x0, (%rcx)
je 0x721e7
movq %rcx, (%rdx,%r12,8)
incq %r12
jmp 0x721fb
movq 0x8(%rcx), %rax
movq 0x18(%rax), %rsi
movq %rbx, %rdi
callq 0x9439
movq 0x10(%r14), %rax
incq %r15
jmp 0x721cc
movq %r12, 0x10(%r14)
movq 0x740(%rbx), %r14
movq 0x10(%r14), %rax
testq %rax, %rax
jle 0x7224e
xorl %r15d, %r15d
xorl %r12d, %r12d
cmpq %rax, %r15
jge 0x7224a
movq (%r14), %rdx
movq (%rdx,%r15,8), %rcx
cmpq $0x0, (%rcx)
je 0x72235
movq %rcx, (%rdx,%r12,8)
incq %r12
jmp 0x72245
movq 0x18(%rcx), %rsi
movq %rbx, %rdi
callq 0x9439
movq 0x10(%r14), %rax
incq %r15
jmp 0x7221a
movq %r12, 0x10(%r14)
movq 0x790(%rbx), %r15
movq 0x10(%r15), %rax
testq %rax, %rax
jle 0x722d7
xorl %r12d, %r12d
xorl %ebp, %ebp
cmpq %rax, %r12
jge 0x722d3
movq (%r15), %rcx
movq (%rcx,%r12,8), %r13
cmpq $0x0, (%r13)
je 0x7227f
movq %r13, (%rcx,%rbp,8)
incq %rbp
jmp 0x722ce
movq 0x18(%r13), %rsi
movq 0x20(%rsi), %r14
testq %r14, %r14
je 0x722c2
cmpq 0x470(%rbx), %r14
je 0x722c2
cmpb $0x1, 0xc(%r14)
jne 0x722aa
movq 0x10(%r13), %rdi
callq 0x8050
movb $0x0, 0xc(%r14)
movq %rbx, %rdi
movq %r14, %rsi
callq 0x9439
movq 0x18(%r13), %rax
andq $0x0, 0x20(%rax)
movq 0x18(%r13), %rsi
movq %rbx, %rdi
callq 0x9439
movq 0x10(%r15), %rax
incq %r12
jmp 0x72263
movq %rbp, 0x10(%r15)
movq 0x770(%rbx), %r14
movq 0x10(%r14), %rax
testq %rax, %rax
jle 0x72453
xorl %ebp, %ebp
leaq 0xa797c(%rip), %r12     # 0x119c70
leaq -0x423a0(%rip), %r13    # 0x2ff5b
xorl %r15d, %r15d
cmpq %rax, %rbp
jge 0x7244f
movq (%r14), %rax
movq (%rax,%rbp,8), %rax
movq (%rax), %rcx
testq %rcx, %rcx
je 0x72336
btl $0x1b, %ecx
jae 0x7232a
movq 0x28(%rax), %rcx
cmpl $0x0, 0xc(%rcx)
je 0x723b7
movq (%r14), %rcx
movq %rax, (%rcx,%r15,8)
incq %r15
jmp 0x723ab
movq 0x28(%rax), %rsi
cmpq $0x0, 0x18(%rsi)
jle 0x723a3
movq 0x10(%rax), %rcx
movq 0x8(%rax), %rdx
xorl %esi, %esi
cmpq %rdx, %rsi
jg 0x7239f
movq (%rcx,%rsi,8), %rdi
testq %rdi, %rdi
je 0x72374
movq 0x18(%rdi), %r8
movq 0x838(%rbx), %r9
movq %r9, 0x18(%rdi)
movq %rdi, 0x838(%rbx)
movq %r8, %rdi
jmp 0x72354
movq 0x8(%rcx,%rsi,8), %rdi
testq %rdi, %rdi
je 0x72399
movq 0x18(%rdi), %r8
movq 0x838(%rbx), %r9
movq %r9, 0x18(%rdi)
movq %rdi, 0x838(%rbx)
movq %r8, %rdi
jmp 0x72379
addq $0x2, %rsi
jmp 0x7234b
movq 0x28(%rax), %rsi
movq %rbx, %rdi
callq 0x9439
incq %rbp
movq 0x10(%r14), %rax
jmp 0x722fe
cmpq $0x0, 0x18(%rcx)
jle 0x7232a
movq 0x8(%rax), %rcx
movq 0x10(%rax), %rdx
xorl %esi, %esi
cmpq %rcx, %rsi
jg 0x7232a
leaq (%rdx,%rsi,8), %rdi
movq (%rdi), %r8
movq %r8, %r10
testq %r8, %r8
je 0x72433
movq %r10, %r9
movq %r8, %r10
movq (%r8), %r11
movq 0x18(%r8), %r8
cmpq $0x0, (%r11)
jne 0x723df
leaq 0x18(%r9), %r11
cmpq (%rdi), %r10
cmoveq %rdi, %r11
cmoveq %r8, %r9
movq %r8, (%r11)
movq 0x838(%rbx), %r11
movq %r11, 0x18(%r10)
movq %r10, 0x838(%rbx)
movq 0x28(%rax), %r10
decq 0x18(%r10)
movq 0x28(%rax), %r10
cmpq $0x0, 0x18(%r10)
movq %r9, %r10
jne 0x723df
jmp 0x72438
incq %rsi
jmp 0x723cc
cmpq %r12, 0x20(%rax)
jne 0x7232a
movq %r13, 0x18(%rax)
andb $-0x21, 0x3(%rax)
jmp 0x7232a
movq %r15, 0x10(%r14)
movq 0x7a0(%rbx), %rax
movq 0x10(%rax), %rcx
testq %rcx, %rcx
jle 0x72489
xorl %edx, %edx
xorl %esi, %esi
cmpq %rdx, %rcx
je 0x72485
movq (%rax), %rdi
movq (%rdi,%rdx,8), %r8
cmpq $0x0, (%r8)
je 0x72480
movq %r8, (%rdi,%rsi,8)
incq %rsi
incq %rdx
jmp 0x72467
movq %rsi, 0x10(%rax)
movq 0x748(%rbx), %r15
movq 0x10(%r15), %rax
testq %rax, %rax
jle 0x7255d
xorl %ebp, %ebp
xorl %r12d, %r12d
cmpq %rax, %rbp
jge 0x72559
movq (%r15), %rcx
movq (%rcx,%rbp,8), %r14
cmpq $0x0, (%r14)
je 0x724c4
movq %r14, (%rcx,%r12,8)
incq %r12
jmp 0x72551
movq 0x8(%r14), %rax
cmpb $0x0, 0x2(%rax)
jne 0x7250d
movl 0x4(%rax), %ecx
cmpl $0x1, %ecx
je 0x724f3
testl %ecx, %ecx
jne 0x7250d
movq 0x8(%rax), %rdi
testq %rdi, %rdi
je 0x7250d
callq 0x8180
movq 0x8(%r14), %rax
andq $0x0, 0x8(%rax)
jmp 0x7250d
cmpb $0x1, 0x1(%rax)
jne 0x7250d
movq 0x28(%rax), %rsi
movq %rbx, %rdi
callq 0x8b00
movq 0x8(%r14), %rax
movb $0x0, 0x1(%rax)
movq 0x8(%r14), %rax
cmpb $0x1, (%rax)
jne 0x72525
movq %rbx, %rdi
movq %r14, %rsi
callq 0x729df
movq 0x8(%r14), %rax
cmpq $0x0, 0x10(%rax)
je 0x72541
movq 0x18(%rax), %rsi
movq %rbx, %rdi
callq 0x9439
movq 0x8(%r14), %rax
andq $0x0, 0x10(%rax)
movq 0x28(%r14), %rsi
movq %rbx, %rdi
callq 0x9439
movq 0x10(%r15), %rax
incq %rbp
jmp 0x724a2
movq %r12, 0x10(%r15)
movq 0x758(%rbx), %r14
movq 0x10(%r14), %rax
testq %rax, %rax
jle 0x725c6
xorl %r15d, %r15d
xorl %r12d, %r12d
cmpq %rax, %r15
jge 0x725c2
movq (%r14), %rcx
movq (%rcx,%r15,8), %r13
cmpq $0x0, (%r13)
je 0x7258f
movq %r13, (%rcx,%r12,8)
incq %r12
jmp 0x725bd
movq 0x8(%r13), %rax
cmpb $0x1, 0x1(%rax)
jne 0x725ad
movq 0x28(%rax), %rsi
movq %rbx, %rdi
callq 0x8b00
movq 0x8(%r13), %rax
movb $0x0, 0x1(%rax)
movq 0x28(%r13), %rsi
movq %rbx, %rdi
callq 0x9439
movq 0x10(%r14), %rax
incq %r15
jmp 0x72573
movq %r12, 0x10(%r14)
movq 0x750(%rbx), %r15
movq 0x10(%r15), %rax
testq %rax, %rax
jle 0x7264a
xorl %r12d, %r12d
xorl %ebp, %ebp
cmpq %rax, %r12
jge 0x72646
movq (%r15), %rax
movq (%rax,%r12,8), %r14
cmpq $0x0, (%r14)
je 0x725f6
movq %r14, (%rax,%rbp,8)
incq %rbp
jmp 0x7263d
movq 0x8(%r14), %rax
movq 0x48(%rax), %rax
movq %rbx, %rdi
movq %r14, %rsi
callq *0x48(%rax)
movq 0x28(%r14), %rsi
movq %rbx, %rdi
callq 0x9439
movq 0x8(%r14), %rax
cmpb $0x1, (%rax)
jne 0x7263d
movq 0x38(%rax), %rsi
testq %rsi, %rsi
je 0x7263a
movq %rbx, %rdi
callq 0x9439
movq 0x8(%r14), %rax
andq $0x0, 0x38(%rax)
movq 0x8(%r14), %rax
movb $0x0, (%rax)
incq %r12
movq 0x10(%r15), %rax
jmp 0x725db
movq %rbp, 0x10(%r15)
movq 0x760(%rbx), %rax
movq 0x10(%rax), %rdx
testq %rdx, %rdx
movabsq $0x7fffffffffffffff, %r10 # imm = 0x7FFFFFFFFFFFFFFF
movq 0x10(%rsp), %r11
jle 0x726b0
xorl %ecx, %ecx
xorl %esi, %esi
cmpq %rdx, %rcx
jge 0x726ac
movq (%rax), %r8
movq (%r8,%rcx,8), %rdi
cmpq $0x0, (%rdi)
je 0x72688
movq %rdi, (%r8,%rsi,8)
incq %rsi
jmp 0x726a7
andq $0x0, 0x18(%rdi)
movq 0x8(%rdi), %rdx
movq 0x838(%rbx), %rdi
movq %rdi, 0x18(%rdx)
movq %rdx, 0x838(%rbx)
movq 0x10(%rax), %rdx
incq %rcx
jmp 0x7266d
movq %rsi, 0x10(%rax)
movq 0x7a8(%rbx), %rax
movq 0x10(%rax), %rcx
testq %rcx, %rcx
jle 0x726e6
xorl %edx, %edx
xorl %esi, %esi
cmpq %rdx, %rcx
je 0x726e2
movq (%rax), %rdi
movq (%rdi,%rdx,8), %r8
cmpq $0x0, (%r8)
je 0x726dd
movq %r8, (%rdi,%rsi,8)
incq %rsi
incq %rdx
jmp 0x726c4
movq %rsi, 0x10(%rax)
movq 0x798(%rbx), %rax
movq 0x10(%rax), %rsi
testq %rsi, %rsi
jle 0x72757
xorl %ecx, %ecx
xorl %edx, %edx
cmpq %rsi, %rcx
jge 0x72753
movq (%rax), %rsi
movq (%rsi,%rcx,8), %rsi
cmpq $0x0, (%rsi)
je 0x7274a
movq 0x20(%rsi), %rdi
cmpq $0x0, (%rdi)
movq 0x120(%rbx), %r8
jne 0x72724
movq %r8, 0x20(%rsi)
movq %r8, %rdi
movq 0x28(%rsi), %r9
cmpq $0x0, (%r9)
jne 0x72735
movq %r8, 0x28(%rsi)
movq %r8, %r9
xorq %r8, %rdi
xorq %r8, %r9
orq %rdi, %r9
je 0x7274a
movq (%rax), %rdi
movq %rsi, (%rdi,%rdx,8)
incq %rdx
incq %rcx
movq 0x10(%rax), %rsi
jmp 0x726fa
movq %rdx, 0x10(%rax)
movq 0x18(%rsp), %rcx
movq (%rcx), %rcx
testq %rcx, %rcx
je 0x7277a
movq (%rcx), %rax
andq %r10, (%rax)
addq $0x8, %rcx
jmp 0x7275c
movq (%r11), %rax
andq %r10, (%rax)
addq $0x8, %r11
movq (%r11), %r11
testq %r11, %r11
jne 0x72770
movq 0x90(%rbx), %rcx
movq %rcx, %rax
subq 0x8(%rsp), %rax
sarq $0x3, %rax
movq %rax, 0xb0(%rbx)
testb $0x1, 0x21c(%rbx)
je 0x72822
leaq 0x38(%rsp), %r14
leaq 0x20(%rsp), %rsi
movq %r14, %rdi
callq 0x8240
movq (%r14), %rax
movq 0x8(%r14), %rcx
subq 0x28(%rsp), %rax
cvtsi2sd %rax, %xmm1
subq 0x30(%rsp), %rcx
cvtsi2sd %rcx, %xmm0
mulsd 0x5f88e(%rip), %xmm0    # 0xd2068
addsd %xmm1, %xmm0
movq 0xb0(%rbx), %rcx
movq 0x90(%rbx), %r9
movq 0xa8(%rbx), %r8
subq 0x88(%rbx), %r9
sarq $0x3, %r9
leaq 0x6fd80(%rip), %rdx     # 0xe2585
movl $0x100, %esi            # imm = 0x100
movq %rbx, %rdi
movb $0x1, %al
callq 0xd5c7
movq 0x90(%rbx), %rcx
movq 0xb0(%rbx), %rax
movq %rcx, 0xa0(%rbx)
addq $0x48, %rsp
popq %rbx
popq %r12
popq %r13
popq %r14
popq %r15
popq %rbp
retq