Geometrian

`objdump` of square root test program

Mar 1st, 2019
264
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
  1.  
  2. ./libash/.build/lin_release_x64/libash_test_math.out:     file format elf64-x86-64
  3.  
  4.  
  5. Disassembly of section .init:
  6.  
  7. 0000000000001000 <_init>:
  8.     1000:   sub    rsp,0x8
  9.     1004:   mov    rax,QWORD PTR [rip+0x2fe5]        # 3ff0 <__gmon_start__>
  10.     100b:   test   rax,rax
  11.     100e:   je     1012 <_init+0x12>
  12.     1010:   call   rax
  13.     1012:   add    rsp,0x8
  14.     1016:   ret    
  15.  
  16. Disassembly of section .plt:
  17.  
  18. 0000000000001020 <.plt>:
  19.     1020:   push   QWORD PTR [rip+0x2f0a]        # 3f30 <_GLOBAL_OFFSET_TABLE_+0x8>
  20.     1026:   jmp    QWORD PTR [rip+0x2f0c]        # 3f38 <_GLOBAL_OFFSET_TABLE_+0x10>
  21.     102c:   nop    DWORD PTR [rax+0x0]
  22.  
  23. 0000000000001030 <__printf_chk@plt>:
  24.     1030:   jmp    QWORD PTR [rip+0x2f0a]        # 3f40 <__printf_chk@GLIBC_2.3.4>
  25.     1036:   push   0x0
  26.     103b:   jmp    1020 <.plt>
  27.  
  28. 0000000000001040 <operator new[](unsigned long)@plt>:
  29.     1040:   jmp    QWORD PTR [rip+0x2f02]        # 3f48 <operator new[](unsigned long)@GLIBCXX_3.4>
  30.     1046:   push   0x1
  31.     104b:   jmp    1020 <.plt>
  32.  
  33. 0000000000001050 <std::chrono::_V2::system_clock::now()@plt>:
  34.     1050:   jmp    QWORD PTR [rip+0x2efa]        # 3f50 <std::chrono::_V2::system_clock::now()@GLIBCXX_3.4.19>
  35.     1056:   push   0x2
  36.     105b:   jmp    1020 <.plt>
  37.  
  38. 0000000000001060 <pthread_setname_np@plt>:
  39.     1060:   jmp    QWORD PTR [rip+0x2ef2]        # 3f58 <pthread_setname_np@GLIBC_2.12>
  40.     1066:   push   0x3
  41.     106b:   jmp    1020 <.plt>
  42.  
  43. 0000000000001070 <std::__throw_length_error(char const*)@plt>:
  44.     1070:   jmp    QWORD PTR [rip+0x2eea]        # 3f60 <std::__throw_length_error(char const*)@GLIBCXX_3.4>
  45.     1076:   push   0x4
  46.     107b:   jmp    1020 <.plt>
  47.  
  48. 0000000000001080 <pthread_setschedparam@plt>:
  49.     1080:   jmp    QWORD PTR [rip+0x2ee2]        # 3f68 <pthread_setschedparam@GLIBC_2.2.5>
  50.     1086:   push   0x5
  51.     108b:   jmp    1020 <.plt>
  52.  
  53. 0000000000001090 <std::__throw_logic_error(char const*)@plt>:
  54.     1090:   jmp    QWORD PTR [rip+0x2eda]        # 3f70 <std::__throw_logic_error(char const*)@GLIBCXX_3.4>
  55.     1096:   push   0x6
  56.     109b:   jmp    1020 <.plt>
  57.  
  58. 00000000000010a0 <memcpy@plt>:
  59.     10a0:   jmp    QWORD PTR [rip+0x2ed2]        # 3f78 <memcpy@GLIBC_2.14>
  60.     10a6:   push   0x7
  61.     10ab:   jmp    1020 <.plt>
  62.  
  63. 00000000000010b0 <pthread_self@plt>:
  64.     10b0:   jmp    QWORD PTR [rip+0x2eca]        # 3f80 <pthread_self@GLIBC_2.2.5>
  65.     10b6:   push   0x8
  66.     10bb:   jmp    1020 <.plt>
  67.  
  68. 00000000000010c0 <operator delete(void*)@plt>:
  69.     10c0:   jmp    QWORD PTR [rip+0x2ec2]        # 3f88 <operator delete(void*)@GLIBCXX_3.4>
  70.     10c6:   push   0x9
  71.     10cb:   jmp    1020 <.plt>
  72.  
  73. 00000000000010d0 <sched_get_priority_max@plt>:
  74.     10d0:   jmp    QWORD PTR [rip+0x2eba]        # 3f90 <sched_get_priority_max@GLIBC_2.2.5>
  75.     10d6:   push   0xa
  76.     10db:   jmp    1020 <.plt>
  77.  
  78. 00000000000010e0 <operator new(unsigned long)@plt>:
  79.     10e0:   jmp    QWORD PTR [rip+0x2eb2]        # 3f98 <operator new(unsigned long)@GLIBCXX_3.4>
  80.     10e6:   push   0xb
  81.     10eb:   jmp    1020 <.plt>
  82.  
  83. 00000000000010f0 <operator delete[](void*)@plt>:
  84.     10f0:   jmp    QWORD PTR [rip+0x2eaa]        # 3fa0 <operator delete[](void*)@GLIBCXX_3.4>
  85.     10f6:   push   0xc
  86.     10fb:   jmp    1020 <.plt>
  87.  
  88. 0000000000001100 <sched_get_priority_min@plt>:
  89.     1100:   jmp    QWORD PTR [rip+0x2ea2]        # 3fa8 <sched_get_priority_min@GLIBC_2.2.5>
  90.     1106:   push   0xd
  91.     110b:   jmp    1020 <.plt>
  92.  
  93. 0000000000001110 <sched_yield@plt>:
  94.     1110:   jmp    QWORD PTR [rip+0x2e9a]        # 3fb0 <sched_yield@GLIBC_2.2.5>
  95.     1116:   push   0xe
  96.     111b:   jmp    1020 <.plt>
  97.  
  98. 0000000000001120 <pthread_setaffinity_np@plt>:
  99.     1120:   jmp    QWORD PTR [rip+0x2e92]        # 3fb8 <pthread_setaffinity_np@GLIBC_2.3.4>
  100.     1126:   push   0xf
  101.     112b:   jmp    1020 <.plt>
  102.  
  103. 0000000000001130 <pthread_getschedparam@plt>:
  104.     1130:   jmp    QWORD PTR [rip+0x2e8a]        # 3fc0 <pthread_getschedparam@GLIBC_2.2.5>
  105.     1136:   push   0x10
  106.     113b:   jmp    1020 <.plt>
  107.  
  108. 0000000000001140 <_Unwind_Resume@plt>:
  109.     1140:   jmp    QWORD PTR [rip+0x2e82]        # 3fc8 <_Unwind_Resume@GCC_3.0>
  110.     1146:   push   0x11
  111.     114b:   jmp    1020 <.plt>
  112.  
  113. 0000000000001150 <sqrtf@plt>:
  114.     1150:   jmp    QWORD PTR [rip+0x2e7a]        # 3fd0 <sqrtf@GLIBC_2.2.5>
  115.     1156:   push   0x12
  116.     115b:   jmp    1020 <.plt>
  117.  
  118. Disassembly of section .plt.got:
  119.  
  120. 0000000000001160 <__cxa_finalize@plt>:
  121.     1160:   jmp    QWORD PTR [rip+0x2e72]        # 3fd8 <__cxa_finalize@GLIBC_2.2.5>
  122.     1166:   xchg   ax,ax
  123.  
  124. Disassembly of section .text:
  125.  
  126. 0000000000001170 <ST::ThreadWrapper::set_name(ST::ThreadWrapper*, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const&) [clone .cold.25]>:
  127.     1170:   mov    rdi,QWORD PTR [rsp+0x10]
  128.     1175:   add    rbp,0x10
  129.     1179:   cmp    rdi,rbp
  130.     117c:   je     1183 <ST::ThreadWrapper::set_name(ST::ThreadWrapper*, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const&) [clone .cold.25]+0x13>
  131.     117e:   call   10c0 <operator delete(void*)@plt>
  132.     1183:   mov    rdi,rbx
  133.     1186:   call   1140 <_Unwind_Resume@plt>
  134.     118b:   nop    DWORD PTR [rax+rax*1+0x0]
  135.  
  136. 0000000000001190 <main>:
  137.     1190:   sub    rsp,0x8
  138.     1194:   lea    rsi,[rip+0xea0]        # 203b <_IO_stdin_used+0x3b>
  139.     119b:   lea    rdi,[rip+0x3be]        # 1560 <sqrt_std(float)>
  140.     11a2:   call   15e0 <_sqrt_benchmark_helper(float (*)(float), char const*)>
  141.     11a7:   lea    rsi,[rip+0xea3]        # 2051 <_IO_stdin_used+0x51>
  142.     11ae:   mov    edi,0x1
  143.     11b3:   xor    eax,eax
  144.     11b5:   call   1030 <__printf_chk@plt>
  145.     11ba:   lea    rsi,[rip+0xe92]        # 2053 <_IO_stdin_used+0x53>
  146.     11c1:   lea    rdi,[rip+0x388]        # 1550 <sqrt_sseintrin(float)>
  147.     11c8:   call   15e0 <_sqrt_benchmark_helper(float (*)(float), char const*)>
  148.     11cd:   lea    rsi,[rip+0xe95]        # 2069 <_IO_stdin_used+0x69>
  149.     11d4:   lea    rdi,[rip+0x225]        # 1400 <sqrt_sseinstr(float)>
  150.     11db:   call   15e0 <_sqrt_benchmark_helper(float (*)(float), char const*)>
  151.     11e0:   lea    rsi,[rip+0xe6a]        # 2051 <_IO_stdin_used+0x51>
  152.     11e7:   mov    edi,0x1
  153.     11ec:   xor    eax,eax
  154.     11ee:   call   1030 <__printf_chk@plt>
  155.     11f3:   lea    rsi,[rip+0xe85]        # 207f <_IO_stdin_used+0x7f>
  156.     11fa:   lea    rdi,[rip+0x2ef]        # 14f0 <sqrt_rcpsseintrin(float)>
  157.     1201:   call   15e0 <_sqrt_benchmark_helper(float (*)(float), char const*)>
  158.     1206:   lea    rsi,[rip+0xe88]        # 2095 <_IO_stdin_used+0x95>
  159.     120d:   lea    rdi,[rip+0x1fc]        # 1410 <sqrt_rcpsseinstr(float)>
  160.     1214:   call   15e0 <_sqrt_benchmark_helper(float (*)(float), char const*)>
  161.     1219:   lea    rsi,[rip+0xe31]        # 2051 <_IO_stdin_used+0x51>
  162.     1220:   mov    edi,0x1
  163.     1225:   xor    eax,eax
  164.     1227:   call   1030 <__printf_chk@plt>
  165.     122c:   lea    rsi,[rip+0xe78]        # 20ab <_IO_stdin_used+0xab>
  166.     1233:   lea    rdi,[rip+0x2c6]        # 1500 <sqrt_rcpsseintrin_nr1(float)>
  167.     123a:   call   15e0 <_sqrt_benchmark_helper(float (*)(float), char const*)>
  168.     123f:   lea    rsi,[rip+0xe7b]        # 20c1 <_IO_stdin_used+0xc1>
  169.     1246:   lea    rdi,[rip+0x2d3]        # 1520 <sqrt_rcpsseintrin_nr2(float)>
  170.     124d:   call   15e0 <_sqrt_benchmark_helper(float (*)(float), char const*)>
  171.     1252:   lea    rsi,[rip+0xe7e]        # 20d7 <_IO_stdin_used+0xd7>
  172.     1259:   lea    rdi,[rip+0x1c0]        # 1420 <sqrt_rcpsseinstr_nr1(float)>
  173.     1260:   call   15e0 <_sqrt_benchmark_helper(float (*)(float), char const*)>
  174.     1265:   lea    rsi,[rip+0xe81]        # 20ed <_IO_stdin_used+0xed>
  175.     126c:   lea    rdi,[rip+0x1cd]        # 1440 <sqrt_rcpsseinstr_nr2(float)>
  176.     1273:   call   15e0 <_sqrt_benchmark_helper(float (*)(float), char const*)>
  177.     1278:   lea    rsi,[rip+0xdd2]        # 2051 <_IO_stdin_used+0x51>
  178.     127f:   mov    edi,0x1
  179.     1284:   xor    eax,eax
  180.     1286:   call   1030 <__printf_chk@plt>
  181.     128b:   lea    rsi,[rip+0xe71]        # 2103 <_IO_stdin_used+0x103>
  182.     1292:   lea    rdi,[rip+0x1d7]        # 1470 <sqrt_bithack(float)>
  183.     1299:   call   15e0 <_sqrt_benchmark_helper(float (*)(float), char const*)>
  184.     129e:   lea    rsi,[rip+0xe74]        # 2119 <_IO_stdin_used+0x119>
  185.     12a5:   lea    rdi,[rip+0x1e4]        # 1490 <sqrt_bithackavg(float)>
  186.     12ac:   call   15e0 <_sqrt_benchmark_helper(float (*)(float), char const*)>
  187.     12b1:   lea    rsi,[rip+0xe77]        # 212f <_IO_stdin_used+0x12f>
  188.     12b8:   lea    rdi,[rip+0x1f1]        # 14b0 <sqrt_bithackmax(float)>
  189.     12bf:   call   15e0 <_sqrt_benchmark_helper(float (*)(float), char const*)>
  190.     12c4:   lea    rsi,[rip+0xd86]        # 2051 <_IO_stdin_used+0x51>
  191.     12cb:   mov    edi,0x1
  192.     12d0:   xor    eax,eax
  193.     12d2:   call   1030 <__printf_chk@plt>
  194.     12d7:   lea    rsi,[rip+0xe67]        # 2145 <_IO_stdin_used+0x145>
  195.     12de:   lea    rdi,[rip+0x1eb]        # 14d0 <sqrt_x87instr(float)>
  196.     12e5:   call   15e0 <_sqrt_benchmark_helper(float (*)(float), char const*)>
  197.     12ea:   xor    eax,eax
  198.     12ec:   add    rsp,0x8
  199.     12f0:   ret    
  200.     12f1:   data16 nop WORD PTR cs:[rax+rax*1+0x0]
  201.     12fc:   nop    DWORD PTR [rax+0x0]
  202.  
  203. 0000000000001300 <_GLOBAL__sub_I_main>:
  204.     1300:   ret    
  205.     1301:   nop    WORD PTR cs:[rax+rax*1+0x0]
  206.     130b:   nop    DWORD PTR [rax+rax*1+0x0]
  207.  
  208. 0000000000001310 <_start>:
  209.     1310:   xor    ebp,ebp
  210.     1312:   mov    r9,rdx
  211.     1315:   pop    rsi
  212.     1316:   mov    rdx,rsp
  213.     1319:   and    rsp,0xfffffffffffffff0
  214.     131d:   push   rax
  215.     131e:   push   rsp
  216.     131f:   lea    r8,[rip+0x94a]        # 1c70 <__libc_csu_fini>
  217.     1326:   lea    rcx,[rip+0x8e3]        # 1c10 <__libc_csu_init>
  218.     132d:   lea    rdi,[rip+0xfffffffffffffe5c]        # 1190 <main>
  219.     1334:   call   QWORD PTR [rip+0x2cae]        # 3fe8 <__libc_start_main@GLIBC_2.2.5>
  220.     133a:   hlt    
  221.     133b:   nop    DWORD PTR [rax+rax*1+0x0]
  222.  
  223. 0000000000001340 <deregister_tm_clones>:
  224.     1340:   lea    rdi,[rip+0x2cd1]        # 4018 <__TMC_END__>
  225.     1347:   lea    rax,[rip+0x2cca]        # 4018 <__TMC_END__>
  226.     134e:   cmp    rax,rdi
  227.     1351:   je     1368 <deregister_tm_clones+0x28>
  228.     1353:   mov    rax,QWORD PTR [rip+0x2c86]        # 3fe0 <_ITM_deregisterTMCloneTable>
  229.     135a:   test   rax,rax
  230.     135d:   je     1368 <deregister_tm_clones+0x28>
  231.     135f:   jmp    rax
  232.     1361:   nop    DWORD PTR [rax+0x0]
  233.     1368:   ret    
  234.     1369:   nop    DWORD PTR [rax+0x0]
  235.  
  236. 0000000000001370 <register_tm_clones>:
  237.     1370:   lea    rdi,[rip+0x2ca1]        # 4018 <__TMC_END__>
  238.     1377:   lea    rsi,[rip+0x2c9a]        # 4018 <__TMC_END__>
  239.     137e:   sub    rsi,rdi
  240.     1381:   sar    rsi,0x3
  241.     1385:   mov    rax,rsi
  242.     1388:   shr    rax,0x3f
  243.     138c:   add    rsi,rax
  244.     138f:   sar    rsi,1
  245.     1392:   je     13a8 <register_tm_clones+0x38>
  246.     1394:   mov    rax,QWORD PTR [rip+0x2c5d]        # 3ff8 <_ITM_registerTMCloneTable>
  247.     139b:   test   rax,rax
  248.     139e:   je     13a8 <register_tm_clones+0x38>
  249.     13a0:   jmp    rax
  250.     13a2:   nop    WORD PTR [rax+rax*1+0x0]
  251.     13a8:   ret    
  252.     13a9:   nop    DWORD PTR [rax+0x0]
  253.  
  254. 00000000000013b0 <__do_global_dtors_aux>:
  255.     13b0:   cmp    BYTE PTR [rip+0x2c61],0x0        # 4018 <__TMC_END__>
  256.     13b7:   jne    13e8 <__do_global_dtors_aux+0x38>
  257.     13b9:   push   rbp
  258.     13ba:   cmp    QWORD PTR [rip+0x2c16],0x0        # 3fd8 <__cxa_finalize@GLIBC_2.2.5>
  259.     13c2:   mov    rbp,rsp
  260.     13c5:   je     13d3 <__do_global_dtors_aux+0x23>
  261.     13c7:   mov    rdi,QWORD PTR [rip+0x2c3a]        # 4008 <__dso_handle>
  262.     13ce:   call   1160 <__cxa_finalize@plt>
  263.     13d3:   call   1340 <deregister_tm_clones>
  264.     13d8:   mov    BYTE PTR [rip+0x2c39],0x1        # 4018 <__TMC_END__>
  265.     13df:   pop    rbp
  266.     13e0:   ret    
  267.     13e1:   nop    DWORD PTR [rax+0x0]
  268.     13e8:   ret    
  269.     13e9:   nop    DWORD PTR [rax+0x0]
  270.  
  271. 00000000000013f0 <frame_dummy>:
  272.     13f0:   jmp    1370 <register_tm_clones>
  273.     13f5:   nop    WORD PTR cs:[rax+rax*1+0x0]
  274.     13ff:   nop
  275.  
  276. 0000000000001400 <sqrt_sseinstr(float)>:
  277.     1400:   sqrtss xmm0,xmm0
  278.     1404:   ret    
  279.     1405:   data16 nop WORD PTR cs:[rax+rax*1+0x0]
  280.  
  281. 0000000000001410 <sqrt_rcpsseinstr(float)>:
  282.     1410:   movaps xmm1,xmm0
  283.     1413:   rsqrtss xmm1,xmm0
  284.     1417:   mulss  xmm0,xmm1
  285.     141b:   ret    
  286.     141c:   nop    DWORD PTR [rax+0x0]
  287.  
  288. 0000000000001420 <sqrt_rcpsseinstr_nr1(float)>:
  289.     1420:   movaps xmm2,xmm0
  290.     1423:   call   1410 <sqrt_rcpsseinstr(float)>
  291.     1428:   divss  xmm2,xmm0
  292.     142c:   addss  xmm2,xmm0
  293.     1430:   mulss  xmm2,DWORD PTR [rip+0xd24]        # 215c <_IO_stdin_used+0x15c>
  294.     1438:   movaps xmm0,xmm2
  295.     143b:   ret    
  296.     143c:   nop    DWORD PTR [rax+0x0]
  297.  
  298. 0000000000001440 <sqrt_rcpsseinstr_nr2(float)>:
  299.     1440:   movaps xmm2,xmm0
  300.     1443:   call   1410 <sqrt_rcpsseinstr(float)>
  301.     1448:   movaps xmm1,xmm0
  302.     144b:   rcpss  xmm1,xmm0
  303.     144f:   mulss  xmm2,xmm1
  304.     1453:   addss  xmm2,xmm0
  305.     1457:   mulss  xmm2,DWORD PTR [rip+0xcfd]        # 215c <_IO_stdin_used+0x15c>
  306.     145f:   movaps xmm0,xmm2
  307.     1462:   ret    
  308.     1463:   data16 nop WORD PTR cs:[rax+rax*1+0x0]
  309.     146e:   xchg   ax,ax
  310.  
  311. 0000000000001470 <sqrt_bithack(float)>:
  312.     1470:   movd   eax,xmm0
  313.     1474:   shr    eax,1
  314.     1476:   add    eax,0x1fc00000
  315.     147b:   mov    DWORD PTR [rsp-0x4],eax
  316.     147f:   movss  xmm0,DWORD PTR [rsp-0x4]
  317.     1485:   ret    
  318.     1486:   nop    WORD PTR cs:[rax+rax*1+0x0]
  319.  
  320. 0000000000001490 <sqrt_bithackavg(float)>:
  321.     1490:   movd   eax,xmm0
  322.     1494:   shr    eax,1
  323.     1496:   add    eax,0x1fbd2b54
  324.     149b:   mov    DWORD PTR [rsp-0x4],eax
  325.     149f:   movss  xmm0,DWORD PTR [rsp-0x4]
  326.     14a5:   ret    
  327.     14a6:   nop    WORD PTR cs:[rax+rax*1+0x0]
  328.  
  329. 00000000000014b0 <sqrt_bithackmax(float)>:
  330.     14b0:   movd   eax,xmm0
  331.     14b4:   shr    eax,1
  332.     14b6:   add    eax,0x1fbb4f2e
  333.     14bb:   mov    DWORD PTR [rsp-0x4],eax
  334.     14bf:   movss  xmm0,DWORD PTR [rsp-0x4]
  335.     14c5:   ret    
  336.     14c6:   nop    WORD PTR cs:[rax+rax*1+0x0]
  337.  
  338. 00000000000014d0 <sqrt_x87instr(float)>:
  339.     14d0:   movss  DWORD PTR [rsp-0x4],xmm0
  340.     14d6:   fld    DWORD PTR [rsp-0x4]
  341.     14da:   fsqrt  
  342.     14dc:   fstp   DWORD PTR [rsp-0x8]
  343.     14e0:   movss  xmm0,DWORD PTR [rsp-0x8]
  344.     14e6:   ret    
  345.     14e7:   nop    WORD PTR [rax+rax*1+0x0]
  346.  
  347. 00000000000014f0 <sqrt_rcpsseintrin(float)>:
  348.     14f0:   movaps xmm1,xmm0
  349.     14f3:   shufps xmm1,xmm1,0x0
  350.     14f7:   rsqrtss xmm1,xmm1
  351.     14fb:   mulss  xmm0,xmm1
  352.     14ff:   ret    
  353.  
  354. 0000000000001500 <sqrt_rcpsseintrin_nr1(float)>:
  355.     1500:   movaps xmm1,xmm0
  356.     1503:   shufps xmm1,xmm1,0x0
  357.     1507:   rsqrtss xmm1,xmm1
  358.     150b:   mulss  xmm1,xmm0
  359.     150f:   divss  xmm0,xmm1
  360.     1513:   addss  xmm0,xmm1
  361.     1517:   mulss  xmm0,DWORD PTR [rip+0xc3d]        # 215c <_IO_stdin_used+0x15c>
  362.     151f:   ret    
  363.  
  364. 0000000000001520 <sqrt_rcpsseintrin_nr2(float)>:
  365.     1520:   movaps xmm2,xmm0
  366.     1523:   shufps xmm2,xmm2,0x0
  367.     1527:   rsqrtss xmm2,xmm2
  368.     152b:   mulss  xmm2,xmm0
  369.     152f:   movaps xmm1,xmm2
  370.     1532:   shufps xmm1,xmm1,0x0
  371.     1536:   rcpss  xmm1,xmm1
  372.     153a:   mulss  xmm0,xmm1
  373.     153e:   addss  xmm0,xmm2
  374.     1542:   mulss  xmm0,DWORD PTR [rip+0xc12]        # 215c <_IO_stdin_used+0x15c>
  375.     154a:   ret    
  376.     154b:   nop    DWORD PTR [rax+rax*1+0x0]
  377.  
  378. 0000000000001550 <sqrt_sseintrin(float)>:
  379.     1550:   shufps xmm0,xmm0,0x0
  380.     1554:   sqrtss xmm0,xmm0
  381.     1558:   ret    
  382.     1559:   nop    DWORD PTR [rax+0x0]
  383.  
  384. 0000000000001560 <sqrt_std(float)>:
  385.     1560:   pxor   xmm2,xmm2
  386.     1564:   sqrtss xmm1,xmm0
  387.     1568:   ucomiss xmm2,xmm0
  388.     156b:   ja     1571 <sqrt_std(float)+0x11>
  389.     156d:   movaps xmm0,xmm1
  390.     1570:   ret    
  391.     1571:   sub    rsp,0x18
  392.     1575:   movss  DWORD PTR [rsp+0xc],xmm1
  393.     157b:   call   1150 <sqrtf@plt>
  394.     1580:   movss  xmm1,DWORD PTR [rsp+0xc]
  395.     1586:   add    rsp,0x18
  396.     158a:   movaps xmm0,xmm1
  397.     158d:   ret    
  398.     158e:   xchg   ax,ax
  399.  
  400. 0000000000001590 <double Ash::Profile::_profile_helper2<double, float (*)(float), float>(unsigned long, float (*)(float), float) [clone .constprop.6]>:
  401.     1590:   push   r12
  402.     1592:   push   rbp
  403.     1593:   mov    rbp,rdi
  404.     1596:   push   rbx
  405.     1597:   mov    ebx,0x5f5e100
  406.     159c:   call   1ba0 <IB::Arch::invalidate_caches()>
  407.     15a1:   call   1110 <sched_yield@plt>
  408.     15a6:   call   1050 <std::chrono::_V2::system_clock::now()@plt>
  409.     15ab:   mov    r12,rax
  410.     15ae:   xchg   ax,ax
  411.     15b0:   movss  xmm0,DWORD PTR [rip+0xba4]        # 215c <_IO_stdin_used+0x15c>
  412.     15b8:   call   rbp
  413.     15ba:   sub    rbx,0x1
  414.     15be:   jne    15b0 <double Ash::Profile::_profile_helper2<double, float (*)(float), float>(unsigned long, float (*)(float), float) [clone .constprop.6]+0x20>
  415.     15c0:   call   1050 <std::chrono::_V2::system_clock::now()@plt>
  416.     15c5:   pxor   xmm0,xmm0
  417.     15c9:   pop    rbx
  418.     15ca:   pop    rbp
  419.     15cb:   sub    rax,r12
  420.     15ce:   pop    r12
  421.     15d0:   cvtsi2sd xmm0,rax
  422.     15d5:   divsd  xmm0,QWORD PTR [rip+0xb83]        # 2160 <_IO_stdin_used+0x160>
  423.     15dd:   ret    
  424.     15de:   xchg   ax,ax
  425.  
  426. 00000000000015e0 <_sqrt_benchmark_helper(float (*)(float), char const*)>:
  427.     15e0:   push   r15
  428.     15e2:   mov    r15,rdi
  429.     15e5:   xor    edi,edi
  430.     15e7:   push   r14
  431.     15e9:   lea    r14,[rip+0x160]        # 1750 <float Ash::Profile::empty_function<float, float>(float)>
  432.     15f0:   push   r13
  433.     15f2:   push   r12
  434.     15f4:   push   rbp
  435.     15f5:   push   rbx
  436.     15f6:   sub    rsp,0x38
  437.     15fa:   mov    QWORD PTR [rsp+0x10],rsi
  438.     15ff:   mov    esi,0x1
  439.     1604:   call   1a40 <ST::ThreadWrapper::set_affinity(ST::ThreadWrapper*, unsigned long)>
  440.     1609:   mov    esi,0x3
  441.     160e:   xor    edi,edi
  442.     1610:   call   19b0 <ST::ThreadWrapper::set_priority(ST::ThreadWrapper*, int)>
  443.     1615:   mov    edi,0x320
  444.     161a:   call   1040 <operator new[](unsigned long)@plt>
  445.     161f:   mov    rbx,rax
  446.     1622:   mov    rbp,rax
  447.     1625:   lea    r13,[rax+0x320]
  448.     162c:   mov    r12,rax
  449.     162f:   nop
  450.     1630:   mov    QWORD PTR [rsp+0x28],r14
  451.     1635:   mov    rdi,QWORD PTR [rsp+0x28]
  452.     163a:   add    r12,0x8
  453.     163e:   call   1590 <double Ash::Profile::_profile_helper2<double, float (*)(float), float>(unsigned long, float (*)(float), float) [clone .constprop.6]>
  454.     1643:   mov    rdi,r15
  455.     1646:   movsd  QWORD PTR [rsp+0x8],xmm0
  456.     164c:   call   1590 <double Ash::Profile::_profile_helper2<double, float (*)(float), float>(unsigned long, float (*)(float), float) [clone .constprop.6]>
  457.     1651:   subsd  xmm0,QWORD PTR [rsp+0x8]
  458.     1657:   divsd  xmm0,QWORD PTR [rip+0xb09]        # 2168 <_IO_stdin_used+0x168>
  459.     165f:   movsd  QWORD PTR [r12-0x8],xmm0
  460.     1666:   cmp    r12,r13
  461.     1669:   jne    1630 <_sqrt_benchmark_helper(float (*)(float), char const*)+0x50>
  462.     166b:   mov    rax,rbx
  463.     166e:   pxor   xmm2,xmm2
  464.     1672:   nop    WORD PTR [rax+rax*1+0x0]
  465.     1678:   movsd  xmm0,QWORD PTR [rax]
  466.     167c:   add    rax,0x10
  467.     1680:   addsd  xmm2,xmm0
  468.     1684:   movsd  xmm0,QWORD PTR [rax-0x8]
  469.     1689:   addsd  xmm2,xmm0
  470.     168d:   cmp    rax,r13
  471.     1690:   jne    1678 <_sqrt_benchmark_helper(float (*)(float), char const*)+0x98>
  472.     1692:   divsd  xmm2,QWORD PTR [rip+0xad6]        # 2170 <_IO_stdin_used+0x170>
  473.     169a:   pxor   xmm1,xmm1
  474.     169e:   movddup xmm3,xmm2
  475.     16a2:   nop    WORD PTR [rax+rax*1+0x0]
  476.     16a8:   movupd xmm0,XMMWORD PTR [rbp+0x0]
  477.     16ad:   add    rbp,0x10
  478.     16b1:   subpd  xmm0,xmm3
  479.     16b5:   mulpd  xmm0,xmm0
  480.     16b9:   addsd  xmm1,xmm0
  481.     16bd:   unpckhpd xmm0,xmm0
  482.     16c1:   addsd  xmm1,xmm0
  483.     16c5:   cmp    rbp,r13
  484.     16c8:   jne    16a8 <_sqrt_benchmark_helper(float (*)(float), char const*)+0xc8>
  485.     16ca:   mov    rdi,rbx
  486.     16cd:   movsd  QWORD PTR [rsp+0x18],xmm2
  487.     16d3:   divsd  xmm1,QWORD PTR [rip+0xa9d]        # 2178 <_IO_stdin_used+0x178>
  488.     16db:   sqrtsd xmm1,xmm1
  489.     16df:   movsd  QWORD PTR [rsp+0x8],xmm1
  490.     16e5:   call   10f0 <operator delete[](void*)@plt>
  491.     16ea:   movsd  xmm2,QWORD PTR [rsp+0x18]
  492.     16f0:   movsd  xmm1,QWORD PTR [rsp+0x8]
  493.     16f6:   lea    rsi,[rip+0x90b]        # 2008 <_IO_stdin_used+0x8>
  494.     16fd:   mov    rdx,QWORD PTR [rsp+0x10]
  495.     1702:   mov    edi,0x1
  496.     1707:   mov    eax,0x4
  497.     170c:   movsd  xmm5,QWORD PTR [rip+0xa6c]        # 2180 <_IO_stdin_used+0x180>
  498.     1714:   movsd  xmm4,QWORD PTR [rip+0xa44]        # 2160 <_IO_stdin_used+0x160>
  499.     171c:   movapd xmm0,xmm2
  500.     1720:   movapd xmm3,xmm1
  501.     1724:   add    rsp,0x38
  502.     1728:   mulsd  xmm3,xmm5
  503.     172c:   pop    rbx
  504.     172d:   pop    rbp
  505.     172e:   mulsd  xmm0,xmm4
  506.     1732:   pop    r12
  507.     1734:   pop    r13
  508.     1736:   mulsd  xmm2,xmm5
  509.     173a:   pop    r14
  510.     173c:   pop    r15
  511.     173e:   mulsd  xmm1,xmm4
  512.     1742:   jmp    1030 <__printf_chk@plt>
  513.     1747:   nop    WORD PTR [rax+rax*1+0x0]
  514.  
  515. 0000000000001750 <float Ash::Profile::empty_function<float, float>(float)>:
  516.     1750:   ret    
  517.     1751:   nop    WORD PTR cs:[rax+rax*1+0x0]
  518.     175b:   nop    DWORD PTR [rax+rax*1+0x0]
  519.  
  520. 0000000000001760 <ST::ThreadWrapper::set_name(ST::ThreadWrapper*, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const&)>:
  521.     1760:   push   r15
  522.     1762:   push   r14
  523.     1764:   push   r13
  524.     1766:   push   r12
  525.     1768:   mov    r12,rsi
  526.     176b:   push   rbp
  527.     176c:   push   rbx
  528.     176d:   mov    rbx,rdi
  529.     1770:   sub    rsp,0x38
  530.     1774:   test   rdi,rdi
  531.     1777:   je     18a0 <ST::ThreadWrapper::set_name(ST::ThreadWrapper*, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const&)+0x140>
  532.     177d:   mov    rdi,QWORD PTR [rdi+0x28]
  533.     1781:   mov    rcx,QWORD PTR [r12+0x8]
  534.     1786:   lea    rbp,[rsp+0x10]
  535.     178b:   mov    rsi,QWORD PTR [r12]
  536.     178f:   lea    rdx,[rbp+0x10]
  537.     1793:   cmp    rcx,0xf
  538.     1797:   mov    QWORD PTR [rsp+0x10],rdx
  539.     179c:   mov    edx,0xf
  540.     17a1:   mov    rax,rsi
  541.     17a4:   cmovbe rdx,rcx
  542.     17a8:   add    rax,rdx
  543.     17ab:   je     17b6 <ST::ThreadWrapper::set_name(ST::ThreadWrapper*, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const&)+0x56>
  544.     17ad:   test   rsi,rsi
  545.     17b0:   je     198f <ST::ThreadWrapper::set_name(ST::ThreadWrapper*, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const&)+0x22f>
  546.     17b6:   cmp    rcx,0x1
  547.     17ba:   je     1890 <ST::ThreadWrapper::set_name(ST::ThreadWrapper*, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const&)+0x130>
  548.     17c0:   test   rcx,rcx
  549.     17c3:   jne    1858 <ST::ThreadWrapper::set_name(ST::ThreadWrapper*, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const&)+0xf8>
  550.     17c9:   mov    QWORD PTR [rsp+0x18],rdx
  551.     17ce:   mov    BYTE PTR [rsp+rdx*1+0x20],0x0
  552.     17d3:   mov    rsi,QWORD PTR [rsp+0x10]
  553.     17d8:   call   1060 <pthread_setname_np@plt>
  554.     17dd:   test   rbx,rbx
  555.     17e0:   je     1833 <ST::ThreadWrapper::set_name(ST::ThreadWrapper*, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const&)+0xd3>
  556.     17e2:   cmp    rbx,r12
  557.     17e5:   je     1833 <ST::ThreadWrapper::set_name(ST::ThreadWrapper*, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const&)+0xd3>
  558.     17e7:   mov    rax,QWORD PTR [rbx]
  559.     17ea:   lea    r15,[rbx+0x10]
  560.     17ee:   mov    r13,QWORD PTR [r12+0x8]
  561.     17f3:   cmp    rax,r15
  562.     17f6:   je     1950 <ST::ThreadWrapper::set_name(ST::ThreadWrapper*, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const&)+0x1f0>
  563.     17fc:   mov    r14,QWORD PTR [rbx+0x10]
  564.     1800:   cmp    r13,r14
  565.     1803:   ja     1910 <ST::ThreadWrapper::set_name(ST::ThreadWrapper*, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const&)+0x1b0>
  566.     1809:   test   r13,r13
  567.     180c:   je     182a <ST::ThreadWrapper::set_name(ST::ThreadWrapper*, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const&)+0xca>
  568.     180e:   mov    rsi,QWORD PTR [r12]
  569.     1812:   cmp    r13,0x1
  570.     1816:   je     1960 <ST::ThreadWrapper::set_name(ST::ThreadWrapper*, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const&)+0x200>
  571.     181c:   mov    rdx,r13
  572.     181f:   mov    rdi,rax
  573.     1822:   call   10a0 <memcpy@plt>
  574.     1827:   mov    rax,QWORD PTR [rbx]
  575.     182a:   mov    QWORD PTR [rbx+0x8],r13
  576.     182e:   mov    BYTE PTR [rax+r13*1],0x0
  577.     1833:   mov    rdi,QWORD PTR [rsp+0x10]
  578.     1838:   add    rbp,0x10
  579.     183c:   cmp    rdi,rbp
  580.     183f:   je     1846 <ST::ThreadWrapper::set_name(ST::ThreadWrapper*, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const&)+0xe6>
  581.     1841:   call   10c0 <operator delete(void*)@plt>
  582.     1846:   add    rsp,0x38
  583.     184a:   pop    rbx
  584.     184b:   pop    rbp
  585.     184c:   pop    r12
  586.     184e:   pop    r13
  587.     1850:   pop    r14
  588.     1852:   pop    r15
  589.     1854:   ret    
  590.     1855:   nop    DWORD PTR [rax]
  591.     1858:   lea    r8,[rbp+0x10]
  592.     185c:   mov    rcx,rsi
  593.     185f:   mov    r9,r8
  594.     1862:   cmp    edx,0x8
  595.     1865:   jae    18e0 <ST::ThreadWrapper::set_name(ST::ThreadWrapper*, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const&)+0x180>
  596.     1867:   xor    eax,eax
  597.     1869:   test   dl,0x4
  598.     186c:   jne    18b0 <ST::ThreadWrapper::set_name(ST::ThreadWrapper*, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const&)+0x150>
  599.     186e:   test   dl,0x2
  600.     1871:   jne    18bf <ST::ThreadWrapper::set_name(ST::ThreadWrapper*, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const&)+0x15f>
  601.     1873:   test   dl,0x1
  602.     1876:   je     17c9 <ST::ThreadWrapper::set_name(ST::ThreadWrapper*, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const&)+0x69>
  603.     187c:   movzx  ecx,BYTE PTR [rcx+rax*1]
  604.     1880:   mov    BYTE PTR [r9+rax*1],cl
  605.     1884:   jmp    17c9 <ST::ThreadWrapper::set_name(ST::ThreadWrapper*, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const&)+0x69>
  606.     1889:   nop    DWORD PTR [rax+0x0]
  607.     1890:   movzx  eax,BYTE PTR [rsi]
  608.     1893:   mov    BYTE PTR [rsp+0x20],al
  609.     1897:   jmp    17c9 <ST::ThreadWrapper::set_name(ST::ThreadWrapper*, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const&)+0x69>
  610.     189c:   nop    DWORD PTR [rax+0x0]
  611.     18a0:   call   10b0 <pthread_self@plt>
  612.     18a5:   mov    rdi,rax
  613.     18a8:   jmp    1781 <ST::ThreadWrapper::set_name(ST::ThreadWrapper*, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const&)+0x21>
  614.     18ad:   nop    DWORD PTR [rax]
  615.     18b0:   mov    eax,DWORD PTR [rcx]
  616.     18b2:   mov    DWORD PTR [r9],eax
  617.     18b5:   mov    eax,0x4
  618.     18ba:   test   dl,0x2
  619.     18bd:   je     1873 <ST::ThreadWrapper::set_name(ST::ThreadWrapper*, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const&)+0x113>
  620.     18bf:   movzx  esi,WORD PTR [rcx+rax*1]
  621.     18c3:   mov    WORD PTR [r9+rax*1],si
  622.     18c8:   add    rax,0x2
  623.     18cc:   test   dl,0x1
  624.     18cf:   je     17c9 <ST::ThreadWrapper::set_name(ST::ThreadWrapper*, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const&)+0x69>
  625.     18d5:   jmp    187c <ST::ThreadWrapper::set_name(ST::ThreadWrapper*, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const&)+0x11c>
  626.     18d7:   nop    WORD PTR [rax+rax*1+0x0]
  627.     18e0:   mov    r10d,edx
  628.     18e3:   xor    ecx,ecx
  629.     18e5:   and    r10d,0xfffffff8
  630.     18e9:   mov    eax,ecx
  631.     18eb:   add    ecx,0x8
  632.     18ee:   mov    r9,QWORD PTR [rsi+rax*1]
  633.     18f2:   mov    QWORD PTR [r8+rax*1],r9
  634.     18f6:   cmp    ecx,r10d
  635.     18f9:   jb     18e9 <ST::ThreadWrapper::set_name(ST::ThreadWrapper*, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const&)+0x189>
  636.     18fb:   lea    r9,[r8+rcx*1]
  637.     18ff:   add    rcx,rsi
  638.     1902:   jmp    1867 <ST::ThreadWrapper::set_name(ST::ThreadWrapper*, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const&)+0x107>
  639.     1907:   nop    WORD PTR [rax+rax*1+0x0]
  640.     1910:   test   r13,r13
  641.     1913:   js     199b <ST::ThreadWrapper::set_name(ST::ThreadWrapper*, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const&)+0x23b>
  642.     1919:   add    r14,r14
  643.     191c:   cmp    r13,r14
  644.     191f:   jb     1970 <ST::ThreadWrapper::set_name(ST::ThreadWrapper*, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const&)+0x210>
  645.     1921:   lea    rdi,[r13+0x1]
  646.     1925:   mov    r14,r13
  647.     1928:   call   10e0 <operator new(unsigned long)@plt>
  648.     192d:   mov    rdi,QWORD PTR [rbx]
  649.     1930:   cmp    r15,rdi
  650.     1933:   je     1944 <ST::ThreadWrapper::set_name(ST::ThreadWrapper*, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const&)+0x1e4>
  651.     1935:   mov    QWORD PTR [rsp+0x8],rax
  652.     193a:   call   10c0 <operator delete(void*)@plt>
  653.     193f:   mov    rax,QWORD PTR [rsp+0x8]
  654.     1944:   mov    QWORD PTR [rbx],rax
  655.     1947:   mov    QWORD PTR [rbx+0x10],r14
  656.     194b:   jmp    1809 <ST::ThreadWrapper::set_name(ST::ThreadWrapper*, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const&)+0xa9>
  657.     1950:   mov    r14d,0xf
  658.     1956:   jmp    1800 <ST::ThreadWrapper::set_name(ST::ThreadWrapper*, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const&)+0xa0>
  659.     195b:   nop    DWORD PTR [rax+rax*1+0x0]
  660.     1960:   movzx  edx,BYTE PTR [rsi]
  661.     1963:   mov    BYTE PTR [rax],dl
  662.     1965:   mov    rax,QWORD PTR [rbx]
  663.     1968:   jmp    182a <ST::ThreadWrapper::set_name(ST::ThreadWrapper*, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const&)+0xca>
  664.     196d:   nop    DWORD PTR [rax]
  665.     1970:   lea    rdi,[r14+0x1]
  666.     1974:   test   r14,r14
  667.     1977:   jns    1928 <ST::ThreadWrapper::set_name(ST::ThreadWrapper*, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const&)+0x1c8>
  668.     1979:   movabs rdi,0x8000000000000000
  669.     1983:   movabs r14,0x7fffffffffffffff
  670.     198d:   jmp    1928 <ST::ThreadWrapper::set_name(ST::ThreadWrapper*, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const&)+0x1c8>
  671.     198f:   lea    rdi,[rip+0x7f2]        # 2188 <_IO_stdin_used+0x188>
  672.     1996:   call   1090 <std::__throw_logic_error(char const*)@plt>
  673.     199b:   lea    rdi,[rip+0x816]        # 21b8 <_IO_stdin_used+0x1b8>
  674.     19a2:   call   1070 <std::__throw_length_error(char const*)@plt>
  675.     19a7:   mov    rbx,rax
  676.     19aa:   jmp    1170 <ST::ThreadWrapper::set_name(ST::ThreadWrapper*, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const&) [clone .cold.25]>
  677.     19af:   nop
  678.  
  679. 00000000000019b0 <ST::ThreadWrapper::set_priority(ST::ThreadWrapper*, int)>:
  680.     19b0:   push   r13
  681.     19b2:   mov    r13d,esi
  682.     19b5:   push   r12
  683.     19b7:   push   rbp
  684.     19b8:   push   rbx
  685.     19b9:   sub    rsp,0x18
  686.     19bd:   test   rdi,rdi
  687.     19c0:   je     1a30 <ST::ThreadWrapper::set_priority(ST::ThreadWrapper*, int)+0x80>
  688.     19c2:   mov    rbp,QWORD PTR [rdi+0x28]
  689.     19c6:   lea    rsi,[rsp+0x4]
  690.     19cb:   lea    rdx,[rsp+0x8]
  691.     19d0:   mov    rdi,rbp
  692.     19d3:   call   1130 <pthread_getschedparam@plt>
  693.     19d8:   mov    edi,DWORD PTR [rsp+0x4]
  694.     19dc:   call   1100 <sched_get_priority_min@plt>
  695.     19e1:   mov    ebx,DWORD PTR [rsp+0x8]
  696.     19e5:   mov    edi,DWORD PTR [rsp+0x4]
  697.     19e9:   mov    r12d,eax
  698.     19ec:   call   10d0 <sched_get_priority_max@plt>
  699.     19f1:   lea    esi,[rbx+r13*1]
  700.     19f5:   cmp    r12d,esi
  701.     19f8:   jge    1a20 <ST::ThreadWrapper::set_priority(ST::ThreadWrapper*, int)+0x70>
  702.     19fa:   cmp    eax,esi
  703.     19fc:   cmovg  eax,esi
  704.     19ff:   mov    DWORD PTR [rsp+0xc],eax
  705.     1a03:   mov    esi,DWORD PTR [rsp+0x4]
  706.     1a07:   lea    rdx,[rsp+0xc]
  707.     1a0c:   mov    rdi,rbp
  708.     1a0f:   call   1080 <pthread_setschedparam@plt>
  709.     1a14:   add    rsp,0x18
  710.     1a18:   pop    rbx
  711.     1a19:   pop    rbp
  712.     1a1a:   pop    r12
  713.     1a1c:   pop    r13
  714.     1a1e:   ret    
  715.     1a1f:   nop
  716.     1a20:   mov    DWORD PTR [rsp+0xc],r12d
  717.     1a25:   jmp    1a03 <ST::ThreadWrapper::set_priority(ST::ThreadWrapper*, int)+0x53>
  718.     1a27:   nop    WORD PTR [rax+rax*1+0x0]
  719.     1a30:   call   10b0 <pthread_self@plt>
  720.     1a35:   mov    rbp,rax
  721.     1a38:   jmp    19c6 <ST::ThreadWrapper::set_priority(ST::ThreadWrapper*, int)+0x16>
  722.     1a3a:   nop    WORD PTR [rax+rax*1+0x0]
  723.  
  724. 0000000000001a40 <ST::ThreadWrapper::set_affinity(ST::ThreadWrapper*, unsigned long)>:
  725.     1a40:   push   rbx
  726.     1a41:   mov    r9,rdi
  727.     1a44:   mov    ecx,0x10
  728.     1a49:   xor    eax,eax
  729.     1a4b:   mov    r8d,0x1
  730.     1a51:   add    rsp,0xffffffffffffff80
  731.     1a55:   mov    rbx,rsp
  732.     1a58:   mov    rdi,rbx
  733.     1a5b:   rep stos QWORD PTR es:[rdi],rax
  734.     1a5e:   xor    edi,edi
  735.     1a60:   bt     rsi,rcx
  736.     1a64:   jae    1a74 <ST::ThreadWrapper::set_affinity(ST::ThreadWrapper*, unsigned long)+0x34>
  737.     1a66:   mov    rdi,r8
  738.     1a69:   shl    rdi,cl
  739.     1a6c:   or     rax,rdi
  740.     1a6f:   mov    edi,0x1
  741.     1a74:   add    rcx,0x1
  742.     1a78:   cmp    rcx,0x40
  743.     1a7c:   jne    1a60 <ST::ThreadWrapper::set_affinity(ST::ThreadWrapper*, unsigned long)+0x20>
  744.     1a7e:   test   dil,dil
  745.     1a81:   je     1a87 <ST::ThreadWrapper::set_affinity(ST::ThreadWrapper*, unsigned long)+0x47>
  746.     1a83:   mov    QWORD PTR [rsp],rax
  747.     1a87:   test   r9,r9
  748.     1a8a:   je     1aa3 <ST::ThreadWrapper::set_affinity(ST::ThreadWrapper*, unsigned long)+0x63>
  749.     1a8c:   mov    rdi,QWORD PTR [r9+0x28]
  750.     1a90:   mov    rdx,rbx
  751.     1a93:   mov    esi,0x80
  752.     1a98:   call   1120 <pthread_setaffinity_np@plt>
  753.     1a9d:   sub    rsp,0xffffffffffffff80
  754.     1aa1:   pop    rbx
  755.     1aa2:   ret    
  756.     1aa3:   call   10b0 <pthread_self@plt>
  757.     1aa8:   mov    rdi,rax
  758.     1aab:   jmp    1a90 <ST::ThreadWrapper::set_affinity(ST::ThreadWrapper*, unsigned long)+0x50>
  759.     1aad:   nop    DWORD PTR [rax]
  760.  
  761. 0000000000001ab0 <IB::Arch::cpuid(unsigned int)>:
  762.     1ab0:   push   rbx
  763.     1ab1:   mov    eax,edi
  764.     1ab3:   cpuid  
  765.     1ab5:   mov    DWORD PTR [rsp-0x4],eax
  766.     1ab9:   movd   xmm0,DWORD PTR [rsp-0x4]
  767.     1abf:   pinsrd xmm0,ebx,0x1
  768.     1ac5:   pop    rbx
  769.     1ac6:   pinsrd xmm0,ecx,0x2
  770.     1acc:   pinsrd xmm0,edx,0x3
  771.     1ad2:   movq   rax,xmm0
  772.     1ad7:   pextrq rdx,xmm0,0x1
  773.     1ade:   ret    
  774.     1adf:   nop
  775.  
  776. 0000000000001ae0 <IB::Arch::cpuid(unsigned int, unsigned int)>:
  777.     1ae0:   push   rbx
  778.     1ae1:   mov    eax,edi
  779.     1ae3:   mov    ecx,esi
  780.     1ae5:   cpuid  
  781.     1ae7:   mov    DWORD PTR [rsp-0x4],eax
  782.     1aeb:   movd   xmm0,DWORD PTR [rsp-0x4]
  783.     1af1:   pinsrd xmm0,ebx,0x1
  784.     1af7:   pop    rbx
  785.     1af8:   pinsrd xmm0,ecx,0x2
  786.     1afe:   pinsrd xmm0,edx,0x3
  787.     1b04:   movq   rax,xmm0
  788.     1b09:   pextrq rdx,xmm0,0x1
  789.     1b10:   ret    
  790.     1b11:   data16 nop WORD PTR cs:[rax+rax*1+0x0]
  791.     1b1c:   nop    DWORD PTR [rax+0x0]
  792.  
  793. 0000000000001b20 <IB::Arch::get_cache_info(IB::Arch::CacheType)>:
  794.     1b20:   push   rbx
  795.     1b21:   mov    ecx,esi
  796.     1b23:   mov    eax,0x4
  797.     1b28:   cpuid  
  798.     1b2a:   mov    eax,ebx
  799.     1b2c:   add    ecx,0x1
  800.     1b2f:   shr    eax,0x16
  801.     1b32:   add    eax,0x1
  802.     1b35:   mov    DWORD PTR [rsp-0x8],eax
  803.     1b39:   mov    eax,ebx
  804.     1b3b:   movd   xmm0,DWORD PTR [rsp-0x8]
  805.     1b41:   and    ebx,0xfff
  806.     1b47:   shr    eax,0xc
  807.     1b4a:   mov    QWORD PTR [rsp-0x8],rcx
  808.     1b4f:   and    eax,0x3ff
  809.     1b54:   movdqa xmm1,xmm0
  810.     1b58:   movq   rsi,xmm0
  811.     1b5d:   lea    rdx,[rax+0x1]
  812.     1b61:   lea    rax,[rbx+0x1]
  813.     1b65:   pinsrq xmm1,rdx,0x1
  814.     1b6c:   imul   rsi,rax
  815.     1b70:   movups XMMWORD PTR [rdi],xmm1
  816.     1b73:   movq   xmm1,QWORD PTR [rsp-0x8]
  817.     1b79:   pop    rbx
  818.     1b7a:   pinsrq xmm1,rax,0x1
  819.     1b81:   mov    rax,rsi
  820.     1b84:   imul   rax,rcx
  821.     1b88:   movups XMMWORD PTR [rdi+0x10],xmm1
  822.     1b8c:   imul   rax,rdx
  823.     1b90:   mov    QWORD PTR [rdi+0x20],rax
  824.     1b94:   mov    rax,rdi
  825.     1b97:   ret    
  826.     1b98:   nop    DWORD PTR [rax+rax*1+0x0]
  827.  
  828. 0000000000001ba0 <IB::Arch::invalidate_caches()>:
  829.     1ba0:   push   rbx
  830.     1ba1:   mov    eax,0x4
  831.     1ba6:   mov    ecx,0x3
  832.     1bab:   cpuid  
  833.     1bad:   mov    eax,ebx
  834.     1baf:   mov    edx,ebx
  835.     1bb1:   shr    ebx,0xc
  836.     1bb4:   shr    eax,0x16
  837.     1bb7:   and    edx,0xfff
  838.     1bbd:   and    ebx,0x3ff
  839.     1bc3:   add    rdx,0x1
  840.     1bc7:   add    eax,0x1
  841.     1bca:   add    rbx,0x1
  842.     1bce:   imul   rax,rdx
  843.     1bd2:   lea    edx,[rcx+0x1]
  844.     1bd5:   imul   rax,rdx
  845.     1bd9:   imul   rbx,rax
  846.     1bdd:   mov    rdi,rbx
  847.     1be0:   call   1040 <operator new[](unsigned long)@plt>
  848.     1be5:   test   rbx,rbx
  849.     1be8:   je     1bff <IB::Arch::invalidate_caches()+0x5f>
  850.     1bea:   xor    edx,edx
  851.     1bec:   nop    DWORD PTR [rax+0x0]
  852.     1bf0:   lea    rcx,[rax+rdx*1]
  853.     1bf4:   mov    BYTE PTR [rcx],dl
  854.     1bf6:   add    rdx,0x1
  855.     1bfa:   cmp    rdx,rbx
  856.     1bfd:   jne    1bf0 <IB::Arch::invalidate_caches()+0x50>
  857.     1bff:   mov    rdi,rax
  858.     1c02:   pop    rbx
  859.     1c03:   jmp    10f0 <operator delete[](void*)@plt>
  860.     1c08:   nop    DWORD PTR [rax+rax*1+0x0]
  861.  
  862. 0000000000001c10 <__libc_csu_init>:
  863.     1c10:   push   r15
  864.     1c12:   mov    r15,rdx
  865.     1c15:   push   r14
  866.     1c17:   mov    r14,rsi
  867.     1c1a:   push   r13
  868.     1c1c:   mov    r13d,edi
  869.     1c1f:   push   r12
  870.     1c21:   lea    r12,[rip+0x20c0]        # 3ce8 <__frame_dummy_init_array_entry>
  871.     1c28:   push   rbp
  872.     1c29:   lea    rbp,[rip+0x20c0]        # 3cf0 <__init_array_end>
  873.     1c30:   push   rbx
  874.     1c31:   sub    rbp,r12
  875.     1c34:   sub    rsp,0x8
  876.     1c38:   call   1000 <_init>
  877.     1c3d:   sar    rbp,0x3
  878.     1c41:   je     1c5e <__libc_csu_init+0x4e>
  879.     1c43:   xor    ebx,ebx
  880.     1c45:   nop    DWORD PTR [rax]
  881.     1c48:   mov    rdx,r15
  882.     1c4b:   mov    rsi,r14
  883.     1c4e:   mov    edi,r13d
  884.     1c51:   call   QWORD PTR [r12+rbx*8]
  885.     1c55:   add    rbx,0x1
  886.     1c59:   cmp    rbp,rbx
  887.     1c5c:   jne    1c48 <__libc_csu_init+0x38>
  888.     1c5e:   add    rsp,0x8
  889.     1c62:   pop    rbx
  890.     1c63:   pop    rbp
  891.     1c64:   pop    r12
  892.     1c66:   pop    r13
  893.     1c68:   pop    r14
  894.     1c6a:   pop    r15
  895.     1c6c:   ret    
  896.     1c6d:   nop    DWORD PTR [rax]
  897.  
  898. 0000000000001c70 <__libc_csu_fini>:
  899.     1c70:   ret    
  900.  
  901. Disassembly of section .fini:
  902.  
  903. 0000000000001c74 <_fini>:
  904.     1c74:   sub    rsp,0x8
  905.     1c78:   add    rsp,0x8
  906.     1c7c:   ret
Add Comment
Please, Sign In to add comment