// File: /workspace/github_c_makefile_star2_O0/johsteffens[P]beth/lib/bcore/bcore.xo.c
// Function: x_hmap_tp_test_selftest
void x_hmap_tp_test_selftest( void )
{
    // bcore_x_hmap.x:54:5
    BLM_INIT_LEVEL(0);
    x_sink* log = x_sink_stdout();
    x_sink_push_fa(log,"#p80'='{== #<sc_t>_selftest }\n", bnameof( ((tp_t)(TYPEOF_x_hmap_tp_test)) ) );
    
    sz_t cycles = 200000;
    
    x_hmap_tp_test_map_s* map    = ((x_hmap_tp_test_map_s*)BLM_LEVEL_T_PUSH(0,x_hmap_tp_test_map_s,x_hmap_tp_test_map_s_create()));
    x_hmap_tp_test_kv_arr_s* kv_arr = ((x_hmap_tp_test_kv_arr_s*)BLM_LEVEL_T_PUSH(0,x_hmap_tp_test_kv_arr_s,x_hmap_tp_test_kv_arr_s_create()));
    x_array_set_space(((x_array*)(kv_arr)),cycles );
    
    clock_t time = clock();
    x_sink_push_fa(log,"Mixed access: " );
    
    x_hmap_tp_test_val_s mval;BLM_T_INIT_SPUSH(x_hmap_tp_test_val_s, &mval);;
    
    {
        u3_t rval1 = 1;
        u3_t rval2 = 12345;
        for(sz_t i = 0; i < cycles; i++ )
        {
            rval1 = bcore_lcg00_u3( rval1 );
            rval2 = bcore_lcg00_u3( rval2 );
            x_hmap_tp_test_kv_s* kv = ((x_hmap_tp_test_kv_s*)(x_array_push(((x_array*)(kv_arr)))));
            kv->key = ( tp_t )rval1;
            kv->val = rval2;
            mval.val = kv->val;
            x_hmap_tp_set_c(((x_hmap_tp*)(map)),kv->key,((const x_inst*)(&( mval ))));
    
            // retrieve
            rval1 = bcore_lcg00_u3( rval1 );
            kv = (&(kv_arr->data[ rval1 % kv_arr->size ]));
    
            u3_t val = ((const x_hmap_tp_test_val_s*)(x_hmap_tp_c_get(((const x_hmap_tp*)(map)),kv->key )))->val;
            if( kv->val != val ) ERR_fa( "value mismatch (#<u3_t> vs #<u3_t>)", kv->val, val );
    
            // delete
            rval1 = bcore_lcg00_u3( rval1 );
            if( ( ( rval1 >> 10 ) & 1 ) == 1 )
            {
                rval1 = bcore_lcg00_u3( rval1 );
                sz_t idx = rval1 % kv_arr->size;
                const x_hmap_tp_test_kv_s* kv =&( kv_arr->data[ idx ]);
                if( !((const x_hmap_tp_test_val_s*)(x_hmap_tp_c_get(((const x_hmap_tp*)(map)),kv->key ))) ) ERR_fa( "key #<tp_t> not found", kv->key );
                x_hmap_tp_remove(((x_hmap_tp*)(map)),kv->key );
                if( ((const x_hmap_tp_test_val_s*)(x_hmap_tp_c_get(((const x_hmap_tp*)(map)),kv->key ))) )  ERR_fa( "deleted key #<tp_t> still exists", kv->key );
                kv_arr->data[ idx ] = kv_arr->data[ kv_arr->size - 1 ];
                x_array_set_size(((x_array*)(kv_arr)),kv_arr->size - 1 );
            }
        }
    }
    
    time = clock() - time;
    x_sink_push_fa(log,"#<f3_t>s\n", ( f3_t )time/CLOCKS_PER_SEC );
    x_sink_push_st_d(log,x_hmap_tp_test_map_s_create_st_status(map) );
    
    time = clock();
    const x_hmap_tp_test_map_s* map_cloned = ((x_hmap_tp_test_map_s*)BLM_LEVEL_T_PUSH(0,x_hmap_tp_test_map_s,x_hmap_tp_test_map_s_clone(map)));
    time = clock() - time;
    x_sink_push_fa(log,"Clone .......... #<f3_t>s\n", ( f3_t )time/CLOCKS_PER_SEC );
    
    time = clock();
    if( bcore_compare_aware( map, map_cloned ) != 0 )
    {
        ERR( "comparison failed:\n%s", bcore_diff_aware( map, map_cloned )->sc );
    }
    
    time = clock() - time;
    x_sink_push_fa(log,"Comparison ..... #<f3_t>s\n", ( f3_t )time/CLOCKS_PER_SEC );
    
    {BLM_INIT_LEVEL(1);
        time = clock();
        x_hmap_tp_test_map_s* map_trans = ((x_hmap_tp_test_map_s*)BLM_LEVEL_T_PUSH(1,x_hmap_tp_test_map_s,x_hmap_tp_test_map_s_create()));
        BLM_TRY_EXIT(x_stamp_set_sr(((x_stamp*)(map_trans)),btypeof( "map" ), x_stamp_c_get_sr(((x_stamp*)(map)),btypeof( "map" ) ) ))
        time = clock() - time;
        x_sink_push_fa(log,"Stamp-assign ... #<f3_t>s\n", ( f3_t )time/CLOCKS_PER_SEC );
        time = clock();
        sz_t map_size = x_hmap_tp_size(((const x_hmap_tp*)(map)));
        for(uz_t i = 0; i < map_size; i++ )
        {
            tp_t key = x_hmap_tp_idx_key(((const x_hmap_tp*)(map)),i );
            if( key != 0 )
            {
                ASSERT( x_hmap_tp_exists(((const x_hmap_tp*)(map_trans)),key ) );
                ASSERT( ((const x_hmap_tp_test_val_s*)(x_hmap_tp_c_get(((const x_hmap_tp*)(map)),key )))->val == ((const x_hmap_tp_test_val_s*)(x_hmap_tp_c_get(((const x_hmap_tp*)(map_trans)),key )))->val );
            }
        }
        time = clock() - time;
        x_sink_push_fa(log,"verify assign .. #<f3_t>s\n", ( f3_t )time/CLOCKS_PER_SEC );
    BLM_DOWN();}
    
    {BLM_INIT_LEVEL(1);
        time = clock();
        x_hmap_tp_test_map_s* map_trans = ((x_hmap_tp_test_map_s*)BLM_LEVEL_T_PUSH(1,x_hmap_tp_test_map_s,x_hmap_tp_test_map_s_create()));
        st_s* buf = st_s_create();
        x_bbml_to_sink(((const x_bbml*)(map)),((x_sink*)(buf )));
        BLM_TRY_EXIT(x_bbml_from_source(((x_bbml*)(map_trans)),((x_source*)BLM_LEVEL_A_PUSH(1,x_source_create_from_st_d(buf ))) ))
        time = clock() - time;
        x_sink_push_fa(log,"BBML Transfer .. #<f3_t>s\n", ( f3_t )time/CLOCKS_PER_SEC );
        time = clock();
        sz_t map_size = x_hmap_tp_size(((const x_hmap_tp*)(map)));
        for(uz_t i = 0; i < map_size; i++ )
        {
            tp_t key = x_hmap_tp_idx_key(((const x_hmap_tp*)(map)),i );
            if( key != 0 )
            {
                ASSERT( x_hmap_tp_exists(((const x_hmap_tp*)(map_trans)),key ) );
                ASSERT( ((const x_hmap_tp_test_val_s*)(x_hmap_tp_c_get(((const x_hmap_tp*)(map)),key )))->val == ((const x_hmap_tp_test_val_s*)(x_hmap_tp_c_get(((const x_hmap_tp*)(map_trans)),key )))->val );
            }
        }
        time = clock() - time;
        x_sink_push_fa(log,"verify transfer  #<f3_t>s\n", ( f3_t )time/CLOCKS_PER_SEC );
    BLM_DOWN();}
    
    time = clock();
    x_sink_push_fa(log,"\nRead-access of #<sz_t> keys: ", kv_arr->size );
    uz_t read_cycles = 20;
    for(uz_t j = 0; j < read_cycles; j++ )
    {
        for(uz_t i = 0; i < kv_arr->size; i++ )
        {
            u3_t val = ((const x_hmap_tp_test_val_s*)(x_hmap_tp_c_get(((const x_hmap_tp*)(map)),kv_arr->data[ i ].key )))->val;
            if( val != kv_arr->data[ i ].val ) ERR_fa( "value mismatch (#<u3_t> vs #<u3_t>)", val, kv_arr->data[ i ].val );
        }
    }
    time = clock() - time;
    x_sink_push_fa(log,"(#<f3_t> per access)\n", ( ( f3_t )time/CLOCKS_PER_SEC ) / ( kv_arr->size * read_cycles ) );
    
    x_sink_push_fa(log,"\n" );
    x_sink_push_fa(log,"Removal: " );
    time = clock();
    while( kv_arr->size )
    {
        const x_hmap_tp_test_kv_s* kv =&( kv_arr->data[ kv_arr->size - 1 ]);
        if( !((const x_hmap_tp_test_val_s*)(x_hmap_tp_c_get(((const x_hmap_tp*)(map)),kv->key ))) ) ERR_fa( "key #<tp_t> not found", kv->key );
        x_hmap_tp_remove(((x_hmap_tp*)(map)),kv->key );
        if( ((const x_hmap_tp_test_val_s*)(x_hmap_tp_c_get(((const x_hmap_tp*)(map)),kv->key ))) ) ERR_fa( "deleted key #<tp_t> still exists", kv->key );
        x_array_set_size(((x_array*)(kv_arr)),kv_arr->size - 1 );
    }
    time = clock() - time;
    x_sink_push_fa(log,"(#<f3_t>s)\n", ( f3_t )time/CLOCKS_PER_SEC );
    x_sink_push_st_d(log,x_hmap_tp_test_map_s_create_st_status(map) );
    x_sink_push_fa(log,"#r80{=}\n" );
    BLM_DOWN();
}

