// File: /workspace/github_c_makefile_star2_O2/johsteffens[P]beth/lib/bcore/bcore_spect_array.c
// Function: test_string_array
static void test_string_array( sc_t type_sc )
{
    vd_t arr = bcore_inst_t_create( typeof( type_sc ) );
    const bcore_array_s* arr_p = bcore_array_s_get_aware( arr );

    bl_t is_dynamic = !bcore_array_p_is_fixed( arr_p );
    bl_t is_of_links = bcore_array_p_is_of_links( arr_p );

    if( is_dynamic ) bcore_array_p_set_gtype( arr_p, arr, typeof( "st_s" ) );
    if( is_dynamic ) bcore_array_p_set_size( arr_p, arr, 5 );
    bcore_array_p_set( arr_p, arr, 0, sr_asm( st_s_createf( "test line a" ) ) );
    bcore_array_p_set( arr_p, arr, 1, sr_asm( st_s_createf( "some nonsense: sakjd" ) ) );
    bcore_array_p_set( arr_p, arr, 2, sr_asm( st_s_createf( "some nonsense: dspaud" ) ) );
    bcore_array_p_set( arr_p, arr, 7, sr_asm( st_s_createf( "test line x" ) ) );
    if( is_dynamic )
    {
        bcore_array_p_push( arr_p, arr, sr_asm( st_s_createf( "test line p" ) ) );
    }
    else
    {
        bcore_array_p_set( arr_p, arr, 8, sr_asm( st_s_createf( "test line p" ) ) );
    }

    if( is_dynamic ) bcore_array_p_set_space( arr_p, arr, 20 );

    ASSERT( bcore_array_p_max_index( arr_p, arr, 0, -1, 1 ) == 7 );

    bcore_array_p_sort( arr_p, arr, 0, -1, 1 );
    {
        bcore_arr_uz_s* order = bcore_array_p_create_sorted_order( arr_p, arr, 0, -1, -1 );
        bcore_array_p_reorder( arr_p, arr, order );
        bcore_arr_uz_s_discard( order );
    }

    ASSERT( bcore_array_p_max_index( arr_p, arr, 0, -1, 1 ) == 0 );

    ASSERT( st_s_cmp_sc( ( const st_s* )arr_p->get( arr_p, arr, 0 ).o, "test line x" ) == 0 );
    ASSERT( st_s_cmp_sc( ( const st_s* )arr_p->get( arr_p, arr, 1 ).o, "test line p" ) == 0 );
    ASSERT( st_s_cmp_sc( ( const st_s* )arr_p->get( arr_p, arr, 2 ).o, "test line a" ) == 0 );
    ASSERT( st_s_cmp_sc( ( const st_s* )arr_p->get( arr_p, arr, 3 ).o, "some nonsense: sakjd" ) == 0 );
    ASSERT( st_s_cmp_sc( ( const st_s* )arr_p->get( arr_p, arr, 4 ).o, "some nonsense: dspaud" ) == 0 );

    /// testing swap
    {
        bcore_msg_fa( "testing #<sc_t>\n", type_sc );
        uz_t size = get_size( arr_p, arr );
        bcore_array_p_swap( arr_p, arr, 2, 1 );
        bcore_array_p_swap( arr_p, arr, 2, 3 );
        ASSERT( get_size( arr_p, arr ) == size );
        ASSERT( st_s_cmp_sc( ( const st_s* )arr_p->get( arr_p, arr, 0 ).o, "test line x" ) == 0 );
        ASSERT( st_s_cmp_sc( ( const st_s* )arr_p->get( arr_p, arr, 1 ).o, "test line a" ) == 0 );
        ASSERT( st_s_cmp_sc( ( const st_s* )arr_p->get( arr_p, arr, 2 ).o, "some nonsense: sakjd" ) == 0 );
        ASSERT( st_s_cmp_sc( ( const st_s* )arr_p->get( arr_p, arr, 3 ).o, "test line p" ) == 0 );
        ASSERT( st_s_cmp_sc( ( const st_s* )arr_p->get( arr_p, arr, 4 ).o, "some nonsense: dspaud" ) == 0 );
        bcore_array_p_swap( arr_p, arr, 2, 3 ); // undo above swap
        bcore_array_p_swap( arr_p, arr, 2, 1 ); // undo above swap
    }

    if( is_dynamic ) ASSERT( get_size( arr_p, arr ) == 9 );

    bcore_arr_uz_s* order = bcore_arr_uz_s_create();
    bcore_arr_uz_s_push( order, 2 );
    bcore_arr_uz_s_push( order, 2 );
    bcore_arr_uz_s_push( order, 1 );
    bcore_arr_uz_s_push( order, 0 );
    bcore_arr_uz_s_push( order, 3 );
    bcore_arr_uz_s_push( order, 4 );

    if( is_dynamic )
    {
        bcore_array_p_reorder( arr_p, arr, order );
        ASSERT( get_size( arr_p, arr ) == order->size );

        ASSERT( st_s_cmp_sc( ( const st_s* )arr_p->get( arr_p, arr, 0 ).o, "test line a" ) == 0 );
        ASSERT( st_s_cmp_sc( ( const st_s* )arr_p->get( arr_p, arr, 1 ).o, "test line a" ) == 0 );
        ASSERT( st_s_cmp_sc( ( const st_s* )arr_p->get( arr_p, arr, 2 ).o, "test line p" ) == 0 );
        ASSERT( st_s_cmp_sc( ( const st_s* )arr_p->get( arr_p, arr, 3 ).o, "test line x" ) == 0 );
        ASSERT( st_s_cmp_sc( ( const st_s* )arr_p->get( arr_p, arr, 4 ).o, "some nonsense: sakjd" ) == 0 );
        ASSERT( st_s_cmp_sc( ( const st_s* )arr_p->get( arr_p, arr, 5 ).o, "some nonsense: dspaud" ) == 0 );
    }

    /// testing removal
    if( is_dynamic )
    {
        ASSERT( bcore_array_p_get_size( arr_p, arr ) == 6 );
        bcore_array_p_remove( arr_p, arr, 4 );
        bcore_array_p_remove( arr_p, arr, 1 );
        ASSERT( bcore_array_p_get_size( arr_p, arr ) == 4 );
        ASSERT( st_s_cmp_sc( ( const st_s* )arr_p->get( arr_p, arr, 0 ).o, "test line a" ) == 0 );
        ASSERT( st_s_cmp_sc( ( const st_s* )arr_p->get( arr_p, arr, 1 ).o, "test line p" ) == 0 );
        ASSERT( st_s_cmp_sc( ( const st_s* )arr_p->get( arr_p, arr, 2 ).o, "test line x" ) == 0 );
        ASSERT( st_s_cmp_sc( ( const st_s* )arr_p->get( arr_p, arr, 3 ).o, "some nonsense: dspaud" ) == 0 );
    }

    /// testing insertion
    if( is_dynamic )
    {
        bcore_array_p_insert( arr_p, arr, 2, sr_asm( st_s_createf( "insertion at line 2" ) ) );
        bcore_array_p_insert( arr_p, arr, 4, sr_asm( st_s_createf( "insertion at line 4" ) ) );
        ASSERT( bcore_array_p_get_size( arr_p, arr ) == 6 );
        ASSERT( st_s_cmp_sc( ( const st_s* )arr_p->get( arr_p, arr, 0 ).o, "test line a" ) == 0 );
        ASSERT( st_s_cmp_sc( ( const st_s* )arr_p->get( arr_p, arr, 1 ).o, "test line p" ) == 0 );
        ASSERT( st_s_cmp_sc( ( const st_s* )arr_p->get( arr_p, arr, 2 ).o, "insertion at line 2" ) == 0 );
        ASSERT( st_s_cmp_sc( ( const st_s* )arr_p->get( arr_p, arr, 3 ).o, "test line x" ) == 0 );
        ASSERT( st_s_cmp_sc( ( const st_s* )arr_p->get( arr_p, arr, 4 ).o, "insertion at line 4" ) == 0 );
        ASSERT( st_s_cmp_sc( ( const st_s* )arr_p->get( arr_p, arr, 5 ).o, "some nonsense: dspaud" ) == 0 );
    }

    /// testing remove_null_elements
    if( is_dynamic && is_of_links )
    {
        bcore_array_p_set( arr_p, arr, 2, sr_null() );
        bcore_array_p_set( arr_p, arr, 4, sr_null() );
        bcore_array_p_remove_null_elements( arr_p, arr );
        ASSERT( bcore_array_p_get_size( arr_p, arr ) == 4 );
        ASSERT( st_s_cmp_sc( ( const st_s* )arr_p->get( arr_p, arr, 0 ).o, "test line a" ) == 0 );
        ASSERT( st_s_cmp_sc( ( const st_s* )arr_p->get( arr_p, arr, 1 ).o, "test line p" ) == 0 );
        ASSERT( st_s_cmp_sc( ( const st_s* )arr_p->get( arr_p, arr, 2 ).o, "test line x" ) == 0 );
        ASSERT( st_s_cmp_sc( ( const st_s* )arr_p->get( arr_p, arr, 3 ).o, "some nonsense: dspaud" ) == 0 );
    }

    bcore_arr_uz_s_discard( order );
    bcore_inst_a_discard( arr );

}

