// File: /workspace/github_c_makefile_star2_O3/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, %r13
testb $0x1, 0x21c(%rdi)
je 0x8cc68
leaq 0x28(%rsp), %rdi
leaq 0x20(%rsp), %rsi
callq 0x8240
movabsq $0x7fffffffffffffff, %rdx # imm = 0x7FFFFFFFFFFFFFFF
movq 0x150(%r13), %rcx
movq 0x160(%r13), %rax
movq 0x10(%rcx), %rbx
leaq 0x1(%rdx), %r14
orq %r14, (%rcx)
testq %rax, %rax
jle 0x8ccba
leaq (%rbx,%rax,8), %r15
leaq 0xb9ad5(%rip), %r12     # 0x146770
movq (%rbx), %rax
movq 0x10(%rax), %rdi
movq (%rdi), %rax
testq %rax, %rax
js 0x8ccb1
movzbl %al, %eax
callq *(%r12,%rax,8)
addq $0x8, %rbx
cmpq %r15, %rbx
jb 0x8cc9b
movq 0x1a0(%r13), %r15
movq (%r15), %rax
orq %r14, %rax
movq %rax, (%r15)
movq 0x10(%r15), %rdi
movq (%rdi), %rcx
testq %rcx, %rcx
js 0x8cce6
movzbl %cl, %eax
leaq 0xb9a90(%rip), %rcx     # 0x146770
callq *(%rcx,%rax,8)
movq (%r15), %rax
btl $0x12, %eax
jae 0x8cd08
movq 0x28(%r15), %rdi
movq (%rdi), %rcx
testq %rcx, %rcx
js 0x8cd08
movzbl %cl, %eax
leaq 0xb9a6e(%rip), %rcx     # 0x146770
callq *(%rcx,%rax,8)
movq (%r15), %rax
btl $0x1d, %eax
jae 0x8cd27
movq 0x20(%r15), %rdi
movq (%rdi), %rax
testq %rax, %rax
js 0x8cd27
movzbl %al, %eax
leaq 0xb9a4c(%rip), %rcx     # 0x146770
callq *(%rcx,%rax,8)
movq 0x8(%r15), %rax
orq %r14, (%rax)
movq 0x120(%r13), %rax
movq 0x1a8(%r13), %rcx
movq %rax, 0x10(%rcx)
movq 0x1a8(%r13), %r15
movq (%r15), %rax
orq %r14, %rax
movq %rax, (%r15)
movq 0x10(%r15), %rdi
movq (%rdi), %rcx
testq %rcx, %rcx
js 0x8cd6c
movzbl %cl, %eax
leaq 0xb9a0a(%rip), %rcx     # 0x146770
callq *(%rcx,%rax,8)
movq (%r15), %rax
btl $0x12, %eax
jae 0x8cd8e
movq 0x28(%r15), %rdi
movq (%rdi), %rcx
testq %rcx, %rcx
js 0x8cd8e
movzbl %cl, %eax
leaq 0xb99e8(%rip), %rcx     # 0x146770
callq *(%rcx,%rax,8)
movq (%r15), %rax
btl $0x1d, %eax
jae 0x8cdad
movq 0x20(%r15), %rdi
movq (%rdi), %rax
testq %rax, %rax
js 0x8cdad
movzbl %al, %eax
leaq 0xb99c6(%rip), %rcx     # 0x146770
callq *(%rcx,%rax,8)
movq 0x8(%r15), %rax
orq %r14, (%rax)
movq 0x1b0(%r13), %r15
movq (%r15), %rax
orq %r14, %rax
movq %rax, (%r15)
movq 0x10(%r15), %rdi
movq (%rdi), %rcx
testq %rcx, %rcx
js 0x8cde0
movzbl %cl, %eax
leaq 0xb9996(%rip), %rcx     # 0x146770
callq *(%rcx,%rax,8)
movq (%r15), %rax
btl $0x12, %eax
jae 0x8ce02
movq 0x28(%r15), %rdi
movq (%rdi), %rcx
testq %rcx, %rcx
js 0x8ce02
movzbl %cl, %eax
leaq 0xb9974(%rip), %rcx     # 0x146770
callq *(%rcx,%rax,8)
movq (%r15), %rax
btl $0x1d, %eax
jae 0x8ce21
movq 0x20(%r15), %rdi
movq (%rdi), %rax
testq %rax, %rax
js 0x8ce21
movzbl %al, %eax
leaq 0xb9952(%rip), %rcx     # 0x146770
callq *(%rcx,%rax,8)
movq 0x8(%r15), %rax
orq %r14, (%rax)
movq 0x1b8(%r13), %r15
movq (%r15), %rax
orq %r14, %rax
movq %rax, (%r15)
movq 0x10(%r15), %rdi
movq (%rdi), %rcx
testq %rcx, %rcx
js 0x8ce54
movzbl %cl, %eax
leaq 0xb9922(%rip), %rcx     # 0x146770
callq *(%rcx,%rax,8)
movq (%r15), %rax
btl $0x12, %eax
jae 0x8ce76
movq 0x28(%r15), %rdi
movq (%rdi), %rcx
testq %rcx, %rcx
js 0x8ce76
movzbl %cl, %eax
leaq 0xb9900(%rip), %rcx     # 0x146770
callq *(%rcx,%rax,8)
movq (%r15), %rax
btl $0x1d, %eax
jae 0x8ce95
movq 0x20(%r15), %rdi
movq (%rdi), %rax
testq %rax, %rax
js 0x8ce95
movzbl %al, %eax
leaq 0xb98de(%rip), %rcx     # 0x146770
callq *(%rcx,%rax,8)
movq 0x8(%r15), %rax
orq %r14, (%rax)
movq 0x1c0(%r13), %r15
movq (%r15), %rax
orq %r14, %rax
movq %rax, (%r15)
movq 0x10(%r15), %rdi
movq (%rdi), %rcx
testq %rcx, %rcx
js 0x8cec8
movzbl %cl, %eax
leaq 0xb98ae(%rip), %rcx     # 0x146770
callq *(%rcx,%rax,8)
movq (%r15), %rax
btl $0x12, %eax
jae 0x8ceea
movq 0x28(%r15), %rdi
movq (%rdi), %rcx
testq %rcx, %rcx
js 0x8ceea
movzbl %cl, %eax
leaq 0xb988c(%rip), %rcx     # 0x146770
callq *(%rcx,%rax,8)
movq (%r15), %rax
btl $0x1d, %eax
jae 0x8cf09
movq 0x20(%r15), %rdi
movq (%rdi), %rax
testq %rax, %rax
js 0x8cf09
movzbl %al, %eax
leaq 0xb986a(%rip), %rcx     # 0x146770
callq *(%rcx,%rax,8)
movq 0x8(%r15), %rax
orq %r14, (%rax)
movq 0x198(%r13), %rax
orq %r14, (%rax)
movq 0x198(%r13), %rax
movq 0x10(%rax), %rdi
callq 0x8e98b
movq (%r13), %rdi
movq (%rdi), %rax
testq %rax, %rax
js 0x8cf43
movzbl %al, %eax
leaq 0xb9830(%rip), %rcx     # 0x146770
callq *(%rcx,%rax,8)
movq 0x10(%r13), %rdi
testq %rdi, %rdi
je 0x8cf61
movq (%rdi), %rax
testq %rax, %rax
js 0x8cf61
movzbl %al, %eax
leaq 0xb9812(%rip), %rcx     # 0x146770
callq *(%rcx,%rax,8)
movq 0x8(%r13), %rdi
callq 0x8e98b
movq 0x28(%r13), %rdi
movq (%rdi), %rax
testq %rax, %rax
js 0x8cf83
movzbl %al, %eax
leaq 0xb97f0(%rip), %rcx     # 0x146770
callq *(%rcx,%rax,8)
movq 0x38(%r13), %rdi
movq 0x50(%r13), %rsi
subq 0x48(%r13), %rsi
sarq $0x3, %rsi
callq 0x8eb3a
movq 0x4c8(%r13), %rdi
movq (%rdi), %rax
testq %rax, %rax
js 0x8cfb4
movzbl %al, %eax
leaq 0xb97bf(%rip), %rcx     # 0x146770
callq *(%rcx,%rax,8)
movq 0x4d0(%r13), %rdi
movq (%rdi), %rax
testq %rax, %rax
js 0x8cfd0
movzbl %al, %eax
leaq 0xb97a3(%rip), %rcx     # 0x146770
callq *(%rcx,%rax,8)
movq 0x4d8(%r13), %rdi
movq (%rdi), %rax
testq %rax, %rax
js 0x8cfec
movzbl %al, %eax
leaq 0xb9787(%rip), %rcx     # 0x146770
callq *(%rcx,%rax,8)
movq 0x4e0(%r13), %rdi
movq (%rdi), %rax
testq %rax, %rax
js 0x8d008
movzbl %al, %eax
leaq 0xb976b(%rip), %rcx     # 0x146770
callq *(%rcx,%rax,8)
movq 0x4e8(%r13), %rdi
movq (%rdi), %rax
testq %rax, %rax
js 0x8d024
movzbl %al, %eax
leaq 0xb974f(%rip), %rcx     # 0x146770
callq *(%rcx,%rax,8)
movq 0x4f0(%r13), %rdi
movq (%rdi), %rax
testq %rax, %rax
js 0x8d040
movzbl %al, %eax
leaq 0xb9733(%rip), %rcx     # 0x146770
callq *(%rcx,%rax,8)
movq 0x20(%r13), %rdi
movq (%rdi), %rax
testq %rax, %rax
js 0x8d059
movzbl %al, %eax
leaq 0xb971a(%rip), %rcx     # 0x146770
callq *(%rcx,%rax,8)
movq 0x4f8(%r13), %rdi
movq (%rdi), %rax
testq %rax, %rax
js 0x8d075
movzbl %al, %eax
leaq 0xb96fe(%rip), %rcx     # 0x146770
callq *(%rcx,%rax,8)
movq 0x500(%r13), %rdi
movq (%rdi), %rax
testq %rax, %rax
js 0x8d091
movzbl %al, %eax
leaq 0xb96e2(%rip), %rcx     # 0x146770
callq *(%rcx,%rax,8)
movq 0x508(%r13), %rdi
movq (%rdi), %rax
testq %rax, %rax
js 0x8d0ad
movzbl %al, %eax
leaq 0xb96c6(%rip), %rcx     # 0x146770
callq *(%rcx,%rax,8)
movq 0x510(%r13), %rdi
movq (%rdi), %rax
testq %rax, %rax
js 0x8d0c9
movzbl %al, %eax
leaq 0xb96aa(%rip), %rcx     # 0x146770
callq *(%rcx,%rax,8)
movq 0x518(%r13), %rdi
movq (%rdi), %rax
testq %rax, %rax
js 0x8d0e5
movzbl %al, %eax
leaq 0xb968e(%rip), %rcx     # 0x146770
callq *(%rcx,%rax,8)
movq 0x520(%r13), %rdi
movq (%rdi), %rax
testq %rax, %rax
js 0x8d101
movzbl %al, %eax
leaq 0xb9672(%rip), %rcx     # 0x146770
callq *(%rcx,%rax,8)
movq 0x528(%r13), %rdi
movq (%rdi), %rax
testq %rax, %rax
js 0x8d11d
movzbl %al, %eax
leaq 0xb9656(%rip), %rcx     # 0x146770
callq *(%rcx,%rax,8)
movq 0x530(%r13), %rdi
movq (%rdi), %rax
testq %rax, %rax
js 0x8d139
movzbl %al, %eax
leaq 0xb963a(%rip), %rcx     # 0x146770
callq *(%rcx,%rax,8)
movq 0x538(%r13), %rdi
movq (%rdi), %rax
testq %rax, %rax
js 0x8d155
movzbl %al, %eax
leaq 0xb961e(%rip), %rcx     # 0x146770
callq *(%rcx,%rax,8)
movq 0x540(%r13), %rdi
movq (%rdi), %rax
testq %rax, %rax
js 0x8d171
movzbl %al, %eax
leaq 0xb9602(%rip), %rcx     # 0x146770
callq *(%rcx,%rax,8)
movq 0x170(%r13), %rax
orq %r14, (%rax)
movl 0x184(%r13), %eax
testq %rax, %rax
je 0x8d1b4
movq 0x178(%r13), %rbx
leaq (%rbx,%rax,8), %r15
leaq 0xb95d7(%rip), %r12     # 0x146770
movq (%rbx), %rdi
movq (%rdi), %rax
testq %rax, %rax
js 0x8d1ab
movzbl %al, %eax
callq *(%r12,%rax,8)
addq $0x8, %rbx
cmpq %r15, %rbx
jb 0x8d199
movq 0x188(%r13), %rax
orq %r14, (%rax)
movq 0x190(%r13), %rax
orq %r14, (%rax)
movq 0x2e0(%r13), %rdi
movq (%rdi), %rax
testq %rax, %rax
js 0x8d1e4
movzbl %al, %eax
leaq 0xb958f(%rip), %rcx     # 0x146770
callq *(%rcx,%rax,8)
movq 0x2140(%r13), %rdi
movq (%rdi), %rax
testq %rax, %rax
js 0x8d200
movzbl %al, %eax
leaq 0xb9573(%rip), %rcx     # 0x146770
callq *(%rcx,%rax,8)
movq 0xaa0(%r13), %rdi
movq (%rdi), %rax
testq %rax, %rax
js 0x8d21c
movzbl %al, %eax
leaq 0xb9557(%rip), %rcx     # 0x146770
callq *(%rcx,%rax,8)
movq 0x550(%r13), %rdi
callq 0x8eba3
movq 0x558(%r13), %rdi
callq 0x8eba3
movq 0x568(%r13), %rax
movq 0x8(%rax), %rdi
movq (%rdi), %rax
testq %rax, %rax
js 0x8d254
movzbl %al, %eax
leaq 0xb951f(%rip), %rcx     # 0x146770
callq *(%rcx,%rax,8)
movq 0x570(%r13), %rax
movq 0x8(%rax), %rdi
movq (%rdi), %rax
testq %rax, %rax
js 0x8d274
movzbl %al, %eax
leaq 0xb94ff(%rip), %rcx     # 0x146770
callq *(%rcx,%rax,8)
movq 0x578(%r13), %rax
movq 0x8(%rax), %rdi
movq (%rdi), %rax
testq %rax, %rax
js 0x8d294
movzbl %al, %eax
leaq 0xb94df(%rip), %rcx     # 0x146770
callq *(%rcx,%rax,8)
movq 0x580(%r13), %rax
movq 0x8(%rax), %rdi
movq (%rdi), %rax
testq %rax, %rax
js 0x8d2b4
movzbl %al, %eax
leaq 0xb94bf(%rip), %rcx     # 0x146770
callq *(%rcx,%rax,8)
movq 0x588(%r13), %rax
movq 0x8(%rax), %rdi
movq (%rdi), %rax
testq %rax, %rax
js 0x8d2d4
movzbl %al, %eax
leaq 0xb949f(%rip), %rcx     # 0x146770
callq *(%rcx,%rax,8)
movq 0x590(%r13), %rax
movq 0x8(%rax), %rdi
movq (%rdi), %rax
testq %rax, %rax
js 0x8d2f4
movzbl %al, %eax
leaq 0xb947f(%rip), %rcx     # 0x146770
callq *(%rcx,%rax,8)
movq 0x5a8(%r13), %rax
movq 0x8(%rax), %rdi
movq (%rdi), %rax
testq %rax, %rax
js 0x8d314
movzbl %al, %eax
leaq 0xb945f(%rip), %rcx     # 0x146770
callq *(%rcx,%rax,8)
movq 0x700(%r13), %rax
movq 0x8(%rax), %rdi
movq (%rdi), %rax
testq %rax, %rax
js 0x8d334
movzbl %al, %eax
leaq 0xb943f(%rip), %rcx     # 0x146770
callq *(%rcx,%rax,8)
movq 0x730(%r13), %rax
movq 0x8(%rax), %rdi
movq (%rdi), %rax
testq %rax, %rax
js 0x8d354
movzbl %al, %eax
leaq 0xb941f(%rip), %rcx     # 0x146770
callq *(%rcx,%rax,8)
movq 0x708(%r13), %rax
movq 0x8(%rax), %rdi
movq (%rdi), %rcx
testq %rcx, %rcx
js 0x8d37b
movzbl %cl, %eax
leaq 0xb93ff(%rip), %rcx     # 0x146770
callq *(%rcx,%rax,8)
movq 0x708(%r13), %rax
movq 0x10(%rax), %rax
movq 0x8(%rax), %rdi
movq (%rdi), %rax
testq %rax, %rax
js 0x8d398
movzbl %al, %eax
leaq 0xb93db(%rip), %rcx     # 0x146770
callq *(%rcx,%rax,8)
movq 0x720(%r13), %rax
movq 0x8(%rax), %rdi
movq (%rdi), %rcx
testq %rcx, %rcx
js 0x8d3bf
movzbl %cl, %eax
leaq 0xb93bb(%rip), %rcx     # 0x146770
callq *(%rcx,%rax,8)
movq 0x720(%r13), %rax
movq 0x10(%rax), %rax
movq 0x8(%rax), %rdi
movq (%rdi), %rax
testq %rax, %rax
js 0x8d3dc
movzbl %al, %eax
leaq 0xb9397(%rip), %rcx     # 0x146770
callq *(%rcx,%rax,8)
movq 0x728(%r13), %rax
movq 0x8(%rax), %rdi
movq (%rdi), %rcx
testq %rcx, %rcx
js 0x8d403
movzbl %cl, %eax
leaq 0xb9377(%rip), %rcx     # 0x146770
callq *(%rcx,%rax,8)
movq 0x728(%r13), %rax
movq 0x10(%rax), %rax
movq 0x8(%rax), %rdi
movq (%rdi), %rcx
testq %rcx, %rcx
js 0x8d42b
movzbl %cl, %eax
leaq 0xb9353(%rip), %rcx     # 0x146770
callq *(%rcx,%rax,8)
movq 0x728(%r13), %rax
movq 0x10(%rax), %rax
movq 0x10(%rax), %rax
movq 0x8(%rax), %rdi
movq (%rdi), %rax
testq %rax, %rax
js 0x8d448
movzbl %al, %eax
leaq 0xb932b(%rip), %rcx     # 0x146770
callq *(%rcx,%rax,8)
movq 0x560(%r13), %rax
movq 0x8(%rax), %rdi
movq (%rdi), %rax
testq %rax, %rax
js 0x8d468
movzbl %al, %eax
leaq 0xb930b(%rip), %rcx     # 0x146770
callq *(%rcx,%rax,8)
movq 0x1ee0(%r13), %rbx
cmpb $0x1, (%rbx)
jne 0x8d497
leaq 0xb92f5(%rip), %r15     # 0x146770
movq 0x8(%rbx), %rdi
movq (%rdi), %rax
testq %rax, %rax
js 0x8d48e
movzbl %al, %eax
callq *(%r15,%rax,8)
movq 0x10(%rbx), %rbx
cmpb $0x1, (%rbx)
je 0x8d47b
movq 0x1ef0(%r13), %rbx
cmpb $0x1, (%rbx)
jne 0x8d4c6
leaq 0xb92c6(%rip), %r15     # 0x146770
movq 0x8(%rbx), %rdi
movq (%rdi), %rax
testq %rax, %rax
js 0x8d4bd
movzbl %al, %eax
callq *(%r15,%rax,8)
movq 0x10(%rbx), %rbx
cmpb $0x1, (%rbx)
je 0x8d4aa
movq 0x1ee8(%r13), %rbx
cmpb $0x1, (%rbx)
jne 0x8d4f5
leaq 0xb9297(%rip), %r15     # 0x146770
movq 0x8(%rbx), %rdi
movq (%rdi), %rax
testq %rax, %rax
js 0x8d4ec
movzbl %al, %eax
callq *(%r15,%rax,8)
movq 0x10(%rbx), %rbx
cmpb $0x1, (%rbx)
je 0x8d4d9
movq 0x1ef8(%r13), %rbx
cmpb $0x1, (%rbx)
jne 0x8d524
leaq 0xb9268(%rip), %r15     # 0x146770
movq 0x8(%rbx), %rdi
movq (%rdi), %rax
testq %rax, %rax
js 0x8d51b
movzbl %al, %eax
callq *(%r15,%rax,8)
movq 0x10(%rbx), %rbx
cmpb $0x1, (%rbx)
je 0x8d508
movq 0x6d8(%r13), %rax
movq 0x8(%rax), %rdi
movq (%rdi), %rax
testq %rax, %rax
js 0x8d544
movzbl %al, %eax
leaq 0xb922f(%rip), %rcx     # 0x146770
callq *(%rcx,%rax,8)
movq 0x6e0(%r13), %rax
movq 0x8(%rax), %rdi
movq (%rdi), %rcx
testq %rcx, %rcx
js 0x8d56b
movzbl %cl, %eax
leaq 0xb920f(%rip), %rcx     # 0x146770
callq *(%rcx,%rax,8)
movq 0x6e0(%r13), %rax
movq 0x10(%rax), %rax
movq 0x8(%rax), %rdi
movq (%rdi), %rax
testq %rax, %rax
js 0x8d588
movzbl %al, %eax
leaq 0xb91eb(%rip), %rcx     # 0x146770
callq *(%rcx,%rax,8)
movq 0x718(%r13), %rbx
cmpb $0x1, (%rbx)
jne 0x8d5b7
leaq 0xb91d5(%rip), %r15     # 0x146770
movq 0x8(%rbx), %rdi
movq (%rdi), %rax
testq %rax, %rax
js 0x8d5ae
movzbl %al, %eax
callq *(%r15,%rax,8)
movq 0x10(%rbx), %rbx
cmpb $0x1, (%rbx)
je 0x8d59b
movq 0x6e8(%r13), %rbx
cmpb $0x1, (%rbx)
jne 0x8d5e6
leaq 0xb91a6(%rip), %r15     # 0x146770
movq 0x8(%rbx), %rdi
movq (%rdi), %rax
testq %rax, %rax
js 0x8d5dd
movzbl %al, %eax
callq *(%r15,%rax,8)
movq 0x10(%rbx), %rbx
cmpb $0x1, (%rbx)
je 0x8d5ca
movq 0x6f0(%r13), %rbx
cmpb $0x1, (%rbx)
jne 0x8d615
leaq 0xb9177(%rip), %r15     # 0x146770
movq 0x8(%rbx), %rdi
movq (%rdi), %rax
testq %rax, %rax
js 0x8d60c
movzbl %al, %eax
callq *(%r15,%rax,8)
movq 0x10(%rbx), %rbx
cmpb $0x1, (%rbx)
je 0x8d5f9
movq 0x6f8(%r13), %rbx
cmpb $0x1, (%rbx)
jne 0x8d644
leaq 0xb9148(%rip), %r15     # 0x146770
movq 0x8(%rbx), %rdi
movq (%rdi), %rax
testq %rax, %rax
js 0x8d63b
movzbl %al, %eax
callq *(%r15,%rax,8)
movq 0x10(%rbx), %rbx
cmpb $0x1, (%rbx)
je 0x8d628
movl $0x1, %r15d
leaq 0xb911f(%rip), %r12     # 0x146770
movq 0x1f38(%r13,%r15,8), %rbx
cmpb $0x1, (%rbx)
jne 0x8d689
movzwl (%rbx), %eax
andl $0x4ff, %eax            # imm = 0x4FF
cmpl $0x401, %eax            # imm = 0x401
jne 0x8d689
movq 0x8(%rbx), %rdi
movq (%rdi), %rax
testq %rax, %rax
js 0x8d680
movzbl %al, %eax
callq *(%r12,%rax,8)
movq 0x10(%rbx), %rbx
cmpb $0x1, (%rbx)
je 0x8d66d
incq %r15
cmpq $0x40, %r15
jne 0x8d651
movq 0x7c0(%r13), %rax
testq %rax, %rax
jle 0x8d6cd
xorl %ebx, %ebx
movq 0x7b0(%r13), %rcx
movq (%rcx,%rbx,8), %rcx
movq 0x10(%rcx), %rdi
movq (%rdi), %rcx
testq %rcx, %rcx
js 0x8d6c5
movzbl %cl, %eax
callq *(%r12,%rax,8)
movq 0x7c0(%r13), %rax
incq %rbx
cmpq %rax, %rbx
jl 0x8d6a0
movl 0x6d0(%r13), %eax
testl %eax, %eax
jle 0x8d70f
xorl %ebx, %ebx
movq 0x6c8(%r13), %rcx
movq (%rcx,%rbx,8), %rcx
testq %rcx, %rcx
je 0x8d704
movq 0x30(%rcx), %rdi
movq (%rdi), %rcx
testq %rcx, %rcx
js 0x8d704
movzbl %cl, %eax
callq *(%r12,%rax,8)
movl 0x6d0(%r13), %eax
incq %rbx
movslq %eax, %rcx
cmpq %rcx, %rbx
jl 0x8d6da
movq 0x2e8(%r13), %rax
testq %rax, %rax
je 0x8d759
orq %r14, (%rax)
movq 0x2d0(%r13), %rax
testq %rax, %rax
jle 0x8d759
xorl %ebx, %ebx
movq 0x2e8(%r13), %rcx
movq 0x10(%rcx), %rcx
movq (%rcx,%rbx,8), %rdi
movq (%rdi), %rcx
testq %rcx, %rcx
js 0x8d751
movzbl %cl, %eax
callq *(%r12,%rax,8)
movq 0x2d0(%r13), %rax
incq %rbx
cmpq %rax, %rbx
jl 0x8d72c
movq 0xd0(%r13), %rdi
callq 0x8ec07
movq 0xd8(%r13), %rdi
callq 0x8ec07
movq 0xe0(%r13), %rax
orq %r14, (%rax)
movq 0x90(%r13), %rbx
movq 0xa0(%r13), %rax
leaq 0x800(%rbx), %r14
cmpq %rax, %r14
cmovaq %rax, %r14
cmpq %r14, %rbx
jae 0x8d7b4
movq (%rbx), %rdi
movq (%rdi), %rax
testq %rax, %rax
js 0x8d7ae
movzbl %al, %eax
callq *(%r12,%rax,8)
addq $0x8, %rbx
jmp 0x8d797
movq 0x60(%r13), %rbx
movq 0x68(%r13), %r14
cmpq %r14, %rbx
jae 0x8d7d9
movq (%rbx), %rdi
movq (%rdi), %rax
testq %rax, %rax
js 0x8d7d3
movzbl %al, %eax
callq *(%r12,%rax,8)
addq $0x8, %rbx
jmp 0x8d7bc
movq 0xc0(%r13), %rbx
testq %rbx, %rbx
je 0x8d7fd
movq (%rbx), %rdi
movq (%rdi), %rax
testq %rax, %rax
js 0x8d7f7
movzbl %al, %eax
callq *(%r12,%rax,8)
movq 0x8(%rbx), %rbx
jmp 0x8d7e0
movq 0xc8(%r13), %rbx
testq %rbx, %rbx
je 0x8d821
movq (%rbx), %rdi
movq (%rdi), %rax
testq %rax, %rax
js 0x8d81b
movzbl %al, %eax
callq *(%r12,%rax,8)
movq 0x8(%rbx), %rbx
jmp 0x8d804
movq 0x7a8(%r13), %r14
cmpq $0x0, 0x10(%r14)
jle 0x8d8ae
xorl %r15d, %r15d
movq (%r14), %rax
movq (%rax,%r15,8), %rax
cmpq $0x0, (%rax)
je 0x8d8a5
movq 0x28(%rax), %rdi
cmpb $0x1c, (%rdi)
movq (%rdi), %rcx
jne 0x8d899
testq %rcx, %rcx
js 0x8d8a5
movq %rcx, %rax
shrq $0x30, %rax
testb $0x1, %al
je 0x8d89e
movq 0x8(%rdi), %rcx
movq 0x10(%rcx), %rcx
cmpb $0x28, (%rcx)
jne 0x8d88d
movq 0x18(%rcx), %rcx
movq 0x8(%rcx), %rcx
testq %rcx, %rcx
je 0x8d88d
movq 0x120(%r13), %rax
movq %rax, 0x10(%rcx)
movq 0x18(%rcx), %rcx
testq %rcx, %rcx
jne 0x8d87c
movzwl 0x6(%rdi), %eax
andl $0xfffe, %eax           # imm = 0xFFFE
movw %ax, 0x6(%rdi)
movq (%rdi), %rcx
testq %rcx, %rcx
js 0x8d8a5
movzbl %cl, %eax
callq *(%r12,%rax,8)
incq %r15
cmpq 0x10(%r14), %r15
jl 0x8d832
movq 0x90(%r13), %r9
movq 0xa8(%r13), %rdx
movq %r9, %rax
testq %rdx, %rdx
movabsq $0x7fffffffffffffff, %r8 # imm = 0x7FFFFFFFFFFFFFFF
jle 0x8dd9f
movq 0x80(%r13), %rcx
leaq (%rcx,%rdx,8), %rdx
movq %r9, %rax
movq (%rcx), %rsi
movq (%rsi), %rdi
testq %rdi, %rdi
js 0x8d8fd
je 0x8d903
movq $0x0, (%rsi)
movq %rsi, (%rax)
addq $0x8, %rax
jmp 0x8d903
andq %r8, %rdi
movq %rdi, (%rsi)
movq 0x8(%rcx), %rsi
movq (%rsi), %rdi
testq %rdi, %rdi
js 0x8d921
je 0x8d927
movq $0x0, (%rsi)
movq %rsi, (%rax)
addq $0x8, %rax
jmp 0x8d927
andq %r8, %rdi
movq %rdi, (%rsi)
movq 0x10(%rcx), %rsi
movq (%rsi), %rdi
testq %rdi, %rdi
js 0x8d945
je 0x8d94b
movq $0x0, (%rsi)
movq %rsi, (%rax)
addq $0x8, %rax
jmp 0x8d94b
andq %r8, %rdi
movq %rdi, (%rsi)
movq 0x18(%rcx), %rsi
movq (%rsi), %rdi
testq %rdi, %rdi
js 0x8d969
je 0x8d96f
movq $0x0, (%rsi)
movq %rsi, (%rax)
addq $0x8, %rax
jmp 0x8d96f
andq %r8, %rdi
movq %rdi, (%rsi)
movq 0x20(%rcx), %rsi
movq (%rsi), %rdi
testq %rdi, %rdi
js 0x8d98d
je 0x8d993
movq $0x0, (%rsi)
movq %rsi, (%rax)
addq $0x8, %rax
jmp 0x8d993
andq %r8, %rdi
movq %rdi, (%rsi)
movq 0x28(%rcx), %rsi
movq (%rsi), %rdi
testq %rdi, %rdi
js 0x8d9b1
je 0x8d9b7
movq $0x0, (%rsi)
movq %rsi, (%rax)
addq $0x8, %rax
jmp 0x8d9b7
andq %r8, %rdi
movq %rdi, (%rsi)
movq 0x30(%rcx), %rsi
movq (%rsi), %rdi
testq %rdi, %rdi
js 0x8d9d5
je 0x8d9db
movq $0x0, (%rsi)
movq %rsi, (%rax)
addq $0x8, %rax
jmp 0x8d9db
andq %r8, %rdi
movq %rdi, (%rsi)
movq 0x38(%rcx), %rsi
movq (%rsi), %rdi
testq %rdi, %rdi
js 0x8d9f9
je 0x8d9ff
movq $0x0, (%rsi)
movq %rsi, (%rax)
addq $0x8, %rax
jmp 0x8d9ff
andq %r8, %rdi
movq %rdi, (%rsi)
movq 0x40(%rcx), %rsi
movq (%rsi), %rdi
testq %rdi, %rdi
js 0x8da1d
je 0x8da23
movq $0x0, (%rsi)
movq %rsi, (%rax)
addq $0x8, %rax
jmp 0x8da23
andq %r8, %rdi
movq %rdi, (%rsi)
movq 0x48(%rcx), %rsi
movq (%rsi), %rdi
testq %rdi, %rdi
js 0x8da41
je 0x8da47
movq $0x0, (%rsi)
movq %rsi, (%rax)
addq $0x8, %rax
jmp 0x8da47
andq %r8, %rdi
movq %rdi, (%rsi)
movq 0x50(%rcx), %rsi
movq (%rsi), %rdi
testq %rdi, %rdi
js 0x8da65
je 0x8da6b
movq $0x0, (%rsi)
movq %rsi, (%rax)
addq $0x8, %rax
jmp 0x8da6b
andq %r8, %rdi
movq %rdi, (%rsi)
movq 0x58(%rcx), %rsi
movq (%rsi), %rdi
testq %rdi, %rdi
js 0x8da89
je 0x8da8f
movq $0x0, (%rsi)
movq %rsi, (%rax)
addq $0x8, %rax
jmp 0x8da8f
andq %r8, %rdi
movq %rdi, (%rsi)
movq 0x60(%rcx), %rsi
movq (%rsi), %rdi
testq %rdi, %rdi
js 0x8daad
je 0x8dab3
movq $0x0, (%rsi)
movq %rsi, (%rax)
addq $0x8, %rax
jmp 0x8dab3
andq %r8, %rdi
movq %rdi, (%rsi)
movq 0x68(%rcx), %rsi
movq (%rsi), %rdi
testq %rdi, %rdi
js 0x8dad1
je 0x8dad7
movq $0x0, (%rsi)
movq %rsi, (%rax)
addq $0x8, %rax
jmp 0x8dad7
andq %r8, %rdi
movq %rdi, (%rsi)
movq 0x70(%rcx), %rsi
movq (%rsi), %rdi
testq %rdi, %rdi
js 0x8daf5
je 0x8dafb
movq $0x0, (%rsi)
movq %rsi, (%rax)
addq $0x8, %rax
jmp 0x8dafb
andq %r8, %rdi
movq %rdi, (%rsi)
movq 0x78(%rcx), %rsi
movq (%rsi), %rdi
testq %rdi, %rdi
js 0x8db19
je 0x8db1f
movq $0x0, (%rsi)
movq %rsi, (%rax)
addq $0x8, %rax
jmp 0x8db1f
andq %r8, %rdi
movq %rdi, (%rsi)
movq 0x80(%rcx), %rsi
movq (%rsi), %rdi
testq %rdi, %rdi
js 0x8db40
je 0x8db46
movq $0x0, (%rsi)
movq %rsi, (%rax)
addq $0x8, %rax
jmp 0x8db46
andq %r8, %rdi
movq %rdi, (%rsi)
movq 0x88(%rcx), %rsi
movq (%rsi), %rdi
testq %rdi, %rdi
js 0x8db67
je 0x8db6d
movq $0x0, (%rsi)
movq %rsi, (%rax)
addq $0x8, %rax
jmp 0x8db6d
andq %r8, %rdi
movq %rdi, (%rsi)
movq 0x90(%rcx), %rsi
movq (%rsi), %rdi
testq %rdi, %rdi
js 0x8db8e
je 0x8db94
movq $0x0, (%rsi)
movq %rsi, (%rax)
addq $0x8, %rax
jmp 0x8db94
andq %r8, %rdi
movq %rdi, (%rsi)
movq 0x98(%rcx), %rsi
movq (%rsi), %rdi
testq %rdi, %rdi
js 0x8dbb5
je 0x8dbbb
movq $0x0, (%rsi)
movq %rsi, (%rax)
addq $0x8, %rax
jmp 0x8dbbb
andq %r8, %rdi
movq %rdi, (%rsi)
movq 0xa0(%rcx), %rsi
movq (%rsi), %rdi
testq %rdi, %rdi
js 0x8dbdc
je 0x8dbe2
movq $0x0, (%rsi)
movq %rsi, (%rax)
addq $0x8, %rax
jmp 0x8dbe2
andq %r8, %rdi
movq %rdi, (%rsi)
movq 0xa8(%rcx), %rsi
movq (%rsi), %rdi
testq %rdi, %rdi
js 0x8dc03
je 0x8dc09
movq $0x0, (%rsi)
movq %rsi, (%rax)
addq $0x8, %rax
jmp 0x8dc09
andq %r8, %rdi
movq %rdi, (%rsi)
movq 0xb0(%rcx), %rsi
movq (%rsi), %rdi
testq %rdi, %rdi
js 0x8dc2a
je 0x8dc30
movq $0x0, (%rsi)
movq %rsi, (%rax)
addq $0x8, %rax
jmp 0x8dc30
andq %r8, %rdi
movq %rdi, (%rsi)
movq 0xb8(%rcx), %rsi
movq (%rsi), %rdi
testq %rdi, %rdi
js 0x8dc51
je 0x8dc57
movq $0x0, (%rsi)
movq %rsi, (%rax)
addq $0x8, %rax
jmp 0x8dc57
andq %r8, %rdi
movq %rdi, (%rsi)
movq 0xc0(%rcx), %rsi
movq (%rsi), %rdi
testq %rdi, %rdi
js 0x8dc78
je 0x8dc7e
movq $0x0, (%rsi)
movq %rsi, (%rax)
addq $0x8, %rax
jmp 0x8dc7e
andq %r8, %rdi
movq %rdi, (%rsi)
movq 0xc8(%rcx), %rsi
movq (%rsi), %rdi
testq %rdi, %rdi
js 0x8dc9f
je 0x8dca5
movq $0x0, (%rsi)
movq %rsi, (%rax)
addq $0x8, %rax
jmp 0x8dca5
andq %r8, %rdi
movq %rdi, (%rsi)
movq 0xd0(%rcx), %rsi
movq (%rsi), %rdi
testq %rdi, %rdi
js 0x8dcc6
je 0x8dccc
movq $0x0, (%rsi)
movq %rsi, (%rax)
addq $0x8, %rax
jmp 0x8dccc
andq %r8, %rdi
movq %rdi, (%rsi)
movq 0xd8(%rcx), %rsi
movq (%rsi), %rdi
testq %rdi, %rdi
js 0x8dced
je 0x8dcf3
movq $0x0, (%rsi)
movq %rsi, (%rax)
addq $0x8, %rax
jmp 0x8dcf3
andq %r8, %rdi
movq %rdi, (%rsi)
movq 0xe0(%rcx), %rsi
movq (%rsi), %rdi
testq %rdi, %rdi
js 0x8dd14
je 0x8dd1a
movq $0x0, (%rsi)
movq %rsi, (%rax)
addq $0x8, %rax
jmp 0x8dd1a
andq %r8, %rdi
movq %rdi, (%rsi)
movq 0xe8(%rcx), %rsi
movq (%rsi), %rdi
testq %rdi, %rdi
js 0x8dd3b
je 0x8dd41
movq $0x0, (%rsi)
movq %rsi, (%rax)
addq $0x8, %rax
jmp 0x8dd41
andq %r8, %rdi
movq %rdi, (%rsi)
movq 0xf0(%rcx), %rsi
movq (%rsi), %rdi
testq %rdi, %rdi
js 0x8dd62
je 0x8dd68
movq $0x0, (%rsi)
movq %rsi, (%rax)
addq $0x8, %rax
jmp 0x8dd68
andq %r8, %rdi
movq %rdi, (%rsi)
movq 0xf8(%rcx), %rsi
movq (%rsi), %rdi
testq %rdi, %rdi
js 0x8dd89
je 0x8dd8f
movq $0x0, (%rsi)
movq %rsi, (%rax)
addq $0x8, %rax
jmp 0x8dd8f
andq %r8, %rdi
movq %rdi, (%rsi)
addq $0x100, %rcx            # imm = 0x100
cmpq %rdx, %rcx
jb 0x8d8e0
movq %r9, 0x18(%rsp)
movq %rax, 0x90(%r13)
movq 0x738(%r13), %r14
movq 0x10(%r14), %rax
testq %rax, %rax
movq %r13, 0x8(%rsp)
jle 0x8de34
leaq 0x838(%r13), %r12
xorl %r15d, %r15d
xorl %r13d, %r13d
movq (%r14), %rdx
movq (%rdx,%r13,8), %rcx
cmpq $0x0, (%rcx)
je 0x8dde3
movq %rcx, (%rdx,%r15,8)
incq %r15
jmp 0x8de23
movq 0x20(%rcx), %rbx
movslq 0x8(%rbx), %rax
cmpq $0x11, %rax
jne 0x8de11
movq (%rbx), %rdi
testq %rdi, %rdi
je 0x8de05
callq 0x8050
movq $0x0, (%rbx)
movl $0x0, 0x8(%rbx)
movq %r12, %rax
jmp 0x8de15
leaq (%r12,%rax,8), %rax
movq (%rax), %rcx
movq %rcx, 0x18(%rbx)
movq %rbx, (%rax)
movq 0x10(%r14), %rax
incq %r13
cmpq %rax, %r13
jl 0x8ddcd
movq %r15, 0x10(%r14)
movq 0x8(%rsp), %r13
movq 0x778(%r13), %r14
movq 0x10(%r14), %rax
testq %rax, %rax
jle 0x8df29
leaq 0x838(%r13), %r12
xorl %r15d, %r15d
movabsq $-0x7fecfd2d94c4151b, %r13 # imm = 0x801302D26B3BEAE5
xorl %ebp, %ebp
movq (%r14), %rcx
movq (%rcx,%rbp,8), %rsi
cmpq $0x0, (%rsi)
je 0x8de77
movq %rsi, (%rcx,%r15,8)
incq %r15
jmp 0x8df12
movq 0x8(%rsp), %rax
movq 0x148(%rax), %r8
movq 0x8(%rsi), %rdi
movq 0x18(%rdi), %rcx
movq %rcx, %rax
mulq %r13
movq 0x10(%r8), %r8
shrq $0xe, %rdx
imull $0x7fed, %edx, %eax     # imm = 0x7FED
subl %eax, %ecx
movq (%r8,%rcx,8), %rax
cmpq %rsi, 0x8(%rax)
je 0x8dec3
movq %rax, %rcx
movq 0x10(%rax), %rax
cmpb $0x1, (%rax)
jne 0x8ded2
cmpq %rsi, 0x8(%rax)
jne 0x8deab
addq $0x10, %rcx
jmp 0x8dec7
leaq (%r8,%rcx,8), %rcx
movq 0x10(%rax), %rax
movq %rax, (%rcx)
movq 0x8(%rsi), %rdi
movq 0x28(%rdi), %rbx
movslq 0x8(%rbx), %rax
cmpq $0x11, %rax
jne 0x8df00
movq (%rbx), %rdi
testq %rdi, %rdi
je 0x8def4
callq 0x8050
movq $0x0, (%rbx)
movl $0x0, 0x8(%rbx)
movq %r12, %rax
jmp 0x8df04
leaq (%r12,%rax,8), %rax
movq (%rax), %rcx
movq %rcx, 0x18(%rbx)
movq %rbx, (%rax)
movq 0x10(%r14), %rax
incq %rbp
cmpq %rax, %rbp
jl 0x8de5e
movq %r15, 0x10(%r14)
movq 0x8(%rsp), %r13
jmp 0x8df2c
movq %rax, %r15
testq %r15, %r15
jne 0x8df3f
leaq -0x1a65(%rip), %rax     # 0x8c4d3
movq %rax, 0xb8881(%rip)     # 0x1467c0
movq 0x780(%r13), %r14
movq 0x10(%r14), %rax
testq %rax, %rax
jle 0x8df83
xorl %ebx, %ebx
xorl %r15d, %r15d
movq (%r14), %rdx
movq (%rdx,%r15,8), %rcx
cmpq $0x0, (%rcx)
je 0x8df6a
movq %rcx, (%rdx,%rbx,8)
incq %rbx
jmp 0x8df77
movq 0x20(%rcx), %rdi
callq 0x8050
movq 0x10(%r14), %rax
incq %r15
cmpq %rax, %r15
jl 0x8df54
movq %rbx, 0x10(%r14)
movq 0x768(%r13), %r14
movq 0x10(%r14), %rax
testq %rax, %rax
jle 0x8dfd4
xorl %ebx, %ebx
xorl %r15d, %r15d
movq (%r14), %rdx
movq (%rdx,%r15,8), %rcx
cmpq $0x0, (%rcx)
je 0x8dfae
movq %rcx, (%rdx,%rbx,8)
incq %rbx
jmp 0x8dfc8
movq 0x8d8(%r13), %rax
movq 0x8(%rcx), %rdx
movq 0x10(%rcx), %rdi
movq (%rax,%rdx,8), %rax
callq *0x28(%rax)
movq 0x10(%r14), %rax
incq %r15
cmpq %rax, %r15
jl 0x8df98
movq %rbx, 0x10(%r14)
movq 0x788(%r13), %r14
movq 0x10(%r14), %rax
testq %rax, %rax
jle 0x8e05c
leaq 0x838(%r13), %r12
xorl %r15d, %r15d
xorl %r13d, %r13d
movq (%r14), %rdx
movq (%rdx,%r13,8), %rcx
cmpq $0x0, (%rcx)
je 0x8e007
movq %rcx, (%rdx,%r15,8)
incq %r15
jmp 0x8e04b
movq 0x8(%rcx), %rax
movq 0x18(%rax), %rbx
movslq 0x8(%rbx), %rax
cmpq $0x11, %rax
jne 0x8e039
movq (%rbx), %rdi
testq %rdi, %rdi
je 0x8e02d
callq 0x8050
movq $0x0, (%rbx)
movl $0x0, 0x8(%rbx)
movq %r12, %rax
jmp 0x8e03d
leaq (%r12,%rax,8), %rax
movq (%rax), %rcx
movq %rcx, 0x18(%rbx)
movq %rbx, (%rax)
movq 0x10(%r14), %rax
incq %r13
cmpq %rax, %r13
jl 0x8dff1
movq %r15, 0x10(%r14)
movq 0x8(%rsp), %r13
movq 0x740(%r13), %r14
movq 0x10(%r14), %rax
testq %rax, %rax
jle 0x8e0e0
leaq 0x838(%r13), %r12
xorl %r15d, %r15d
xorl %r13d, %r13d
movq (%r14), %rdx
movq (%rdx,%r13,8), %rcx
cmpq $0x0, (%rcx)
je 0x8e08f
movq %rcx, (%rdx,%r15,8)
incq %r15
jmp 0x8e0cf
movq 0x18(%rcx), %rbx
movslq 0x8(%rbx), %rax
cmpq $0x11, %rax
jne 0x8e0bd
movq (%rbx), %rdi
testq %rdi, %rdi
je 0x8e0b1
callq 0x8050
movq $0x0, (%rbx)
movl $0x0, 0x8(%rbx)
movq %r12, %rax
jmp 0x8e0c1
leaq (%r12,%rax,8), %rax
movq (%rax), %rcx
movq %rcx, 0x18(%rbx)
movq %rbx, (%rax)
movq 0x10(%r14), %rax
incq %r13
cmpq %rax, %r13
jl 0x8e079
movq %r15, 0x10(%r14)
movq 0x8(%rsp), %r13
movq 0x790(%r13), %r14
movq 0x10(%r14), %rax
testq %rax, %rax
jle 0x8e1fd
leaq 0x838(%r13), %rdx
xorl %r15d, %r15d
xorl %r13d, %r13d
movq %rdx, 0x10(%rsp)
movq (%r14), %rcx
movq (%rcx,%r13,8), %rbp
cmpq $0x0, (%rbp)
je 0x8e120
movq %rbp, (%rcx,%r15,8)
incq %r15
jmp 0x8e1e8
movq 0x18(%rbp), %r12
movq 0x20(%r12), %rbx
testq %rbx, %rbx
je 0x8e1a1
movq 0x8(%rsp), %rax
cmpq 0x470(%rax), %rbx
je 0x8e1a1
cmpb $0x1, 0xc(%rbx)
jne 0x8e154
movq 0x10(%rbp), %rdi
callq 0x8050
movq 0x10(%rsp), %rdx
movb $0x0, 0xc(%rbx)
movslq 0x8(%rbx), %rax
cmpq $0x11, %rax
jne 0x8e183
movq (%rbx), %rdi
testq %rdi, %rdi
je 0x8e177
callq 0x8050
movq 0x10(%rsp), %rdx
movq $0x0, (%rbx)
movl $0x0, 0x8(%rbx)
movq %rdx, %rax
jmp 0x8e187
leaq (%rdx,%rax,8), %rax
movq (%rax), %rcx
movq %rcx, 0x18(%rbx)
movq %rbx, (%rax)
movq 0x18(%rbp), %rax
movq $0x0, 0x20(%rax)
movq 0x18(%rbp), %r12
movslq 0x8(%r12), %rax
cmpq $0x11, %rax
jne 0x8e1d5
movq (%r12), %rdi
testq %rdi, %rdi
je 0x8e1c7
callq 0x8050
movq 0x10(%rsp), %rdx
movq $0x0, (%r12)
movl $0x0, 0x8(%r12)
movq %rdx, %rax
jmp 0x8e1d9
leaq (%rdx,%rax,8), %rax
movq (%rax), %rcx
movq %rcx, 0x18(%r12)
movq %r12, (%rax)
movq 0x10(%r14), %rax
incq %r13
cmpq %rax, %r13
jl 0x8e106
movq %r15, 0x10(%r14)
movq 0x8(%rsp), %r13
movq 0x770(%r13), %r14
cmpq $0x0, 0x10(%r14)
jle 0x8e3cd
leaq 0x838(%r13), %rbp
xorl %r13d, %r13d
leaq 0xbca50(%rip), %r15     # 0x14ac70
xorl %r12d, %r12d
movq (%r14), %rax
movq (%rax,%r12,8), %rax
movq (%rax), %rcx
testq %rcx, %rcx
je 0x8e255
btl $0x1b, %ecx
jae 0x8e246
movq 0x28(%rax), %rcx
cmpl $0x0, 0xc(%rcx)
je 0x8e31c
movq (%r14), %rcx
movq %rax, (%rcx,%r13,8)
incq %r13
jmp 0x8e30a
movq 0x28(%rax), %rbx
cmpq $0x0, 0x18(%rbx)
jle 0x8e2cb
movq 0x8(%rax), %rcx
testq %rcx, %rcx
js 0x8e2cb
movq 0x10(%rax), %rdx
xorl %esi, %esi
movq (%rdx,%rsi,8), %rdi
testq %rdi, %rdi
je 0x8e293
movq (%rbp), %r8
movq 0x18(%rdi), %r9
movq %r8, 0x18(%rdi)
movq %rdi, (%rbp)
movq %rdi, %r8
movq %r9, %rdi
testq %r9, %r9
jne 0x8e27c
movq %rsi, %rdi
orq $0x1, %rdi
movq (%rdx,%rdi,8), %rdi
testq %rdi, %rdi
je 0x8e2be
movq (%rbp), %r8
movq 0x18(%rdi), %r9
movq %r8, 0x18(%rdi)
movq %rdi, (%rbp)
movq %rdi, %r8
movq %r9, %rdi
testq %r9, %r9
jne 0x8e2a7
addq $0x2, %rsi
cmpq %rcx, %rsi
jle 0x8e26f
movq 0x28(%rax), %rbx
movslq 0x8(%rbx), %rax
cmpq $0x11, %rax
jne 0x8e2f5
movq (%rbx), %rdi
testq %rdi, %rdi
je 0x8e2e9
callq 0x8050
movq $0x0, (%rbx)
movl $0x0, 0x8(%rbx)
movq %rbp, %rax
jmp 0x8e300
leaq (,%rax,8), %rax
addq %rbp, %rax
movq (%rax), %rcx
movq %rcx, 0x18(%rbx)
movq %rbx, (%rax)
incq %r12
cmpq 0x10(%r14), %r12
jl 0x8e223
jmp 0x8e3c4
cmpq $0x0, 0x18(%rcx)
jle 0x8e246
movq 0x8(%rax), %rcx
testq %rcx, %rcx
js 0x8e246
movq 0x10(%rax), %rdx
xorl %esi, %esi
movq (%rdx,%rsi,8), %rdi
testq %rdi, %rdi
je 0x8e395
leaq (%rdx,%rsi,8), %r8
movq %rdi, %r10
movq (%r10), %r11
movq 0x18(%r10), %r9
cmpq $0x0, (%r11)
je 0x8e35c
movq %r10, %rdi
jmp 0x8e38d
leaq 0x18(%rdi), %r11
cmpq (%r8), %r10
cmoveq %r8, %r11
cmoveq %r9, %rdi
movq %r9, (%r11)
movq (%rbp), %r11
movq %r11, 0x18(%r10)
movq %r10, (%rbp)
movq 0x28(%rax), %r10
decq 0x18(%r10)
movq 0x28(%rax), %r10
cmpq $0x0, 0x18(%r10)
je 0x8e3a6
movq %r9, %r10
testq %r9, %r9
jne 0x8e34a
leaq 0x1(%rsi), %rdi
cmpq %rcx, %rsi
movq %rdi, %rsi
jne 0x8e33a
jmp 0x8e246
cmpq %r15, 0x20(%rax)
jne 0x8e246
leaq -0x5154a(%rip), %rcx    # 0x3ce6d
movq %rcx, 0x18(%rax)
andb $-0x21, 0x3(%rax)
jmp 0x8e246
movq %r13, 0x10(%r14)
movq 0x8(%rsp), %r13
movq 0x7a0(%r13), %rax
movq 0x10(%rax), %rcx
testq %rcx, %rcx
jle 0x8e401
xorl %edx, %edx
xorl %esi, %esi
movq (%rax), %rdi
movq (%rdi,%rsi,8), %r8
cmpq $0x0, (%r8)
je 0x8e3f5
movq %r8, (%rdi,%rdx,8)
incq %rdx
incq %rsi
cmpq %rsi, %rcx
jne 0x8e3e1
movq %rdx, 0x10(%rax)
movq 0x748(%r13), %r12
movq 0x10(%r12), %rax
testq %rax, %rax
jle 0x8e5a4
leaq 0x838(%r13), %rbp
xorl %r13d, %r13d
xorl %r15d, %r15d
movq (%r12), %rcx
movq (%rcx,%r15,8), %r14
cmpq $0x0, (%r14)
je 0x8e43d
movq %r14, (%rcx,%r13,8)
incq %r13
jmp 0x8e58e
movq 0x8(%r14), %rax
cmpb $0x0, 0x2(%rax)
jne 0x8e4d6
movl 0x4(%rax), %ecx
cmpl $0x1, %ecx
je 0x8e473
testl %ecx, %ecx
jne 0x8e4d6
movq 0x8(%rax), %rdi
testq %rdi, %rdi
je 0x8e4d6
callq 0x8180
movq 0x8(%r14), %rax
movq $0x0, 0x8(%rax)
jmp 0x8e4d6
cmpb $0x1, 0x1(%rax)
jne 0x8e4d6
movq 0x28(%rax), %rcx
movq 0x8(%rsp), %rdx
cmpq %rcx, 0xf0(%rdx)
jle 0x8e4d2
movq 0x8(%rsp), %r9
movq 0xd0(%r9), %rdx
movq 0x140(%r9), %rax
movq 0x10(%rdx), %rsi
cmpq %rax, (%rsi,%rcx,8)
je 0x8e4ca
movq 0xe8(%r9), %rsi
movq 0x108(%r9), %rdi
leaq 0x1(%rdi), %r8
movq %r8, 0x108(%r9)
movq %rcx, 0x8(%rsi,%rdi,8)
movq 0x10(%rdx), %rsi
movq %rax, (%rsi,%rcx,8)
movq 0x8(%r14), %rax
movb $0x0, 0x1(%rax)
movq 0x8(%r14), %rax
cmpb $0x1, (%rax)
jne 0x8e4f0
movq 0x8(%rsp), %rdi
movq %r14, %rsi
callq 0x8ecf1
movq 0x8(%r14), %rax
cmpq $0x0, 0x10(%rax)
je 0x8e546
movq 0x18(%rax), %rbx
movslq 0x8(%rbx), %rax
cmpq $0x11, %rax
jne 0x8e525
movq (%rbx), %rdi
testq %rdi, %rdi
je 0x8e519
callq 0x8050
movq $0x0, (%rbx)
movl $0x0, 0x8(%rbx)
movq %rbp, %rax
jmp 0x8e530
leaq (,%rax,8), %rax
addq %rbp, %rax
movq (%rax), %rcx
movq %rcx, 0x18(%rbx)
movq %rbx, (%rax)
movq 0x8(%r14), %rax
movq $0x0, 0x10(%rax)
movq 0x28(%r14), %rbx
movslq 0x8(%rbx), %rax
cmpq $0x11, %rax
jne 0x8e574
movq (%rbx), %rdi
testq %rdi, %rdi
je 0x8e568
callq 0x8050
movq $0x0, (%rbx)
movl $0x0, 0x8(%rbx)
movq %rbp, %rax
jmp 0x8e57f
leaq (,%rax,8), %rax
addq %rbp, %rax
movq (%rax), %rcx
movq %rcx, 0x18(%rbx)
movq %rbx, (%rax)
movq 0x10(%r12), %rax
incq %r15
cmpq %rax, %r15
jl 0x8e423
movq %r13, 0x10(%r12)
movq 0x8(%rsp), %r13
movq 0x758(%r13), %r14
movq 0x10(%r14), %rcx
testq %rcx, %rcx
jle 0x8e69a
leaq 0x838(%r13), %r12
xorl %r15d, %r15d
xorl %r13d, %r13d
movq (%r14), %rdx
movq (%rdx,%r13,8), %rax
cmpq $0x0, (%rax)
je 0x8e5de
movq %rax, (%rdx,%r15,8)
incq %r15
jmp 0x8e685
movq 0x8(%rax), %rdx
cmpb $0x1, 0x1(%rdx)
jne 0x8e645
movq 0x28(%rdx), %rcx
movq 0x8(%rsp), %rsi
cmpq %rcx, 0xf0(%rsi)
jle 0x8e641
movq 0x8(%rsp), %r10
movq 0xd0(%r10), %rsi
movq 0x140(%r10), %rdx
movq 0x10(%rsi), %rdi
cmpq %rdx, (%rdi,%rcx,8)
je 0x8e639
movq 0xe8(%r10), %rdi
movq 0x108(%r10), %r8
leaq 0x1(%r8), %r9
movq %r9, 0x108(%r10)
movq %rcx, 0x8(%rdi,%r8,8)
movq 0x10(%rsi), %rdi
movq %rdx, (%rdi,%rcx,8)
movq 0x8(%rax), %rdx
movb $0x0, 0x1(%rdx)
movq 0x28(%rax), %rbx
movslq 0x8(%rbx), %rax
cmpq $0x11, %rax
jne 0x8e673
movq (%rbx), %rdi
testq %rdi, %rdi
je 0x8e667
callq 0x8050
movq $0x0, (%rbx)
movl $0x0, 0x8(%rbx)
movq %r12, %rax
jmp 0x8e677
leaq (%r12,%rax,8), %rax
movq (%rax), %rcx
movq %rcx, 0x18(%rbx)
movq %rbx, (%rax)
movq 0x10(%r14), %rcx
incq %r13
cmpq %rcx, %r13
jl 0x8e5c5
movq %r15, 0x10(%r14)
movq 0x8(%rsp), %r13
movq 0x750(%r13), %r15
cmpq $0x0, 0x10(%r15)
jle 0x8e7a1
addq $0x838, %r13            # imm = 0x838
xorl %r12d, %r12d
xorl %ebp, %ebp
movq (%r15), %rax
movq (%rax,%rbp,8), %r14
cmpq $0x0, (%r14)
je 0x8e6d1
movq %r14, (%rax,%r12,8)
incq %r12
jmp 0x8e78b
movq 0x8(%r14), %rax
movq 0x48(%rax), %rax
movq 0x8(%rsp), %rdi
movq %r14, %rsi
callq *0x48(%rax)
movq 0x28(%r14), %rbx
movslq 0x8(%rbx), %rax
cmpq $0x11, %rax
jne 0x8e712
movq (%rbx), %rdi
testq %rdi, %rdi
je 0x8e706
callq 0x8050
movq $0x0, (%rbx)
movl $0x0, 0x8(%rbx)
movq %r13, %rax
jmp 0x8e71d
leaq (,%rax,8), %rax
addq %r13, %rax
movq (%rax), %rcx
movq %rcx, 0x18(%rbx)
movq %rbx, (%rax)
movq 0x8(%r14), %rax
cmpb $0x1, (%rax)
jne 0x8e78b
movq 0x38(%rax), %rbx
testq %rbx, %rbx
je 0x8e788
movslq 0x8(%rbx), %rax
cmpq $0x11, %rax
jne 0x8e763
movq (%rbx), %rdi
testq %rdi, %rdi
je 0x8e757
callq 0x8050
movq $0x0, (%rbx)
movl $0x0, 0x8(%rbx)
movq %r13, %rax
jmp 0x8e76e
leaq (,%rax,8), %rax
addq %r13, %rax
movq (%rax), %rcx
movq %rcx, 0x18(%rbx)
movq %rbx, (%rax)
movq 0x8(%r14), %rax
movq $0x0, 0x38(%rax)
movq 0x8(%r14), %rax
movb $0x0, (%rax)
incq %rbp
cmpq 0x10(%r15), %rbp
jl 0x8e6b8
movq %r12, 0x10(%r15)
movq 0x8(%rsp), %r13
movq 0x760(%r13), %rax
movq 0x10(%rax), %rdx
testq %rdx, %rdx
movabsq $0x7fffffffffffffff, %r10 # imm = 0x7FFFFFFFFFFFFFFF
movq 0x18(%rsp), %r11
jle 0x8e808
xorl %ecx, %ecx
xorl %esi, %esi
movq (%rax), %r8
movq (%r8,%rsi,8), %rdi
cmpq $0x0, (%rdi)
je 0x8e7da
movq %rdi, (%r8,%rcx,8)
incq %rcx
jmp 0x8e7fc
movq $0x0, 0x18(%rdi)
movq 0x8(%rdi), %rdx
movq 0x838(%r13), %rdi
movq %rdi, 0x18(%rdx)
movq %rdx, 0x838(%r13)
movq 0x10(%rax), %rdx
incq %rsi
cmpq %rdx, %rsi
jl 0x8e7c4
movq %rcx, 0x10(%rax)
movq 0x7a8(%r13), %rax
movq 0x10(%rax), %rcx
testq %rcx, %rcx
jle 0x8e83c
xorl %edx, %edx
xorl %esi, %esi
movq (%rax), %rdi
movq (%rdi,%rsi,8), %r8
cmpq $0x0, (%r8)
je 0x8e830
movq %r8, (%rdi,%rdx,8)
incq %rdx
incq %rsi
cmpq %rsi, %rcx
jne 0x8e81c
movq %rdx, 0x10(%rax)
movq 0x798(%r13), %rax
cmpq $0x0, 0x10(%rax)
jle 0x8e8a6
xorl %ecx, %ecx
xorl %edx, %edx
movq (%rax), %rsi
movq (%rsi,%rdx,8), %rsi
cmpq $0x0, (%rsi)
je 0x8e899
movq 0x20(%rsi), %rdi
cmpq $0x0, (%rdi)
movq 0x120(%r13), %r8
jne 0x8e873
movq %r8, 0x20(%rsi)
movq %r8, %rdi
movq 0x28(%rsi), %r9
cmpq $0x0, (%r9)
jne 0x8e884
movq %r8, 0x28(%rsi)
movq %r8, %r9
xorq %r8, %rdi
xorq %r8, %r9
orq %rdi, %r9
je 0x8e899
movq (%rax), %rdi
movq %rsi, (%rdi,%rcx,8)
incq %rcx
incq %rdx
cmpq 0x10(%rax), %rdx
jl 0x8e84e
movq %rcx, 0x10(%rax)
movq 0xc0(%r13), %rax
testq %rax, %rax
je 0x8e8be
movq (%rax), %rcx
andq %r10, (%rcx)
movq 0x8(%rax), %rax
jmp 0x8e8ad
movq 0xc8(%r13), %rax
testq %rax, %rax
je 0x8e8d6
movq (%rax), %rcx
andq %r10, (%rcx)
movq 0x8(%rax), %rax
jmp 0x8e8c5
movq 0x90(%r13), %rcx
movq %rcx, %rax
subq %r11, %rax
sarq $0x3, %rax
movq %rax, 0xb0(%r13)
testb $0x1, 0x21c(%r13)
je 0x8e975
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 0x7774b(%rip), %xmm0    # 0x106078
addsd %xmm1, %xmm0
movq 0xb0(%r13), %rcx
movq 0x90(%r13), %r9
movq 0xa8(%r13), %r8
subq 0x88(%r13), %r9
sarq $0x3, %r9
leaq 0x87c8d(%rip), %rdx     # 0x1165e5
movl $0x100, %esi            # imm = 0x100
movq %r13, %rdi
movb $0x1, %al
callq 0xeea2
movq 0x90(%r13), %rcx
movq 0xb0(%r13), %rax
movq %rcx, 0xa0(%r13)
addq $0x48, %rsp
popq %rbx
popq %r12
popq %r13
popq %r14
popq %r15
popq %rbp
retq