// File: /workspace/github_c_makefile_star2_O0/BernardTatin[P]s7sh/s7.c
// Function: collect_shared_info
static bool collect_shared_info(s7_scheme *sc, shared_info *ci, s7_pointer top, bool stop_at_print_length)
    {
        /* look for top in current list.
         * As we collect objects (guaranteed to have structure) we set the collected bit.  If we ever
         *   encounter an object with that bit on, we've seen it before so we have a possible cycle.
         *   Once the collection pass is done, we run through our list, and clear all these bits.
         */
        bool top_cyclic;

        if (is_collected_or_shared(top))
        {
            if (is_shared(top))
                return(false);
            return(check_collected(top, ci));
        }

        /* top not seen before -- add it to the list */
        set_collected(top);

        if (ci->top == ci->size)
            enlarge_shared_info(ci);
        ci->objs[ci->top++] = top;

        top_cyclic = false;
        /* now search the rest of this structure */
        if (is_pair(top))
        {
            s7_pointer p, cp;
            if ((has_structure(car(top))) &&
                    (collect_shared_info(sc, ci, car(top), stop_at_print_length)))
                top_cyclic = true;

            for (p = cdr(top); is_pair(p); p = cdr(p))
            {
                if (is_collected_or_shared(p))
                {
                    set_cyclic(top);
                    set_cyclic(p);
                    if (is_shared(p))
                    {
                        if (!top_cyclic)
                            for (cp = top; cp != p; cp = cdr(cp)) set_shared(cp);
                        return(top_cyclic);
                    }
                    return(check_collected(p, ci));
                }
                set_collected(p);
                if (ci->top == ci->size)
                    enlarge_shared_info(ci);
                ci->objs[ci->top++] = p;
                if ((has_structure(car(p))) &&
                        (collect_shared_info(sc, ci, car(p), stop_at_print_length)))
                    top_cyclic = true;
            }
            if ((has_structure(p)) &&
                    (collect_shared_info(sc, ci, p, stop_at_print_length)))
            {
                set_cyclic(top);
                return(true);
            }
            if (!top_cyclic)
                for (cp = top; is_pair(cp); cp = cdr(cp)) set_shared(cp);
            else set_cyclic(top);
            return(top_cyclic);
        }

        switch (type(top))
        {
            case T_VECTOR:
                if (collect_vector_info(sc, ci, top, stop_at_print_length))
                    top_cyclic = true;
                break;

            case T_ITERATOR:
                if ((is_sequence(iterator_sequence(top))) && /* might be a function with +iterator+ local */
                        (collect_shared_info(sc, ci, iterator_sequence(top), stop_at_print_length)))
                {
                    if (peek_shared_ref(ci, iterator_sequence(top)) == 0)
                        check_collected(iterator_sequence(top), ci);
                    top_cyclic = true;
                }
                break;

            case T_HASH_TABLE:
                if (hash_table_entries(top) > 0)
                {
                    s7_int i, len;
                    hash_entry_t **entries;
                    bool keys_safe;

                    keys_safe = ((hash_table_checker(top) != hash_equal) &&
                            (hash_table_checker(top) != hash_equivalent) &&
                            (!hash_table_checker_locked(top)));
                    entries = hash_table_elements(top);
                    len = hash_table_mask(top) + 1;
                    for (i = 0; i < len; i++)
                    {
                        hash_entry_t *p;
                        for (p = entries[i]; p; p = hash_entry_next(p))
                        {
                            if ((!keys_safe) &&
                                    (has_structure(hash_entry_key(p))) &&
                                    (collect_shared_info(sc, ci, hash_entry_key(p), stop_at_print_length)))
                                top_cyclic = true;
                            if ((has_structure(hash_entry_value(p))) &&
                                    (collect_shared_info(sc, ci, hash_entry_value(p), stop_at_print_length)))
                            {
                                if ((is_c_pointer(hash_entry_value(p))) ||
                                        (is_iterator(hash_entry_value(p))) ||
                                        (is_c_object(hash_entry_value(p))))
                                    check_collected(top, ci);
                                top_cyclic = true;
                            }
                        }
                    }
                }
                break;

            case T_SLOT: /* this can be hit if we somehow collect_shared_info on sc->rootlet via collect_vector_info (see the let case below) */
                if ((has_structure(slot_value(top))) &&
                        (collect_shared_info(sc, ci, slot_value(top), stop_at_print_length)))
                    top_cyclic = true;
                break;

            case T_LET:
                if (top == sc->rootlet)
                {
                    if (collect_vector_info(sc, ci, top, stop_at_print_length))
                        top_cyclic = true;
                }
                else
                {
                    s7_pointer p, q;
                    for (q = top; is_let(q) && (q != sc->rootlet); q = outlet(q))
                    {
                        for (p = let_slots(q); tis_slot(p); p = next_slot(p))
                            if ((has_structure(slot_value(p))) &&
                                    (collect_shared_info(sc, ci, slot_value(p), stop_at_print_length)))
                            {
                                top_cyclic = true;
                                if ((is_c_pointer(slot_value(p))) ||
                                        (is_iterator(slot_value(p))) ||
                                        (is_c_object(slot_value(p))))
                                    check_collected(top, ci);
                            }
                    }
                }
                break;

            case T_CLOSURE:
            case T_CLOSURE_STAR:
                if (collect_shared_info(sc, ci, closure_body(top), stop_at_print_length))
                {
                    if (peek_shared_ref(ci, top) == 0)
                        check_collected(top, ci);
                    top_cyclic = true;
                }
                break;

            case T_C_POINTER:
                if ((has_structure(c_pointer_type(top))) &&
                        (collect_shared_info(sc, ci, c_pointer_type(top), stop_at_print_length)))
                {
                    if (peek_shared_ref(ci, c_pointer_type(top)) == 0)
                        check_collected(c_pointer_type(top), ci);
                    top_cyclic = true;
                }
                if ((has_structure(c_pointer_info(top))) &&
                        (collect_shared_info(sc, ci, c_pointer_info(top), stop_at_print_length)))
                {
                    if (peek_shared_ref(ci, c_pointer_info(top)) == 0)
                        check_collected(c_pointer_info(top), ci);
                    top_cyclic = true;
                }
                break;

            case T_C_OBJECT:
                if ((c_object_to_list(sc, top)) &&
                        (c_object_set(sc, top)) &&
                        (collect_shared_info(sc, ci, (*(c_object_to_list(sc, top)))(sc, set_plist_1(sc, top)), stop_at_print_length)))
                {
                    if (peek_shared_ref(ci, top) == 0)
                        check_collected(top, ci);
                    top_cyclic = true;
                }
                break;
        }

        if (!top_cyclic)
            set_shared(top);
        else set_cyclic(top);
        return(top_cyclic);
    }