// Assembly:
pushq %rbp
movq %rsp, %rbp
subq $0x270, %rsp            # imm = 0x270
leaq 0x13d1ee(%rip), %rax    # 0x1b2330
movq (%rax), %rax
movq %rax, -0x8(%rbp)
leaq -0x38(%rbp), %rax
movq %rax, -0x40(%rbp)
movq -0x40(%rbp), %rdi
movq -0x8(%rbp), %rsi
callq 0xbfe80
movq -0x40(%rbp), %rax
movq %rax, -0x8(%rbp)
movq -0x8(%rbp), %rax
movq $0x0, 0x10(%rax)
callq 0x43130
movq %rax, -0x48(%rbp)
movq -0x48(%rbp), %rax
movq %rax, -0x1e8(%rbp)
movabsq $-0x742a684e9742d474, %rdi # imm = 0x8BD597B168BD2B8C
callq 0x44d00
movq -0x1e8(%rbp), %rdi
movq %rax, %rdx
leaq 0xcc396(%rip), %rsi     # 0x14153c
movb $0x0, %al
callq 0x43590
movq $0x30d40, -0x50(%rbp)   # imm = 0x30D40
movq -0x8(%rbp), %rax
movq %rax, -0x1e0(%rbp)
callq 0x74fc0
movq -0x1e0(%rbp), %rdi
movq %rax, %rcx
xorl %eax, %eax
movl %eax, %esi
movabsq $-0x6834659aae9abc39, %rdx # imm = 0x97CB9A65516543C7
callq 0xc01a0
movq %rax, -0x58(%rbp)
movq -0x8(%rbp), %rax
movq %rax, -0x1d8(%rbp)
callq 0x74d60
movq -0x1d8(%rbp), %rdi
movq %rax, %rcx
xorl %eax, %eax
movl %eax, %esi
movabsq $-0x2dd2b458a7f76c66, %rdx # imm = 0xD22D4BA75808939A
callq 0xc01a0
movq %rax, -0x60(%rbp)
movq -0x60(%rbp), %rdi
movq -0x50(%rbp), %rsi
callq 0x75f00
callq 0x4300
movq %rax, -0x68(%rbp)
movq -0x48(%rbp), %rdi
leaq 0xcc323(%rip), %rsi     # 0x14155b
movb $0x0, %al
callq 0x43590
leaq -0x78(%rbp), %rdi
callq 0x74df0
movq -0x8(%rbp), %rdi
movabsq $0x33f73e3560adac2, %rsi # imm = 0x33F73E3560ADAC2
leaq -0x78(%rbp), %rdx
callq 0xc0220
movq $0x1, -0x80(%rbp)
movq $0x3039, -0x88(%rbp) # imm = 0x3039
movq $0x0, -0x90(%rbp)
movq -0x90(%rbp), %rax
cmpq -0x50(%rbp), %rax
jge 0x75512
movq -0x80(%rbp), %rdi
callq 0x75f30
movq %rax, -0x80(%rbp)
movq -0x88(%rbp), %rdi
callq 0x75f30
movq %rax, -0x88(%rbp)
movq -0x60(%rbp), %rdi
callq 0x4f620
movq %rax, -0x98(%rbp)
movq -0x80(%rbp), %rcx
movq -0x98(%rbp), %rax
movq %rcx, (%rax)
movq -0x88(%rbp), %rcx
movq -0x98(%rbp), %rax
movq %rcx, 0x8(%rax)
movq -0x98(%rbp), %rax
movq 0x8(%rax), %rax
movq %rax, -0x70(%rbp)
movq -0x58(%rbp), %rdi
movq -0x98(%rbp), %rax
movq (%rax), %rsi
leaq -0x78(%rbp), %rdx
callq 0x4ddb0
movq -0x80(%rbp), %rdi
callq 0x75f30
movq %rax, -0x80(%rbp)
movq -0x60(%rbp), %rax
movq 0x8(%rax), %rax
movq %rax, -0x1f0(%rbp)
movq -0x80(%rbp), %rax
movq -0x60(%rbp), %rcx
xorl %edx, %edx
divq 0x10(%rcx)
movq -0x1f0(%rbp), %rax
shlq $0x4, %rdx
addq %rdx, %rax
movq %rax, -0x98(%rbp)
movq -0x58(%rbp), %rdi
movq -0x98(%rbp), %rax
movq (%rax), %rsi
callq 0x4c0e0
movq 0x8(%rax), %rax
movq %rax, -0xa0(%rbp)
movq -0x98(%rbp), %rax
movq 0x8(%rax), %rax
cmpq -0xa0(%rbp), %rax
je 0x753a8
movq -0x98(%rbp), %rax
movq 0x8(%rax), %r8
movq -0xa0(%rbp), %r9
leaq 0xcc1dc(%rip), %rdi     # 0x14156a
leaq 0xc9c79(%rip), %rsi     # 0x13f00e
movl $0x237f, %edx           # imm = 0x237F
leaq 0xcc1e1(%rip), %rcx     # 0x141582
movb $0x0, %al
callq 0x9d0f0
movq -0x80(%rbp), %rdi
callq 0x75f30
movq %rax, -0x80(%rbp)
movq -0x80(%rbp), %rax
shrq $0xa, %rax
andq $0x1, %rax
cmpq $0x1, %rax
jne 0x754f9
movq -0x80(%rbp), %rdi
callq 0x75f30
movq %rax, -0x80(%rbp)
movq -0x80(%rbp), %rax
movq -0x60(%rbp), %rcx
xorl %edx, %edx
divq 0x10(%rcx)
movq %rdx, -0xa8(%rbp)
movq -0x60(%rbp), %rax
movq 0x8(%rax), %rax
movq -0xa8(%rbp), %rcx
shlq $0x4, %rcx
addq %rcx, %rax
movq %rax, -0xb0(%rbp)
movq -0x58(%rbp), %rdi
movq -0xb0(%rbp), %rax
movq (%rax), %rsi
callq 0x4c0e0
cmpq $0x0, %rax
jne 0x7544e
movq -0xb0(%rbp), %rax
movq (%rax), %r8
leaq 0xcc136(%rip), %rdi     # 0x14156a
leaq 0xc9bd3(%rip), %rsi     # 0x13f00e
movl $0x2388, %edx           # imm = 0x2388
leaq 0xcc15f(%rip), %rcx     # 0x1415a6
movb $0x0, %al
callq 0x9d0f0
movq -0x58(%rbp), %rdi
movq -0xb0(%rbp), %rax
movq (%rax), %rsi
callq 0x4ddf0
movq -0x58(%rbp), %rdi
movq -0xb0(%rbp), %rax
movq (%rax), %rsi
callq 0x4c0e0
cmpq $0x0, %rax
je 0x754a5
movq -0xb0(%rbp), %rax
movq (%rax), %r8
leaq 0xcc0df(%rip), %rdi     # 0x14156a
leaq 0xc9b7c(%rip), %rsi     # 0x13f00e
movl $0x238a, %edx           # imm = 0x238A
leaq 0xcc11e(%rip), %rcx     # 0x1415bc
movb $0x0, %al
callq 0x9d0f0
movq -0x60(%rbp), %rax
movq 0x8(%rax), %rax
movq -0xa8(%rbp), %rcx
shlq $0x4, %rcx
addq %rcx, %rax
movq -0x60(%rbp), %rcx
movq 0x8(%rcx), %rcx
movq -0x60(%rbp), %rdx
movq 0x10(%rdx), %rdx
subq $0x1, %rdx
shlq $0x4, %rdx
addq %rdx, %rcx
movq (%rcx), %rdx
movq %rdx, (%rax)
movq 0x8(%rcx), %rcx
movq %rcx, 0x8(%rax)
movq -0x60(%rbp), %rdi
movq -0x60(%rbp), %rax
movq 0x10(%rax), %rsi
subq $0x1, %rsi
callq 0x48400
jmp 0x754fb
movq -0x90(%rbp), %rax
addq $0x1, %rax
movq %rax, -0x90(%rbp)
jmp 0x7527d
callq 0x4300
subq -0x68(%rbp), %rax
movq %rax, -0x68(%rbp)
movq -0x48(%rbp), %rdi
cvtsi2sdq -0x68(%rbp), %xmm0
movsd 0xbde97(%rip), %xmm1    # 0x1333c8
divsd %xmm1, %xmm0
leaq 0xcc23b(%rip), %rsi     # 0x141777
movb $0x1, %al
callq 0x43590
movq -0x48(%rbp), %rax
movq %rax, -0x200(%rbp)
movq -0x58(%rbp), %rdi
callq 0x75050
movq -0x200(%rbp), %rdi
movq %rax, %rsi
callq 0x54c60
callq 0x4300
movq %rax, -0x68(%rbp)
movq -0x8(%rbp), %rax
movq %rax, -0x1f8(%rbp)
movq -0x58(%rbp), %rdi
callq 0x75010
movq -0x1f8(%rbp), %rdi
movq %rax, %rcx
xorl %eax, %eax
movl %eax, %esi
movabsq $-0x6834659aae9abc39, %rdx # imm = 0x97CB9A65516543C7
callq 0xc01a0
movq %rax, -0xb8(%rbp)
callq 0x4300
subq -0x68(%rbp), %rax
movq %rax, -0x68(%rbp)
movq -0x48(%rbp), %rdi
cvtsi2sdq -0x68(%rbp), %xmm0
movsd 0xbde02(%rip), %xmm1    # 0x1333c8
divsd %xmm1, %xmm0
leaq 0xcc00c(%rip), %rsi     # 0x1415dd
movb $0x1, %al
callq 0x43590
callq 0x4300
movq %rax, -0x68(%rbp)
movq -0x58(%rbp), %rdi
movq -0xb8(%rbp), %rsi
callq 0xe0090
cmpl $0x0, %eax
je 0x7562b
movq -0x58(%rbp), %rdi
movq -0xb8(%rbp), %rsi
callq 0xe0ca0
movq 0x8(%rax), %r8
leaq 0xcbf59(%rip), %rdi     # 0x14156a
leaq 0xc99f6(%rip), %rsi     # 0x13f00e
movl $0x239d, %edx           # imm = 0x239D
leaq 0xcbfd4(%rip), %rcx     # 0x1415f8
movb $0x0, %al
callq 0x9cf40
callq 0x4300
subq -0x68(%rbp), %rax
movq %rax, -0x68(%rbp)
movq -0x48(%rbp), %rdi
cvtsi2sdq -0x68(%rbp), %xmm0
movsd 0xbdd7e(%rip), %xmm1    # 0x1333c8
divsd %xmm1, %xmm0
leaq 0xcbfb9(%rip), %rsi     # 0x14160e
movb $0x1, %al
callq 0x43590
movq -0x40(%rbp), %rax
movq %rax, -0xc0(%rbp)
leaq -0xf0(%rbp), %rax
movq %rax, -0xf8(%rbp)
movq -0xf8(%rbp), %rdi
movq -0xc0(%rbp), %rsi
callq 0xbfe80
movq -0xf8(%rbp), %rax
movq %rax, -0xc0(%rbp)
movq -0xc0(%rbp), %rax
movq $0x1, 0x10(%rax)
callq 0x4300
movq %rax, -0x68(%rbp)
movq -0xc0(%rbp), %rax
movq %rax, -0x220(%rbp)
callq 0x74fc0
movq -0x220(%rbp), %rdi
movq %rax, %rcx
movl $0x1, %esi
movabsq $-0x6834659aae9abc39, %rdx # imm = 0x97CB9A65516543C7
callq 0xc01a0
movq %rax, -0x100(%rbp)
movq -0x100(%rbp), %rax
movq %rax, -0x210(%rbp)
leaq 0xdbf0e(%rip), %rdi     # 0x151609
callq 0x45020
movq %rax, -0x208(%rbp)
movq -0x58(%rbp), %rax
movq %rax, -0x218(%rbp)
leaq 0xdbef0(%rip), %rdi     # 0x151609
callq 0x45020
movq -0x218(%rbp), %rsi
movq %rax, %rdx
leaq -0x120(%rbp), %rdi
callq 0x75f50
movq -0x210(%rbp), %rdi
movq -0x208(%rbp), %rsi
leaq -0x120(%rbp), %rax
movq (%rax), %rcx
movq %rcx, (%rsp)
movq 0x8(%rax), %rcx
movq %rcx, 0x8(%rsp)
movq 0x10(%rax), %rax
movq %rax, 0x10(%rsp)
callq 0x4c400
movq %rax, -0x108(%rbp)
cmpq $0x0, -0x108(%rbp)
je 0x75792
movq -0xf8(%rbp), %rdi
callq 0xc0720
movq -0x108(%rbp), %rax
movl %eax, %edi
callq 0x425e0
callq 0x4300
subq -0x68(%rbp), %rax
movq %rax, -0x68(%rbp)
movq -0x48(%rbp), %rdi
cvtsi2sdq -0x68(%rbp), %xmm0
movsd 0xbdc17(%rip), %xmm1    # 0x1333c8
divsd %xmm1, %xmm0
leaq 0xcbe6d(%rip), %rsi     # 0x141629
movb $0x1, %al
callq 0x43590
callq 0x4300
movq %rax, -0x68(%rbp)
movq -0x58(%rbp), %rdi
callq 0x4aaa0
movq %rax, -0x128(%rbp)
movq $0x0, -0x130(%rbp)
movq -0x130(%rbp), %rax
cmpq -0x128(%rbp), %rax
jae 0x758e2
movq -0x58(%rbp), %rdi
movq -0x130(%rbp), %rsi
callq 0x4aad0
movq %rax, -0x138(%rbp)
cmpq $0x0, -0x138(%rbp)
je 0x758c9
movq -0x100(%rbp), %rdi
movq -0x138(%rbp), %rsi
callq 0x4c0b0
testb $0x1, %al
jne 0x75860
leaq 0xbe161(%rip), %rdi     # 0x13399f
leaq 0xcbdff(%rip), %rsi     # 0x141644
leaq 0xcbd1e(%rip), %rdx     # 0x14156a
leaq 0xc97bb(%rip), %rcx     # 0x13f00e
movl $0x23b0, %r8d           # imm = 0x23B0
movb $0x0, %al
callq 0x9cea0
movq -0x58(%rbp), %rdi
movq -0x138(%rbp), %rsi
callq 0x4c0e0
movq 0x8(%rax), %rax
movq %rax, -0x228(%rbp)
movq -0x100(%rbp), %rdi
movq -0x138(%rbp), %rsi
callq 0x4c0e0
movq %rax, %rcx
movq -0x228(%rbp), %rax
cmpq 0x8(%rcx), %rax
je 0x758c7
leaq 0xbe0fa(%rip), %rdi     # 0x13399f
leaq 0xcbdcf(%rip), %rsi     # 0x14167b
leaq 0xcbcb7(%rip), %rdx     # 0x14156a
leaq 0xc9754(%rip), %rcx     # 0x13f00e
movl $0x23b1, %r8d           # imm = 0x23B1
movb $0x0, %al
callq 0x9cea0
jmp 0x758c9
jmp 0x758cb
movq -0x130(%rbp), %rax
addq $0x1, %rax
movq %rax, -0x130(%rbp)
jmp 0x757e7
callq 0x4300
subq -0x68(%rbp), %rax
movq %rax, -0x68(%rbp)
movq -0x48(%rbp), %rdi
cvtsi2sdq -0x68(%rbp), %xmm0
movsd 0xbdac7(%rip), %xmm1    # 0x1333c8
divsd %xmm1, %xmm0
leaq 0xcbe24(%rip), %rsi     # 0x141730
movb $0x1, %al
callq 0x43590
leaq -0xf8(%rbp), %rdi
callq 0xc06e0
movq -0x40(%rbp), %rax
movq %rax, -0x140(%rbp)
leaq -0x170(%rbp), %rax
movq %rax, -0x178(%rbp)
movq -0x178(%rbp), %rdi
movq -0x140(%rbp), %rsi
callq 0xbfe80
movq -0x178(%rbp), %rax
movq %rax, -0x140(%rbp)
movq -0x140(%rbp), %rax
movq $0x1, 0x10(%rax)
callq 0x4300
movq %rax, -0x68(%rbp)
movq -0x140(%rbp), %rax
movq %rax, -0x240(%rbp)
callq 0x74fc0
movq -0x240(%rbp), %rdi
movq %rax, %rcx
movl $0x1, %esi
movabsq $-0x6834659aae9abc39, %rdx # imm = 0x97CB9A65516543C7
callq 0xc01a0
movq %rax, -0x180(%rbp)
movb $0x0, %al
callq 0xff2e0
movq %rax, -0x188(%rbp)
movq -0x58(%rbp), %rdi
movq -0x188(%rbp), %rsi
callq 0x75f90
movq -0x180(%rbp), %rax
movq %rax, -0x230(%rbp)
movq -0x140(%rbp), %rax
movq %rax, -0x238(%rbp)
movq -0x188(%rbp), %rdi
callq 0x54f20
movq -0x238(%rbp), %rdi
movq %rax, %rdx
movl $0x1, %esi
callq 0xc0500
movq -0x230(%rbp), %rdi
movq %rax, %rsi
callq 0x75fc0
movq %rax, -0x190(%rbp)
cmpq $0x0, -0x190(%rbp)
je 0x75a3d
movq -0x178(%rbp), %rdi
callq 0xc0720
movq -0x190(%rbp), %rax
movl %eax, %edi
callq 0x425e0
callq 0x4300
subq -0x68(%rbp), %rax
movq %rax, -0x68(%rbp)
movq -0x48(%rbp), %rdi
cvtsi2sdq -0x68(%rbp), %xmm0
movsd 0xbd96c(%rip), %xmm1    # 0x1333c8
divsd %xmm1, %xmm0
leaq 0xcbce4(%rip), %rsi     # 0x14174b
movb $0x1, %al
callq 0x43590
callq 0x4300
movq %rax, -0x68(%rbp)
movq -0x58(%rbp), %rdi
callq 0x4aaa0
movq %rax, -0x198(%rbp)
movq $0x0, -0x1a0(%rbp)
movq -0x1a0(%rbp), %rax
cmpq -0x198(%rbp), %rax
jae 0x75b8d
movq -0x58(%rbp), %rdi
movq -0x1a0(%rbp), %rsi
callq 0x4aad0
movq %rax, -0x1a8(%rbp)
cmpq $0x0, -0x1a8(%rbp)
je 0x75b74
movq -0x180(%rbp), %rdi
movq -0x1a8(%rbp), %rsi
callq 0x4c0b0
testb $0x1, %al
jne 0x75b0b
leaq 0xbdeb6(%rip), %rdi     # 0x13399f
leaq 0xcbb54(%rip), %rsi     # 0x141644
leaq 0xcba73(%rip), %rdx     # 0x14156a
leaq 0xc9510(%rip), %rcx     # 0x13f00e
movl $0x23c7, %r8d           # imm = 0x23C7
movb $0x0, %al
callq 0x9cea0
movq -0x58(%rbp), %rdi
movq -0x1a8(%rbp), %rsi
callq 0x4c0e0
movq 0x8(%rax), %rax
movq %rax, -0x248(%rbp)
movq -0x180(%rbp), %rdi
movq -0x1a8(%rbp), %rsi
callq 0x4c0e0
movq %rax, %rcx
movq -0x248(%rbp), %rax
cmpq 0x8(%rcx), %rax
je 0x75b72
leaq 0xbde4f(%rip), %rdi     # 0x13399f
leaq 0xcbb24(%rip), %rsi     # 0x14167b
leaq 0xcba0c(%rip), %rdx     # 0x14156a
leaq 0xc94a9(%rip), %rcx     # 0x13f00e
movl $0x23c8, %r8d           # imm = 0x23C8
movb $0x0, %al
callq 0x9cea0
jmp 0x75b74
jmp 0x75b76
movq -0x1a0(%rbp), %rax
addq $0x1, %rax
movq %rax, -0x1a0(%rbp)
jmp 0x75a92
callq 0x4300
subq -0x68(%rbp), %rax
movq %rax, -0x68(%rbp)
movq -0x48(%rbp), %rdi
cvtsi2sdq -0x68(%rbp), %xmm0
movsd 0xbd81c(%rip), %xmm1    # 0x1333c8
divsd %xmm1, %xmm0
leaq 0xcbbaf(%rip), %rsi     # 0x141766
movb $0x1, %al
callq 0x43590
leaq -0x178(%rbp), %rdi
callq 0xc06e0
callq 0x4300
movq %rax, -0x68(%rbp)
movq -0x48(%rbp), %rdi
movq -0x60(%rbp), %rax
movq 0x10(%rax), %rdx
leaq 0xcbb9b(%rip), %rsi     # 0x141781
movb $0x0, %al
callq 0x43590
movq $0x14, -0x1b0(%rbp)
movq $0x0, -0x1b8(%rbp)
movq -0x1b8(%rbp), %rax
cmpq -0x1b0(%rbp), %rax
jae 0x75cfb
movq $0x0, -0x1c0(%rbp)
movq -0x1c0(%rbp), %rax
movq -0x60(%rbp), %rcx
cmpq 0x10(%rcx), %rax
jae 0x75ce2
movq -0x58(%rbp), %rdi
movq -0x60(%rbp), %rax
movq 0x8(%rax), %rax
movq -0x1c0(%rbp), %rcx
shlq $0x4, %rcx
addq %rcx, %rax
movq (%rax), %rsi
callq 0x4c0e0
movq 0x8(%rax), %rax
movq %rax, -0x1c8(%rbp)
movq -0x1c8(%rbp), %rax
movq -0x60(%rbp), %rcx
movq 0x8(%rcx), %rcx
movq -0x1c0(%rbp), %rdx
shlq $0x4, %rdx
addq %rdx, %rcx
cmpq 0x8(%rcx), %rax
je 0x75cc9
movq -0x1c8(%rbp), %r8
movq -0x60(%rbp), %rax
movq 0x8(%rax), %rax
movq -0x1c0(%rbp), %rcx
shlq $0x4, %rcx
addq %rcx, %rax
movq 0x8(%rax), %r9
leaq 0xcb8bb(%rip), %rdi     # 0x14156a
leaq 0xc9358(%rip), %rsi     # 0x13f00e
movl $0x23d7, %edx           # imm = 0x23D7
leaq 0xcb8c0(%rip), %rcx     # 0x141582
movb $0x0, %al
callq 0x9d0f0
jmp 0x75ccb
movq -0x1c0(%rbp), %rax
addq $0x1, %rax
movq %rax, -0x1c0(%rbp)
jmp 0x75c22
jmp 0x75ce4
movq -0x1b8(%rbp), %rax
addq $0x1, %rax
movq %rax, -0x1b8(%rbp)
jmp 0x75c03
callq 0x4300
movq -0x68(%rbp), %rcx
subq %rcx, %rax
movq %rax, -0x68(%rbp)
movq -0x48(%rbp), %rdi
cvtsi2sdq -0x68(%rbp), %xmm0
movsd 0xbd6ab(%rip), %xmm1    # 0x1333c8
divsd %xmm1, %xmm0
movq -0x60(%rbp), %rax
movq 0x10(%rax), %rax
movq -0x1b0(%rbp), %rcx
imulq %rcx, %rax
movq %rax, %xmm1
movaps 0xc91c0(%rip), %xmm2    # 0x13ef00
punpckldq %xmm2, %xmm1    # xmm1 = xmm1[0],xmm2[0],xmm1[1],xmm2[1]
movapd 0xc91c4(%rip), %xmm2    # 0x13ef10
subpd %xmm2, %xmm1
movaps %xmm1, %xmm2
unpckhpd %xmm1, %xmm1            # xmm1 = xmm1[1,1]
addsd %xmm2, %xmm1
divsd %xmm1, %xmm0
leaq 0xcba3a(%rip), %rsi     # 0x1417a0
movb $0x1, %al
callq 0x43590
movq -0x48(%rbp), %rdi
leaq 0xdcca9(%rip), %rsi     # 0x152a21
movb $0x0, %al
callq 0x43590
movq -0x48(%rbp), %rdi
leaq 0xcba2c(%rip), %rsi     # 0x1417b6
movb $0x0, %al
callq 0x43590
callq 0x4300
movq %rax, -0x68(%rbp)
movq -0x60(%rbp), %rax
cmpq $0x0, 0x10(%rax)
je 0x75e80
movq -0x60(%rbp), %rax
movq 0x8(%rax), %rax
movq -0x60(%rbp), %rcx
movq 0x10(%rcx), %rcx
subq $0x1, %rcx
shlq $0x4, %rcx
addq %rcx, %rax
movq %rax, -0x1d0(%rbp)
movq -0x58(%rbp), %rdi
movq -0x1d0(%rbp), %rax
movq (%rax), %rsi
callq 0x4c0e0
cmpq $0x0, %rax
jne 0x75e0f
movq -0x1d0(%rbp), %rax
movq (%rax), %r8
leaq 0xcb775(%rip), %rdi     # 0x14156a
leaq 0xc9212(%rip), %rsi     # 0x13f00e
movl $0x23e3, %edx           # imm = 0x23E3
leaq 0xcb79e(%rip), %rcx     # 0x1415a6
movb $0x0, %al
callq 0x9d0f0
movq -0x58(%rbp), %rdi
movq -0x1d0(%rbp), %rax
movq (%rax), %rsi
callq 0x4ddf0
movq -0x58(%rbp), %rdi
movq -0x1d0(%rbp), %rax
movq (%rax), %rsi
callq 0x4c0e0
cmpq $0x0, %rax
je 0x75e66
movq -0x1d0(%rbp), %rax
movq (%rax), %r8
leaq 0xcb71e(%rip), %rdi     # 0x14156a
leaq 0xc91bb(%rip), %rsi     # 0x13f00e
movl $0x23e5, %edx           # imm = 0x23E5
leaq 0xcb75d(%rip), %rcx     # 0x1415bc
movb $0x0, %al
callq 0x9d0f0
movq -0x60(%rbp), %rdi
movq -0x60(%rbp), %rax
movq 0x10(%rax), %rsi
subq $0x1, %rsi
callq 0x48400
jmp 0x75d9a
callq 0x4300
subq -0x68(%rbp), %rax
movq %rax, -0x68(%rbp)
movq -0x48(%rbp), %rdi
cvtsi2sdq -0x68(%rbp), %xmm0
movsd 0xbd529(%rip), %xmm1    # 0x1333c8
divsd %xmm1, %xmm0
leaq 0xcb916(%rip), %rsi     # 0x1417c0
movb $0x1, %al
callq 0x43590
movq -0x48(%rbp), %rax
movq %rax, -0x250(%rbp)
movq -0x58(%rbp), %rdi
callq 0x75050
movq -0x250(%rbp), %rdi
movq %rax, %rsi
callq 0x54c60
movq -0x48(%rbp), %rdi
leaq 0xcb8ed(%rip), %rsi     # 0x1417cc
movb $0x0, %al
callq 0x43590
leaq -0x40(%rbp), %rdi
callq 0xc06e0
addq $0x270, %rsp            # imm = 0x270
popq %rbp
retq
nopl (%rax,%rax)