// Assembly:
pushq %rbp
pushq %r15
pushq %r14
pushq %r13
pushq %r12
pushq %rbx
subq $0x3a8, %rsp            # imm = 0x3A8
movq %rdi, 0x40(%rsp)
callq 0x7ee17
movq %rax, %rdi
callq 0x7fc30
movq %rax, %rbx
movq %rax, %rdi
callq 0x7fc49
movq %rax, %r14
movq 0x18(%rax), %r15
movb 0x42(%rax), %al
movb %al, 0x1f(%rsp)
testq %r15, %r15
jne 0x7fce3
leaq 0x4a880(%rip), %rdi     # 0xca542
callq 0x7ee17
movq %r14, %rdi
movq %rbx, %rsi
movq %rax, %rdx
callq 0x7c5ed
pushq $0x5
popq %rdx
movq %r14, %rdi
movq %rbx, %rsi
callq 0x7b8b6
leaq 0x478a9(%rip), %rdi     # 0xc7593
xorl %eax, %eax
callq 0x8ebc4
leaq 0x390(%rsp), %r12
movq %r12, %rdi
movq %rax, %rsi
callq 0x7fc51
movq 0x10(%r12), %rax
movq %rax, 0x10(%rsp)
movups (%r12), %xmm0
movups %xmm0, (%rsp)
movq %r14, %rdi
movq %rbx, %rsi
xorl %edx, %edx
callq *0x38(%r14)
leaq 0x47875(%rip), %rdi     # 0xc759f
xorl %eax, %eax
callq 0x8ebc4
leaq 0x378(%rsp), %r12
movq %r12, %rdi
movq %rax, %rsi
callq 0x7fc51
movq 0x10(%r12), %rax
movq %rax, 0x10(%rsp)
movups (%r12), %xmm0
movups %xmm0, (%rsp)
pushq $0x1
popq %rdx
movq %r14, %rdi
movq %rbx, %rsi
callq *0x38(%r14)
leaq 0x47849(%rip), %rdi     # 0xc75b4
xorl %eax, %eax
callq 0x8ebc4
leaq 0x360(%rsp), %r12
movq %r12, %rdi
movq %rax, %rsi
callq 0x7fc51
movq 0x10(%r12), %rax
movq %rax, 0x10(%rsp)
movups (%r12), %xmm0
movups %xmm0, (%rsp)
pushq $0x2
popq %rdx
movq %r14, %rdi
movq %rbx, %rsi
callq *0x38(%r14)
leaq 0x4781e(%rip), %rdi     # 0xc75ca
xorl %eax, %eax
callq 0x8ebc4
leaq 0x348(%rsp), %r12
movq %r12, %rdi
movq %rax, %rsi
callq 0x7fc51
movq 0x10(%r12), %rax
movq %rax, 0x10(%rsp)
movups (%r12), %xmm0
movups %xmm0, (%rsp)
pushq $0x7
popq %rdx
movq %r14, %rdi
movq %rbx, %rsi
callq *0x38(%r14)
leaq 0x477e9(%rip), %rdi     # 0xc75d6
xorl %eax, %eax
callq 0x8ebc4
testq %r15, %r15
je 0x7fe2e
leaq 0x330(%rsp), %r12
movq %r12, %rdi
movq %rax, %rsi
callq 0x7fc51
movq 0x10(%r12), %rax
movq %rax, 0x10(%rsp)
movups (%r12), %xmm0
movups %xmm0, (%rsp)
pushq $0x8
popq %rdx
movq %r14, %rdi
movq %rbx, %rsi
callq *0x38(%r14)
jmp 0x7fe78
leaq 0x48(%rsp), %rdi
movq %rax, %rsi
callq 0x7fc51
movq 0x18(%r14), %rdx
testq %rdx, %rdx
jne 0x7fe4d
movq 0x20(%r14), %rax
movq 0x8(%rbx,%rax), %rdx
movq 0x58(%rsp), %rax
movq %rax, 0x10(%rsp)
movups 0x48(%rsp), %xmm0
movups %xmm0, (%rsp)
movq %r14, %rdi
movq %rbx, %rsi
callq *0x38(%r14)
pushq $0x14
popq %rdx
movq %r14, %rdi
movq %rbx, %rsi
callq 0x7b3ea
pushq $-0x1
popq %rcx
pushq $0x1
popq %r8
movq %r14, %rdi
movq %rbx, %rsi
xorl %edx, %edx
callq 0x7d064
cmpq $0x7, %rax
je 0x7febb
leaq 0x2a7ae(%rip), %rdi     # 0xaa647
leaq 0x47742(%rip), %rsi     # 0xc75e2
leaq 0x47770(%rip), %rdx     # 0xc7617
leaq 0x46bc2(%rip), %rcx     # 0xc6a70
movl $0x91e, %r8d            # imm = 0x91E
xorl %eax, %eax
callq 0x5ffac
pushq $-0x1
popq %r12
pushq $0x1
popq %rbp
movq %r14, %rdi
movq %rbx, %rsi
xorl %edx, %edx
movq %r12, %rcx
movl %ebp, %r8d
callq 0x7d56c
pushq $-0x1
popq %r8
movq %r14, %rdi
movq %rbx, %rsi
xorl %edx, %edx
movq %r12, %rcx
callq 0x7da03
movq %rax, %r13
movq %r14, %rdi
movq %rbx, %rsi
movq %rax, %rdx
callq 0x7da6e
movq %r13, %rdi
callq 0x58913
movq %r14, %rdi
movq %rbx, %rsi
xorl %edx, %edx
movq %r12, %rcx
movl %ebp, %r8d
callq 0x7d064
testq %rax, %rax
je 0x7ff43
leaq 0x2a726(%rip), %rdi     # 0xaa647
leaq 0x47701(%rip), %rsi     # 0xc7629
leaq 0x476e8(%rip), %rdx     # 0xc7617
leaq 0x46b3a(%rip), %rcx     # 0xc6a70
movl $0x927, %r8d            # imm = 0x927
xorl %eax, %eax
callq 0x5ffac
leaq 0x318(%rsp), %r12
movq %r12, %rdi
movq %r14, %rsi
movq %rbx, %rdx
xorl %ecx, %ecx
callq *0x30(%r14)
movq (%r12), %rdi
leaq 0x47665(%rip), %rsi     # 0xc75ca
callq 0x80d11
testl %eax, %eax
je 0x7ff97
leaq 0x2a6d2(%rip), %rdi     # 0xaa647
leaq 0x476e2(%rip), %rsi     # 0xc765e
leaq 0x47694(%rip), %rdx     # 0xc7617
leaq 0x46ae6(%rip), %rcx     # 0xc6a70
movl $0x929, %r8d            # imm = 0x929
xorl %eax, %eax
callq 0x5ffac
leaq 0x300(%rsp), %r12
pushq $0x1
popq %rcx
movq %r12, %rdi
movq %r14, %rsi
movq %rbx, %rdx
callq *0x30(%r14)
movq (%r12), %rdi
leaq 0x4761c(%rip), %rsi     # 0xc75d6
callq 0x80d11
testl %eax, %eax
movq %r15, %r13
je 0x7ffef
leaq 0x2a67a(%rip), %rdi     # 0xaa647
leaq 0x476da(%rip), %rsi     # 0xc76ae
leaq 0x4763c(%rip), %rdx     # 0xc7617
leaq 0x46a8e(%rip), %rcx     # 0xc6a70
movl $0x92a, %r8d            # imm = 0x92A
xorl %eax, %eax
callq 0x5ffac
leaq 0x2e8(%rsp), %r12
pushq $0x2
popq %rcx
movq %r12, %rdi
movq %r14, %rsi
movq %rbx, %rdx
callq *0x30(%r14)
movq (%r12), %rdi
leaq 0x47581(%rip), %rsi     # 0xc7593
callq 0x80d11
testl %eax, %eax
je 0x80044
leaq 0x2a625(%rip), %rdi     # 0xaa647
leaq 0x476d5(%rip), %rsi     # 0xc76fe
leaq 0x475e7(%rip), %rdx     # 0xc7617
leaq 0x46a39(%rip), %rcx     # 0xc6a70
movl $0x92b, %r8d            # imm = 0x92B
xorl %eax, %eax
callq 0x5ffac
leaq 0x2d0(%rsp), %r12
pushq $0x3
popq %rcx
movq %r12, %rdi
movq %r14, %rsi
movq %rbx, %rdx
callq *0x30(%r14)
movq (%r12), %rdi
leaq 0x47538(%rip), %rsi     # 0xc759f
callq 0x80d11
testl %eax, %eax
je 0x80099
leaq 0x2a5d0(%rip), %rdi     # 0xaa647
leaq 0x476d0(%rip), %rsi     # 0xc774e
leaq 0x47592(%rip), %rdx     # 0xc7617
leaq 0x469e4(%rip), %rcx     # 0xc6a70
movl $0x92c, %r8d            # imm = 0x92C
xorl %eax, %eax
callq 0x5ffac
leaq 0x2b8(%rsp), %r12
pushq $0x4
popq %rcx
movq %r12, %rdi
movq %r14, %rsi
movq %rbx, %rdx
callq *0x30(%r14)
movq (%r12), %rdi
leaq 0x474f8(%rip), %rsi     # 0xc75b4
callq 0x80d11
testl %eax, %eax
je 0x800ee
leaq 0x2a57b(%rip), %rdi     # 0xaa647
leaq 0x476d4(%rip), %rsi     # 0xc77a7
leaq 0x4753d(%rip), %rdx     # 0xc7617
leaq 0x4698f(%rip), %rcx     # 0xc6a70
movl $0x92d, %r8d            # imm = 0x92D
xorl %eax, %eax
callq 0x5ffac
leaq 0x4770c(%rip), %rdi     # 0xc7801
movq 0x40(%rsp), %rsi
xorl %eax, %eax
callq 0x5fc08
movq 0x18(%r14), %r12
testq %r12, %r12
jne 0x80113
movq 0x20(%r14), %rax
movq 0x8(%rbx,%rax), %r12
pushq $0x2
popq %r15
pushq $0x1
popq %rcx
movq %r14, %rdi
movq %rbx, %rsi
movq %r15, %rdx
callq 0x7c149
pushq $0x3
popq %rcx
movq %r14, %rdi
movq %rbx, %rsi
movq %r15, %rdx
callq 0x7c149
movq 0x18(%r14), %rax
testq %rax, %rax
jne 0x8014b
movq 0x20(%r14), %rax
movq 0x8(%rbx,%rax), %rax
cmpq %r12, %rax
je 0x80179
leaq 0x2a4f0(%rip), %rdi     # 0xaa647
leaq 0x476b4(%rip), %rsi     # 0xc7812
leaq 0x474b2(%rip), %rdx     # 0xc7617
leaq 0x46904(%rip), %rcx     # 0xc6a70
movl $0x935, %r8d            # imm = 0x935
xorl %eax, %eax
callq 0x5ffac
leaq 0x2a0(%rsp), %r15
movq %r15, %rdi
movq %r14, %rsi
movq %rbx, %rdx
xorl %ecx, %ecx
callq *0x30(%r14)
movq (%r15), %rdi
leaq 0x47430(%rip), %rsi     # 0xc75ca
callq 0x80d11
testl %eax, %eax
je 0x801cc
leaq 0x2a49d(%rip), %rdi     # 0xaa647
leaq 0x474ad(%rip), %rsi     # 0xc765e
leaq 0x4745f(%rip), %rdx     # 0xc7617
leaq 0x468b1(%rip), %rcx     # 0xc6a70
movl $0x936, %r8d            # imm = 0x936
xorl %eax, %eax
callq 0x5ffac
leaq 0x288(%rsp), %r15
pushq $0x1
popq %rcx
movq %r15, %rdi
movq %r14, %rsi
movq %rbx, %rdx
callq *0x30(%r14)
movq (%r15), %rdi
leaq 0x473a5(%rip), %rsi     # 0xc7593
callq 0x80d11
testl %eax, %eax
je 0x80220
leaq 0x2a449(%rip), %rdi     # 0xaa647
leaq 0x4762c(%rip), %rsi     # 0xc7831
leaq 0x4740b(%rip), %rdx     # 0xc7617
leaq 0x4685d(%rip), %rcx     # 0xc6a70
movl $0x937, %r8d            # imm = 0x937
xorl %eax, %eax
callq 0x5ffac
leaq 0x270(%rsp), %r15
pushq $0x2
popq %rcx
movq %r15, %rdi
movq %r14, %rsi
movq %rbx, %rdx
callq *0x30(%r14)
movq (%r15), %rdi
leaq 0x4735d(%rip), %rsi     # 0xc759f
callq 0x80d11
testl %eax, %eax
je 0x80274
leaq 0x2a3f5(%rip), %rdi     # 0xaa647
leaq 0x47628(%rip), %rsi     # 0xc7881
leaq 0x473b7(%rip), %rdx     # 0xc7617
leaq 0x46809(%rip), %rcx     # 0xc6a70
movl $0x938, %r8d            # imm = 0x938
xorl %eax, %eax
callq 0x5ffac
leaq 0x258(%rsp), %r15
pushq $0x3
popq %rcx
movq %r15, %rdi
movq %r14, %rsi
movq %rbx, %rdx
callq *0x30(%r14)
movq (%r15), %rdi
leaq 0x47340(%rip), %rsi     # 0xc75d6
callq 0x80d11
testl %eax, %eax
je 0x802c8
leaq 0x2a3a1(%rip), %rdi     # 0xaa647
leaq 0x4762d(%rip), %rsi     # 0xc78da
leaq 0x47363(%rip), %rdx     # 0xc7617
leaq 0x467b5(%rip), %rcx     # 0xc6a70
movl $0x939, %r8d            # imm = 0x939
xorl %eax, %eax
callq 0x5ffac
leaq 0x240(%rsp), %r15
pushq $0x4
popq %rcx
movq %r15, %rdi
movq %r14, %rsi
movq %rbx, %rdx
callq *0x30(%r14)
movq (%r15), %rdi
leaq 0x472ca(%rip), %rsi     # 0xc75b4
callq 0x80d11
testl %eax, %eax
je 0x8031c
leaq 0x2a34d(%rip), %rdi     # 0xaa647
leaq 0x474a6(%rip), %rsi     # 0xc77a7
leaq 0x4730f(%rip), %rdx     # 0xc7617
leaq 0x46761(%rip), %rcx     # 0xc6a70
movl $0x93a, %r8d            # imm = 0x93A
xorl %eax, %eax
callq 0x5ffac
pushq $0x2
popq %r15
pushq $0x3
popq %rcx
movq %r14, %rdi
movq %rbx, %rsi
movq %r15, %rdx
callq 0x7c149
pushq $0x1
popq %rcx
movq %r14, %rdi
movq %rbx, %rsi
movq %r15, %rdx
callq 0x7c149
testq %r13, %r13
jne 0x80388
movq 0x18(%r14), %rax
testq %rax, %rax
jne 0x80359
movq 0x20(%r14), %rax
movq 0x8(%rbx,%rax), %rax
cmpq $0x9, %rax
je 0x80388
leaq 0x2a2e1(%rip), %rdi     # 0xaa647
leaq 0x475bd(%rip), %rsi     # 0xc792a
leaq 0x472a3(%rip), %rdx     # 0xc7617
leaq 0x466f5(%rip), %rcx     # 0xc6a70
movl $0x93f, %r8d            # imm = 0x93F
xorl %eax, %eax
callq 0x5ffac
xorl %eax, %eax
callq 0x588f8
movq %rax, %r15
pushq $0x2
popq %r12
movq %rax, %rdi
movq %r12, %rsi
callq 0x58ab5
movq %r15, %rdi
movq %r12, %rsi
callq 0x58ab5
pushq $0x1
popq %rsi
movq %r15, %rdi
callq 0x58ab5
movq %r15, %rdi
xorl %esi, %esi
callq 0x58ab5
pushq $0x3
popq %rsi
movq %r15, %rdi
callq 0x58ab5
pushq $0x4
popq %rsi
movq %r15, %rdi
callq 0x58ab5
testq %r13, %r13
jne 0x80cd9
movq %r14, %rdi
movq %rbx, %rsi
movq %r15, %rdx
callq 0x7da6e
movq 0x18(%r14), %rax
testq %rax, %rax
jne 0x80400
movq 0x20(%r14), %rax
movq 0x8(%rbx,%rax), %rax
cmpq 0x10(%r15), %rax
je 0x8042f
leaq 0x2a23a(%rip), %rdi     # 0xaa647
leaq 0x47532(%rip), %rsi     # 0xc7946
leaq 0x471fc(%rip), %rdx     # 0xc7617
leaq 0x4664e(%rip), %rcx     # 0xc6a70
movl $0x94c, %r8d            # imm = 0x94C
xorl %eax, %eax
callq 0x5ffac
leaq 0x228(%rsp), %r12
movq %r12, %rdi
movq %r14, %rsi
movq %rbx, %rdx
xorl %ecx, %ecx
callq *0x30(%r14)
movq (%r12), %rdi
leaq 0x47142(%rip), %rsi     # 0xc7593
callq 0x80d11
testl %eax, %eax
je 0x80483
leaq 0x2a1e6(%rip), %rdi     # 0xaa647
leaq 0x47504(%rip), %rsi     # 0xc796c
leaq 0x471a8(%rip), %rdx     # 0xc7617
leaq 0x465fa(%rip), %rcx     # 0xc6a70
movl $0x94e, %r8d            # imm = 0x94E
xorl %eax, %eax
callq 0x5ffac
leaq 0x210(%rsp), %r12
pushq $0x1
popq %rcx
movq %r12, %rdi
movq %r14, %rsi
movq %rbx, %rdx
callq *0x30(%r14)
movq (%r12), %rdi
leaq 0x470ed(%rip), %rsi     # 0xc7593
callq 0x80d11
testl %eax, %eax
je 0x804d8
leaq 0x2a191(%rip), %rdi     # 0xaa647
leaq 0x47374(%rip), %rsi     # 0xc7831
leaq 0x47153(%rip), %rdx     # 0xc7617
leaq 0x465a5(%rip), %rcx     # 0xc6a70
movl $0x94f, %r8d            # imm = 0x94F
xorl %eax, %eax
callq 0x5ffac
leaq 0x1f8(%rsp), %r12
pushq $0x2
popq %rcx
movq %r12, %rdi
movq %r14, %rsi
movq %rbx, %rdx
callq *0x30(%r14)
movq (%r12), %rdi
leaq 0x470db(%rip), %rsi     # 0xc75d6
callq 0x80d11
testl %eax, %eax
je 0x8052d
leaq 0x2a13c(%rip), %rdi     # 0xaa647
leaq 0x474aa(%rip), %rsi     # 0xc79bc
leaq 0x470fe(%rip), %rdx     # 0xc7617
leaq 0x46550(%rip), %rcx     # 0xc6a70
movl $0x950, %r8d            # imm = 0x950
xorl %eax, %eax
callq 0x5ffac
leaq 0x1e0(%rsp), %r12
pushq $0x3
popq %rcx
movq %r12, %rdi
movq %r14, %rsi
movq %rbx, %rdx
callq *0x30(%r14)
movq (%r12), %rdi
leaq 0x4707a(%rip), %rsi     # 0xc75ca
callq 0x80d11
testl %eax, %eax
je 0x80582
leaq 0x2a0e7(%rip), %rdi     # 0xaa647
leaq 0x474a5(%rip), %rsi     # 0xc7a0c
leaq 0x470a9(%rip), %rdx     # 0xc7617
leaq 0x464fb(%rip), %rcx     # 0xc6a70
movl $0x951, %r8d            # imm = 0x951
xorl %eax, %eax
callq 0x5ffac
leaq 0x1c8(%rsp), %r12
pushq $0x4
popq %rcx
movq %r12, %rdi
movq %r14, %rsi
movq %rbx, %rdx
callq *0x30(%r14)
movq (%r12), %rdi
leaq 0x46ffa(%rip), %rsi     # 0xc759f
callq 0x80d11
testl %eax, %eax
je 0x805d7
leaq 0x2a092(%rip), %rdi     # 0xaa647
leaq 0x474a0(%rip), %rsi     # 0xc7a5c
leaq 0x47054(%rip), %rdx     # 0xc7617
leaq 0x464a6(%rip), %rcx     # 0xc6a70
movl $0x952, %r8d            # imm = 0x952
xorl %eax, %eax
callq 0x5ffac
leaq 0x1b0(%rsp), %r12
pushq $0x5
popq %rcx
movq %r12, %rdi
movq %r14, %rsi
movq %rbx, %rdx
callq *0x30(%r14)
movq (%r12), %rdi
leaq 0x46fba(%rip), %rsi     # 0xc75b4
callq 0x80d11
testl %eax, %eax
je 0x8062c
leaq 0x2a03d(%rip), %rdi     # 0xaa647
leaq 0x474a4(%rip), %rsi     # 0xc7ab5
leaq 0x46fff(%rip), %rdx     # 0xc7617
leaq 0x46451(%rip), %rcx     # 0xc6a70
movl $0x953, %r8d            # imm = 0x953
xorl %eax, %eax
callq 0x5ffac
movq 0x18(%r14), %rax
testq %rax, %rax
jne 0x8063e
movq 0x20(%r14), %rax
movq 0x8(%rbx,%rax), %rax
cmpq $0x6, %rax
je 0x8066d
leaq 0x29ffc(%rip), %rdi     # 0xaa647
leaq 0x474bd(%rip), %rsi     # 0xc7b0f
leaq 0x46fbe(%rip), %rdx     # 0xc7617
leaq 0x46410(%rip), %rcx     # 0xc6a70
movl $0x959, %r8d            # imm = 0x959
xorl %eax, %eax
callq 0x5ffac
pushq $0x4
popq %rdx
movq %r14, %rdi
movq %rbx, %rsi
callq 0x7bc3d
pushq $0x1
popq %rdx
movq %r14, %rdi
movq %rbx, %rsi
callq 0x7bc3d
movq 0x18(%r14), %rax
testq %rax, %rax
jne 0x8069b
movq 0x20(%r14), %rax
movq 0x8(%rbx,%rax), %rax
cmpq $0x4, %rax
je 0x806ca
leaq 0x29f9f(%rip), %rdi     # 0xaa647
leaq 0x4748a(%rip), %rsi     # 0xc7b39
leaq 0x46f61(%rip), %rdx     # 0xc7617
leaq 0x463b3(%rip), %rcx     # 0xc6a70
movl $0x95c, %r8d            # imm = 0x95C
xorl %eax, %eax
callq 0x5ffac
leaq 0x198(%rsp), %r12
movq %r12, %rdi
movq %r14, %rsi
movq %rbx, %rdx
xorl %ecx, %ecx
callq *0x30(%r14)
movq (%r12), %rdi
leaq 0x46ea7(%rip), %rsi     # 0xc7593
callq 0x80d11
testl %eax, %eax
je 0x8071e
leaq 0x29f4b(%rip), %rdi     # 0xaa647
leaq 0x47269(%rip), %rsi     # 0xc796c
leaq 0x46f0d(%rip), %rdx     # 0xc7617
leaq 0x4635f(%rip), %rcx     # 0xc6a70
movl $0x95d, %r8d            # imm = 0x95D
xorl %eax, %eax
callq 0x5ffac
leaq 0x180(%rsp), %r12
pushq $0x1
popq %rcx
movq %r12, %rdi
movq %r14, %rsi
movq %rbx, %rdx
callq *0x30(%r14)
movq (%r12), %rdi
leaq 0x46e95(%rip), %rsi     # 0xc75d6
callq 0x80d11
testl %eax, %eax
je 0x80773
leaq 0x29ef6(%rip), %rdi     # 0xaa647
leaq 0x46f56(%rip), %rsi     # 0xc76ae
leaq 0x46eb8(%rip), %rdx     # 0xc7617
leaq 0x4630a(%rip), %rcx     # 0xc6a70
movl $0x95e, %r8d            # imm = 0x95E
xorl %eax, %eax
callq 0x5ffac
leaq 0x168(%rsp), %r12
pushq $0x2
popq %rcx
movq %r12, %rdi
movq %r14, %rsi
movq %rbx, %rdx
callq *0x30(%r14)
movq (%r12), %rdi
leaq 0x46e34(%rip), %rsi     # 0xc75ca
callq 0x80d11
testl %eax, %eax
je 0x807c8
leaq 0x29ea1(%rip), %rdi     # 0xaa647
leaq 0x473b6(%rip), %rsi     # 0xc7b63
leaq 0x46e63(%rip), %rdx     # 0xc7617
leaq 0x462b5(%rip), %rcx     # 0xc6a70
movl $0x95f, %r8d            # imm = 0x95F
xorl %eax, %eax
callq 0x5ffac
leaq 0x150(%rsp), %r12
pushq $0x3
popq %rcx
movq %r12, %rdi
movq %r14, %rsi
movq %rbx, %rdx
callq *0x30(%r14)
movq (%r12), %rdi
leaq 0x46dc9(%rip), %rsi     # 0xc75b4
callq 0x80d11
testl %eax, %eax
je 0x8081d
leaq 0x29e4c(%rip), %rdi     # 0xaa647
leaq 0x473b1(%rip), %rsi     # 0xc7bb3
leaq 0x46e0e(%rip), %rdx     # 0xc7617
leaq 0x46260(%rip), %rcx     # 0xc6a70
movl $0x960, %r8d            # imm = 0x960
xorl %eax, %eax
callq 0x5ffac
leaq 0x473e9(%rip), %rdi     # 0xc7c0d
xorl %eax, %eax
callq 0x8ebc4
leaq 0x20(%rsp), %r12
movq %r12, %rdi
movq %rax, %rsi
callq 0x7fc51
movq 0x10(%r12), %rax
movq %rax, 0x10(%rsp)
movups (%r12), %xmm0
movups %xmm0, (%rsp)
pushq $0x2
popq %rdx
movq %r14, %rdi
movq %rbx, %rsi
callq 0x7bf6b
leaq 0x473be(%rip), %rdi     # 0xc7c21
xorl %eax, %eax
callq 0x8ebc4
leaq 0x20(%rsp), %r12
movq %r12, %rdi
movq %rax, %rsi
callq 0x7fc51
movq 0x10(%r12), %rax
movq %rax, 0x10(%rsp)
movups (%r12), %xmm0
movups %xmm0, (%rsp)
pushq $0x4
popq %rdx
movq %r14, %rdi
movq %rbx, %rsi
callq 0x7bf6b
movq 0x18(%r14), %rax
testq %rax, %rax
jne 0x808ad
movq 0x20(%r14), %rax
movq 0x8(%rbx,%rax), %rax
cmpq $0x6, %rax
je 0x808dc
leaq 0x29d8d(%rip), %rdi     # 0xaa647
leaq 0x4724e(%rip), %rsi     # 0xc7b0f
leaq 0x46d4f(%rip), %rdx     # 0xc7617
leaq 0x461a1(%rip), %rcx     # 0xc6a70
movl $0x968, %r8d            # imm = 0x968
xorl %eax, %eax
callq 0x5ffac
leaq 0x138(%rsp), %r12
movq %r12, %rdi
movq %r14, %rsi
movq %rbx, %rdx
xorl %ecx, %ecx
callq *0x30(%r14)
movq (%r12), %rdi
leaq 0x46c95(%rip), %rsi     # 0xc7593
callq 0x80d11
testl %eax, %eax
je 0x80930
leaq 0x29d39(%rip), %rdi     # 0xaa647
leaq 0x47057(%rip), %rsi     # 0xc796c
leaq 0x46cfb(%rip), %rdx     # 0xc7617
leaq 0x4614d(%rip), %rcx     # 0xc6a70
movl $0x969, %r8d            # imm = 0x969
xorl %eax, %eax
callq 0x5ffac
leaq 0x120(%rsp), %r12
pushq $0x1
popq %rcx
movq %r12, %rdi
movq %r14, %rsi
movq %rbx, %rdx
callq *0x30(%r14)
movq (%r12), %rdi
leaq 0x46c83(%rip), %rsi     # 0xc75d6
callq 0x80d11
testl %eax, %eax
je 0x80985
leaq 0x29ce4(%rip), %rdi     # 0xaa647
leaq 0x46d44(%rip), %rsi     # 0xc76ae
leaq 0x46ca6(%rip), %rdx     # 0xc7617
leaq 0x460f8(%rip), %rcx     # 0xc6a70
movl $0x96a, %r8d            # imm = 0x96A
xorl %eax, %eax
callq 0x5ffac
leaq 0x108(%rsp), %r12
pushq $0x2
popq %rcx
movq %r12, %rdi
movq %r14, %rsi
movq %rbx, %rdx
callq *0x30(%r14)
movq (%r12), %rdi
leaq 0x47265(%rip), %rsi     # 0xc7c0d
callq 0x80d11
testl %eax, %eax
je 0x809da
leaq 0x29c8f(%rip), %rdi     # 0xaa647
leaq 0x47276(%rip), %rsi     # 0xc7c35
leaq 0x46c51(%rip), %rdx     # 0xc7617
leaq 0x460a3(%rip), %rcx     # 0xc6a70
movl $0x96b, %r8d            # imm = 0x96B
xorl %eax, %eax
callq 0x5ffac
leaq 0xf0(%rsp), %r12
pushq $0x3
popq %rcx
movq %r12, %rdi
movq %r14, %rsi
movq %rbx, %rdx
callq *0x30(%r14)
movq (%r12), %rdi
leaq 0x46bcd(%rip), %rsi     # 0xc75ca
callq 0x80d11
testl %eax, %eax
je 0x80a2f
leaq 0x29c3a(%rip), %rdi     # 0xaa647
leaq 0x46ff8(%rip), %rsi     # 0xc7a0c
leaq 0x46bfc(%rip), %rdx     # 0xc7617
leaq 0x4604e(%rip), %rcx     # 0xc6a70
movl $0x96c, %r8d            # imm = 0x96C
xorl %eax, %eax
callq 0x5ffac
leaq 0xd8(%rsp), %r12
pushq $0x4
popq %rcx
movq %r12, %rdi
movq %r14, %rsi
movq %rbx, %rdx
callq *0x30(%r14)
movq (%r12), %rdi
leaq 0x471cf(%rip), %rsi     # 0xc7c21
callq 0x80d11
testl %eax, %eax
je 0x80a84
leaq 0x29be5(%rip), %rdi     # 0xaa647
leaq 0x47224(%rip), %rsi     # 0xc7c8d
leaq 0x46ba7(%rip), %rdx     # 0xc7617
leaq 0x45ff9(%rip), %rcx     # 0xc6a70
movl $0x96d, %r8d            # imm = 0x96D
xorl %eax, %eax
callq 0x5ffac
leaq 0xc0(%rsp), %r12
pushq $0x5
popq %rcx
movq %r12, %rdi
movq %r14, %rsi
movq %rbx, %rdx
callq *0x30(%r14)
movq (%r12), %rdi
leaq 0x46b0d(%rip), %rsi     # 0xc75b4
callq 0x80d11
testl %eax, %eax
je 0x80ad9
leaq 0x29b90(%rip), %rdi     # 0xaa647
leaq 0x46ff7(%rip), %rsi     # 0xc7ab5
leaq 0x46b52(%rip), %rdx     # 0xc7617
leaq 0x45fa4(%rip), %rcx     # 0xc6a70
movl $0x96e, %r8d            # imm = 0x96E
xorl %eax, %eax
callq 0x5ffac
cmpb $0x0, 0x1f(%rsp)
je 0x80cd9
xorps %xmm0, %xmm0
movaps %xmm0, 0x20(%rsp)
andq $0x0, 0x30(%rsp)
movq 0x30(%rsp), %rax
movq %rax, 0x10(%rsp)
movaps 0x20(%rsp), %xmm0
movups %xmm0, (%rsp)
pushq $0x2
popq %rdx
movq %r14, %rdi
movq %rbx, %rsi
callq *0x38(%r14)
xorps %xmm0, %xmm0
movaps %xmm0, 0x20(%rsp)
andq $0x0, 0x30(%rsp)
movq 0x30(%rsp), %rax
movq %rax, 0x10(%rsp)
movaps 0x20(%rsp), %xmm0
movups %xmm0, (%rsp)
pushq $0x4
popq %rdx
movq %r14, %rdi
movq %rbx, %rsi
callq *0x38(%r14)
movq %r14, %rdi
movq %rbx, %rsi
callq 0x7be30
movq 0x18(%r14), %rax
testq %rax, %rax
jne 0x80b5d
movq 0x20(%r14), %rax
movq 0x8(%rbx,%rax), %rax
cmpq $0x4, %rax
je 0x80b8c
leaq 0x29add(%rip), %rdi     # 0xaa647
leaq 0x46fc8(%rip), %rsi     # 0xc7b39
leaq 0x46a9f(%rip), %rdx     # 0xc7617
leaq 0x45ef1(%rip), %rcx     # 0xc6a70
movl $0x977, %r8d            # imm = 0x977
xorl %eax, %eax
callq 0x5ffac
leaq 0xa8(%rsp), %r12
movq %r12, %rdi
movq %r14, %rsi
movq %rbx, %rdx
xorl %ecx, %ecx
callq *0x30(%r14)
movq (%r12), %rdi
leaq 0x469e5(%rip), %rsi     # 0xc7593
callq 0x80d11
testl %eax, %eax
je 0x80be0
leaq 0x29a89(%rip), %rdi     # 0xaa647
leaq 0x46da7(%rip), %rsi     # 0xc796c
leaq 0x46a4b(%rip), %rdx     # 0xc7617
leaq 0x45e9d(%rip), %rcx     # 0xc6a70
movl $0x978, %r8d            # imm = 0x978
xorl %eax, %eax
callq 0x5ffac
leaq 0x90(%rsp), %r12
pushq $0x1
popq %rcx
movq %r12, %rdi
movq %r14, %rsi
movq %rbx, %rdx
callq *0x30(%r14)
movq (%r12), %rdi
leaq 0x469d3(%rip), %rsi     # 0xc75d6
callq 0x80d11
testl %eax, %eax
je 0x80c35
leaq 0x29a34(%rip), %rdi     # 0xaa647
leaq 0x46a94(%rip), %rsi     # 0xc76ae
leaq 0x469f6(%rip), %rdx     # 0xc7617
leaq 0x45e48(%rip), %rcx     # 0xc6a70
movl $0x979, %r8d            # imm = 0x979
xorl %eax, %eax
callq 0x5ffac
leaq 0x78(%rsp), %r12
pushq $0x2
popq %rcx
movq %r12, %rdi
movq %r14, %rsi
movq %rbx, %rdx
callq *0x30(%r14)
movq (%r12), %rdi
leaq 0x46975(%rip), %rsi     # 0xc75ca
callq 0x80d11
testl %eax, %eax
je 0x80c87
leaq 0x299e2(%rip), %rdi     # 0xaa647
leaq 0x46ef7(%rip), %rsi     # 0xc7b63
leaq 0x469a4(%rip), %rdx     # 0xc7617
leaq 0x45df6(%rip), %rcx     # 0xc6a70
movl $0x97a, %r8d            # imm = 0x97A
xorl %eax, %eax
callq 0x5ffac
leaq 0x60(%rsp), %r12
pushq $0x3
popq %rcx
movq %r12, %rdi
movq %r14, %rsi
movq %rbx, %rdx
callq *0x30(%r14)
movq (%r12), %rdi
leaq 0x4690d(%rip), %rsi     # 0xc75b4
callq 0x80d11
testl %eax, %eax
je 0x80cd9
leaq 0x29990(%rip), %rdi     # 0xaa647
leaq 0x46ef5(%rip), %rsi     # 0xc7bb3
leaq 0x46952(%rip), %rdx     # 0xc7617
leaq 0x45da4(%rip), %rcx     # 0xc6a70
movl $0x97b, %r8d            # imm = 0x97B
xorl %eax, %eax
callq 0x5ffac
movq %r15, %rdi
callq 0x58913
movq %rbx, %rdi
callq 0x7b894
addq $0x3a8, %rsp            # imm = 0x3A8
popq %rbx
popq %r12
popq %r13
popq %r14
popq %r15
popq %rbp
retq