// Assembly:
subq $0xa8, %rsp
movb %cl, %al
movq %rdi, 0x98(%rsp)
movq %rsi, 0x90(%rsp)
movq %rdx, 0x88(%rsp)
andb $0x1, %al
movb %al, 0x87(%rsp)
movq 0x88(%rsp), %rax
movq (%rax), %rax
andq $0xa0000, %rax          # imm = 0xA0000
cmpq $0x0, %rax
je 0xd1648
movq 0x88(%rsp), %rax
movq (%rax), %rax
andq $0x80000, %rax          # imm = 0x80000
cmpq $0x0, %rax
je 0xd1625
movb $0x0, 0xa7(%rsp)
jmp 0xd232e
movq 0x88(%rsp), %rdi
movq 0x90(%rsp), %rsi
callq 0xd23f0
andb $0x1, %al
movb %al, 0xa7(%rsp)
jmp 0xd232e
movq 0x88(%rsp), %rax
movq (%rax), %rcx
orq $0x20000, %rcx          # imm = 0x20000
movq %rcx, (%rax)
movq 0x90(%rsp), %rax
movl 0xc(%rax), %eax
movq 0x90(%rsp), %rcx
cmpl 0x8(%rcx), %eax
jne 0xd1682
movq 0x90(%rsp), %rdi
callq 0xd24c0
movq 0x88(%rsp), %rdx
movq 0x90(%rsp), %rax
movq (%rax), %rax
movq 0x90(%rsp), %rsi
movl 0xc(%rsi), %ecx
movl %ecx, %edi
addl $0x1, %edi
movl %edi, 0xc(%rsi)
movslq %ecx, %rcx
movq %rdx, (%rax,%rcx,8)
movb $0x0, 0x86(%rsp)
movq 0x88(%rsp), %rax
movzbl (%rax), %eax
cmpl $0x1, %eax
jne 0xd1a23
movq 0x88(%rsp), %rax
movq 0x8(%rax), %rax
movzbl (%rax), %eax
movl %eax, %ecx
leaq 0x1507ad(%rip), %rax    # 0x221e90
testb $0x1, (%rax,%rcx)
je 0xd1752
movq 0x88(%rsp), %rax
movq 0x8(%rax), %rax
movzbl (%rax), %eax
cmpl $0x15, %eax
jne 0xd1717
movq 0x88(%rsp), %rax
movq 0x8(%rax), %rax
movzwl 0x6(%rax), %eax
andl $0x100, %eax            # imm = 0x100
cmpl $0x0, %eax
jne 0xd1752
movq 0x98(%rsp), %rdi
movq 0x90(%rsp), %rsi
movq 0x88(%rsp), %rax
movq 0x8(%rax), %rdx
movb 0x87(%rsp), %al
andb $0x1, %al
movzbl %al, %ecx
callq 0xd15c0
testb $0x1, %al
jne 0xd174a
jmp 0xd1752
movb $0x1, 0x86(%rsp)
movq 0x88(%rsp), %rax
movq 0x10(%rax), %rax
movq %rax, 0x78(%rsp)
movq 0x78(%rsp), %rax
movzbl (%rax), %eax
cmpl $0x1, %eax
jne 0xd1930
movq 0x78(%rsp), %rax
movq (%rax), %rax
andq $0xa0000, %rax          # imm = 0xA0000
cmpq $0x0, %rax
je 0xd183f
movq 0x88(%rsp), %rax
movzwl 0x6(%rax), %ecx
orl $0x20, %ecx
movw %cx, 0x6(%rax)
movq 0x78(%rsp), %rax
movzwl 0x6(%rax), %ecx
orl $0x20, %ecx
movw %cx, 0x6(%rax)
movq 0x78(%rsp), %rax
movq (%rax), %rax
andq $0x80000, %rax          # imm = 0x80000
cmpq $0x0, %rax
je 0xd181f
testb $0x1, 0x86(%rsp)
jne 0xd180a
movq 0x88(%rsp), %rax
movq %rax, 0x70(%rsp)
movq 0x70(%rsp), %rax
cmpq 0x78(%rsp), %rax
je 0xd1808
movq 0x70(%rsp), %rax
movq (%rax), %rcx
orq $0x80000, %rcx          # imm = 0x80000
movq %rcx, (%rax)
movq 0x70(%rsp), %rax
movq 0x10(%rax), %rax
movq %rax, 0x70(%rsp)
jmp 0xd17da
jmp 0xd180a
movb 0x86(%rsp), %al
andb $0x1, %al
movb %al, 0xa7(%rsp)
jmp 0xd232e
movq 0x78(%rsp), %rdi
movq 0x90(%rsp), %rsi
callq 0xd23f0
andb $0x1, %al
movb %al, 0xa7(%rsp)
jmp 0xd232e
movq 0x78(%rsp), %rax
movq (%rax), %rcx
orq $0x20000, %rcx          # imm = 0x20000
movq %rcx, (%rax)
movq 0x90(%rsp), %rax
movl 0xc(%rax), %eax
movq 0x90(%rsp), %rcx
cmpl 0x8(%rcx), %eax
jne 0xd1876
movq 0x90(%rsp), %rdi
callq 0xd24c0
movq 0x78(%rsp), %rdx
movq 0x90(%rsp), %rax
movq (%rax), %rax
movq 0x90(%rsp), %rsi
movl 0xc(%rsi), %ecx
movl %ecx, %edi
addl $0x1, %edi
movl %edi, 0xc(%rsi)
movslq %ecx, %rcx
movq %rdx, (%rax,%rcx,8)
movq 0x78(%rsp), %rax
movq 0x8(%rax), %rax
movzbl (%rax), %eax
movl %eax, %ecx
leaq 0x1505db(%rip), %rax    # 0x221e90
testb $0x1, (%rax,%rcx)
je 0xd191b
movq 0x78(%rsp), %rax
movq 0x8(%rax), %rax
movzbl (%rax), %eax
cmpl $0x15, %eax
jne 0xd18e3
movq 0x78(%rsp), %rax
movq 0x8(%rax), %rax
movzwl 0x6(%rax), %eax
andl $0x100, %eax            # imm = 0x100
cmpl $0x0, %eax
jne 0xd191b
movq 0x98(%rsp), %rdi
movq 0x90(%rsp), %rsi
movq 0x78(%rsp), %rax
movq 0x8(%rax), %rdx
movb 0x87(%rsp), %al
andb $0x1, %al
movzbl %al, %ecx
callq 0xd15c0
testb $0x1, %al
jne 0xd1913
jmp 0xd191b
movb $0x1, 0x86(%rsp)
jmp 0xd191d
movq 0x78(%rsp), %rax
movq 0x10(%rax), %rax
movq %rax, 0x78(%rsp)
jmp 0xd1763
movq 0x78(%rsp), %rax
movzbl (%rax), %eax
movl %eax, %ecx
leaq 0x15054f(%rip), %rax    # 0x221e90
testb $0x1, (%rax,%rcx)
je 0xd19b3
movq 0x78(%rsp), %rax
movzbl (%rax), %eax
cmpl $0x15, %eax
jne 0xd1967
movq 0x78(%rsp), %rax
movzwl 0x6(%rax), %eax
andl $0x100, %eax            # imm = 0x100
cmpl $0x0, %eax
jne 0xd19b3
movq 0x98(%rsp), %rdi
movq 0x90(%rsp), %rsi
movq 0x78(%rsp), %rdx
movb 0x87(%rsp), %al
andb $0x1, %al
movzbl %al, %ecx
callq 0xd15c0
testb $0x1, %al
jne 0xd1993
jmp 0xd19b3
movq 0x88(%rsp), %rax
movzwl 0x6(%rax), %ecx
orl $0x20, %ecx
movw %cx, 0x6(%rax)
movb $0x1, 0xa7(%rsp)
jmp 0xd232e
testb $0x1, 0x86(%rsp)
jne 0xd19fb
movq 0x88(%rsp), %rax
movq %rax, 0x70(%rsp)
movq 0x70(%rsp), %rax
movzbl (%rax), %eax
cmpl $0x1, %eax
jne 0xd19f9
movq 0x70(%rsp), %rax
movq (%rax), %rcx
orq $0x80000, %rcx          # imm = 0x80000
movq %rcx, (%rax)
movq 0x70(%rsp), %rax
movq 0x10(%rax), %rax
movq %rax, 0x70(%rsp)
jmp 0xd19ca
jmp 0xd1a0e
movq 0x88(%rsp), %rax
movzwl 0x6(%rax), %ecx
orl $0x20, %ecx
movw %cx, 0x6(%rax)
movb 0x86(%rsp), %al
andb $0x1, %al
movb %al, 0xa7(%rsp)
jmp 0xd232e
movq 0x88(%rsp), %rax
movzbl (%rax), %eax
addl $-0x14, %eax
movl %eax, %ecx
movq %rcx, 0x30(%rsp)
subl $0x15, %eax
ja 0xd22ea
movq 0x30(%rsp), %rax
leaq 0x10dc07(%rip), %rcx    # 0x1df654
movslq (%rcx,%rax,4), %rax
addq %rcx, %rax
jmpq *%rax
movq 0x98(%rsp), %rdi
movq 0x90(%rsp), %rsi
movq 0x88(%rsp), %rdx
movb 0x87(%rsp), %al
andb $0x1, %al
movzbl %al, %ecx
callq 0xd25c0
testb $0x1, %al
jne 0xd1a85
jmp 0xd1a8d
movb $0x1, 0x86(%rsp)
jmp 0xd22ea
movq 0x88(%rsp), %rax
movq 0x8(%rax), %rax
movzbl (%rax), %eax
movl %eax, %ecx
leaq 0x150c26(%rip), %rax    # 0x2226d0
testb $0x1, (%rax,%rcx)
jne 0xd1acb
movq 0x88(%rsp), %rax
movq 0x8(%rax), %rax
movq (%rax), %rax
andq $0x40000000, %rax       # imm = 0x40000000
cmpq $0x0, %rax
je 0xd1b3d
movq 0x98(%rsp), %rdi
movq 0x90(%rsp), %rsi
movq 0x88(%rsp), %rax
movq 0x8(%rax), %rdx
movb 0x87(%rsp), %al
andb $0x1, %al
movzbl %al, %ecx
callq 0xd15c0
testb $0x1, %al
jne 0xd1afe
jmp 0xd1b3d
movq 0x90(%rsp), %rdi
movq 0x88(%rsp), %rax
movq 0x8(%rax), %rsi
callq 0xd2740
cmpl $0x0, %eax
jne 0xd1b35
movq 0x88(%rsp), %rax
movq 0x8(%rax), %rdi
movq 0x90(%rsp), %rsi
callq 0xd23f0
movb $0x1, 0x86(%rsp)
jmp 0xd22ea
movq 0x88(%rsp), %rax
movq 0x28(%rax), %rax
cmpq $0x0, 0x18(%rax)
jle 0xd1d88
movq 0x88(%rsp), %rcx
xorl %eax, %eax
leaq -0x99efa(%rip), %rdx    # 0x37c70
cmpq %rdx, 0x18(%rcx)
movb %al, 0x2f(%rsp)
je 0xd1bab
movq 0x88(%rsp), %rcx
xorl %eax, %eax
leaq 0xc0b(%rip), %rdx       # 0xd2790
cmpq %rdx, 0x18(%rcx)
movb %al, 0x2f(%rsp)
je 0xd1bab
movq 0x88(%rsp), %rax
leaq 0x148c02(%rip), %rcx    # 0x21a7a0
cmpq %rcx, 0x20(%rax)
setne %al
xorb $-0x1, %al
movb %al, 0x2f(%rsp)
movb 0x2f(%rsp), %al
andb $0x1, %al
movb %al, 0x57(%rsp)
movq 0x88(%rsp), %rax
movq 0x10(%rax), %rax
movq %rax, 0x58(%rsp)
movq 0x88(%rsp), %rax
movq 0x8(%rax), %rax
addq $0x1, %rax
movq %rax, 0x60(%rsp)
movq $0x0, 0x68(%rsp)
movq 0x68(%rsp), %rax
cmpq 0x60(%rsp), %rax
jge 0xd1d86
movq 0x58(%rsp), %rax
movq 0x68(%rsp), %rcx
movq (%rax,%rcx,8), %rax
movq %rax, 0x48(%rsp)
cmpq $0x0, 0x48(%rsp)
je 0xd1d71
testb $0x1, 0x57(%rsp)
jne 0xd1c91
movq 0x48(%rsp), %rax
movq (%rax), %rax
movzbl (%rax), %eax
movl %eax, %ecx
leaq 0x150262(%rip), %rax    # 0x221e90
testb $0x1, (%rax,%rcx)
je 0xd1c91
movq 0x48(%rsp), %rax
movq (%rax), %rax
movzbl (%rax), %eax
cmpl $0x15, %eax
jne 0xd1c5a
movq 0x48(%rsp), %rax
movq (%rax), %rax
movzwl 0x6(%rax), %eax
andl $0x100, %eax            # imm = 0x100
cmpl $0x0, %eax
jne 0xd1c91
movq 0x98(%rsp), %rdi
movq 0x90(%rsp), %rsi
movq 0x48(%rsp), %rax
movq (%rax), %rdx
movb 0x87(%rsp), %al
andb $0x1, %al
movzbl %al, %ecx
callq 0xd15c0
testb $0x1, %al
jne 0xd1c89
jmp 0xd1c91
movb $0x1, 0x86(%rsp)
movq 0x48(%rsp), %rax
movq 0x20(%rax), %rax
movzbl (%rax), %eax
movl %eax, %ecx
leaq 0x1501ea(%rip), %rax    # 0x221e90
testb $0x1, (%rax,%rcx)
je 0xd1d5c
movq 0x48(%rsp), %rax
movq 0x20(%rax), %rax
movzbl (%rax), %eax
cmpl $0x15, %eax
jne 0xd1cdc
movq 0x48(%rsp), %rax
movq 0x20(%rax), %rax
movzwl 0x6(%rax), %eax
andl $0x100, %eax            # imm = 0x100
cmpl $0x0, %eax
jne 0xd1d5c
movq 0x98(%rsp), %rdi
movq 0x90(%rsp), %rsi
movq 0x48(%rsp), %rax
movq 0x20(%rax), %rdx
movb 0x87(%rsp), %al
andb $0x1, %al
movzbl %al, %ecx
callq 0xd15c0
testb $0x1, %al
jne 0xd1d0c
jmp 0xd1d5c
movq 0x48(%rsp), %rax
movq 0x20(%rax), %rax
movzbl (%rax), %eax
cmpl $0x21, %eax
je 0xd1d3f
movq 0x48(%rsp), %rax
movq 0x20(%rax), %rax
movzbl (%rax), %eax
cmpl $0x1d, %eax
je 0xd1d3f
movq 0x48(%rsp), %rax
movq 0x20(%rax), %rax
movzbl (%rax), %eax
cmpl $0x14, %eax
jne 0xd1d54
movq 0x88(%rsp), %rdi
movq 0x90(%rsp), %rsi
callq 0xd23f0
movb $0x1, 0x86(%rsp)
jmp 0xd1d5e
movq 0x48(%rsp), %rax
movq 0x18(%rax), %rax
movq %rax, 0x48(%rsp)
jmp 0xd1c07
jmp 0xd1d73
movq 0x68(%rsp), %rax
addq $0x1, %rax
movq %rax, 0x68(%rsp)
jmp 0xd1be4
jmp 0xd1d88
jmp 0xd22ea
movq 0x88(%rsp), %rax
movq 0x10(%rax), %rax
movzbl (%rax), %eax
movl %eax, %ecx
leaq 0x1500eb(%rip), %rax    # 0x221e90
testb $0x1, (%rax,%rcx)
je 0xd1e14
movq 0x88(%rsp), %rax
movq 0x10(%rax), %rax
movzbl (%rax), %eax
cmpl $0x15, %eax
jne 0xd1dd9
movq 0x88(%rsp), %rax
movq 0x10(%rax), %rax
movzwl 0x6(%rax), %eax
andl $0x100, %eax            # imm = 0x100
cmpl $0x0, %eax
jne 0xd1e14
movq 0x98(%rsp), %rdi
movq 0x90(%rsp), %rsi
movq 0x88(%rsp), %rax
movq 0x10(%rax), %rdx
movb 0x87(%rsp), %al
andb $0x1, %al
movzbl %al, %ecx
callq 0xd15c0
testb $0x1, %al
jne 0xd1e0c
jmp 0xd1e14
movb $0x1, 0x86(%rsp)
jmp 0xd22ea
movq 0x88(%rsp), %rax
movq 0x98(%rsp), %rcx
cmpq 0x150(%rcx), %rax
jne 0xd1e6e
movq 0x98(%rsp), %rdi
movq 0x90(%rsp), %rsi
movq 0x88(%rsp), %rdx
movb 0x87(%rsp), %al
andb $0x1, %al
movzbl %al, %ecx
callq 0xd25c0
testb $0x1, %al
jne 0xd1e61
jmp 0xd1e69
movb $0x1, 0x86(%rsp)
jmp 0xd1fc9
movq 0x88(%rsp), %rax
movq %rax, 0x38(%rsp)
movq 0x38(%rsp), %rax
movzbl (%rax), %ecx
xorl %eax, %eax
cmpl $0x1c, %ecx
movb %al, 0x2e(%rsp)
jne 0xd1ea9
movq 0x38(%rsp), %rax
movq 0x98(%rsp), %rcx
cmpq 0x150(%rcx), %rax
setne %al
movb %al, 0x2e(%rsp)
movb 0x2e(%rsp), %al
testb $0x1, %al
jne 0xd1eb6
jmp 0xd1fc7
movq 0x38(%rsp), %rax
movq 0x8(%rax), %rax
movq %rax, 0x40(%rsp)
cmpq $0x0, 0x40(%rsp)
je 0xd1fb2
movq 0x40(%rsp), %rax
movq 0x10(%rax), %rax
movzbl (%rax), %eax
movl %eax, %ecx
leaq 0x14ffab(%rip), %rax    # 0x221e90
testb $0x1, (%rax,%rcx)
je 0xd1f9d
movq 0x40(%rsp), %rax
movq 0x10(%rax), %rax
movzbl (%rax), %eax
cmpl $0x15, %eax
jne 0xd1f1b
movq 0x40(%rsp), %rax
movq 0x10(%rax), %rax
movzwl 0x6(%rax), %eax
andl $0x100, %eax            # imm = 0x100
cmpl $0x0, %eax
jne 0xd1f9d
movq 0x98(%rsp), %rdi
movq 0x90(%rsp), %rsi
movq 0x40(%rsp), %rax
movq 0x10(%rax), %rdx
movb 0x87(%rsp), %al
andb $0x1, %al
movzbl %al, %ecx
callq 0xd15c0
testb $0x1, %al
jne 0xd1f4b
jmp 0xd1f9d
movb $0x1, 0x86(%rsp)
movq 0x40(%rsp), %rax
movq 0x10(%rax), %rax
movzbl (%rax), %eax
cmpl $0x21, %eax
je 0xd1f86
movq 0x40(%rsp), %rax
movq 0x10(%rax), %rax
movzbl (%rax), %eax
cmpl $0x1d, %eax
je 0xd1f86
movq 0x40(%rsp), %rax
movq 0x10(%rax), %rax
movzbl (%rax), %eax
cmpl $0x14, %eax
jne 0xd1f9b
movq 0x88(%rsp), %rdi
movq 0x90(%rsp), %rsi
callq 0xd23f0
jmp 0xd1f9d
jmp 0xd1f9f
movq 0x40(%rsp), %rax
movq 0x18(%rax), %rax
movq %rax, 0x40(%rsp)
jmp 0xd1ec4
jmp 0xd1fb4
movq 0x38(%rsp), %rax
movq 0x10(%rax), %rax
movq %rax, 0x38(%rsp)
jmp 0xd1e7b
jmp 0xd1fc9
jmp 0xd22ea
movq 0x98(%rsp), %rdi
movq 0x90(%rsp), %rsi
movq 0x88(%rsp), %rax
movq 0x10(%rax), %rdx
movb 0x87(%rsp), %al
andb $0x1, %al
movzbl %al, %ecx
callq 0xd15c0
testb $0x1, %al
jne 0xd2001
jmp 0xd2038
movq 0x90(%rsp), %rdi
movq 0x88(%rsp), %rsi
callq 0xd2740
cmpl $0x0, %eax
jne 0xd2030
movq 0x88(%rsp), %rdi
movq 0x90(%rsp), %rsi
callq 0xd23f0
movb $0x1, 0x86(%rsp)
jmp 0xd22ea
movq 0x88(%rsp), %rax
movq 0x10(%rax), %rax
movzbl (%rax), %eax
movl %eax, %ecx
leaq 0x14fe3b(%rip), %rax    # 0x221e90
testb $0x1, (%rax,%rcx)
je 0xd20ff
movq 0x88(%rsp), %rax
movq 0x10(%rax), %rax
movzbl (%rax), %eax
cmpl $0x15, %eax
jne 0xd208d
movq 0x88(%rsp), %rax
movq 0x10(%rax), %rax
movzwl 0x6(%rax), %eax
andl $0x100, %eax            # imm = 0x100
cmpl $0x0, %eax
jne 0xd20ff
movq 0x98(%rsp), %rdi
movq 0x90(%rsp), %rsi
movq 0x88(%rsp), %rax
movq 0x10(%rax), %rdx
movb 0x87(%rsp), %al
andb $0x1, %al
movzbl %al, %ecx
callq 0xd15c0
testb $0x1, %al
jne 0xd20c0
jmp 0xd20ff
movq 0x90(%rsp), %rdi
movq 0x88(%rsp), %rax
movq 0x10(%rax), %rsi
callq 0xd2740
cmpl $0x0, %eax
jne 0xd20f7
movq 0x88(%rsp), %rax
movq 0x10(%rax), %rdi
movq 0x90(%rsp), %rsi
callq 0xd23f0
movb $0x1, 0x86(%rsp)
movq 0x88(%rsp), %rax
movq 0x18(%rax), %rax
movzbl (%rax), %eax
movl %eax, %ecx
leaq 0x14fd79(%rip), %rax    # 0x221e90
testb $0x1, (%rax,%rcx)
je 0xd21c1
movq 0x88(%rsp), %rax
movq 0x18(%rax), %rax
movzbl (%rax), %eax
cmpl $0x15, %eax
jne 0xd214f
movq 0x88(%rsp), %rax
movq 0x18(%rax), %rax
movzwl 0x6(%rax), %eax
andl $0x100, %eax            # imm = 0x100
cmpl $0x0, %eax
jne 0xd21c1
movq 0x98(%rsp), %rdi
movq 0x90(%rsp), %rsi
movq 0x88(%rsp), %rax
movq 0x18(%rax), %rdx
movb 0x87(%rsp), %al
andb $0x1, %al
movzbl %al, %ecx
callq 0xd15c0
testb $0x1, %al
jne 0xd2182
jmp 0xd21c1
movq 0x90(%rsp), %rdi
movq 0x88(%rsp), %rax
movq 0x18(%rax), %rsi
callq 0xd2740
cmpl $0x0, %eax
jne 0xd21b9
movq 0x88(%rsp), %rax
movq 0x18(%rax), %rdi
movq 0x90(%rsp), %rsi
callq 0xd23f0
movb $0x1, 0x86(%rsp)
jmp 0xd22ea
movq 0x98(%rsp), %rax
movq 0x8d8(%rax), %rax
movq 0x88(%rsp), %rcx
movq 0x8(%rcx), %rcx
movq (%rax,%rcx,8), %rax
cmpq $0x0, 0x78(%rax)
je 0xd22e8
movq 0x98(%rsp), %rax
movq 0x8d8(%rax), %rax
movq 0x88(%rsp), %rcx
movq 0x8(%rcx), %rcx
movq (%rax,%rcx,8), %rax
cmpq $0x0, 0x50(%rax)
je 0xd22e8
movq 0x98(%rsp), %rax
movq %rax, 0x18(%rsp)
movq 0x90(%rsp), %rax
movq %rax, 0x20(%rsp)
movq 0x98(%rsp), %rax
movq 0x8d8(%rax), %rax
movq 0x88(%rsp), %rcx
movq 0x8(%rcx), %rcx
movq (%rax,%rcx,8), %rax
movq 0x78(%rax), %rax
movq %rax, 0x10(%rsp)
movq 0x98(%rsp), %rax
movq %rax, 0x8(%rsp)
movq 0x98(%rsp), %rdi
movq 0x88(%rsp), %rsi
callq 0x35ea0
movq 0x8(%rsp), %rdi
movq %rax, %rsi
movq 0x10(%rsp), %rax
callq *%rax
movq 0x18(%rsp), %rdi
movq 0x20(%rsp), %rsi
movq %rax, %rdx
movb 0x87(%rsp), %al
andb $0x1, %al
movzbl %al, %ecx
callq 0xd15c0
testb $0x1, %al
jne 0xd22b1
jmp 0xd22e8
movq 0x90(%rsp), %rdi
movq 0x88(%rsp), %rsi
callq 0xd2740
cmpl $0x0, %eax
jne 0xd22e0
movq 0x88(%rsp), %rdi
movq 0x90(%rsp), %rsi
callq 0xd23f0
movb $0x1, 0x86(%rsp)
jmp 0xd22ea
testb $0x1, 0x86(%rsp)
jne 0xd230b
movq 0x88(%rsp), %rax
movq (%rax), %rcx
orq $0x80000, %rcx          # imm = 0x80000
movq %rcx, (%rax)
jmp 0xd231e
movq 0x88(%rsp), %rax
movzwl 0x6(%rax), %ecx
orl $0x20, %ecx
movw %cx, 0x6(%rax)
movb 0x86(%rsp), %al
andb $0x1, %al
movb %al, 0xa7(%rsp)
movb 0xa7(%rsp), %al
andb $0x1, %al
addq $0xa8, %rsp
retq
nop