Skip to content

Instantly share code, notes, and snippets.

@jeffreywolberg
Last active November 7, 2023 04:50
Show Gist options
  • Select an option

  • Save jeffreywolberg/4ec61c9e3f37e2548a0396f1cf390852 to your computer and use it in GitHub Desktop.

Select an option

Save jeffreywolberg/4ec61c9e3f37e2548a0396f1cf390852 to your computer and use it in GitHub Desktop.
Vectorized and Non-vectorized dot products using intel AVX intrinsics
#include <stdio.h>
#include <stdint.h>
#include <stdlib.h>
#include <immintrin.h>
#include <smmintrin.h>
#include <x86intrin.h>
uint64_t dotbytes_naive(uint8_t* array1, uint8_t* array2, size_t size) {
uint64_t start, end;
start = _rdtsc();
uint64_t result = 0;
for (size_t i = 0; i < size; i++) {
result += array1[i]*array2[i];
}
end = _rdtsc();
printf("Naive dot product took %d cycles\n", end - start);
return result;
}
uint32_t dotbytes_vec2(uint8_t* array, uint8_t* array2, size_t size) {
uint64_t start, end;
start = _rdtsc();
int sum = 0;
const __m128i packed_16_low_8_mask = _mm_set1_epi16(0x00ff); // 128 bit int = {00 ff 00 ff 00 ff 00 ff 00 ff 00 ff 00 ff 0f 0f}
const __m128i zero128 = _mm_setzero_si128();
size_t i=0;
for (; i< size / 16; i++) {
size_t offset = i * 16;
const __m128i vec = _mm_loadu_si128((__m128i*)(array + offset));
// vec = {num0, num1, ..., num15} where each num* is 8 bits
const __m128i vec0 = vec;
// tmp0 = {|00000000,num1|00000000,num3|00000000,num5|00000000,num7|00000000,num9|00000000,num11|00000000,num13|00000000,num15|} where each |...| is 16 bits and each num* is 8 bits
const __m128i tmp0 = _mm_and_si128(packed_16_low_8_mask, vec0);
// vec1 = tmp1 = {|00000000,num0|00000000,num2|00000000,num4|00000000,num6|00000000,num8|00000000,num10|00000000,num12|00000000,num14|} where each |...| is 16 bits and each num* is 8 bits
const __m128i vec1 = _mm_srli_epi16(vec, 1 * 8);
const __m128i tmp1 = vec1;
// vecB = {num0, num1, ..., num15} where each num* is 8 bits
const __m128i vecB = _mm_loadu_si128((__m128i*)(array2 + offset));
const __m128i vecB0 = vecB;
// tmpB0 = {|00000000,num1|00000000,num3|00000000,num5|00000000,num7|00000000,num9|00000000,num11|00000000,num13|00000000,num15|} where each |...| is 16 bits and each num* is 8 bits
const __m128i tmpB0 = _mm_and_si128(packed_16_low_8_mask, vecB0);
// vecB1 = tmpB1 = {|00000000,num0|00000000,num2|00000000,num4|00000000,num6|00000000,num8|00000000,num10|00000000,num12|00000000,num14|} where each |...| is 16 bits and each num* is 8 bits
const __m128i vecB1 = _mm_srli_epi16(vecB, 1 * 8);
const __m128i tmpB1 = vecB1;
// dot0 = {|num1 * numB_1||num3 * numB_3||num5 * numB_5||num7 * numB_7||num9 * numB_9||num11 * numB_11||num13 * numB_13||num15 * numB_15|}, where each |...| is 16 bits
const __m128i dot0 = _mm_mullo_epi16(tmp0, tmpB0);
// dot1 = {|num0 * numB_0||num2 * numB_2||num4 * numB_4||num6 * numB_6||num8 * numB_8||num10 * numB_10||num12 * numB_12||num14 * numB_14|}, where each |...| is 16 bits
const __m128i dot1 = _mm_mullo_epi16(tmp1, tmpB1);
// max num bits to store the result of accum(dot0) and accum(dot1) is log(16 * 256*256) = log(16) + log(256) + log(256) = 20
// // FIXME: these horizontal adds add numbers of 16 bits each, which means overflow still needs to be implemented (adding between two 16-bit numbers is 17 bits).
// // tmp_sum = {|p1+p3||p5+p7||p9+p11||p13+15||p0+p2||p4+p6||p8+p10||p12+p14|} where each |...| is 16 bits and p* = num* x numB_*
// const __m128i tmp_sum = _mm_hadd_epi16(dot0, dot1);
// // tmp_sum2 = {|p1+p3+p5+p7||p9+p11+p13+15|p0+p2+p4+p6||p8+p10+p12+p14||0|0|0|0|} where each |...| is 16 bits
// const __m128i tmp_sum2 = _mm_hadd_epi16(tmp_sum, zero128);
// // tmp_sum3 = {|p1+p3+p5+p7+p9+p11+p13+15|p0+p2+p4+p6+p8+p10+p12+p14||0|0|0|0|0|0|} where each |...| is 16 bits
// const __m128i tmp_sum3 = _mm_hadd_epi16(tmp_sum2, zero128);
// // tmp_sum4 = {|p1+p3+p5+p7+p9+p11+p13+15+p0+p2+p4+p6+p8+p10+p12+p14|0|0|0|0|0|0|0|} where each |...| is 16 bits
// const __m128i tmp_sum4 = _mm_hadd_epi16(tmp_sum3, zero128);
// sum += _mm_extract_epi16(tmp_sum4, 0);
// Extend the dotted entries to 32 bits and do the adds in 32 bit space. Ensure to NOT sign-extend.
// dot0_low_packed32 = {|num1 * numB_1||num3 * numB_3||num5 * numB_5||num7 * numB_7|} where each |...| is 32 bits
const __m128i dot0_low_packed32 = _mm_cvtepu16_epi32(dot0);
// high64_dot0 = {|num9 * numB_9||num11 * numB_11||num13 * numB_13||num15 * numB_15|0|0|0|0|}, where each |...| is 16 bits
const __m128i high64_dot0 = _mm_unpackhi_epi64(dot0, zero128);
// dot0_high_packed32 = {|num9 * numB_9||num11 * numB_11||num13 * numB_13||num15 * numB_15|} where each |...| is 32 bits
const __m128i dot0_high_packed32 = _mm_cvtepu16_epi32(high64_dot0);
// dot0_sum = {|p1+p3|p5+p7||p9+p11|p13+p15|} where each |...| is 32 bits and p* = num* x numB_*
__m128i dot0_sum = _mm_hadd_epi32(dot0_low_packed32, dot0_high_packed32);
// dot0_sum = {|p1+p3+p5+p7||p9+p11+p13+p15||0|0|} where each |...| is 32 bits
dot0_sum = _mm_hadd_epi32(dot0_sum, zero128);
// dot0_sum = {|p1+p3+p5+p7+p9+p11+p13+p15|0|0|0|} where each |...| is 32 bits
dot0_sum = _mm_hadd_epi32(dot0_sum, zero128);
sum += _mm_extract_epi32(dot0_sum, 0);
// Extend the dotted entries to 32 bits and do the adds in 32 bit space. Ensure to NOT sign-extend.
// dot1_low_packed32 = {|num0 * numB_0||num2 * numB_2||num4 * numB_4||num6 * numB_6|} where each |...| is 32 bits
const __m128i dot1_low_packed32 = _mm_cvtepu16_epi32(dot1);
// high64_dot1 = {|num8 * numB_8||num10 * numB_10||num12 * numB_12||num14 * numB_14|0|0|0|0|}, where each |...| is 16 bits
const __m128i high64_dot1 = _mm_unpackhi_epi64(dot1, zero128);
// dot1_high_packed32 = {|num8 * numB_8||num10 * numB_10||num12 * numB_12||num14 * numB_14|} where each |...| is 32 bits
const __m128i dot1_high_packed32 = _mm_cvtepu16_epi32(high64_dot1);
// dot0_sum = {|p0+p2|p4+p6||p8+p10|p12+p14|} where each |...| is 32 bits and p* = num* x numB_*
__m128i dot1_sum = _mm_hadd_epi32(dot1_low_packed32, dot1_high_packed32);
// dot0_sum = {|p0+p2+p4+p6||p8+p10+p12+p14||0|0|} where each |...| is 32 bits
dot1_sum = _mm_hadd_epi32(dot1_sum, zero128);
// dot0_sum = {|p0+p2+p4+p6+p8+p10+p12+p14|0|0|0|} where each |...| is 32 bits
dot1_sum = _mm_hadd_epi32(dot1_sum, zero128);
sum += _mm_extract_epi32(dot1_sum, 0);
}
// advance array to its remaining [0,15] entries
array += i << 4;
array2 += i << 4;
for (size_t r = 0; r < size % 16; r++) {
sum += array[r]*array2[r];
}
end = _rdtsc();
printf("Vectorized2 dot product took %d cycles \n", end - start);
return sum;
}
uint32_t dotbytes_vec(uint8_t* array, uint8_t* array2, size_t size) {
// Your implementation of sumbytes_vec goes here
// (The content of the function is missing in the provided code)
uint64_t start, end;
start = _rdtsc();
const __m128i last_byte_mask = _mm_set1_epi32(0x000000ff);
uint32_t residue = 0;
__m128i result = _mm_setzero_si128();
size_t i = 0;
for (; i < size >> 4; i++) {
size_t offset = i << 4;
const __m128i vec = _mm_loadu_si128((__m128i*)(array + offset));
const __m128i vec0 = vec;
const __m128i tmp0 = _mm_and_si128(last_byte_mask, vec0);
const __m128i vec1 = _mm_srli_epi32(vec, 1 * 8);
const __m128i tmp1 = _mm_and_si128(last_byte_mask, vec1);
const __m128i vec2 = _mm_srli_epi32(vec, 2 * 8);
const __m128i tmp2 = _mm_and_si128(last_byte_mask, vec2);
const __m128i vec3 = _mm_srli_epi32(vec, 3 * 8);
const __m128i tmp3 = vec3;
const __m128i vecB = _mm_loadu_si128((__m128i*)(array2 + offset));
const __m128i vecB0 = vecB;
const __m128i tmpB0 = _mm_and_si128(last_byte_mask, vecB0);
const __m128i vecB1 = _mm_srli_epi32(vecB, 1 * 8);
const __m128i tmpB1 = _mm_and_si128(last_byte_mask, vecB1);
const __m128i vecB2 = _mm_srli_epi32(vecB, 2 * 8);
const __m128i tmpB2 = _mm_and_si128(last_byte_mask, vecB2);
const __m128i vecB3 = _mm_srli_epi32(vecB, 3 * 8);
const __m128i tmpB3 = vecB3;
const __m128i dot0 = _mm_mullo_epi32(tmp0, tmpB0);
const __m128i dot1 = _mm_mullo_epi32(tmp1, tmpB1);
const __m128i dot2 = _mm_mullo_epi32(tmp2, tmpB2);
const __m128i dot3 = _mm_mullo_epi32(tmp3, tmpB3);
result = _mm_add_epi32(result, dot0);
result = _mm_add_epi32(result, dot1);
result = _mm_add_epi32(result, dot2);
result = _mm_add_epi32(result, dot3);
}
// advance array to its remaining [0,15] entries
array += i << 4;
array2 += i << 4;
for (size_t r = 0; r < size % 16; r++) {
residue += array[r]*array2[r];
}
end = _rdtsc();
printf("Vectorized dot product took %d cycles \n", end - start);
return (uint32_t)(_mm_extract_epi32(result, 0)) +
(uint32_t)(_mm_extract_epi32(result, 1)) +
(uint32_t)(_mm_extract_epi32(result, 2)) +
(uint32_t)(_mm_extract_epi32(result, 3)) + residue;
}
uint32_t sumbytes_naive(uint8_t* array, size_t size) {
uint32_t result = 0;
for (size_t i = 0; i < size; i++) {
result += (array[i]);
printf("iteration %d, result = %d\n", i, result);
}
return result;
}
uint32_t sumbytes_vec(uint8_t* array, size_t size) {
// Your implementation of sumbytes_vec goes here
// (The content of the function is missing in the provided code)
const __m128i last_byte_mask = _mm_set1_epi32(0x000000ff);
__m128i result = _mm_setzero_si128();
for (size_t i = 0; i < size; i += 16) {
const __m128i vec = _mm_loadu_si128((__m128i*)(array + i));
const __m128i vec0 = vec;
const __m128i tmp0 = _mm_and_si128(last_byte_mask, vec0);
const __m128i vec1 = _mm_srli_epi32(vec, 1 * 8);
const __m128i tmp1 = _mm_and_si128(last_byte_mask, vec1);
const __m128i vec2 = _mm_srli_epi32(vec, 2 * 8);
const __m128i tmp2 = _mm_and_si128(last_byte_mask, vec2);
const __m128i vec3 = _mm_srli_epi32(vec, 3 * 8);
const __m128i tmp3 = vec3;
result = _mm_add_epi32(result, tmp0);
result = _mm_add_epi32(result, tmp1);
result = _mm_add_epi32(result, tmp2);
result = _mm_add_epi32(result, tmp3);
}
return (uint32_t)(_mm_extract_epi32(result, 0)) +
(uint32_t)(_mm_extract_epi32(result, 1)) +
(uint32_t)(_mm_extract_epi32(result, 2)) +
(uint32_t)(_mm_extract_epi32(result, 3));
}
int main(int argc, char *argv[]) {
if (argc != 3) {
printf("Usage: ./vectorDot length_of_vector random_seed \n");
return 0;
}
srand(atoi(argv[2]));
int length = atoi(argv[1]);
printf("The length of test vectors are %d\n", length);
uint8_t *v1 = malloc(sizeof(uint8_t)*length);
uint8_t *v2 = malloc(sizeof(uint8_t)*length);
for (int i = 0; i < length; i++) {
v1[i] = rand()%256;
v2[i] = rand()%256;
// v1[i] = rand()%32;
// v2[i] = rand()%32;
// v1[i] = 255;
// v2[i] = 255;
}
uint64_t result = dotbytes_naive(v1, v2, length);
printf("Naive dot product of vectors = %d\n", result);
result = dotbytes_vec(v1, v2, length);
printf("Vectorized dot product of vectors = %d\n", result);
result = dotbytes_vec2(v1, v2, length);
printf("Vectorized2 dot product of vectors = %d\n", result);
free(v1);
free(v2);
return 0;
}
vectorDotJeff: file format elf64-x86-64
Disassembly of section .init:
0000000000001000 <_init>:
1000: 48 83 ec 08 sub $0x8,%rsp
1004: 48 8b 05 dd 3f 00 00 mov 0x3fdd(%rip),%rax # 4fe8 <__gmon_start__>
100b: 48 85 c0 test %rax,%rax
100e: 74 02 je 1012 <_init+0x12>
1010: ff d0 callq *%rax
1012: 48 83 c4 08 add $0x8,%rsp
1016: c3 retq
Disassembly of section .plt:
0000000000001020 <.plt>:
1020: ff 35 e2 3f 00 00 pushq 0x3fe2(%rip) # 5008 <_GLOBAL_OFFSET_TABLE_+0x8>
1026: ff 25 e4 3f 00 00 jmpq *0x3fe4(%rip) # 5010 <_GLOBAL_OFFSET_TABLE_+0x10>
102c: 0f 1f 40 00 nopl 0x0(%rax)
0000000000001030 <free@plt>:
1030: ff 25 e2 3f 00 00 jmpq *0x3fe2(%rip) # 5018 <free@GLIBC_2.2.5>
1036: 68 00 00 00 00 pushq $0x0
103b: e9 e0 ff ff ff jmpq 1020 <.plt>
0000000000001040 <puts@plt>:
1040: ff 25 da 3f 00 00 jmpq *0x3fda(%rip) # 5020 <puts@GLIBC_2.2.5>
1046: 68 01 00 00 00 pushq $0x1
104b: e9 d0 ff ff ff jmpq 1020 <.plt>
0000000000001050 <printf@plt>:
1050: ff 25 d2 3f 00 00 jmpq *0x3fd2(%rip) # 5028 <printf@GLIBC_2.2.5>
1056: 68 02 00 00 00 pushq $0x2
105b: e9 c0 ff ff ff jmpq 1020 <.plt>
0000000000001060 <srand@plt>:
1060: ff 25 ca 3f 00 00 jmpq *0x3fca(%rip) # 5030 <srand@GLIBC_2.2.5>
1066: 68 03 00 00 00 pushq $0x3
106b: e9 b0 ff ff ff jmpq 1020 <.plt>
0000000000001070 <malloc@plt>:
1070: ff 25 c2 3f 00 00 jmpq *0x3fc2(%rip) # 5038 <malloc@GLIBC_2.2.5>
1076: 68 04 00 00 00 pushq $0x4
107b: e9 a0 ff ff ff jmpq 1020 <.plt>
0000000000001080 <atoi@plt>:
1080: ff 25 ba 3f 00 00 jmpq *0x3fba(%rip) # 5040 <atoi@GLIBC_2.2.5>
1086: 68 05 00 00 00 pushq $0x5
108b: e9 90 ff ff ff jmpq 1020 <.plt>
0000000000001090 <rand@plt>:
1090: ff 25 b2 3f 00 00 jmpq *0x3fb2(%rip) # 5048 <rand@GLIBC_2.2.5>
1096: 68 06 00 00 00 pushq $0x6
109b: e9 80 ff ff ff jmpq 1020 <.plt>
Disassembly of section .plt.got:
00000000000010a0 <__cxa_finalize@plt>:
10a0: ff 25 52 3f 00 00 jmpq *0x3f52(%rip) # 4ff8 <__cxa_finalize@GLIBC_2.2.5>
10a6: 66 90 xchg %ax,%ax
Disassembly of section .text:
00000000000010b0 <_start>:
10b0: 31 ed xor %ebp,%ebp
10b2: 49 89 d1 mov %rdx,%r9
10b5: 5e pop %rsi
10b6: 48 89 e2 mov %rsp,%rdx
10b9: 48 83 e4 f0 and $0xfffffffffffffff0,%rsp
10bd: 50 push %rax
10be: 54 push %rsp
10bf: 4c 8d 05 fa 13 00 00 lea 0x13fa(%rip),%r8 # 24c0 <__libc_csu_fini>
10c6: 48 8d 0d 93 13 00 00 lea 0x1393(%rip),%rcx # 2460 <__libc_csu_init>
10cd: 48 8d 3d dc 11 00 00 lea 0x11dc(%rip),%rdi # 22b0 <main>
10d4: ff 15 06 3f 00 00 callq *0x3f06(%rip) # 4fe0 <__libc_start_main@GLIBC_2.2.5>
10da: f4 hlt
10db: 0f 1f 44 00 00 nopl 0x0(%rax,%rax,1)
00000000000010e0 <deregister_tm_clones>:
10e0: 48 8d 3d 79 3f 00 00 lea 0x3f79(%rip),%rdi # 5060 <__TMC_END__>
10e7: 48 8d 05 72 3f 00 00 lea 0x3f72(%rip),%rax # 5060 <__TMC_END__>
10ee: 48 39 f8 cmp %rdi,%rax
10f1: 74 15 je 1108 <deregister_tm_clones+0x28>
10f3: 48 8b 05 de 3e 00 00 mov 0x3ede(%rip),%rax # 4fd8 <_ITM_deregisterTMCloneTable>
10fa: 48 85 c0 test %rax,%rax
10fd: 74 09 je 1108 <deregister_tm_clones+0x28>
10ff: ff e0 jmpq *%rax
1101: 0f 1f 80 00 00 00 00 nopl 0x0(%rax)
1108: c3 retq
1109: 0f 1f 80 00 00 00 00 nopl 0x0(%rax)
0000000000001110 <register_tm_clones>:
1110: 48 8d 3d 49 3f 00 00 lea 0x3f49(%rip),%rdi # 5060 <__TMC_END__>
1117: 48 8d 35 42 3f 00 00 lea 0x3f42(%rip),%rsi # 5060 <__TMC_END__>
111e: 48 29 fe sub %rdi,%rsi
1121: 48 89 f0 mov %rsi,%rax
1124: 48 c1 ee 3f shr $0x3f,%rsi
1128: 48 c1 f8 03 sar $0x3,%rax
112c: 48 01 c6 add %rax,%rsi
112f: 48 d1 fe sar %rsi
1132: 74 14 je 1148 <register_tm_clones+0x38>
1134: 48 8b 05 b5 3e 00 00 mov 0x3eb5(%rip),%rax # 4ff0 <_ITM_registerTMCloneTable>
113b: 48 85 c0 test %rax,%rax
113e: 74 08 je 1148 <register_tm_clones+0x38>
1140: ff e0 jmpq *%rax
1142: 66 0f 1f 44 00 00 nopw 0x0(%rax,%rax,1)
1148: c3 retq
1149: 0f 1f 80 00 00 00 00 nopl 0x0(%rax)
0000000000001150 <__do_global_dtors_aux>:
1150: 80 3d 09 3f 00 00 00 cmpb $0x0,0x3f09(%rip) # 5060 <__TMC_END__>
1157: 75 2f jne 1188 <__do_global_dtors_aux+0x38>
1159: 55 push %rbp
115a: 48 83 3d 96 3e 00 00 cmpq $0x0,0x3e96(%rip) # 4ff8 <__cxa_finalize@GLIBC_2.2.5>
1161: 00
1162: 48 89 e5 mov %rsp,%rbp
1165: 74 0c je 1173 <__do_global_dtors_aux+0x23>
1167: 48 8b 3d ea 3e 00 00 mov 0x3eea(%rip),%rdi # 5058 <__dso_handle>
116e: e8 2d ff ff ff callq 10a0 <__cxa_finalize@plt>
1173: e8 68 ff ff ff callq 10e0 <deregister_tm_clones>
1178: c6 05 e1 3e 00 00 01 movb $0x1,0x3ee1(%rip) # 5060 <__TMC_END__>
117f: 5d pop %rbp
1180: c3 retq
1181: 0f 1f 80 00 00 00 00 nopl 0x0(%rax)
1188: c3 retq
1189: 0f 1f 80 00 00 00 00 nopl 0x0(%rax)
0000000000001190 <frame_dummy>:
1190: e9 7b ff ff ff jmpq 1110 <register_tm_clones>
0000000000001195 <dotbytes_naive>:
1195: 55 push %rbp
1196: 48 89 e5 mov %rsp,%rbp
1199: 48 83 ec 40 sub $0x40,%rsp
119d: 48 89 7d d8 mov %rdi,-0x28(%rbp)
11a1: 48 89 75 d0 mov %rsi,-0x30(%rbp)
11a5: 48 89 55 c8 mov %rdx,-0x38(%rbp)
11a9: 0f 31 rdtsc
11ab: 48 c1 e2 20 shl $0x20,%rdx
11af: 48 09 d0 or %rdx,%rax
11b2: 48 89 45 e8 mov %rax,-0x18(%rbp)
11b6: 48 c7 45 f8 00 00 00 movq $0x0,-0x8(%rbp)
11bd: 00
11be: 48 c7 45 f0 00 00 00 movq $0x0,-0x10(%rbp)
11c5: 00
11c6: eb 30 jmp 11f8 <dotbytes_naive+0x63>
11c8: 48 8b 55 d8 mov -0x28(%rbp),%rdx
11cc: 48 8b 45 f0 mov -0x10(%rbp),%rax
11d0: 48 01 d0 add %rdx,%rax
11d3: 0f b6 00 movzbl (%rax),%eax
11d6: 0f b6 d0 movzbl %al,%edx
11d9: 48 8b 4d d0 mov -0x30(%rbp),%rcx
11dd: 48 8b 45 f0 mov -0x10(%rbp),%rax
11e1: 48 01 c8 add %rcx,%rax
11e4: 0f b6 00 movzbl (%rax),%eax
11e7: 0f b6 c0 movzbl %al,%eax
11ea: 0f af c2 imul %edx,%eax
11ed: 48 98 cltq
11ef: 48 01 45 f8 add %rax,-0x8(%rbp)
11f3: 48 83 45 f0 01 addq $0x1,-0x10(%rbp)
11f8: 48 8b 45 f0 mov -0x10(%rbp),%rax
11fc: 48 3b 45 c8 cmp -0x38(%rbp),%rax
1200: 72 c6 jb 11c8 <dotbytes_naive+0x33>
1202: 0f 31 rdtsc
1204: 48 c1 e2 20 shl $0x20,%rdx
1208: 48 09 d0 or %rdx,%rax
120b: 48 89 45 e0 mov %rax,-0x20(%rbp)
120f: 48 8b 45 e0 mov -0x20(%rbp),%rax
1213: 48 2b 45 e8 sub -0x18(%rbp),%rax
1217: 48 89 c6 mov %rax,%rsi
121a: 48 8d 3d e7 1d 00 00 lea 0x1de7(%rip),%rdi # 3008 <_IO_stdin_used+0x8>
1221: b8 00 00 00 00 mov $0x0,%eax
1226: e8 25 fe ff ff callq 1050 <printf@plt>
122b: 48 8b 45 f8 mov -0x8(%rbp),%rax
122f: c9 leaveq
1230: c3 retq
0000000000001231 <dotbytes_vec2>:
1231: 55 push %rbp
1232: 48 89 e5 mov %rsp,%rbp
1235: 48 81 ec f0 03 00 00 sub $0x3f0,%rsp
123c: 48 89 bd 28 fc ff ff mov %rdi,-0x3d8(%rbp)
1243: 48 89 b5 20 fc ff ff mov %rsi,-0x3e0(%rbp)
124a: 48 89 95 18 fc ff ff mov %rdx,-0x3e8(%rbp)
1251: 0f 31 rdtsc
1253: 48 c1 e2 20 shl $0x20,%rdx
1257: 48 09 d0 or %rdx,%rax
125a: 48 89 45 e0 mov %rax,-0x20(%rbp)
125e: c7 45 fc 00 00 00 00 movl $0x0,-0x4(%rbp)
1265: 66 c7 85 6e fe ff ff movw $0xff,-0x192(%rbp)
126c: ff 00
126e: 0f bf 85 6e fe ff ff movswl -0x192(%rbp),%eax
1275: 0f bf 95 6e fe ff ff movswl -0x192(%rbp),%edx
127c: 0f bf 8d 6e fe ff ff movswl -0x192(%rbp),%ecx
1283: 0f bf b5 6e fe ff ff movswl -0x192(%rbp),%esi
128a: 0f bf bd 6e fe ff ff movswl -0x192(%rbp),%edi
1291: 44 0f bf 85 6e fe ff movswl -0x192(%rbp),%r8d
1298: ff
1299: 44 0f bf 8d 6e fe ff movswl -0x192(%rbp),%r9d
12a0: ff
12a1: 44 0f bf 95 6e fe ff movswl -0x192(%rbp),%r10d
12a8: ff
12a9: 66 44 89 95 6c fe ff mov %r10w,-0x194(%rbp)
12b0: ff
12b1: 66 44 89 8d 6a fe ff mov %r9w,-0x196(%rbp)
12b8: ff
12b9: 66 44 89 85 68 fe ff mov %r8w,-0x198(%rbp)
12c0: ff
12c1: 66 89 bd 66 fe ff ff mov %di,-0x19a(%rbp)
12c8: 66 89 b5 64 fe ff ff mov %si,-0x19c(%rbp)
12cf: 66 89 8d 62 fe ff ff mov %cx,-0x19e(%rbp)
12d6: 66 89 95 60 fe ff ff mov %dx,-0x1a0(%rbp)
12dd: 66 89 85 5e fe ff ff mov %ax,-0x1a2(%rbp)
12e4: 0f b7 85 5e fe ff ff movzwl -0x1a2(%rbp),%eax
12eb: c5 f9 6e c0 vmovd %eax,%xmm0
12ef: 0f b7 85 60 fe ff ff movzwl -0x1a0(%rbp),%eax
12f6: c5 f9 c4 c0 01 vpinsrw $0x1,%eax,%xmm0,%xmm0
12fb: c5 f9 6f c8 vmovdqa %xmm0,%xmm1
12ff: 0f b7 85 62 fe ff ff movzwl -0x19e(%rbp),%eax
1306: c5 f9 6e c0 vmovd %eax,%xmm0
130a: 0f b7 85 64 fe ff ff movzwl -0x19c(%rbp),%eax
1311: c5 f9 c4 c0 01 vpinsrw $0x1,%eax,%xmm0,%xmm0
1316: c5 f9 6f e0 vmovdqa %xmm0,%xmm4
131a: 0f b7 85 66 fe ff ff movzwl -0x19a(%rbp),%eax
1321: c5 f9 6e c0 vmovd %eax,%xmm0
1325: 0f b7 85 68 fe ff ff movzwl -0x198(%rbp),%eax
132c: c5 f9 c4 c0 01 vpinsrw $0x1,%eax,%xmm0,%xmm0
1331: c5 f9 6f d0 vmovdqa %xmm0,%xmm2
1335: 0f b7 85 6a fe ff ff movzwl -0x196(%rbp),%eax
133c: c5 f9 6e c0 vmovd %eax,%xmm0
1340: 0f b7 85 6c fe ff ff movzwl -0x194(%rbp),%eax
1347: c5 f9 c4 c0 01 vpinsrw $0x1,%eax,%xmm0,%xmm0
134c: c5 f9 6f d8 vmovdqa %xmm0,%xmm3
1350: c5 f1 62 c4 vpunpckldq %xmm4,%xmm1,%xmm0
1354: c5 f9 6f c8 vmovdqa %xmm0,%xmm1
1358: c5 e9 62 c3 vpunpckldq %xmm3,%xmm2,%xmm0
135c: c5 f1 6c c0 vpunpcklqdq %xmm0,%xmm1,%xmm0
1360: 90 nop
1361: c5 f9 7f 45 d0 vmovdqa %xmm0,-0x30(%rbp)
1366: c5 f9 ef c0 vpxor %xmm0,%xmm0,%xmm0
136a: c5 f9 7f 45 c0 vmovdqa %xmm0,-0x40(%rbp)
136f: 48 c7 45 f0 00 00 00 movq $0x0,-0x10(%rbp)
1376: 00
1377: e9 63 04 00 00 jmpq 17df <dotbytes_vec2+0x5ae>
137c: 48 8b 45 f0 mov -0x10(%rbp),%rax
1380: 48 c1 e0 04 shl $0x4,%rax
1384: 48 89 45 b0 mov %rax,-0x50(%rbp)
1388: 48 8b 95 28 fc ff ff mov -0x3d8(%rbp),%rdx
138f: 48 8b 45 b0 mov -0x50(%rbp),%rax
1393: 48 01 d0 add %rdx,%rax
1396: 48 89 85 38 fc ff ff mov %rax,-0x3c8(%rbp)
139d: 48 8b 85 38 fc ff ff mov -0x3c8(%rbp),%rax
13a4: c5 fa 6f 00 vmovdqu (%rax),%xmm0
13a8: c5 f9 7f 45 a0 vmovdqa %xmm0,-0x60(%rbp)
13ad: c5 f9 6f 45 a0 vmovdqa -0x60(%rbp),%xmm0
13b2: c5 f9 7f 45 90 vmovdqa %xmm0,-0x70(%rbp)
13b7: c5 f9 6f 45 d0 vmovdqa -0x30(%rbp),%xmm0
13bc: c5 f9 7f 85 50 fc ff vmovdqa %xmm0,-0x3b0(%rbp)
13c3: ff
13c4: c5 f9 6f 45 90 vmovdqa -0x70(%rbp),%xmm0
13c9: c5 f9 7f 85 40 fc ff vmovdqa %xmm0,-0x3c0(%rbp)
13d0: ff
13d1: c5 f9 6f 8d 50 fc ff vmovdqa -0x3b0(%rbp),%xmm1
13d8: ff
13d9: c5 f9 6f 85 40 fc ff vmovdqa -0x3c0(%rbp),%xmm0
13e0: ff
13e1: c5 f1 db c0 vpand %xmm0,%xmm1,%xmm0
13e5: c5 f9 7f 45 80 vmovdqa %xmm0,-0x80(%rbp)
13ea: c5 f9 6f 45 a0 vmovdqa -0x60(%rbp),%xmm0
13ef: c5 f9 7f 85 70 fc ff vmovdqa %xmm0,-0x390(%rbp)
13f6: ff
13f7: c7 85 6c fc ff ff 08 movl $0x8,-0x394(%rbp)
13fe: 00 00 00
1401: c5 f9 6f 8d 70 fc ff vmovdqa -0x390(%rbp),%xmm1
1408: ff
1409: c5 f9 6e 85 6c fc ff vmovd -0x394(%rbp),%xmm0
1410: ff
1411: c5 f1 d1 c0 vpsrlw %xmm0,%xmm1,%xmm0
1415: c5 f9 7f 85 70 ff ff vmovdqa %xmm0,-0x90(%rbp)
141c: ff
141d: c5 f9 6f 85 70 ff ff vmovdqa -0x90(%rbp),%xmm0
1424: ff
1425: c5 f9 7f 85 60 ff ff vmovdqa %xmm0,-0xa0(%rbp)
142c: ff
142d: 48 8b 95 20 fc ff ff mov -0x3e0(%rbp),%rdx
1434: 48 8b 45 b0 mov -0x50(%rbp),%rax
1438: 48 01 d0 add %rdx,%rax
143b: 48 89 85 88 fc ff ff mov %rax,-0x378(%rbp)
1442: 48 8b 85 88 fc ff ff mov -0x378(%rbp),%rax
1449: c5 fa 6f 00 vmovdqu (%rax),%xmm0
144d: c5 f9 7f 85 50 ff ff vmovdqa %xmm0,-0xb0(%rbp)
1454: ff
1455: c5 f9 6f 85 50 ff ff vmovdqa -0xb0(%rbp),%xmm0
145c: ff
145d: c5 f9 7f 85 40 ff ff vmovdqa %xmm0,-0xc0(%rbp)
1464: ff
1465: c5 f9 6f 45 d0 vmovdqa -0x30(%rbp),%xmm0
146a: c5 f9 7f 85 a0 fc ff vmovdqa %xmm0,-0x360(%rbp)
1471: ff
1472: c5 f9 6f 85 40 ff ff vmovdqa -0xc0(%rbp),%xmm0
1479: ff
147a: c5 f9 7f 85 90 fc ff vmovdqa %xmm0,-0x370(%rbp)
1481: ff
1482: c5 f9 6f 8d a0 fc ff vmovdqa -0x360(%rbp),%xmm1
1489: ff
148a: c5 f9 6f 85 90 fc ff vmovdqa -0x370(%rbp),%xmm0
1491: ff
1492: c5 f1 db c0 vpand %xmm0,%xmm1,%xmm0
1496: c5 f9 7f 85 30 ff ff vmovdqa %xmm0,-0xd0(%rbp)
149d: ff
149e: c5 f9 6f 85 50 ff ff vmovdqa -0xb0(%rbp),%xmm0
14a5: ff
14a6: c5 f9 7f 85 c0 fc ff vmovdqa %xmm0,-0x340(%rbp)
14ad: ff
14ae: c7 85 bc fc ff ff 08 movl $0x8,-0x344(%rbp)
14b5: 00 00 00
14b8: c5 f9 6f 8d c0 fc ff vmovdqa -0x340(%rbp),%xmm1
14bf: ff
14c0: c5 f9 6e 85 bc fc ff vmovd -0x344(%rbp),%xmm0
14c7: ff
14c8: c5 f1 d1 c0 vpsrlw %xmm0,%xmm1,%xmm0
14cc: c5 f9 7f 85 20 ff ff vmovdqa %xmm0,-0xe0(%rbp)
14d3: ff
14d4: c5 f9 6f 85 20 ff ff vmovdqa -0xe0(%rbp),%xmm0
14db: ff
14dc: c5 f9 7f 85 10 ff ff vmovdqa %xmm0,-0xf0(%rbp)
14e3: ff
14e4: c5 f9 6f 45 80 vmovdqa -0x80(%rbp),%xmm0
14e9: c5 f9 7f 85 e0 fc ff vmovdqa %xmm0,-0x320(%rbp)
14f0: ff
14f1: c5 f9 6f 85 30 ff ff vmovdqa -0xd0(%rbp),%xmm0
14f8: ff
14f9: c5 f9 7f 85 d0 fc ff vmovdqa %xmm0,-0x330(%rbp)
1500: ff
1501: c5 f9 6f 8d e0 fc ff vmovdqa -0x320(%rbp),%xmm1
1508: ff
1509: c5 f9 6f 85 d0 fc ff vmovdqa -0x330(%rbp),%xmm0
1510: ff
1511: c5 f1 d5 c0 vpmullw %xmm0,%xmm1,%xmm0
1515: c5 f9 7f 85 00 ff ff vmovdqa %xmm0,-0x100(%rbp)
151c: ff
151d: c5 f9 6f 85 60 ff ff vmovdqa -0xa0(%rbp),%xmm0
1524: ff
1525: c5 f9 7f 85 00 fd ff vmovdqa %xmm0,-0x300(%rbp)
152c: ff
152d: c5 f9 6f 85 10 ff ff vmovdqa -0xf0(%rbp),%xmm0
1534: ff
1535: c5 f9 7f 85 f0 fc ff vmovdqa %xmm0,-0x310(%rbp)
153c: ff
153d: c5 f9 6f 8d 00 fd ff vmovdqa -0x300(%rbp),%xmm1
1544: ff
1545: c5 f9 6f 85 f0 fc ff vmovdqa -0x310(%rbp),%xmm0
154c: ff
154d: c5 f1 d5 c0 vpmullw %xmm0,%xmm1,%xmm0
1551: c5 f9 7f 85 f0 fe ff vmovdqa %xmm0,-0x110(%rbp)
1558: ff
1559: c5 f9 6f 85 00 ff ff vmovdqa -0x100(%rbp),%xmm0
1560: ff
1561: c5 f9 7f 85 10 fd ff vmovdqa %xmm0,-0x2f0(%rbp)
1568: ff
1569: c5 f9 6f 85 10 fd ff vmovdqa -0x2f0(%rbp),%xmm0
1570: ff
1571: c4 e2 79 33 c0 vpmovzxwd %xmm0,%xmm0
1576: c5 f9 7f 85 e0 fe ff vmovdqa %xmm0,-0x120(%rbp)
157d: ff
157e: c5 f9 6f 85 00 ff ff vmovdqa -0x100(%rbp),%xmm0
1585: ff
1586: c5 f9 7f 85 30 fd ff vmovdqa %xmm0,-0x2d0(%rbp)
158d: ff
158e: c5 f9 6f 45 c0 vmovdqa -0x40(%rbp),%xmm0
1593: c5 f9 7f 85 20 fd ff vmovdqa %xmm0,-0x2e0(%rbp)
159a: ff
159b: c5 f9 6f 85 30 fd ff vmovdqa -0x2d0(%rbp),%xmm0
15a2: ff
15a3: c5 f9 6d 85 20 fd ff vpunpckhqdq -0x2e0(%rbp),%xmm0,%xmm0
15aa: ff
15ab: 90 nop
15ac: c5 f9 7f 85 d0 fe ff vmovdqa %xmm0,-0x130(%rbp)
15b3: ff
15b4: c5 f9 6f 85 d0 fe ff vmovdqa -0x130(%rbp),%xmm0
15bb: ff
15bc: c5 f9 7f 85 40 fd ff vmovdqa %xmm0,-0x2c0(%rbp)
15c3: ff
15c4: c5 f9 6f 85 40 fd ff vmovdqa -0x2c0(%rbp),%xmm0
15cb: ff
15cc: c4 e2 79 33 c0 vpmovzxwd %xmm0,%xmm0
15d1: c5 f9 7f 85 c0 fe ff vmovdqa %xmm0,-0x140(%rbp)
15d8: ff
15d9: c5 f9 6f 85 e0 fe ff vmovdqa -0x120(%rbp),%xmm0
15e0: ff
15e1: c5 f9 7f 85 60 fd ff vmovdqa %xmm0,-0x2a0(%rbp)
15e8: ff
15e9: c5 f9 6f 85 c0 fe ff vmovdqa -0x140(%rbp),%xmm0
15f0: ff
15f1: c5 f9 7f 85 50 fd ff vmovdqa %xmm0,-0x2b0(%rbp)
15f8: ff
15f9: c5 f9 6f 8d 50 fd ff vmovdqa -0x2b0(%rbp),%xmm1
1600: ff
1601: c5 f9 6f 85 60 fd ff vmovdqa -0x2a0(%rbp),%xmm0
1608: ff
1609: c4 e2 79 02 c1 vphaddd %xmm1,%xmm0,%xmm0
160e: c5 f9 7f 85 b0 fe ff vmovdqa %xmm0,-0x150(%rbp)
1615: ff
1616: c5 f9 6f 85 b0 fe ff vmovdqa -0x150(%rbp),%xmm0
161d: ff
161e: c5 f9 7f 85 80 fd ff vmovdqa %xmm0,-0x280(%rbp)
1625: ff
1626: c5 f9 6f 45 c0 vmovdqa -0x40(%rbp),%xmm0
162b: c5 f9 7f 85 70 fd ff vmovdqa %xmm0,-0x290(%rbp)
1632: ff
1633: c5 f9 6f 8d 70 fd ff vmovdqa -0x290(%rbp),%xmm1
163a: ff
163b: c5 f9 6f 85 80 fd ff vmovdqa -0x280(%rbp),%xmm0
1642: ff
1643: c4 e2 79 02 c1 vphaddd %xmm1,%xmm0,%xmm0
1648: c5 f9 7f 85 b0 fe ff vmovdqa %xmm0,-0x150(%rbp)
164f: ff
1650: c5 f9 6f 85 b0 fe ff vmovdqa -0x150(%rbp),%xmm0
1657: ff
1658: c5 f9 7f 85 a0 fd ff vmovdqa %xmm0,-0x260(%rbp)
165f: ff
1660: c5 f9 6f 45 c0 vmovdqa -0x40(%rbp),%xmm0
1665: c5 f9 7f 85 90 fd ff vmovdqa %xmm0,-0x270(%rbp)
166c: ff
166d: c5 f9 6f 8d 90 fd ff vmovdqa -0x270(%rbp),%xmm1
1674: ff
1675: c5 f9 6f 85 a0 fd ff vmovdqa -0x260(%rbp),%xmm0
167c: ff
167d: c4 e2 79 02 c1 vphaddd %xmm1,%xmm0,%xmm0
1682: c5 f9 7f 85 b0 fe ff vmovdqa %xmm0,-0x150(%rbp)
1689: ff
168a: c5 f9 6f 85 b0 fe ff vmovdqa -0x150(%rbp),%xmm0
1691: ff
1692: c5 f9 7e c0 vmovd %xmm0,%eax
1696: 01 45 fc add %eax,-0x4(%rbp)
1699: c5 f9 6f 85 f0 fe ff vmovdqa -0x110(%rbp),%xmm0
16a0: ff
16a1: c5 f9 7f 85 b0 fd ff vmovdqa %xmm0,-0x250(%rbp)
16a8: ff
16a9: c5 f9 6f 85 b0 fd ff vmovdqa -0x250(%rbp),%xmm0
16b0: ff
16b1: c4 e2 79 33 c0 vpmovzxwd %xmm0,%xmm0
16b6: c5 f9 7f 85 a0 fe ff vmovdqa %xmm0,-0x160(%rbp)
16bd: ff
16be: c5 f9 6f 85 f0 fe ff vmovdqa -0x110(%rbp),%xmm0
16c5: ff
16c6: c5 f9 7f 85 d0 fd ff vmovdqa %xmm0,-0x230(%rbp)
16cd: ff
16ce: c5 f9 6f 45 c0 vmovdqa -0x40(%rbp),%xmm0
16d3: c5 f9 7f 85 c0 fd ff vmovdqa %xmm0,-0x240(%rbp)
16da: ff
16db: c5 f9 6f 85 d0 fd ff vmovdqa -0x230(%rbp),%xmm0
16e2: ff
16e3: c5 f9 6d 85 c0 fd ff vpunpckhqdq -0x240(%rbp),%xmm0,%xmm0
16ea: ff
16eb: 90 nop
16ec: c5 f9 7f 85 90 fe ff vmovdqa %xmm0,-0x170(%rbp)
16f3: ff
16f4: c5 f9 6f 85 90 fe ff vmovdqa -0x170(%rbp),%xmm0
16fb: ff
16fc: c5 f9 7f 85 e0 fd ff vmovdqa %xmm0,-0x220(%rbp)
1703: ff
1704: c5 f9 6f 85 e0 fd ff vmovdqa -0x220(%rbp),%xmm0
170b: ff
170c: c4 e2 79 33 c0 vpmovzxwd %xmm0,%xmm0
1711: c5 f9 7f 85 80 fe ff vmovdqa %xmm0,-0x180(%rbp)
1718: ff
1719: c5 f9 6f 85 a0 fe ff vmovdqa -0x160(%rbp),%xmm0
1720: ff
1721: c5 f9 7f 85 00 fe ff vmovdqa %xmm0,-0x200(%rbp)
1728: ff
1729: c5 f9 6f 85 80 fe ff vmovdqa -0x180(%rbp),%xmm0
1730: ff
1731: c5 f9 7f 85 f0 fd ff vmovdqa %xmm0,-0x210(%rbp)
1738: ff
1739: c5 f9 6f 8d f0 fd ff vmovdqa -0x210(%rbp),%xmm1
1740: ff
1741: c5 f9 6f 85 00 fe ff vmovdqa -0x200(%rbp),%xmm0
1748: ff
1749: c4 e2 79 02 c1 vphaddd %xmm1,%xmm0,%xmm0
174e: c5 f9 7f 85 70 fe ff vmovdqa %xmm0,-0x190(%rbp)
1755: ff
1756: c5 f9 6f 85 70 fe ff vmovdqa -0x190(%rbp),%xmm0
175d: ff
175e: c5 f9 7f 85 20 fe ff vmovdqa %xmm0,-0x1e0(%rbp)
1765: ff
1766: c5 f9 6f 45 c0 vmovdqa -0x40(%rbp),%xmm0
176b: c5 f9 7f 85 10 fe ff vmovdqa %xmm0,-0x1f0(%rbp)
1772: ff
1773: c5 f9 6f 8d 10 fe ff vmovdqa -0x1f0(%rbp),%xmm1
177a: ff
177b: c5 f9 6f 85 20 fe ff vmovdqa -0x1e0(%rbp),%xmm0
1782: ff
1783: c4 e2 79 02 c1 vphaddd %xmm1,%xmm0,%xmm0
1788: c5 f9 7f 85 70 fe ff vmovdqa %xmm0,-0x190(%rbp)
178f: ff
1790: c5 f9 6f 85 70 fe ff vmovdqa -0x190(%rbp),%xmm0
1797: ff
1798: c5 f9 7f 85 40 fe ff vmovdqa %xmm0,-0x1c0(%rbp)
179f: ff
17a0: c5 f9 6f 45 c0 vmovdqa -0x40(%rbp),%xmm0
17a5: c5 f9 7f 85 30 fe ff vmovdqa %xmm0,-0x1d0(%rbp)
17ac: ff
17ad: c5 f9 6f 8d 30 fe ff vmovdqa -0x1d0(%rbp),%xmm1
17b4: ff
17b5: c5 f9 6f 85 40 fe ff vmovdqa -0x1c0(%rbp),%xmm0
17bc: ff
17bd: c4 e2 79 02 c1 vphaddd %xmm1,%xmm0,%xmm0
17c2: 90 nop
17c3: c5 f9 7f 85 70 fe ff vmovdqa %xmm0,-0x190(%rbp)
17ca: ff
17cb: c5 f9 6f 85 70 fe ff vmovdqa -0x190(%rbp),%xmm0
17d2: ff
17d3: c5 f9 7e c0 vmovd %xmm0,%eax
17d7: 01 45 fc add %eax,-0x4(%rbp)
17da: 48 83 45 f0 01 addq $0x1,-0x10(%rbp)
17df: 48 8b 85 18 fc ff ff mov -0x3e8(%rbp),%rax
17e6: 48 c1 e8 04 shr $0x4,%rax
17ea: 48 39 45 f0 cmp %rax,-0x10(%rbp)
17ee: 0f 82 88 fb ff ff jb 137c <dotbytes_vec2+0x14b>
17f4: 48 8b 45 f0 mov -0x10(%rbp),%rax
17f8: 48 c1 e0 04 shl $0x4,%rax
17fc: 48 01 85 28 fc ff ff add %rax,-0x3d8(%rbp)
1803: 48 8b 45 f0 mov -0x10(%rbp),%rax
1807: 48 c1 e0 04 shl $0x4,%rax
180b: 48 01 85 20 fc ff ff add %rax,-0x3e0(%rbp)
1812: 48 c7 45 e8 00 00 00 movq $0x0,-0x18(%rbp)
1819: 00
181a: eb 33 jmp 184f <dotbytes_vec2+0x61e>
181c: 48 8b 95 28 fc ff ff mov -0x3d8(%rbp),%rdx
1823: 48 8b 45 e8 mov -0x18(%rbp),%rax
1827: 48 01 d0 add %rdx,%rax
182a: 0f b6 00 movzbl (%rax),%eax
182d: 0f b6 d0 movzbl %al,%edx
1830: 48 8b 8d 20 fc ff ff mov -0x3e0(%rbp),%rcx
1837: 48 8b 45 e8 mov -0x18(%rbp),%rax
183b: 48 01 c8 add %rcx,%rax
183e: 0f b6 00 movzbl (%rax),%eax
1841: 0f b6 c0 movzbl %al,%eax
1844: 0f af c2 imul %edx,%eax
1847: 01 45 fc add %eax,-0x4(%rbp)
184a: 48 83 45 e8 01 addq $0x1,-0x18(%rbp)
184f: 48 8b 85 18 fc ff ff mov -0x3e8(%rbp),%rax
1856: 83 e0 0f and $0xf,%eax
1859: 48 39 45 e8 cmp %rax,-0x18(%rbp)
185d: 72 bd jb 181c <dotbytes_vec2+0x5eb>
185f: 0f 31 rdtsc
1861: 48 c1 e2 20 shl $0x20,%rdx
1865: 48 09 d0 or %rdx,%rax
1868: 48 89 45 b8 mov %rax,-0x48(%rbp)
186c: 48 8b 45 b8 mov -0x48(%rbp),%rax
1870: 48 2b 45 e0 sub -0x20(%rbp),%rax
1874: 48 89 c6 mov %rax,%rsi
1877: 48 8d 3d b2 17 00 00 lea 0x17b2(%rip),%rdi # 3030 <_IO_stdin_used+0x30>
187e: b8 00 00 00 00 mov $0x0,%eax
1883: e8 c8 f7 ff ff callq 1050 <printf@plt>
1888: 8b 45 fc mov -0x4(%rbp),%eax
188b: c9 leaveq
188c: c3 retq
000000000000188d <dotbytes_vec>:
188d: 55 push %rbp
188e: 48 89 e5 mov %rsp,%rbp
1891: 48 81 ec a0 04 00 00 sub $0x4a0,%rsp
1898: 48 89 bd 78 fb ff ff mov %rdi,-0x488(%rbp)
189f: 48 89 b5 70 fb ff ff mov %rsi,-0x490(%rbp)
18a6: 48 89 95 68 fb ff ff mov %rdx,-0x498(%rbp)
18ad: 0f 31 rdtsc
18af: 48 c1 e2 20 shl $0x20,%rdx
18b3: 48 09 d0 or %rdx,%rax
18b6: 48 89 45 c8 mov %rax,-0x38(%rbp)
18ba: c7 85 3c fe ff ff ff movl $0xff,-0x1c4(%rbp)
18c1: 00 00 00
18c4: 8b 85 3c fe ff ff mov -0x1c4(%rbp),%eax
18ca: 89 85 38 fe ff ff mov %eax,-0x1c8(%rbp)
18d0: 8b 85 3c fe ff ff mov -0x1c4(%rbp),%eax
18d6: 89 85 34 fe ff ff mov %eax,-0x1cc(%rbp)
18dc: 8b 85 3c fe ff ff mov -0x1c4(%rbp),%eax
18e2: 89 85 30 fe ff ff mov %eax,-0x1d0(%rbp)
18e8: 8b 85 3c fe ff ff mov -0x1c4(%rbp),%eax
18ee: 89 85 2c fe ff ff mov %eax,-0x1d4(%rbp)
18f4: 8b 85 38 fe ff ff mov -0x1c8(%rbp),%eax
18fa: 8b 95 34 fe ff ff mov -0x1cc(%rbp),%edx
1900: c5 f9 6e d2 vmovd %edx,%xmm2
1904: c4 e3 69 22 c8 01 vpinsrd $0x1,%eax,%xmm2,%xmm1
190a: 8b 85 30 fe ff ff mov -0x1d0(%rbp),%eax
1910: 8b 95 2c fe ff ff mov -0x1d4(%rbp),%edx
1916: c5 f9 6e da vmovd %edx,%xmm3
191a: c4 e3 61 22 c0 01 vpinsrd $0x1,%eax,%xmm3,%xmm0
1920: c5 f9 6c c1 vpunpcklqdq %xmm1,%xmm0,%xmm0
1924: 90 nop
1925: c5 f9 7f 45 b0 vmovdqa %xmm0,-0x50(%rbp)
192a: c7 45 fc 00 00 00 00 movl $0x0,-0x4(%rbp)
1931: c5 f9 ef c0 vpxor %xmm0,%xmm0,%xmm0
1935: c5 f9 7f 45 e0 vmovdqa %xmm0,-0x20(%rbp)
193a: 48 c7 45 d8 00 00 00 movq $0x0,-0x28(%rbp)
1941: 00
1942: e9 f3 04 00 00 jmpq 1e3a <dotbytes_vec+0x5ad>
1947: 48 8b 45 d8 mov -0x28(%rbp),%rax
194b: 48 c1 e0 04 shl $0x4,%rax
194f: 48 89 45 a0 mov %rax,-0x60(%rbp)
1953: 48 8b 95 78 fb ff ff mov -0x488(%rbp),%rdx
195a: 48 8b 45 a0 mov -0x60(%rbp),%rax
195e: 48 01 d0 add %rdx,%rax
1961: 48 89 85 88 fb ff ff mov %rax,-0x478(%rbp)
1968: 48 8b 85 88 fb ff ff mov -0x478(%rbp),%rax
196f: c5 fa 6f 00 vmovdqu (%rax),%xmm0
1973: c5 f9 7f 45 90 vmovdqa %xmm0,-0x70(%rbp)
1978: c5 f9 6f 45 90 vmovdqa -0x70(%rbp),%xmm0
197d: c5 f9 7f 45 80 vmovdqa %xmm0,-0x80(%rbp)
1982: c5 f9 6f 45 b0 vmovdqa -0x50(%rbp),%xmm0
1987: c5 f9 7f 85 a0 fb ff vmovdqa %xmm0,-0x460(%rbp)
198e: ff
198f: c5 f9 6f 45 80 vmovdqa -0x80(%rbp),%xmm0
1994: c5 f9 7f 85 90 fb ff vmovdqa %xmm0,-0x470(%rbp)
199b: ff
199c: c5 f9 6f 8d a0 fb ff vmovdqa -0x460(%rbp),%xmm1
19a3: ff
19a4: c5 f9 6f 85 90 fb ff vmovdqa -0x470(%rbp),%xmm0
19ab: ff
19ac: c5 f1 db c0 vpand %xmm0,%xmm1,%xmm0
19b0: c5 f9 7f 85 70 ff ff vmovdqa %xmm0,-0x90(%rbp)
19b7: ff
19b8: c5 f9 6f 45 90 vmovdqa -0x70(%rbp),%xmm0
19bd: c5 f9 7f 85 c0 fb ff vmovdqa %xmm0,-0x440(%rbp)
19c4: ff
19c5: c7 85 bc fb ff ff 08 movl $0x8,-0x444(%rbp)
19cc: 00 00 00
19cf: c5 f9 6f 8d c0 fb ff vmovdqa -0x440(%rbp),%xmm1
19d6: ff
19d7: c5 f9 6e 85 bc fb ff vmovd -0x444(%rbp),%xmm0
19de: ff
19df: c5 f1 d2 c0 vpsrld %xmm0,%xmm1,%xmm0
19e3: c5 f9 7f 85 60 ff ff vmovdqa %xmm0,-0xa0(%rbp)
19ea: ff
19eb: c5 f9 6f 45 b0 vmovdqa -0x50(%rbp),%xmm0
19f0: c5 f9 7f 85 e0 fb ff vmovdqa %xmm0,-0x420(%rbp)
19f7: ff
19f8: c5 f9 6f 85 60 ff ff vmovdqa -0xa0(%rbp),%xmm0
19ff: ff
1a00: c5 f9 7f 85 d0 fb ff vmovdqa %xmm0,-0x430(%rbp)
1a07: ff
1a08: c5 f9 6f 8d e0 fb ff vmovdqa -0x420(%rbp),%xmm1
1a0f: ff
1a10: c5 f9 6f 85 d0 fb ff vmovdqa -0x430(%rbp),%xmm0
1a17: ff
1a18: c5 f1 db c0 vpand %xmm0,%xmm1,%xmm0
1a1c: c5 f9 7f 85 50 ff ff vmovdqa %xmm0,-0xb0(%rbp)
1a23: ff
1a24: c5 f9 6f 45 90 vmovdqa -0x70(%rbp),%xmm0
1a29: c5 f9 7f 85 00 fc ff vmovdqa %xmm0,-0x400(%rbp)
1a30: ff
1a31: c7 85 fc fb ff ff 10 movl $0x10,-0x404(%rbp)
1a38: 00 00 00
1a3b: c5 f9 6f 8d 00 fc ff vmovdqa -0x400(%rbp),%xmm1
1a42: ff
1a43: c5 f9 6e 85 fc fb ff vmovd -0x404(%rbp),%xmm0
1a4a: ff
1a4b: c5 f1 d2 c0 vpsrld %xmm0,%xmm1,%xmm0
1a4f: c5 f9 7f 85 40 ff ff vmovdqa %xmm0,-0xc0(%rbp)
1a56: ff
1a57: c5 f9 6f 45 b0 vmovdqa -0x50(%rbp),%xmm0
1a5c: c5 f9 7f 85 20 fc ff vmovdqa %xmm0,-0x3e0(%rbp)
1a63: ff
1a64: c5 f9 6f 85 40 ff ff vmovdqa -0xc0(%rbp),%xmm0
1a6b: ff
1a6c: c5 f9 7f 85 10 fc ff vmovdqa %xmm0,-0x3f0(%rbp)
1a73: ff
1a74: c5 f9 6f 8d 20 fc ff vmovdqa -0x3e0(%rbp),%xmm1
1a7b: ff
1a7c: c5 f9 6f 85 10 fc ff vmovdqa -0x3f0(%rbp),%xmm0
1a83: ff
1a84: c5 f1 db c0 vpand %xmm0,%xmm1,%xmm0
1a88: c5 f9 7f 85 30 ff ff vmovdqa %xmm0,-0xd0(%rbp)
1a8f: ff
1a90: c5 f9 6f 45 90 vmovdqa -0x70(%rbp),%xmm0
1a95: c5 f9 7f 85 40 fc ff vmovdqa %xmm0,-0x3c0(%rbp)
1a9c: ff
1a9d: c7 85 3c fc ff ff 18 movl $0x18,-0x3c4(%rbp)
1aa4: 00 00 00
1aa7: c5 f9 6f 8d 40 fc ff vmovdqa -0x3c0(%rbp),%xmm1
1aae: ff
1aaf: c5 f9 6e 85 3c fc ff vmovd -0x3c4(%rbp),%xmm0
1ab6: ff
1ab7: c5 f1 d2 c0 vpsrld %xmm0,%xmm1,%xmm0
1abb: c5 f9 7f 85 20 ff ff vmovdqa %xmm0,-0xe0(%rbp)
1ac2: ff
1ac3: c5 f9 6f 85 20 ff ff vmovdqa -0xe0(%rbp),%xmm0
1aca: ff
1acb: c5 f9 7f 85 10 ff ff vmovdqa %xmm0,-0xf0(%rbp)
1ad2: ff
1ad3: 48 8b 95 70 fb ff ff mov -0x490(%rbp),%rdx
1ada: 48 8b 45 a0 mov -0x60(%rbp),%rax
1ade: 48 01 d0 add %rdx,%rax
1ae1: 48 89 85 58 fc ff ff mov %rax,-0x3a8(%rbp)
1ae8: 48 8b 85 58 fc ff ff mov -0x3a8(%rbp),%rax
1aef: c5 fa 6f 00 vmovdqu (%rax),%xmm0
1af3: c5 f9 7f 85 00 ff ff vmovdqa %xmm0,-0x100(%rbp)
1afa: ff
1afb: c5 f9 6f 85 00 ff ff vmovdqa -0x100(%rbp),%xmm0
1b02: ff
1b03: c5 f9 7f 85 f0 fe ff vmovdqa %xmm0,-0x110(%rbp)
1b0a: ff
1b0b: c5 f9 6f 45 b0 vmovdqa -0x50(%rbp),%xmm0
1b10: c5 f9 7f 85 70 fc ff vmovdqa %xmm0,-0x390(%rbp)
1b17: ff
1b18: c5 f9 6f 85 f0 fe ff vmovdqa -0x110(%rbp),%xmm0
1b1f: ff
1b20: c5 f9 7f 85 60 fc ff vmovdqa %xmm0,-0x3a0(%rbp)
1b27: ff
1b28: c5 f9 6f 8d 70 fc ff vmovdqa -0x390(%rbp),%xmm1
1b2f: ff
1b30: c5 f9 6f 85 60 fc ff vmovdqa -0x3a0(%rbp),%xmm0
1b37: ff
1b38: c5 f1 db c0 vpand %xmm0,%xmm1,%xmm0
1b3c: c5 f9 7f 85 e0 fe ff vmovdqa %xmm0,-0x120(%rbp)
1b43: ff
1b44: c5 f9 6f 85 00 ff ff vmovdqa -0x100(%rbp),%xmm0
1b4b: ff
1b4c: c5 f9 7f 85 90 fc ff vmovdqa %xmm0,-0x370(%rbp)
1b53: ff
1b54: c7 85 8c fc ff ff 08 movl $0x8,-0x374(%rbp)
1b5b: 00 00 00
1b5e: c5 f9 6f 8d 90 fc ff vmovdqa -0x370(%rbp),%xmm1
1b65: ff
1b66: c5 f9 6e 85 8c fc ff vmovd -0x374(%rbp),%xmm0
1b6d: ff
1b6e: c5 f1 d2 c0 vpsrld %xmm0,%xmm1,%xmm0
1b72: c5 f9 7f 85 d0 fe ff vmovdqa %xmm0,-0x130(%rbp)
1b79: ff
1b7a: c5 f9 6f 45 b0 vmovdqa -0x50(%rbp),%xmm0
1b7f: c5 f9 7f 85 b0 fc ff vmovdqa %xmm0,-0x350(%rbp)
1b86: ff
1b87: c5 f9 6f 85 d0 fe ff vmovdqa -0x130(%rbp),%xmm0
1b8e: ff
1b8f: c5 f9 7f 85 a0 fc ff vmovdqa %xmm0,-0x360(%rbp)
1b96: ff
1b97: c5 f9 6f 8d b0 fc ff vmovdqa -0x350(%rbp),%xmm1
1b9e: ff
1b9f: c5 f9 6f 85 a0 fc ff vmovdqa -0x360(%rbp),%xmm0
1ba6: ff
1ba7: c5 f1 db c0 vpand %xmm0,%xmm1,%xmm0
1bab: c5 f9 7f 85 c0 fe ff vmovdqa %xmm0,-0x140(%rbp)
1bb2: ff
1bb3: c5 f9 6f 85 00 ff ff vmovdqa -0x100(%rbp),%xmm0
1bba: ff
1bbb: c5 f9 7f 85 d0 fc ff vmovdqa %xmm0,-0x330(%rbp)
1bc2: ff
1bc3: c7 85 cc fc ff ff 10 movl $0x10,-0x334(%rbp)
1bca: 00 00 00
1bcd: c5 f9 6f 8d d0 fc ff vmovdqa -0x330(%rbp),%xmm1
1bd4: ff
1bd5: c5 f9 6e 85 cc fc ff vmovd -0x334(%rbp),%xmm0
1bdc: ff
1bdd: c5 f1 d2 c0 vpsrld %xmm0,%xmm1,%xmm0
1be1: c5 f9 7f 85 b0 fe ff vmovdqa %xmm0,-0x150(%rbp)
1be8: ff
1be9: c5 f9 6f 45 b0 vmovdqa -0x50(%rbp),%xmm0
1bee: c5 f9 7f 85 f0 fc ff vmovdqa %xmm0,-0x310(%rbp)
1bf5: ff
1bf6: c5 f9 6f 85 b0 fe ff vmovdqa -0x150(%rbp),%xmm0
1bfd: ff
1bfe: c5 f9 7f 85 e0 fc ff vmovdqa %xmm0,-0x320(%rbp)
1c05: ff
1c06: c5 f9 6f 8d f0 fc ff vmovdqa -0x310(%rbp),%xmm1
1c0d: ff
1c0e: c5 f9 6f 85 e0 fc ff vmovdqa -0x320(%rbp),%xmm0
1c15: ff
1c16: c5 f1 db c0 vpand %xmm0,%xmm1,%xmm0
1c1a: c5 f9 7f 85 a0 fe ff vmovdqa %xmm0,-0x160(%rbp)
1c21: ff
1c22: c5 f9 6f 85 00 ff ff vmovdqa -0x100(%rbp),%xmm0
1c29: ff
1c2a: c5 f9 7f 85 10 fd ff vmovdqa %xmm0,-0x2f0(%rbp)
1c31: ff
1c32: c7 85 0c fd ff ff 18 movl $0x18,-0x2f4(%rbp)
1c39: 00 00 00
1c3c: c5 f9 6f 8d 10 fd ff vmovdqa -0x2f0(%rbp),%xmm1
1c43: ff
1c44: c5 f9 6e 85 0c fd ff vmovd -0x2f4(%rbp),%xmm0
1c4b: ff
1c4c: c5 f1 d2 c0 vpsrld %xmm0,%xmm1,%xmm0
1c50: c5 f9 7f 85 90 fe ff vmovdqa %xmm0,-0x170(%rbp)
1c57: ff
1c58: c5 f9 6f 85 90 fe ff vmovdqa -0x170(%rbp),%xmm0
1c5f: ff
1c60: c5 f9 7f 85 80 fe ff vmovdqa %xmm0,-0x180(%rbp)
1c67: ff
1c68: c5 f9 6f 85 70 ff ff vmovdqa -0x90(%rbp),%xmm0
1c6f: ff
1c70: c5 f9 7f 85 30 fd ff vmovdqa %xmm0,-0x2d0(%rbp)
1c77: ff
1c78: c5 f9 6f 85 e0 fe ff vmovdqa -0x120(%rbp),%xmm0
1c7f: ff
1c80: c5 f9 7f 85 20 fd ff vmovdqa %xmm0,-0x2e0(%rbp)
1c87: ff
1c88: c5 f9 6f 8d 30 fd ff vmovdqa -0x2d0(%rbp),%xmm1
1c8f: ff
1c90: c5 f9 6f 85 20 fd ff vmovdqa -0x2e0(%rbp),%xmm0
1c97: ff
1c98: c4 e2 71 40 c0 vpmulld %xmm0,%xmm1,%xmm0
1c9d: c5 f9 7f 85 70 fe ff vmovdqa %xmm0,-0x190(%rbp)
1ca4: ff
1ca5: c5 f9 6f 85 50 ff ff vmovdqa -0xb0(%rbp),%xmm0
1cac: ff
1cad: c5 f9 7f 85 50 fd ff vmovdqa %xmm0,-0x2b0(%rbp)
1cb4: ff
1cb5: c5 f9 6f 85 c0 fe ff vmovdqa -0x140(%rbp),%xmm0
1cbc: ff
1cbd: c5 f9 7f 85 40 fd ff vmovdqa %xmm0,-0x2c0(%rbp)
1cc4: ff
1cc5: c5 f9 6f 8d 50 fd ff vmovdqa -0x2b0(%rbp),%xmm1
1ccc: ff
1ccd: c5 f9 6f 85 40 fd ff vmovdqa -0x2c0(%rbp),%xmm0
1cd4: ff
1cd5: c4 e2 71 40 c0 vpmulld %xmm0,%xmm1,%xmm0
1cda: c5 f9 7f 85 60 fe ff vmovdqa %xmm0,-0x1a0(%rbp)
1ce1: ff
1ce2: c5 f9 6f 85 30 ff ff vmovdqa -0xd0(%rbp),%xmm0
1ce9: ff
1cea: c5 f9 7f 85 70 fd ff vmovdqa %xmm0,-0x290(%rbp)
1cf1: ff
1cf2: c5 f9 6f 85 a0 fe ff vmovdqa -0x160(%rbp),%xmm0
1cf9: ff
1cfa: c5 f9 7f 85 60 fd ff vmovdqa %xmm0,-0x2a0(%rbp)
1d01: ff
1d02: c5 f9 6f 8d 70 fd ff vmovdqa -0x290(%rbp),%xmm1
1d09: ff
1d0a: c5 f9 6f 85 60 fd ff vmovdqa -0x2a0(%rbp),%xmm0
1d11: ff
1d12: c4 e2 71 40 c0 vpmulld %xmm0,%xmm1,%xmm0
1d17: c5 f9 7f 85 50 fe ff vmovdqa %xmm0,-0x1b0(%rbp)
1d1e: ff
1d1f: c5 f9 6f 85 10 ff ff vmovdqa -0xf0(%rbp),%xmm0
1d26: ff
1d27: c5 f9 7f 85 90 fd ff vmovdqa %xmm0,-0x270(%rbp)
1d2e: ff
1d2f: c5 f9 6f 85 80 fe ff vmovdqa -0x180(%rbp),%xmm0
1d36: ff
1d37: c5 f9 7f 85 80 fd ff vmovdqa %xmm0,-0x280(%rbp)
1d3e: ff
1d3f: c5 f9 6f 8d 90 fd ff vmovdqa -0x270(%rbp),%xmm1
1d46: ff
1d47: c5 f9 6f 85 80 fd ff vmovdqa -0x280(%rbp),%xmm0
1d4e: ff
1d4f: c4 e2 71 40 c0 vpmulld %xmm0,%xmm1,%xmm0
1d54: c5 f9 7f 85 40 fe ff vmovdqa %xmm0,-0x1c0(%rbp)
1d5b: ff
1d5c: c5 f9 6f 45 e0 vmovdqa -0x20(%rbp),%xmm0
1d61: c5 f9 7f 85 b0 fd ff vmovdqa %xmm0,-0x250(%rbp)
1d68: ff
1d69: c5 f9 6f 85 70 fe ff vmovdqa -0x190(%rbp),%xmm0
1d70: ff
1d71: c5 f9 7f 85 a0 fd ff vmovdqa %xmm0,-0x260(%rbp)
1d78: ff
1d79: c5 f9 6f 8d b0 fd ff vmovdqa -0x250(%rbp),%xmm1
1d80: ff
1d81: c5 f9 6f 85 a0 fd ff vmovdqa -0x260(%rbp),%xmm0
1d88: ff
1d89: c5 f1 fe c0 vpaddd %xmm0,%xmm1,%xmm0
1d8d: c5 f9 7f 45 e0 vmovdqa %xmm0,-0x20(%rbp)
1d92: c5 f9 6f 45 e0 vmovdqa -0x20(%rbp),%xmm0
1d97: c5 f9 7f 85 d0 fd ff vmovdqa %xmm0,-0x230(%rbp)
1d9e: ff
1d9f: c5 f9 6f 85 60 fe ff vmovdqa -0x1a0(%rbp),%xmm0
1da6: ff
1da7: c5 f9 7f 85 c0 fd ff vmovdqa %xmm0,-0x240(%rbp)
1dae: ff
1daf: c5 f9 6f 8d d0 fd ff vmovdqa -0x230(%rbp),%xmm1
1db6: ff
1db7: c5 f9 6f 85 c0 fd ff vmovdqa -0x240(%rbp),%xmm0
1dbe: ff
1dbf: c5 f1 fe c0 vpaddd %xmm0,%xmm1,%xmm0
1dc3: c5 f9 7f 45 e0 vmovdqa %xmm0,-0x20(%rbp)
1dc8: c5 f9 6f 45 e0 vmovdqa -0x20(%rbp),%xmm0
1dcd: c5 f9 7f 85 f0 fd ff vmovdqa %xmm0,-0x210(%rbp)
1dd4: ff
1dd5: c5 f9 6f 85 50 fe ff vmovdqa -0x1b0(%rbp),%xmm0
1ddc: ff
1ddd: c5 f9 7f 85 e0 fd ff vmovdqa %xmm0,-0x220(%rbp)
1de4: ff
1de5: c5 f9 6f 8d f0 fd ff vmovdqa -0x210(%rbp),%xmm1
1dec: ff
1ded: c5 f9 6f 85 e0 fd ff vmovdqa -0x220(%rbp),%xmm0
1df4: ff
1df5: c5 f1 fe c0 vpaddd %xmm0,%xmm1,%xmm0
1df9: c5 f9 7f 45 e0 vmovdqa %xmm0,-0x20(%rbp)
1dfe: c5 f9 6f 45 e0 vmovdqa -0x20(%rbp),%xmm0
1e03: c5 f9 7f 85 10 fe ff vmovdqa %xmm0,-0x1f0(%rbp)
1e0a: ff
1e0b: c5 f9 6f 85 40 fe ff vmovdqa -0x1c0(%rbp),%xmm0
1e12: ff
1e13: c5 f9 7f 85 00 fe ff vmovdqa %xmm0,-0x200(%rbp)
1e1a: ff
1e1b: c5 f9 6f 8d 10 fe ff vmovdqa -0x1f0(%rbp),%xmm1
1e22: ff
1e23: c5 f9 6f 85 00 fe ff vmovdqa -0x200(%rbp),%xmm0
1e2a: ff
1e2b: c5 f1 fe c0 vpaddd %xmm0,%xmm1,%xmm0
1e2f: 90 nop
1e30: c5 f9 7f 45 e0 vmovdqa %xmm0,-0x20(%rbp)
1e35: 48 83 45 d8 01 addq $0x1,-0x28(%rbp)
1e3a: 48 8b 85 68 fb ff ff mov -0x498(%rbp),%rax
1e41: 48 c1 e8 04 shr $0x4,%rax
1e45: 48 39 45 d8 cmp %rax,-0x28(%rbp)
1e49: 0f 82 f8 fa ff ff jb 1947 <dotbytes_vec+0xba>
1e4f: 48 8b 45 d8 mov -0x28(%rbp),%rax
1e53: 48 c1 e0 04 shl $0x4,%rax
1e57: 48 01 85 78 fb ff ff add %rax,-0x488(%rbp)
1e5e: 48 8b 45 d8 mov -0x28(%rbp),%rax
1e62: 48 c1 e0 04 shl $0x4,%rax
1e66: 48 01 85 70 fb ff ff add %rax,-0x490(%rbp)
1e6d: 48 c7 45 d0 00 00 00 movq $0x0,-0x30(%rbp)
1e74: 00
1e75: eb 33 jmp 1eaa <dotbytes_vec+0x61d>
1e77: 48 8b 95 78 fb ff ff mov -0x488(%rbp),%rdx
1e7e: 48 8b 45 d0 mov -0x30(%rbp),%rax
1e82: 48 01 d0 add %rdx,%rax
1e85: 0f b6 00 movzbl (%rax),%eax
1e88: 0f b6 d0 movzbl %al,%edx
1e8b: 48 8b 8d 70 fb ff ff mov -0x490(%rbp),%rcx
1e92: 48 8b 45 d0 mov -0x30(%rbp),%rax
1e96: 48 01 c8 add %rcx,%rax
1e99: 0f b6 00 movzbl (%rax),%eax
1e9c: 0f b6 c0 movzbl %al,%eax
1e9f: 0f af c2 imul %edx,%eax
1ea2: 01 45 fc add %eax,-0x4(%rbp)
1ea5: 48 83 45 d0 01 addq $0x1,-0x30(%rbp)
1eaa: 48 8b 85 68 fb ff ff mov -0x498(%rbp),%rax
1eb1: 83 e0 0f and $0xf,%eax
1eb4: 48 39 45 d0 cmp %rax,-0x30(%rbp)
1eb8: 72 bd jb 1e77 <dotbytes_vec+0x5ea>
1eba: 0f 31 rdtsc
1ebc: 48 c1 e2 20 shl $0x20,%rdx
1ec0: 48 09 d0 or %rdx,%rax
1ec3: 48 89 45 a8 mov %rax,-0x58(%rbp)
1ec7: 48 8b 45 a8 mov -0x58(%rbp),%rax
1ecb: 48 2b 45 c8 sub -0x38(%rbp),%rax
1ecf: 48 89 c6 mov %rax,%rsi
1ed2: 48 8d 3d 87 11 00 00 lea 0x1187(%rip),%rdi # 3060 <_IO_stdin_used+0x60>
1ed9: b8 00 00 00 00 mov $0x0,%eax
1ede: e8 6d f1 ff ff callq 1050 <printf@plt>
1ee3: c5 f9 6f 45 e0 vmovdqa -0x20(%rbp),%xmm0
1ee8: c5 f9 7e c0 vmovd %xmm0,%eax
1eec: 89 c2 mov %eax,%edx
1eee: c5 f9 6f 45 e0 vmovdqa -0x20(%rbp),%xmm0
1ef3: c4 e3 79 16 c0 01 vpextrd $0x1,%xmm0,%eax
1ef9: 01 c2 add %eax,%edx
1efb: c5 f9 6f 45 e0 vmovdqa -0x20(%rbp),%xmm0
1f00: c4 e3 79 16 c0 02 vpextrd $0x2,%xmm0,%eax
1f06: 01 c2 add %eax,%edx
1f08: c5 f9 6f 45 e0 vmovdqa -0x20(%rbp),%xmm0
1f0d: c4 e3 79 16 c0 03 vpextrd $0x3,%xmm0,%eax
1f13: 01 c2 add %eax,%edx
1f15: 8b 45 fc mov -0x4(%rbp),%eax
1f18: 01 d0 add %edx,%eax
1f1a: c9 leaveq
1f1b: c3 retq
0000000000001f1c <sumbytes_naive>:
1f1c: 55 push %rbp
1f1d: 48 89 e5 mov %rsp,%rbp
1f20: 48 83 ec 20 sub $0x20,%rsp
1f24: 48 89 7d e8 mov %rdi,-0x18(%rbp)
1f28: 48 89 75 e0 mov %rsi,-0x20(%rbp)
1f2c: c7 45 fc 00 00 00 00 movl $0x0,-0x4(%rbp)
1f33: 48 c7 45 f0 00 00 00 movq $0x0,-0x10(%rbp)
1f3a: 00
1f3b: eb 34 jmp 1f71 <sumbytes_naive+0x55>
1f3d: 48 8b 55 e8 mov -0x18(%rbp),%rdx
1f41: 48 8b 45 f0 mov -0x10(%rbp),%rax
1f45: 48 01 d0 add %rdx,%rax
1f48: 0f b6 00 movzbl (%rax),%eax
1f4b: 0f b6 c0 movzbl %al,%eax
1f4e: 01 45 fc add %eax,-0x4(%rbp)
1f51: 8b 55 fc mov -0x4(%rbp),%edx
1f54: 48 8b 45 f0 mov -0x10(%rbp),%rax
1f58: 48 89 c6 mov %rax,%rsi
1f5b: 48 8d 3d 26 11 00 00 lea 0x1126(%rip),%rdi # 3088 <_IO_stdin_used+0x88>
1f62: b8 00 00 00 00 mov $0x0,%eax
1f67: e8 e4 f0 ff ff callq 1050 <printf@plt>
1f6c: 48 83 45 f0 01 addq $0x1,-0x10(%rbp)
1f71: 48 8b 45 f0 mov -0x10(%rbp),%rax
1f75: 48 3b 45 e0 cmp -0x20(%rbp),%rax
1f79: 72 c2 jb 1f3d <sumbytes_naive+0x21>
1f7b: 8b 45 fc mov -0x4(%rbp),%eax
1f7e: c9 leaveq
1f7f: c3 retq
0000000000001f80 <sumbytes_vec>:
1f80: 55 push %rbp
1f81: 48 89 e5 mov %rsp,%rbp
1f84: 48 81 ec c8 01 00 00 sub $0x1c8,%rsp
1f8b: 48 89 bd c8 fd ff ff mov %rdi,-0x238(%rbp)
1f92: 48 89 b5 c0 fd ff ff mov %rsi,-0x240(%rbp)
1f99: c7 85 3c ff ff ff ff movl $0xff,-0xc4(%rbp)
1fa0: 00 00 00
1fa3: 8b 85 3c ff ff ff mov -0xc4(%rbp),%eax
1fa9: 89 85 38 ff ff ff mov %eax,-0xc8(%rbp)
1faf: 8b 85 3c ff ff ff mov -0xc4(%rbp),%eax
1fb5: 89 85 34 ff ff ff mov %eax,-0xcc(%rbp)
1fbb: 8b 85 3c ff ff ff mov -0xc4(%rbp),%eax
1fc1: 89 85 30 ff ff ff mov %eax,-0xd0(%rbp)
1fc7: 8b 85 3c ff ff ff mov -0xc4(%rbp),%eax
1fcd: 89 85 2c ff ff ff mov %eax,-0xd4(%rbp)
1fd3: 8b 85 38 ff ff ff mov -0xc8(%rbp),%eax
1fd9: 8b 95 34 ff ff ff mov -0xcc(%rbp),%edx
1fdf: c5 f9 6e d2 vmovd %edx,%xmm2
1fe3: c4 e3 69 22 c8 01 vpinsrd $0x1,%eax,%xmm2,%xmm1
1fe9: 8b 85 30 ff ff ff mov -0xd0(%rbp),%eax
1fef: 8b 95 2c ff ff ff mov -0xd4(%rbp),%edx
1ff5: c5 f9 6e da vmovd %edx,%xmm3
1ff9: c4 e3 61 22 c0 01 vpinsrd $0x1,%eax,%xmm3,%xmm0
1fff: c5 f9 6c c1 vpunpcklqdq %xmm1,%xmm0,%xmm0
2003: 90 nop
2004: c5 f9 7f 45 d0 vmovdqa %xmm0,-0x30(%rbp)
2009: c5 f9 ef c0 vpxor %xmm0,%xmm0,%xmm0
200d: c5 f9 7f 45 f0 vmovdqa %xmm0,-0x10(%rbp)
2012: 48 c7 45 e8 00 00 00 movq $0x0,-0x18(%rbp)
2019: 00
201a: e9 4c 02 00 00 jmpq 226b <sumbytes_vec+0x2eb>
201f: 48 8b 95 c8 fd ff ff mov -0x238(%rbp),%rdx
2026: 48 8b 45 e8 mov -0x18(%rbp),%rax
202a: 48 01 d0 add %rdx,%rax
202d: 48 89 85 d8 fd ff ff mov %rax,-0x228(%rbp)
2034: 48 8b 85 d8 fd ff ff mov -0x228(%rbp),%rax
203b: c5 fa 6f 00 vmovdqu (%rax),%xmm0
203f: c5 f9 7f 45 c0 vmovdqa %xmm0,-0x40(%rbp)
2044: c5 f9 6f 45 c0 vmovdqa -0x40(%rbp),%xmm0
2049: c5 f9 7f 45 b0 vmovdqa %xmm0,-0x50(%rbp)
204e: c5 f9 6f 45 d0 vmovdqa -0x30(%rbp),%xmm0
2053: c5 f9 7f 85 f0 fd ff vmovdqa %xmm0,-0x210(%rbp)
205a: ff
205b: c5 f9 6f 45 b0 vmovdqa -0x50(%rbp),%xmm0
2060: c5 f9 7f 85 e0 fd ff vmovdqa %xmm0,-0x220(%rbp)
2067: ff
2068: c5 f9 6f 8d f0 fd ff vmovdqa -0x210(%rbp),%xmm1
206f: ff
2070: c5 f9 6f 85 e0 fd ff vmovdqa -0x220(%rbp),%xmm0
2077: ff
2078: c5 f1 db c0 vpand %xmm0,%xmm1,%xmm0
207c: c5 f9 7f 45 a0 vmovdqa %xmm0,-0x60(%rbp)
2081: c5 f9 6f 45 c0 vmovdqa -0x40(%rbp),%xmm0
2086: c5 f9 7f 85 10 fe ff vmovdqa %xmm0,-0x1f0(%rbp)
208d: ff
208e: c7 85 0c fe ff ff 08 movl $0x8,-0x1f4(%rbp)
2095: 00 00 00
2098: c5 f9 6f 8d 10 fe ff vmovdqa -0x1f0(%rbp),%xmm1
209f: ff
20a0: c5 f9 6e 85 0c fe ff vmovd -0x1f4(%rbp),%xmm0
20a7: ff
20a8: c5 f1 d2 c0 vpsrld %xmm0,%xmm1,%xmm0
20ac: c5 f9 7f 45 90 vmovdqa %xmm0,-0x70(%rbp)
20b1: c5 f9 6f 45 d0 vmovdqa -0x30(%rbp),%xmm0
20b6: c5 f9 7f 85 30 fe ff vmovdqa %xmm0,-0x1d0(%rbp)
20bd: ff
20be: c5 f9 6f 45 90 vmovdqa -0x70(%rbp),%xmm0
20c3: c5 f9 7f 85 20 fe ff vmovdqa %xmm0,-0x1e0(%rbp)
20ca: ff
20cb: c5 f9 6f 8d 30 fe ff vmovdqa -0x1d0(%rbp),%xmm1
20d2: ff
20d3: c5 f9 6f 85 20 fe ff vmovdqa -0x1e0(%rbp),%xmm0
20da: ff
20db: c5 f1 db c0 vpand %xmm0,%xmm1,%xmm0
20df: c5 f9 7f 45 80 vmovdqa %xmm0,-0x80(%rbp)
20e4: c5 f9 6f 45 c0 vmovdqa -0x40(%rbp),%xmm0
20e9: c5 f9 7f 85 50 fe ff vmovdqa %xmm0,-0x1b0(%rbp)
20f0: ff
20f1: c7 85 4c fe ff ff 10 movl $0x10,-0x1b4(%rbp)
20f8: 00 00 00
20fb: c5 f9 6f 8d 50 fe ff vmovdqa -0x1b0(%rbp),%xmm1
2102: ff
2103: c5 f9 6e 85 4c fe ff vmovd -0x1b4(%rbp),%xmm0
210a: ff
210b: c5 f1 d2 c0 vpsrld %xmm0,%xmm1,%xmm0
210f: c5 f9 7f 85 70 ff ff vmovdqa %xmm0,-0x90(%rbp)
2116: ff
2117: c5 f9 6f 45 d0 vmovdqa -0x30(%rbp),%xmm0
211c: c5 f9 7f 85 70 fe ff vmovdqa %xmm0,-0x190(%rbp)
2123: ff
2124: c5 f9 6f 85 70 ff ff vmovdqa -0x90(%rbp),%xmm0
212b: ff
212c: c5 f9 7f 85 60 fe ff vmovdqa %xmm0,-0x1a0(%rbp)
2133: ff
2134: c5 f9 6f 8d 70 fe ff vmovdqa -0x190(%rbp),%xmm1
213b: ff
213c: c5 f9 6f 85 60 fe ff vmovdqa -0x1a0(%rbp),%xmm0
2143: ff
2144: c5 f1 db c0 vpand %xmm0,%xmm1,%xmm0
2148: c5 f9 7f 85 60 ff ff vmovdqa %xmm0,-0xa0(%rbp)
214f: ff
2150: c5 f9 6f 45 c0 vmovdqa -0x40(%rbp),%xmm0
2155: c5 f9 7f 85 90 fe ff vmovdqa %xmm0,-0x170(%rbp)
215c: ff
215d: c7 85 8c fe ff ff 18 movl $0x18,-0x174(%rbp)
2164: 00 00 00
2167: c5 f9 6f 8d 90 fe ff vmovdqa -0x170(%rbp),%xmm1
216e: ff
216f: c5 f9 6e 85 8c fe ff vmovd -0x174(%rbp),%xmm0
2176: ff
2177: c5 f1 d2 c0 vpsrld %xmm0,%xmm1,%xmm0
217b: c5 f9 7f 85 50 ff ff vmovdqa %xmm0,-0xb0(%rbp)
2182: ff
2183: c5 f9 6f 85 50 ff ff vmovdqa -0xb0(%rbp),%xmm0
218a: ff
218b: c5 f9 7f 85 40 ff ff vmovdqa %xmm0,-0xc0(%rbp)
2192: ff
2193: c5 f9 6f 45 f0 vmovdqa -0x10(%rbp),%xmm0
2198: c5 f9 7f 85 b0 fe ff vmovdqa %xmm0,-0x150(%rbp)
219f: ff
21a0: c5 f9 6f 45 a0 vmovdqa -0x60(%rbp),%xmm0
21a5: c5 f9 7f 85 a0 fe ff vmovdqa %xmm0,-0x160(%rbp)
21ac: ff
21ad: c5 f9 6f 8d b0 fe ff vmovdqa -0x150(%rbp),%xmm1
21b4: ff
21b5: c5 f9 6f 85 a0 fe ff vmovdqa -0x160(%rbp),%xmm0
21bc: ff
21bd: c5 f1 fe c0 vpaddd %xmm0,%xmm1,%xmm0
21c1: c5 f9 7f 45 f0 vmovdqa %xmm0,-0x10(%rbp)
21c6: c5 f9 6f 45 f0 vmovdqa -0x10(%rbp),%xmm0
21cb: c5 f9 7f 85 d0 fe ff vmovdqa %xmm0,-0x130(%rbp)
21d2: ff
21d3: c5 f9 6f 45 80 vmovdqa -0x80(%rbp),%xmm0
21d8: c5 f9 7f 85 c0 fe ff vmovdqa %xmm0,-0x140(%rbp)
21df: ff
21e0: c5 f9 6f 8d d0 fe ff vmovdqa -0x130(%rbp),%xmm1
21e7: ff
21e8: c5 f9 6f 85 c0 fe ff vmovdqa -0x140(%rbp),%xmm0
21ef: ff
21f0: c5 f1 fe c0 vpaddd %xmm0,%xmm1,%xmm0
21f4: c5 f9 7f 45 f0 vmovdqa %xmm0,-0x10(%rbp)
21f9: c5 f9 6f 45 f0 vmovdqa -0x10(%rbp),%xmm0
21fe: c5 f9 7f 85 f0 fe ff vmovdqa %xmm0,-0x110(%rbp)
2205: ff
2206: c5 f9 6f 85 60 ff ff vmovdqa -0xa0(%rbp),%xmm0
220d: ff
220e: c5 f9 7f 85 e0 fe ff vmovdqa %xmm0,-0x120(%rbp)
2215: ff
2216: c5 f9 6f 8d f0 fe ff vmovdqa -0x110(%rbp),%xmm1
221d: ff
221e: c5 f9 6f 85 e0 fe ff vmovdqa -0x120(%rbp),%xmm0
2225: ff
2226: c5 f1 fe c0 vpaddd %xmm0,%xmm1,%xmm0
222a: c5 f9 7f 45 f0 vmovdqa %xmm0,-0x10(%rbp)
222f: c5 f9 6f 45 f0 vmovdqa -0x10(%rbp),%xmm0
2234: c5 f9 7f 85 10 ff ff vmovdqa %xmm0,-0xf0(%rbp)
223b: ff
223c: c5 f9 6f 85 40 ff ff vmovdqa -0xc0(%rbp),%xmm0
2243: ff
2244: c5 f9 7f 85 00 ff ff vmovdqa %xmm0,-0x100(%rbp)
224b: ff
224c: c5 f9 6f 8d 10 ff ff vmovdqa -0xf0(%rbp),%xmm1
2253: ff
2254: c5 f9 6f 85 00 ff ff vmovdqa -0x100(%rbp),%xmm0
225b: ff
225c: c5 f1 fe c0 vpaddd %xmm0,%xmm1,%xmm0
2260: 90 nop
2261: c5 f9 7f 45 f0 vmovdqa %xmm0,-0x10(%rbp)
2266: 48 83 45 e8 10 addq $0x10,-0x18(%rbp)
226b: 48 8b 45 e8 mov -0x18(%rbp),%rax
226f: 48 3b 85 c0 fd ff ff cmp -0x240(%rbp),%rax
2276: 0f 82 a3 fd ff ff jb 201f <sumbytes_vec+0x9f>
227c: c5 f9 6f 45 f0 vmovdqa -0x10(%rbp),%xmm0
2281: c5 f9 7e c0 vmovd %xmm0,%eax
2285: 89 c2 mov %eax,%edx
2287: c5 f9 6f 45 f0 vmovdqa -0x10(%rbp),%xmm0
228c: c4 e3 79 16 c0 01 vpextrd $0x1,%xmm0,%eax
2292: 01 c2 add %eax,%edx
2294: c5 f9 6f 45 f0 vmovdqa -0x10(%rbp),%xmm0
2299: c4 e3 79 16 c0 02 vpextrd $0x2,%xmm0,%eax
229f: 01 c2 add %eax,%edx
22a1: c5 f9 6f 45 f0 vmovdqa -0x10(%rbp),%xmm0
22a6: c4 e3 79 16 c0 03 vpextrd $0x3,%xmm0,%eax
22ac: 01 d0 add %edx,%eax
22ae: c9 leaveq
22af: c3 retq
00000000000022b0 <main>:
22b0: 55 push %rbp
22b1: 48 89 e5 mov %rsp,%rbp
22b4: 48 83 ec 30 sub $0x30,%rsp
22b8: 89 7d dc mov %edi,-0x24(%rbp)
22bb: 48 89 75 d0 mov %rsi,-0x30(%rbp)
22bf: 83 7d dc 03 cmpl $0x3,-0x24(%rbp)
22c3: 74 16 je 22db <main+0x2b>
22c5: 48 8d 3d dc 0d 00 00 lea 0xddc(%rip),%rdi # 30a8 <_IO_stdin_used+0xa8>
22cc: e8 6f ed ff ff callq 1040 <puts@plt>
22d1: b8 00 00 00 00 mov $0x0,%eax
22d6: e9 83 01 00 00 jmpq 245e <main+0x1ae>
22db: 48 8b 45 d0 mov -0x30(%rbp),%rax
22df: 48 83 c0 10 add $0x10,%rax
22e3: 48 8b 00 mov (%rax),%rax
22e6: 48 89 c7 mov %rax,%rdi
22e9: e8 92 ed ff ff callq 1080 <atoi@plt>
22ee: 89 c7 mov %eax,%edi
22f0: e8 6b ed ff ff callq 1060 <srand@plt>
22f5: 48 8b 45 d0 mov -0x30(%rbp),%rax
22f9: 48 83 c0 08 add $0x8,%rax
22fd: 48 8b 00 mov (%rax),%rax
2300: 48 89 c7 mov %rax,%rdi
2303: e8 78 ed ff ff callq 1080 <atoi@plt>
2308: 89 45 f8 mov %eax,-0x8(%rbp)
230b: 8b 45 f8 mov -0x8(%rbp),%eax
230e: 89 c6 mov %eax,%esi
2310: 48 8d 3d c9 0d 00 00 lea 0xdc9(%rip),%rdi # 30e0 <_IO_stdin_used+0xe0>
2317: b8 00 00 00 00 mov $0x0,%eax
231c: e8 2f ed ff ff callq 1050 <printf@plt>
2321: 8b 45 f8 mov -0x8(%rbp),%eax
2324: 48 98 cltq
2326: 48 89 c7 mov %rax,%rdi
2329: e8 42 ed ff ff callq 1070 <malloc@plt>
232e: 48 89 45 f0 mov %rax,-0x10(%rbp)
2332: 8b 45 f8 mov -0x8(%rbp),%eax
2335: 48 98 cltq
2337: 48 89 c7 mov %rax,%rdi
233a: e8 31 ed ff ff callq 1070 <malloc@plt>
233f: 48 89 45 e8 mov %rax,-0x18(%rbp)
2343: c7 45 fc 00 00 00 00 movl $0x0,-0x4(%rbp)
234a: eb 4a jmp 2396 <main+0xe6>
234c: e8 3f ed ff ff callq 1090 <rand@plt>
2351: 99 cltd
2352: c1 ea 18 shr $0x18,%edx
2355: 01 d0 add %edx,%eax
2357: 0f b6 c0 movzbl %al,%eax
235a: 29 d0 sub %edx,%eax
235c: 89 c1 mov %eax,%ecx
235e: 8b 45 fc mov -0x4(%rbp),%eax
2361: 48 63 d0 movslq %eax,%rdx
2364: 48 8b 45 f0 mov -0x10(%rbp),%rax
2368: 48 01 d0 add %rdx,%rax
236b: 89 ca mov %ecx,%edx
236d: 88 10 mov %dl,(%rax)
236f: e8 1c ed ff ff callq 1090 <rand@plt>
2374: 99 cltd
2375: c1 ea 18 shr $0x18,%edx
2378: 01 d0 add %edx,%eax
237a: 0f b6 c0 movzbl %al,%eax
237d: 29 d0 sub %edx,%eax
237f: 89 c1 mov %eax,%ecx
2381: 8b 45 fc mov -0x4(%rbp),%eax
2384: 48 63 d0 movslq %eax,%rdx
2387: 48 8b 45 e8 mov -0x18(%rbp),%rax
238b: 48 01 d0 add %rdx,%rax
238e: 89 ca mov %ecx,%edx
2390: 88 10 mov %dl,(%rax)
2392: 83 45 fc 01 addl $0x1,-0x4(%rbp)
2396: 8b 45 fc mov -0x4(%rbp),%eax
2399: 3b 45 f8 cmp -0x8(%rbp),%eax
239c: 7c ae jl 234c <main+0x9c>
239e: 8b 45 f8 mov -0x8(%rbp),%eax
23a1: 48 63 d0 movslq %eax,%rdx
23a4: 48 8b 4d e8 mov -0x18(%rbp),%rcx
23a8: 48 8b 45 f0 mov -0x10(%rbp),%rax
23ac: 48 89 ce mov %rcx,%rsi
23af: 48 89 c7 mov %rax,%rdi
23b2: e8 de ed ff ff callq 1195 <dotbytes_naive>
23b7: 48 89 45 e0 mov %rax,-0x20(%rbp)
23bb: 48 8b 45 e0 mov -0x20(%rbp),%rax
23bf: 48 89 c6 mov %rax,%rsi
23c2: 48 8d 3d 3f 0d 00 00 lea 0xd3f(%rip),%rdi # 3108 <_IO_stdin_used+0x108>
23c9: b8 00 00 00 00 mov $0x0,%eax
23ce: e8 7d ec ff ff callq 1050 <printf@plt>
23d3: 8b 45 f8 mov -0x8(%rbp),%eax
23d6: 48 63 d0 movslq %eax,%rdx
23d9: 48 8b 4d e8 mov -0x18(%rbp),%rcx
23dd: 48 8b 45 f0 mov -0x10(%rbp),%rax
23e1: 48 89 ce mov %rcx,%rsi
23e4: 48 89 c7 mov %rax,%rdi
23e7: e8 a1 f4 ff ff callq 188d <dotbytes_vec>
23ec: 89 c0 mov %eax,%eax
23ee: 48 89 45 e0 mov %rax,-0x20(%rbp)
23f2: 48 8b 45 e0 mov -0x20(%rbp),%rax
23f6: 48 89 c6 mov %rax,%rsi
23f9: 48 8d 3d 30 0d 00 00 lea 0xd30(%rip),%rdi # 3130 <_IO_stdin_used+0x130>
2400: b8 00 00 00 00 mov $0x0,%eax
2405: e8 46 ec ff ff callq 1050 <printf@plt>
240a: 8b 45 f8 mov -0x8(%rbp),%eax
240d: 48 63 d0 movslq %eax,%rdx
2410: 48 8b 4d e8 mov -0x18(%rbp),%rcx
2414: 48 8b 45 f0 mov -0x10(%rbp),%rax
2418: 48 89 ce mov %rcx,%rsi
241b: 48 89 c7 mov %rax,%rdi
241e: e8 0e ee ff ff callq 1231 <dotbytes_vec2>
2423: 89 c0 mov %eax,%eax
2425: 48 89 45 e0 mov %rax,-0x20(%rbp)
2429: 48 8b 45 e0 mov -0x20(%rbp),%rax
242d: 48 89 c6 mov %rax,%rsi
2430: 48 8d 3d 21 0d 00 00 lea 0xd21(%rip),%rdi # 3158 <_IO_stdin_used+0x158>
2437: b8 00 00 00 00 mov $0x0,%eax
243c: e8 0f ec ff ff callq 1050 <printf@plt>
2441: 48 8b 45 f0 mov -0x10(%rbp),%rax
2445: 48 89 c7 mov %rax,%rdi
2448: e8 e3 eb ff ff callq 1030 <free@plt>
244d: 48 8b 45 e8 mov -0x18(%rbp),%rax
2451: 48 89 c7 mov %rax,%rdi
2454: e8 d7 eb ff ff callq 1030 <free@plt>
2459: b8 00 00 00 00 mov $0x0,%eax
245e: c9 leaveq
245f: c3 retq
0000000000002460 <__libc_csu_init>:
2460: 41 57 push %r15
2462: 4c 8d 3d 7f 29 00 00 lea 0x297f(%rip),%r15 # 4de8 <__frame_dummy_init_array_entry>
2469: 41 56 push %r14
246b: 49 89 d6 mov %rdx,%r14
246e: 41 55 push %r13
2470: 49 89 f5 mov %rsi,%r13
2473: 41 54 push %r12
2475: 41 89 fc mov %edi,%r12d
2478: 55 push %rbp
2479: 48 8d 2d 70 29 00 00 lea 0x2970(%rip),%rbp # 4df0 <__do_global_dtors_aux_fini_array_entry>
2480: 53 push %rbx
2481: 4c 29 fd sub %r15,%rbp
2484: 48 83 ec 08 sub $0x8,%rsp
2488: e8 73 eb ff ff callq 1000 <_init>
248d: 48 c1 fd 03 sar $0x3,%rbp
2491: 74 1b je 24ae <__libc_csu_init+0x4e>
2493: 31 db xor %ebx,%ebx
2495: 0f 1f 00 nopl (%rax)
2498: 4c 89 f2 mov %r14,%rdx
249b: 4c 89 ee mov %r13,%rsi
249e: 44 89 e7 mov %r12d,%edi
24a1: 41 ff 14 df callq *(%r15,%rbx,8)
24a5: 48 83 c3 01 add $0x1,%rbx
24a9: 48 39 dd cmp %rbx,%rbp
24ac: 75 ea jne 2498 <__libc_csu_init+0x38>
24ae: 48 83 c4 08 add $0x8,%rsp
24b2: 5b pop %rbx
24b3: 5d pop %rbp
24b4: 41 5c pop %r12
24b6: 41 5d pop %r13
24b8: 41 5e pop %r14
24ba: 41 5f pop %r15
24bc: c3 retq
24bd: 0f 1f 00 nopl (%rax)
00000000000024c0 <__libc_csu_fini>:
24c0: c3 retq
Disassembly of section .fini:
00000000000024c4 <_fini>:
24c4: 48 83 ec 08 sub $0x8,%rsp
24c8: 48 83 c4 08 add $0x8,%rsp
24cc: c3 retq
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment