Sorted summary for file /box/solution-bin ---------------------------------------------- 26.40 /tmp/cpu-mode-161014-1777968431720902827-3/solution/solution.rs:122 15.56 /tmp/cpu-mode-161014-1777968431720902827-3/solution/solution.rs:145 15.01 /tmp/cpu-mode-161014-1777968431720902827-3/solution/solution.rs:149 11.31 /rustc/59807616e1fa2540724bfbac14d7976d7e4a3860/library/core/src/../../stdarch/crates/core_arch/src/x86/pclmulqdq.rs:33 10.08 /tmp/cpu-mode-161014-1777968431720902827-3/solution/solution.rs:123 9.20 /tmp/cpu-mode-161014-1777968431720902827-3/solution/solution.rs:124 6.98 /tmp/cpu-mode-161014-1777968431720902827-3/solution/solution.rs:135 0.85 /tmp/cpu-mode-161014-1777968431720902827-3/solution/solution.rs:0 Samples | Source code & Disassembly of /box/solution-bin for cpu_core/cycles/P (346 samples, percent: local period) ------------------------------------------------------------------------------------------------------------------------- : : : : 3 Disassembly of section .text: : : 5 0000000000014cb0 : : 6 v /= 10; : 7 } : 8 dst.extend_from_slice(&buf[n..]); : 9 } : : 11 fn main() { 0 : 14cb0: push rbp 0 : 14cb1: mov rbp,rsp 0 : 14cb4: push r15 0 : 14cb6: push r14 0 : 14cb8: push r13 0 : 14cba: push r12 0 : 14cbc: push rbx 0 : 14cbd: sub rsp,0x158 : 20 let fd = io::stdin().as_raw_fd(); 0 : 14cc4: call QWORD PTR [rip+0x4262e] # 572f8 <_DYNAMIC+0x258> 0 : 14cca: lea rsi,[rbp-0x168] : 23 if fstat(fd, st.as_mut_ptr()) != 0 { 0 : 14cd1: xor edi,edi 0 : 14cd3: call QWORD PTR [rip+0x42627] # 57300 0 : 14cd9: test eax,eax 0 : 14cdb: je 14d66 0 : 14ce1: mov QWORD PTR [rbp-0x168],0x0 0 : 14cec: mov QWORD PTR [rbp-0x160],0x1 0 : 14cf7: mov QWORD PTR [rbp-0x158],0x0 : 31 let owned; : 32 let bytes: &[u8] = if let Some(ref m) = mmap { : 33 m.bytes() : 34 } else { : 35 let mut tmp = Vec::new(); : 36 std::io::stdin().read_to_end(&mut tmp).unwrap(); 0 : 14d02: call QWORD PTR [rip+0x425f0] # 572f8 <_DYNAMIC+0x258> 0 : 14d08: mov QWORD PTR [rbp-0x40],rax 0 : 14d0c: lea rdi,[rbp-0x40] 0 : 14d10: lea rsi,[rbp-0x168] 0 : 14d17: call QWORD PTR [rip+0x425eb] # 57308 <_DYNAMIC+0x268> 0 : 14d1d: cmp rax,0x1 0 : 14d21: je 162d9 : 44 owned = tmp; 0 : 14d27: mov rax,QWORD PTR [rbp-0x168] 0 : 14d2e: mov QWORD PTR [rbp-0xd8],rax 0 : 14d35: mov r14,QWORD PTR [rbp-0x160] 0 : 14d3c: mov r12,QWORD PTR [rbp-0x158] 0 : 14d43: mov al,0x1 0 : 14d45: mov DWORD PTR [rbp-0x64],eax 0 : 14d48: mov QWORD PTR [rbp-0xb0],0x0 : 52 while self.i < self.s.len() && self.s[self.i] <= b' ' { 0 : 14d53: test r12,r12 0 : 14d56: jne 14dae 0 : 14d58: xor r12d,r12d 0 : 14d5b: xor edx,edx 0 : 14d5d: xor ebx,ebx 0 : 14d5f: xor edi,edi : 59 while self.i < self.s.len() { 0 : 14d61: jmp 14e51 : 61 let st = st.assume_init(); 0 : 14d66: mov r12,QWORD PTR [rbp-0x138] : 63 if st.st_size <= 0 { 0 : 14d6d: test r12,r12 0 : 14d70: jle 14ce1 : 66 let p = mmap(core::ptr::null_mut(), len, PROT_READ, MAP_PRIVATE, fd, 0); 0 : 14d76: xor edi,edi 0 : 14d78: mov rsi,r12 0 : 14d7b: mov edx,0x1 0 : 14d80: mov ecx,0x2 0 : 14d85: xor r8d,r8d 0 : 14d88: xor r9d,r9d 0 : 14d8b: call QWORD PTR [rip+0x4257f] # 57310 : 74 if p == MAP_FAILED { 0 : 14d91: cmp rax,0xffffffffffffffff 0 : 14d95: je 14ce1 0 : 14d9b: mov r14,rax 0 : 14d9e: mov al,0x1 0 : 14da0: mov QWORD PTR [rbp-0xb0],rax 0 : 14da7: mov DWORD PTR [rbp-0x64],0x0 0 : 14dae: xor edx,edx 0 : 14db0: xor ebx,ebx 0 : 14db2: data16 data16 data16 data16 cs nop WORD PTR [rax+rax*1+0x0] : 84 while self.i < self.s.len() && self.s[self.i] <= b' ' { 0 : 14dc0: cmp BYTE PTR [r14+rbx*1],0x20 0 : 14dc5: ja 14dd6 : 87 self.i += 1; 0 : 14dc7: inc rbx : 89 while self.i < self.s.len() && self.s[self.i] <= b' ' { 0 : 14dca: cmp r12,rbx 0 : 14dcd: jne 14dc0 0 : 14dcf: mov rbx,r12 0 : 14dd2: xor edi,edi : 94 while self.i < self.s.len() { 0 : 14dd4: jmp 14e51 0 : 14dd6: cmp rbx,r12 0 : 14dd9: jae 14e00 0 : 14ddb: xor edi,edi 0 : 14ddd: xor edx,edx 0 : 14ddf: nop : 101 let c = self.s[self.i]; 0 : 14de0: movzx eax,BYTE PTR [r14+rbx*1] 0 : 14de5: add al,0xd0 0 : 14de7: cmp al,0x9 0 : 14de9: ja 14e02 : 106 v = v * 10 + (c - b'0') as u64; 0 : 14deb: lea rcx,[rdx+rdx*4] 0 : 14def: movzx eax,al 0 : 14df2: lea rdx,[rax+rcx*2] : 110 self.i += 1; 0 : 14df6: inc rbx : 112 while self.i < self.s.len() { 0 : 14df9: cmp r12,rbx 0 : 14dfc: jne 14de0 0 : 14dfe: jmp 14e4e 0 : 14e00: xor edx,edx : 117 while self.i < self.s.len() && self.s[self.i] <= b' ' { 0 : 14e02: cmp rbx,r12 0 : 14e05: jae 14e21 0 : 14e07: xor edi,edi 0 : 14e09: nop DWORD PTR [rax+0x0] 0 : 14e10: cmp BYTE PTR [r14+rbx*1],0x20 0 : 14e15: ja 14e21 : 124 self.i += 1; 0 : 14e17: inc rbx : 126 while self.i < self.s.len() && self.s[self.i] <= b' ' { 0 : 14e1a: cmp r12,rbx 0 : 14e1d: jne 14e10 0 : 14e1f: jmp 14e4e 0 : 14e21: xor edi,edi : 131 while self.i < self.s.len() { 0 : 14e23: cmp rbx,r12 0 : 14e26: jae 14e51 0 : 14e28: nop DWORD PTR [rax+rax*1+0x0] : 135 let c = self.s[self.i]; 0 : 14e30: movzx eax,BYTE PTR [r14+rbx*1] 0 : 14e35: add al,0xd0 0 : 14e37: cmp al,0x9 0 : 14e39: ja 14e51 : 140 v = v * 10 + (c - b'0') as u64; 0 : 14e3b: lea rcx,[rdi+rdi*4] 0 : 14e3f: movzx eax,al 0 : 14e42: lea rdi,[rax+rcx*2] : 144 self.i += 1; 0 : 14e46: inc rbx : 146 while self.i < self.s.len() { 0 : 14e49: cmp r12,rbx 0 : 14e4c: jne 14e30 0 : 14e4e: mov rbx,r12 0 : 14e51: movabs r8,0x7ffffffffffffff8 0 : 14e5b: lea r13,[rdx*8+0x0] 0 : 14e63: mov rax,rdx 0 : 14e66: shr rax,0x3d 0 : 14e6a: setne al 0 : 14e6d: cmp r13,r8 0 : 14e70: seta cl 0 : 14e73: or cl,al 0 : 14e75: je 14e8b 0 : 14e77: xor r15d,r15d 0 : 14e7a: mov rdi,r15 0 : 14e7d: mov rsi,r13 0 : 14e80: call QWORD PTR [rip+0x42452] # 572d8 <_DYNAMIC+0x238> 0 : 14e86: jmp 16331 0 : 14e8b: test r13,r13 0 : 14e8e: mov QWORD PTR [rbp-0x58],rdx 0 : 14e92: mov QWORD PTR [rbp-0x78],rdi 0 : 14e96: je 14ed6 0 : 14e98: call QWORD PTR [rip+0x4244a] # 572e8 <_DYNAMIC+0x248> 0 : 14e9e: mov r15d,0x8 0 : 14ea4: mov esi,0x8 0 : 14ea9: mov rdi,r13 0 : 14eac: call QWORD PTR [rip+0x42466] # 57318 <_DYNAMIC+0x278> 0 : 14eb2: mov QWORD PTR [rbp-0x50],rax 0 : 14eb6: test rax,rax 0 : 14eb9: je 14e7a 0 : 14ebb: mov rax,QWORD PTR [rbp-0x58] 0 : 14ebf: mov QWORD PTR [rbp-0xa8],rax 0 : 14ec6: mov rdi,QWORD PTR [rbp-0x78] 0 : 14eca: movabs r8,0x7ffffffffffffff8 0 : 14ed4: jmp 14eea 0 : 14ed6: mov eax,0x8 0 : 14edb: mov QWORD PTR [rbp-0x50],rax 0 : 14edf: mov QWORD PTR [rbp-0xa8],0x0 0 : 14eea: movabs rax,0x1fffffffffffffff 0 : 14ef4: lea r15,[rdi*8+0x0] 0 : 14efc: cmp rdi,rax 0 : 14eff: seta al 0 : 14f02: cmp r15,r8 0 : 14f05: seta cl 0 : 14f08: or cl,al 0 : 14f0a: je 14f1c 0 : 14f0c: xor edi,edi 0 : 14f0e: mov rsi,r15 0 : 14f11: call QWORD PTR [rip+0x423c1] # 572d8 <_DYNAMIC+0x238> 0 : 14f17: jmp 16331 0 : 14f1c: test r15,r15 0 : 14f1f: je 14f64 0 : 14f21: call QWORD PTR [rip+0x423c1] # 572e8 <_DYNAMIC+0x248> 0 : 14f27: mov esi,0x8 0 : 14f2c: mov rdi,r15 0 : 14f2f: call QWORD PTR [rip+0x423e3] # 57318 <_DYNAMIC+0x278> 0 : 14f35: mov edi,0x8 0 : 14f3a: mov QWORD PTR [rbp-0x60],rax 0 : 14f3e: test rax,rax 0 : 14f41: je 14f0e 0 : 14f43: mov rdi,QWORD PTR [rbp-0x78] 0 : 14f47: mov QWORD PTR [rbp-0xa0],rdi 0 : 14f4e: movabs r8,0x7ffffffffffffff8 0 : 14f58: cmp QWORD PTR [rbp-0x58],0x0 0 : 14f5d: jne 14f83 0 : 14f5f: jmp 150fc 0 : 14f64: mov eax,0x8 0 : 14f69: mov QWORD PTR [rbp-0x60],rax 0 : 14f6d: mov QWORD PTR [rbp-0xa0],0x0 0 : 14f78: cmp QWORD PTR [rbp-0x58],0x0 0 : 14f7d: je 150fc : 217 while self.i < self.s.len() && self.s[self.i] <= b' ' { 0 : 14f83: lea rcx,[r13-0x8] 0 : 14f87: test cl,0x8 0 : 14f8a: jne 14fb1 0 : 14f8c: cmp rbx,r12 0 : 14f8f: jae 14fbf 0 : 14f91: xor edx,edx 0 : 14f93: data16 data16 data16 cs nop WORD PTR [rax+rax*1+0x0] 0 : 14fa0: cmp BYTE PTR [r14+rbx*1],0x21 0 : 14fa5: jae 14fbf : 227 self.i += 1; 0 : 14fa7: inc rbx : 229 while self.i < self.s.len() && self.s[self.i] <= b' ' { 0 : 14faa: cmp r12,rbx 0 : 14fad: jne 14fa0 0 : 14faf: jmp 14fee 0 : 14fb1: mov rax,QWORD PTR [rbp-0x50] 0 : 14fb5: test rcx,rcx 0 : 14fb8: jne 15005 0 : 14fba: jmp 150fc 0 : 14fbf: xor edx,edx : 238 while self.i < self.s.len() { 0 : 14fc1: cmp rbx,r12 0 : 14fc4: jae 14ff1 0 : 14fc6: cs nop WORD PTR [rax+rax*1+0x0] : 242 let c = self.s[self.i]; 0 : 14fd0: movzx eax,BYTE PTR [r14+rbx*1] 0 : 14fd5: add al,0xd0 0 : 14fd7: cmp al,0x9 0 : 14fd9: ja 14ff1 : 247 v = v * 10 + (c - b'0') as u64; 0 : 14fdb: lea rdx,[rdx+rdx*4] 0 : 14fdf: movzx eax,al 0 : 14fe2: lea rdx,[rax+rdx*2] : 251 self.i += 1; 0 : 14fe6: inc rbx : 253 while self.i < self.s.len() { 0 : 14fe9: cmp r12,rbx 0 : 14fec: jne 14fd0 0 : 14fee: mov rbx,r12 0 : 14ff1: mov rsi,QWORD PTR [rbp-0x50] 0 : 14ff5: lea rax,[rsi+0x8] : 259 let m = p.next_u64() as usize; : : 261 let mut a = vec![0u64; n]; : 262 let mut b = vec![0u64; m]; : 263 for x in &mut a { : 264 *x = p.next_u64(); 0 : 14ff9: mov QWORD PTR [rsi],rdx : 266 while self.i < self.s.len() && self.s[self.i] <= b' ' { 0 : 14ffc: test rcx,rcx 0 : 14fff: je 150fc 0 : 15005: add r13,QWORD PTR [rbp-0x50] 0 : 15009: jmp 15026 0 : 1500b: nop DWORD PTR [rax+rax*1+0x0] 0 : 15010: mov rbx,r12 0 : 15013: xor ecx,ecx : 274 *x = p.next_u64(); 0 : 15015: mov QWORD PTR [rax+0x8],rcx 0 : 15019: add rax,0x10 0 : 1501d: cmp rax,r13 0 : 15020: je 150fc : 279 while self.i < self.s.len() && self.s[self.i] <= b' ' { 0 : 15026: cmp rbx,r12 0 : 15029: jae 15050 0 : 1502b: nop DWORD PTR [rax+rax*1+0x0] 0 : 15030: cmp BYTE PTR [r14+rbx*1],0x20 0 : 15035: ja 15050 : 285 self.i += 1; 0 : 15037: inc rbx : 287 while self.i < self.s.len() && self.s[self.i] <= b' ' { 0 : 1503a: cmp r12,rbx 0 : 1503d: jne 15030 0 : 1503f: mov rbx,r12 0 : 15042: xor ecx,ecx 0 : 15044: jmp 15090 0 : 15046: cs nop WORD PTR [rax+rax*1+0x0] 0 : 15050: xor ecx,ecx : 295 while self.i < self.s.len() { 0 : 15052: cmp rbx,r12 0 : 15055: jae 15090 0 : 15057: nop WORD PTR [rax+rax*1+0x0] : 299 let c = self.s[self.i]; 0 : 15060: movzx edx,BYTE PTR [r14+rbx*1] 0 : 15065: add dl,0xd0 0 : 15068: cmp dl,0x9 0 : 1506b: ja 15090 : 304 v = v * 10 + (c - b'0') as u64; 1 : 1506d: lea rcx,[rcx+rcx*4] 0 : 15071: movzx edx,dl 0 : 15074: lea rcx,[rdx+rcx*2] : 308 self.i += 1; 0 : 15078: inc rbx : 310 while self.i < self.s.len() { 0 : 1507b: cmp r12,rbx 0 : 1507e: jne 15060 0 : 15080: mov rbx,r12 0 : 15083: data16 data16 data16 cs nop WORD PTR [rax+rax*1+0x0] : 315 *x = p.next_u64(); 0 : 15090: mov QWORD PTR [rax],rcx : 317 while self.i < self.s.len() && self.s[self.i] <= b' ' { 0 : 15093: cmp rbx,r12 0 : 15096: jae 150c0 0 : 15098: nop DWORD PTR [rax+rax*1+0x0] 0 : 150a0: cmp BYTE PTR [r14+rbx*1],0x21 0 : 150a5: jae 150c0 : 323 self.i += 1; 0 : 150a7: inc rbx : 325 while self.i < self.s.len() && self.s[self.i] <= b' ' { 0 : 150aa: cmp r12,rbx 0 : 150ad: jne 150a0 0 : 150af: jmp 15010 0 : 150b4: data16 data16 cs nop WORD PTR [rax+rax*1+0x0] : 330 while self.i < self.s.len() { 0 : 150c0: cmp rbx,r12 0 : 150c3: jae 15013 0 : 150c9: xor ecx,ecx 0 : 150cb: nop DWORD PTR [rax+rax*1+0x0] : 335 let c = self.s[self.i]; 1 : 150d0: movzx edx,BYTE PTR [r14+rbx*1] 0 : 150d5: add dl,0xd0 0 : 150d8: cmp dl,0x9 0 : 150db: ja 15015 : 340 v = v * 10 + (c - b'0') as u64; 0 : 150e1: lea rcx,[rcx+rcx*4] 0 : 150e5: movzx edx,dl 0 : 150e8: lea rcx,[rdx+rcx*2] : 344 self.i += 1; 0 : 150ec: inc rbx : 346 while self.i < self.s.len() { 0 : 150ef: cmp r12,rbx 1 : 150f2: jne 150d0 0 : 150f4: mov rbx,r12 0 : 150f7: jmp 15015 0 : 150fc: test rdi,rdi 0 : 150ff: je 1527f : 353 while self.i < self.s.len() && self.s[self.i] <= b' ' { 0 : 15105: lea rcx,[r15-0x8] 0 : 15109: test cl,0x8 0 : 1510c: jne 15131 0 : 1510e: cmp rbx,r12 0 : 15111: jae 1513f 0 : 15113: xor edx,edx 0 : 15115: data16 cs nop WORD PTR [rax+rax*1+0x0] 0 : 15120: cmp BYTE PTR [r14+rbx*1],0x21 0 : 15125: jae 1513f : 363 self.i += 1; 0 : 15127: inc rbx : 365 while self.i < self.s.len() && self.s[self.i] <= b' ' { 0 : 1512a: cmp r12,rbx 0 : 1512d: jne 15120 0 : 1512f: jmp 1516e 0 : 15131: mov rax,QWORD PTR [rbp-0x60] 0 : 15135: test rcx,rcx 0 : 15138: jne 15185 0 : 1513a: jmp 1527f 0 : 1513f: xor edx,edx : 374 while self.i < self.s.len() { 0 : 15141: cmp rbx,r12 0 : 15144: jae 15171 0 : 15146: cs nop WORD PTR [rax+rax*1+0x0] : 378 let c = self.s[self.i]; 0 : 15150: movzx eax,BYTE PTR [r14+rbx*1] 0 : 15155: add al,0xd0 0 : 15157: cmp al,0x9 0 : 15159: ja 15171 : 383 v = v * 10 + (c - b'0') as u64; 0 : 1515b: lea rdx,[rdx+rdx*4] 0 : 1515f: movzx eax,al 0 : 15162: lea rdx,[rax+rdx*2] : 387 self.i += 1; 0 : 15166: inc rbx : 389 while self.i < self.s.len() { 0 : 15169: cmp r12,rbx 0 : 1516c: jne 15150 0 : 1516e: mov rbx,r12 0 : 15171: mov rsi,QWORD PTR [rbp-0x60] 0 : 15175: lea rax,[rsi+0x8] : 395 } : 396 for x in &mut b { : 397 *x = p.next_u64(); 0 : 15179: mov QWORD PTR [rsi],rdx : 399 while self.i < self.s.len() && self.s[self.i] <= b' ' { 0 : 1517c: test rcx,rcx 0 : 1517f: je 1527f 0 : 15185: mov rcx,QWORD PTR [rbp-0x60] 0 : 15189: add rcx,r15 0 : 1518c: jmp 151a6 0 : 1518e: xchg ax,ax 0 : 15190: mov rbx,r12 0 : 15193: xor edx,edx : 408 *x = p.next_u64(); 0 : 15195: mov QWORD PTR [rax+0x8],rdx 0 : 15199: add rax,0x10 0 : 1519d: cmp rax,rcx 0 : 151a0: je 1527f : 413 while self.i < self.s.len() && self.s[self.i] <= b' ' { 0 : 151a6: cmp rbx,r12 0 : 151a9: jae 151d0 0 : 151ab: nop DWORD PTR [rax+rax*1+0x0] 0 : 151b0: cmp BYTE PTR [r14+rbx*1],0x20 0 : 151b5: ja 151d0 : 419 self.i += 1; 0 : 151b7: inc rbx : 421 while self.i < self.s.len() && self.s[self.i] <= b' ' { 0 : 151ba: cmp r12,rbx 0 : 151bd: jne 151b0 0 : 151bf: mov rbx,r12 0 : 151c2: xor edx,edx 0 : 151c4: jmp 15210 0 : 151c6: cs nop WORD PTR [rax+rax*1+0x0] 0 : 151d0: xor edx,edx : 429 while self.i < self.s.len() { 0 : 151d2: cmp rbx,r12 0 : 151d5: jae 15210 0 : 151d7: nop WORD PTR [rax+rax*1+0x0] : 433 let c = self.s[self.i]; 0 : 151e0: movzx esi,BYTE PTR [r14+rbx*1] 0 : 151e5: add sil,0xd0 0 : 151e9: cmp sil,0x9 0 : 151ed: ja 15210 : 438 v = v * 10 + (c - b'0') as u64; 1 : 151ef: lea rdx,[rdx+rdx*4] 0 : 151f3: movzx esi,sil 0 : 151f7: lea rdx,[rsi+rdx*2] : 442 self.i += 1; 0 : 151fb: inc rbx : 444 while self.i < self.s.len() { 0 : 151fe: cmp r12,rbx 0 : 15201: jne 151e0 0 : 15203: mov rbx,r12 0 : 15206: cs nop WORD PTR [rax+rax*1+0x0] : 449 *x = p.next_u64(); 0 : 15210: mov QWORD PTR [rax],rdx : 451 while self.i < self.s.len() && self.s[self.i] <= b' ' { 0 : 15213: cmp rbx,r12 0 : 15216: jae 15240 0 : 15218: nop DWORD PTR [rax+rax*1+0x0] 0 : 15220: cmp BYTE PTR [r14+rbx*1],0x21 1 : 15225: jae 15240 : 457 self.i += 1; 0 : 15227: inc rbx : 459 while self.i < self.s.len() && self.s[self.i] <= b' ' { 0 : 1522a: cmp r12,rbx 0 : 1522d: jne 15220 0 : 1522f: jmp 15190 0 : 15234: data16 data16 cs nop WORD PTR [rax+rax*1+0x0] : 464 while self.i < self.s.len() { 0 : 15240: cmp rbx,r12 0 : 15243: jae 15193 0 : 15249: xor edx,edx 0 : 1524b: nop DWORD PTR [rax+rax*1+0x0] : 469 let c = self.s[self.i]; 0 : 15250: movzx esi,BYTE PTR [r14+rbx*1] 0 : 15255: add sil,0xd0 0 : 15259: cmp sil,0x9 0 : 1525d: ja 15195 : 474 v = v * 10 + (c - b'0') as u64; 0 : 15263: lea rdx,[rdx+rdx*4] 0 : 15267: movzx esi,sil 1 : 1526b: lea rdx,[rsi+rdx*2] : 478 self.i += 1; 0 : 1526f: inc rbx : 480 while self.i < self.s.len() { 0 : 15272: cmp r12,rbx 0 : 15275: jne 15250 0 : 15277: mov rbx,r12 0 : 1527a: jmp 15195 0 : 1527f: mov rbx,rdi 0 : 15282: shl rbx,0x4 0 : 15286: mov rax,rdi 0 : 15289: shr rax,0x3c 0 : 1528d: setne al 0 : 15290: lea rcx,[r8-0x8] 0 : 15294: cmp rbx,rcx 0 : 15297: seta cl 0 : 1529a: or cl,al 0 : 1529c: je 152b2 0 : 1529e: xor r13d,r13d 0 : 152a1: mov rdi,r13 0 : 152a4: mov rsi,rbx 0 : 152a7: call QWORD PTR [rip+0x4202b] # 572d8 <_DYNAMIC+0x238> 0 : 152ad: jmp 16331 0 : 152b2: test rbx,rbx 0 : 152b5: je 152df 0 : 152b7: call QWORD PTR [rip+0x4202b] # 572e8 <_DYNAMIC+0x248> 0 : 152bd: mov r13d,0x10 0 : 152c3: mov esi,0x10 0 : 152c8: mov rdi,rbx 0 : 152cb: call QWORD PTR [rip+0x4201f] # 572f0 <_DYNAMIC+0x250> 0 : 152d1: test rax,rax 0 : 152d4: je 152a1 0 : 152d6: mov rdi,QWORD PTR [rbp-0x78] 0 : 152da: mov rcx,rdi 0 : 152dd: jmp 152e6 0 : 152df: mov eax,0x10 0 : 152e4: xor ecx,ecx 0 : 152e6: mov QWORD PTR [rbp-0x90],rcx 0 : 152ed: mov QWORD PTR [rbp-0x88],rax 0 : 152f4: mov QWORD PTR [rbp-0x80],0x0 0 : 152fc: xor r13d,r13d 0 : 152ff: test rdi,rdi 0 : 15302: je 1535e 0 : 15304: xor ebx,ebx 0 : 15306: jmp 15335 0 : 15308: nop DWORD PTR [rax+rax*1+0x0] 0 : 15310: mov rax,QWORD PTR [rbp-0x88] 0 : 15317: vmovdqa xmm0,XMMWORD PTR [rbp-0xc0] 0 : 1531f: vmovdqa XMMWORD PTR [rax+rbx*1],xmm0 0 : 15324: inc r13 0 : 15327: mov QWORD PTR [rbp-0x80],r13 0 : 1532b: add rbx,0x10 0 : 1532f: add r15,0xfffffffffffffff8 0 : 15333: je 1535e 0 : 15335: mov rcx,QWORD PTR [rbp-0x60] 0 : 15339: vmovsd xmm0,QWORD PTR [rcx+r13*8] 0 : 1533f: vmovaps XMMWORD PTR [rbp-0xc0],xmm0 0 : 15347: cmp r13,QWORD PTR [rbp-0x90] 0 : 1534e: jne 15317 0 : 15350: lea rdi,[rbp-0x90] 0 : 15357: call 14b10 ::grow_one> 0 : 1535c: jmp 15310 0 : 1535e: mov r11,QWORD PTR [rbp-0x58] 0 : 15362: mov rax,QWORD PTR [rbp-0x78] : 541 for &x in &b { : 542 bvec.push(_mm_cvtsi64_si128(x as i64)); : 543 } : 544 } : : 546 let mut c = vec![0u64; n + m - 1]; 0 : 15366: lea rdx,[rax+r11*1] 0 : 1536a: dec rdx 0 : 1536d: add rax,r11 0 : 15370: mov QWORD PTR [rbp-0x78],rax 0 : 15374: lea rbx,[rax*8-0x8] 0 : 1537c: movabs rax,0x1fffffffffffffff 0 : 15386: cmp rdx,rax 0 : 15389: seta al 0 : 1538c: movabs rcx,0x7ffffffffffffff8 0 : 15396: cmp rbx,rcx 0 : 15399: seta cl 0 : 1539c: or cl,al 0 : 1539e: mov QWORD PTR [rbp-0xd0],rbx 0 : 153a5: je 153bf 0 : 153a7: xor r15d,r15d 0 : 153aa: mov rdi,r15 0 : 153ad: mov rsi,QWORD PTR [rbp-0xd0] 0 : 153b4: call QWORD PTR [rip+0x41f1e] # 572d8 <_DYNAMIC+0x238> 0 : 153ba: jmp 16331 0 : 153bf: test rbx,rbx 0 : 153c2: mov QWORD PTR [rbp-0xc8],rdx 0 : 153c9: je 15415 0 : 153cb: call QWORD PTR [rip+0x41f17] # 572e8 <_DYNAMIC+0x248> 0 : 153d1: mov r15d,0x8 0 : 153d7: mov esi,0x8 0 : 153dc: mov rdi,rbx 0 : 153df: call QWORD PTR [rip+0x41f33] # 57318 <_DYNAMIC+0x278> 0 : 153e5: mov QWORD PTR [rbp-0x70],rax 0 : 153e9: test rax,rax 0 : 153ec: je 153aa 0 : 153ee: mov rax,QWORD PTR [rbp-0xc8] 0 : 153f5: mov QWORD PTR [rbp-0x98],rax 0 : 153fc: mov r11,QWORD PTR [rbp-0x58] 0 : 15400: mov rax,QWORD PTR [rbp-0x88] 0 : 15407: mov QWORD PTR [rbp-0x48],rax 0 : 1540b: test r11,r11 0 : 1540e: jne 1543d 0 : 15410: jmp 15a79 0 : 15415: mov eax,0x8 0 : 1541a: mov QWORD PTR [rbp-0x70],rax 0 : 1541e: mov QWORD PTR [rbp-0x98],0x0 0 : 15429: mov rax,QWORD PTR [rbp-0x88] 0 : 15430: mov QWORD PTR [rbp-0x48],rax 0 : 15434: test r11,r11 0 : 15437: je 15a79 0 : 1543d: cmp r13,0x8 0 : 15441: jae 157e9 0 : 15447: test r13,r13 0 : 1544a: je 15a79 0 : 15450: mov rax,QWORD PTR [rbp-0x48] 0 : 15454: vmovdqa xmm0,XMMWORD PTR [rax] 0 : 15458: xor eax,eax 0 : 1545a: mov r10,QWORD PTR [rbp-0x70] 0 : 1545e: jmp 1546c 0 : 15460: inc rax 0 : 15463: cmp r11,rax 0 : 15466: je 15a79 0 : 1546c: mov rcx,QWORD PTR [rbp-0x50] 0 : 15470: vmovq xmm1,QWORD PTR [rcx+rax*8] 0 : 15475: vpclmullqlqdq xmm2,xmm1,xmm0 0 : 1547b: vmovq rcx,xmm2 0 : 15480: vpextrq rsi,xmm2,0x1 : 609 let mut reduced = lo ^ hi ^ (hi << 1) ^ (hi << 3) ^ (hi << 4); 0 : 15486: lea rdx,[rsi+rsi*1] 0 : 1548a: lea rdi,[rsi*8+0x0] 0 : 15492: xor rdx,rdi : 613 let carry = (hi >> 63) ^ (hi >> 61) ^ (hi >> 60); 0 : 15495: mov rdi,rsi 0 : 15498: shr rdi,0x3f 0 : 1549c: mov r8,rsi 0 : 1549f: shr r8,0x3d 0 : 154a3: xor r8,rdi 0 : 154a6: mov rdi,rsi 0 : 154a9: shr rdi,0x3c 0 : 154ad: xor rdi,r8 : 622 reduced ^= carry ^ (carry << 1) ^ (carry << 3) ^ (carry << 4); 0 : 154b0: lea r8d,[rdi+rdi*1] 0 : 154b4: lea r9d,[rdi*8+0x0] : 625 *row.add(j) ^= gf_reduce128(p); 0 : 154bc: xor r9,r8 0 : 154bf: xor r9,rsi : 628 let mut reduced = lo ^ hi ^ (hi << 1) ^ (hi << 3) ^ (hi << 4); 0 : 154c2: shl rsi,0x4 : 630 reduced ^= carry ^ (carry << 1) ^ (carry << 3) ^ (carry << 4); 0 : 154c6: mov r8d,edi 0 : 154c9: shl r8d,0x4 0 : 154cd: xor rcx,QWORD PTR [r10+rax*8] 0 : 154d1: xor rcx,rdx : 635 *row.add(j) ^= gf_reduce128(p); 0 : 154d4: xor rcx,rsi 0 : 154d7: xor rcx,r8 0 : 154da: xor rcx,rdi 0 : 154dd: xor rcx,r9 0 : 154e0: mov QWORD PTR [r10+rax*8],rcx 0 : 154e4: cmp r13,0x1 : 642 while j < m { 0 : 154e8: je 15460 0 : 154ee: mov rcx,QWORD PTR [rbp-0x48] 0 : 154f2: vpclmullqlqdq xmm2,xmm1,XMMWORD PTR [rcx+0x10] 0 : 154f9: vmovq rcx,xmm2 0 : 154fe: vpextrq rsi,xmm2,0x1 : 648 let mut reduced = lo ^ hi ^ (hi << 1) ^ (hi << 3) ^ (hi << 4); 0 : 15504: lea rdx,[rsi+rsi*1] 0 : 15508: lea rdi,[rsi*8+0x0] 0 : 15510: xor rdx,rdi : 652 let carry = (hi >> 63) ^ (hi >> 61) ^ (hi >> 60); 0 : 15513: mov rdi,rsi 0 : 15516: shr rdi,0x3f 0 : 1551a: mov r8,rsi 0 : 1551d: shr r8,0x3d 0 : 15521: xor r8,rdi 0 : 15524: mov rdi,rsi 0 : 15527: shr rdi,0x3c 0 : 1552b: xor rdi,r8 : 661 reduced ^= carry ^ (carry << 1) ^ (carry << 3) ^ (carry << 4); 0 : 1552e: lea r8d,[rdi+rdi*1] 0 : 15532: lea r9d,[rdi*8+0x0] : 664 *row.add(j) ^= gf_reduce128(p); 0 : 1553a: xor r9,r8 0 : 1553d: xor r9,rsi : 667 let mut reduced = lo ^ hi ^ (hi << 1) ^ (hi << 3) ^ (hi << 4); 0 : 15540: shl rsi,0x4 : 669 reduced ^= carry ^ (carry << 1) ^ (carry << 3) ^ (carry << 4); 0 : 15544: mov r8d,edi 0 : 15547: shl r8d,0x4 0 : 1554b: xor rcx,QWORD PTR [r10+rax*8+0x8] 0 : 15550: xor rcx,rdx : 674 *row.add(j) ^= gf_reduce128(p); 0 : 15553: xor rcx,rsi 0 : 15556: xor rcx,r8 0 : 15559: xor rcx,rdi 0 : 1555c: xor rcx,r9 0 : 1555f: mov QWORD PTR [r10+rax*8+0x8],rcx 0 : 15564: cmp r13,0x2 : 681 while j < m { 0 : 15568: je 15460 0 : 1556e: mov rcx,QWORD PTR [rbp-0x48] 0 : 15572: vpclmullqlqdq xmm2,xmm1,XMMWORD PTR [rcx+0x20] 0 : 15579: vmovq rcx,xmm2 0 : 1557e: vpextrq rsi,xmm2,0x1 : 687 let mut reduced = lo ^ hi ^ (hi << 1) ^ (hi << 3) ^ (hi << 4); 0 : 15584: lea rdx,[rsi+rsi*1] 0 : 15588: lea rdi,[rsi*8+0x0] 0 : 15590: xor rdx,rdi : 691 let carry = (hi >> 63) ^ (hi >> 61) ^ (hi >> 60); 0 : 15593: mov rdi,rsi 0 : 15596: shr rdi,0x3f 0 : 1559a: mov r8,rsi 0 : 1559d: shr r8,0x3d 0 : 155a1: xor r8,rdi 0 : 155a4: mov rdi,rsi 0 : 155a7: shr rdi,0x3c 0 : 155ab: xor rdi,r8 : 700 reduced ^= carry ^ (carry << 1) ^ (carry << 3) ^ (carry << 4); 0 : 155ae: lea r8d,[rdi+rdi*1] 0 : 155b2: lea r9d,[rdi*8+0x0] : 703 *row.add(j) ^= gf_reduce128(p); 0 : 155ba: xor r9,r8 0 : 155bd: xor r9,rsi : 706 let mut reduced = lo ^ hi ^ (hi << 1) ^ (hi << 3) ^ (hi << 4); 0 : 155c0: shl rsi,0x4 : 708 reduced ^= carry ^ (carry << 1) ^ (carry << 3) ^ (carry << 4); 0 : 155c4: mov r8d,edi 0 : 155c7: shl r8d,0x4 0 : 155cb: xor rcx,QWORD PTR [r10+rax*8+0x10] 0 : 155d0: xor rcx,rdx : 713 *row.add(j) ^= gf_reduce128(p); 0 : 155d3: xor rcx,rsi 0 : 155d6: xor rcx,r8 0 : 155d9: xor rcx,rdi 0 : 155dc: xor rcx,r9 0 : 155df: mov QWORD PTR [r10+rax*8+0x10],rcx 0 : 155e4: cmp r13,0x3 : 720 while j < m { 0 : 155e8: je 15460 0 : 155ee: mov rcx,QWORD PTR [rbp-0x48] 0 : 155f2: vpclmullqlqdq xmm2,xmm1,XMMWORD PTR [rcx+0x30] 0 : 155f9: vmovq rcx,xmm2 0 : 155fe: vpextrq rsi,xmm2,0x1 : 726 let mut reduced = lo ^ hi ^ (hi << 1) ^ (hi << 3) ^ (hi << 4); 0 : 15604: lea rdx,[rsi+rsi*1] 0 : 15608: lea rdi,[rsi*8+0x0] 0 : 15610: xor rdx,rdi : 730 let carry = (hi >> 63) ^ (hi >> 61) ^ (hi >> 60); 0 : 15613: mov rdi,rsi 0 : 15616: shr rdi,0x3f 0 : 1561a: mov r8,rsi 0 : 1561d: shr r8,0x3d 0 : 15621: xor r8,rdi 0 : 15624: mov rdi,rsi 0 : 15627: shr rdi,0x3c 0 : 1562b: xor rdi,r8 : 739 reduced ^= carry ^ (carry << 1) ^ (carry << 3) ^ (carry << 4); 0 : 1562e: lea r8d,[rdi+rdi*1] 0 : 15632: lea r9d,[rdi*8+0x0] : 742 *row.add(j) ^= gf_reduce128(p); 0 : 1563a: xor r9,r8 0 : 1563d: xor r9,rsi : 745 let mut reduced = lo ^ hi ^ (hi << 1) ^ (hi << 3) ^ (hi << 4); 0 : 15640: shl rsi,0x4 : 747 reduced ^= carry ^ (carry << 1) ^ (carry << 3) ^ (carry << 4); 0 : 15644: mov r8d,edi 0 : 15647: shl r8d,0x4 0 : 1564b: xor rcx,QWORD PTR [r10+rax*8+0x18] 0 : 15650: xor rcx,rdx : 752 *row.add(j) ^= gf_reduce128(p); 0 : 15653: xor rcx,rsi 0 : 15656: xor rcx,r8 0 : 15659: xor rcx,rdi 0 : 1565c: xor rcx,r9 0 : 1565f: mov QWORD PTR [r10+rax*8+0x18],rcx 0 : 15664: cmp r13,0x4 : 759 while j < m { 0 : 15668: je 15460 0 : 1566e: mov rcx,QWORD PTR [rbp-0x48] 0 : 15672: vpclmullqlqdq xmm2,xmm1,XMMWORD PTR [rcx+0x40] 0 : 15679: vmovq rcx,xmm2 0 : 1567e: vpextrq rsi,xmm2,0x1 : 765 let mut reduced = lo ^ hi ^ (hi << 1) ^ (hi << 3) ^ (hi << 4); 0 : 15684: lea rdx,[rsi+rsi*1] 0 : 15688: lea rdi,[rsi*8+0x0] 0 : 15690: xor rdx,rdi : 769 let carry = (hi >> 63) ^ (hi >> 61) ^ (hi >> 60); 0 : 15693: mov rdi,rsi 0 : 15696: shr rdi,0x3f 0 : 1569a: mov r8,rsi 0 : 1569d: shr r8,0x3d 0 : 156a1: xor r8,rdi 0 : 156a4: mov rdi,rsi 0 : 156a7: shr rdi,0x3c 0 : 156ab: xor rdi,r8 : 778 reduced ^= carry ^ (carry << 1) ^ (carry << 3) ^ (carry << 4); 0 : 156ae: lea r8d,[rdi+rdi*1] 0 : 156b2: lea r9d,[rdi*8+0x0] : 781 *row.add(j) ^= gf_reduce128(p); 0 : 156ba: xor r9,r8 0 : 156bd: xor r9,rsi : 784 let mut reduced = lo ^ hi ^ (hi << 1) ^ (hi << 3) ^ (hi << 4); 0 : 156c0: shl rsi,0x4 : 786 reduced ^= carry ^ (carry << 1) ^ (carry << 3) ^ (carry << 4); 0 : 156c4: mov r8d,edi 0 : 156c7: shl r8d,0x4 0 : 156cb: xor rcx,QWORD PTR [r10+rax*8+0x20] 0 : 156d0: xor rcx,rdx : 791 *row.add(j) ^= gf_reduce128(p); 0 : 156d3: xor rcx,rsi 0 : 156d6: xor rcx,r8 0 : 156d9: xor rcx,rdi 0 : 156dc: xor rcx,r9 0 : 156df: mov QWORD PTR [r10+rax*8+0x20],rcx 0 : 156e4: cmp r13,0x5 : 798 while j < m { 0 : 156e8: je 15460 0 : 156ee: mov rcx,QWORD PTR [rbp-0x48] 0 : 156f2: vpclmullqlqdq xmm2,xmm1,XMMWORD PTR [rcx+0x50] 0 : 156f9: vmovq rcx,xmm2 0 : 156fe: vpextrq rsi,xmm2,0x1 : 804 let mut reduced = lo ^ hi ^ (hi << 1) ^ (hi << 3) ^ (hi << 4); 0 : 15704: lea rdx,[rsi+rsi*1] 0 : 15708: lea rdi,[rsi*8+0x0] 0 : 15710: xor rdx,rdi : 808 let carry = (hi >> 63) ^ (hi >> 61) ^ (hi >> 60); 0 : 15713: mov rdi,rsi 0 : 15716: shr rdi,0x3f 0 : 1571a: mov r8,rsi 0 : 1571d: shr r8,0x3d 0 : 15721: xor r8,rdi 0 : 15724: mov rdi,rsi 0 : 15727: shr rdi,0x3c 0 : 1572b: xor rdi,r8 : 817 reduced ^= carry ^ (carry << 1) ^ (carry << 3) ^ (carry << 4); 0 : 1572e: lea r8d,[rdi+rdi*1] 0 : 15732: lea r9d,[rdi*8+0x0] : 820 *row.add(j) ^= gf_reduce128(p); 0 : 1573a: xor r9,r8 0 : 1573d: xor r9,rsi : 823 let mut reduced = lo ^ hi ^ (hi << 1) ^ (hi << 3) ^ (hi << 4); 0 : 15740: shl rsi,0x4 : 825 reduced ^= carry ^ (carry << 1) ^ (carry << 3) ^ (carry << 4); 0 : 15744: mov r8d,edi 0 : 15747: shl r8d,0x4 0 : 1574b: xor rcx,QWORD PTR [r10+rax*8+0x28] 0 : 15750: xor rcx,rdx : 830 *row.add(j) ^= gf_reduce128(p); 0 : 15753: xor rcx,rsi 0 : 15756: xor rcx,r8 0 : 15759: xor rcx,rdi 0 : 1575c: xor rcx,r9 0 : 1575f: mov QWORD PTR [r10+rax*8+0x28],rcx 0 : 15764: cmp r13,0x6 : 837 while j < m { 0 : 15768: je 15460 0 : 1576e: mov rcx,QWORD PTR [rbp-0x48] 0 : 15772: vpclmullqlqdq xmm1,xmm1,XMMWORD PTR [rcx+0x60] 0 : 15779: vpextrq rsi,xmm1,0x1 0 : 1577f: vmovq rcx,xmm1 : 843 let mut reduced = lo ^ hi ^ (hi << 1) ^ (hi << 3) ^ (hi << 4); 0 : 15784: lea rdx,[rsi+rsi*1] 0 : 15788: lea rdi,[rsi*8+0x0] 0 : 15790: xor rdx,rdi : 847 let carry = (hi >> 63) ^ (hi >> 61) ^ (hi >> 60); 0 : 15793: mov rdi,rsi 0 : 15796: shr rdi,0x3f 0 : 1579a: mov r8,rsi 0 : 1579d: shr r8,0x3d 0 : 157a1: xor r8,rdi 0 : 157a4: mov rdi,rsi 0 : 157a7: shr rdi,0x3c 0 : 157ab: xor rdi,r8 : 856 reduced ^= carry ^ (carry << 1) ^ (carry << 3) ^ (carry << 4); 0 : 157ae: lea r8d,[rdi+rdi*1] 0 : 157b2: lea r9d,[rdi*8+0x0] : 859 *row.add(j) ^= gf_reduce128(p); 0 : 157ba: xor r9,r8 0 : 157bd: xor r9,rsi : 862 let mut reduced = lo ^ hi ^ (hi << 1) ^ (hi << 3) ^ (hi << 4); 0 : 157c0: shl rsi,0x4 : 864 reduced ^= carry ^ (carry << 1) ^ (carry << 3) ^ (carry << 4); 0 : 157c4: mov r8d,edi 0 : 157c7: shl r8d,0x4 0 : 157cb: xor rcx,QWORD PTR [r10+rax*8+0x30] 0 : 157d0: xor rcx,rdx : 869 *row.add(j) ^= gf_reduce128(p); 0 : 157d3: xor rcx,rsi 0 : 157d6: xor rcx,r8 0 : 157d9: xor rcx,rdi 0 : 157dc: xor rcx,r9 0 : 157df: mov QWORD PTR [r10+rax*8+0x30],rcx 0 : 157e4: jmp 15460 0 : 157e9: mov rdx,QWORD PTR [rbp-0x48] : 877 while j + 8 <= m { 0 : 157ed: lea rax,[rdx+0x70] 0 : 157f1: mov QWORD PTR [rbp-0x178],rax 0 : 157f8: mov rax,QWORD PTR [rbp-0x70] 0 : 157fc: lea rcx,[rax+0x20] 0 : 15800: lea r10,[rax+0x40] 0 : 15804: lea rax,[rdx+0x80] 0 : 1580b: mov QWORD PTR [rbp-0x170],rax 0 : 15812: xor edi,edi 0 : 15814: vbroadcasti128 ymm0,XMMWORD PTR [rip+0xffffffffffff23f3] # 7c10 0 : 1581d: vbroadcasti128 ymm1,XMMWORD PTR [rip+0xffffffffffff230a] # 7b30 0 : 15826: cs nop WORD PTR [rax+rax*1+0x0] 0 : 15830: mov rax,QWORD PTR [rbp-0x50] 1 : 15834: vmovq xmm2,QWORD PTR [rax+rdi*8] 0 : 15839: mov rsi,QWORD PTR [rbp-0x170] 0 : 15840: mov QWORD PTR [rbp-0xc0],r10 0 : 15847: mov r8,QWORD PTR [rbp-0x178] 0 : 1584e: xor ebx,ebx 0 : 15850: mov r11,rbx 2 : 15853: vpclmullqlqdq xmm4,xmm2,XMMWORD PTR [r8-0x70] // /rustc/59807616e1fa2540724bfbac14d7976d7e4a3860/library/core/src/../../stdarch/crates/core_arch/src/x86/pclmulqdq.rs:33 15 : 1585a: vpclmullqlqdq xmm5,xmm2,XMMWORD PTR [r8-0x60] 0 : 15861: vpclmullqlqdq xmm6,xmm2,XMMWORD PTR [r8-0x50] 9 : 15868: vpclmullqlqdq xmm7,xmm2,XMMWORD PTR [r8-0x40] : 900 let mut reduced = lo ^ hi ^ (hi << 1) ^ (hi << 3) ^ (hi << 4); 0 : 1586f: vpunpckhqdq xmm3,xmm4,xmm5 0 : 15873: vpshufd xmm8,xmm6,0xee 10 : 15878: vinserti128 ymm3,ymm3,xmm8,0x1 // /tmp/cpu-mode-161014-1777968431720902827-3/solution/solution.rs:122 0 : 1587e: vinserti128 ymm8,ymm0,xmm7,0x1 1 : 15884: vpblendd ymm8,ymm3,ymm8,0xc0 0 : 1588a: vpsllq ymm3,ymm8,0x3 10 : 15890: vpsllq ymm9,ymm8,0x4 0 : 15896: vpxor ymm9,ymm9,ymm3 : 909 let carry = (hi >> 63) ^ (hi >> 61) ^ (hi >> 60); 0 : 1589a: vpsrlvq ymm3,ymm8,ymm0 0 : 1589f: vpsrlvq ymm10,ymm8,ymm1 16 : 158a4: vpxor ymm3,ymm10,ymm3 // /tmp/cpu-mode-161014-1777968431720902827-3/solution/solution.rs:123 1 : 158a8: vpsrlq ymm10,ymm8,0x3c 0 : 158ae: vpxor ymm10,ymm10,ymm3 : 915 reduced ^= carry ^ (carry << 1) ^ (carry << 3) ^ (carry << 4); 0 : 158b2: vpaddq ymm3,ymm10,ymm10 14 : 158b7: vpsllq ymm11,ymm10,0x4 // /tmp/cpu-mode-161014-1777968431720902827-3/solution/solution.rs:124 : 918 *row.add(j) ^= gf_reduce128(p0); 1 : 158bd: vpxor ymm11,ymm11,ymm3 0 : 158c1: vpclmullqlqdq xmm3,xmm2,XMMWORD PTR [r8-0x30] : 921 let mut reduced = lo ^ hi ^ (hi << 1) ^ (hi << 3) ^ (hi << 4); 21 : 158c8: vpunpcklqdq xmm5,xmm4,xmm5 // /tmp/cpu-mode-161014-1777968431720902827-3/solution/solution.rs:122 0 : 158cc: vpclmullqlqdq xmm4,xmm2,XMMWORD PTR [r8-0x20] 0 : 158d3: vinserti128 ymm6,ymm5,xmm6,0x1 13 : 158d9: vpclmullqlqdq xmm5,xmm2,XMMWORD PTR [r8-0x10] // /rustc/59807616e1fa2540724bfbac14d7976d7e4a3860/library/core/src/../../stdarch/crates/core_arch/src/x86/pclmulqdq.rs:33 0 : 158e0: vpbroadcastq ymm7,xmm7 0 : 158e5: vpblendd ymm6,ymm6,ymm7,0xc0 12 : 158eb: vpaddq ymm7,ymm8,ymm8 // /tmp/cpu-mode-161014-1777968431720902827-3/solution/solution.rs:122 1 : 158f0: vpxor ymm6,ymm6,ymm7 1 : 158f4: vpclmullqlqdq xmm7,xmm2,XMMWORD PTR [r8] : 931 *row.add(j) ^= gf_reduce128(p0); 8 : 158fa: vpxor ymm6,ymm9,ymm6 // /tmp/cpu-mode-161014-1777968431720902827-3/solution/solution.rs:145 : 933 reduced ^= carry ^ (carry << 1) ^ (carry << 3) ^ (carry << 4); 0 : 158fe: vpsllq ymm9,ymm10,0x3 : 935 *row.add(j) ^= gf_reduce128(p0); 0 : 15904: vpxor ymm6,ymm9,ymm6 5 : 15908: vpxor ymm6,ymm11,ymm6 17 : 1590c: vpxor ymm6,ymm6,YMMWORD PTR [rcx+rbx*8-0x20] 0 : 15912: vpxor ymm8,ymm8,ymm10 7 : 15917: vpxor ymm6,ymm8,ymm6 17 : 1591b: vmovdqu YMMWORD PTR [rcx+rbx*8-0x20],ymm6 : 942 let mut reduced = lo ^ hi ^ (hi << 1) ^ (hi << 3) ^ (hi << 4); 0 : 15921: vpunpckhqdq xmm6,xmm3,xmm4 0 : 15925: vpshufd xmm8,xmm5,0xee 2 : 1592a: vinserti128 ymm6,ymm6,xmm8,0x1 // /tmp/cpu-mode-161014-1777968431720902827-3/solution/solution.rs:122 9 : 15930: vinserti128 ymm8,ymm0,xmm7,0x1 0 : 15936: vpblendd ymm6,ymm6,ymm8,0xc0 0 : 1593c: vpsllq ymm8,ymm6,0x3 4 : 15941: vpsllq ymm9,ymm6,0x4 9 : 15946: vpxor ymm8,ymm8,ymm9 : 951 let carry = (hi >> 63) ^ (hi >> 61) ^ (hi >> 60); 0 : 1594b: vpsrlvq ymm9,ymm6,ymm0 1 : 15950: vpsrlvq ymm10,ymm6,ymm1 2 : 15955: vpxor ymm9,ymm9,ymm10 // /tmp/cpu-mode-161014-1777968431720902827-3/solution/solution.rs:123 12 : 1595a: vpsrlq ymm10,ymm6,0x3c 5 : 1595f: vpxor ymm9,ymm9,ymm10 : 957 reduced ^= carry ^ (carry << 1) ^ (carry << 3) ^ (carry << 4); 4 : 15964: vpaddq ymm10,ymm9,ymm9 // /tmp/cpu-mode-161014-1777968431720902827-3/solution/solution.rs:124 3 : 15969: vpsllq ymm11,ymm9,0x4 : 960 *row.add(j + 4) ^= gf_reduce128(p4); 13 : 1596f: vpxor ymm10,ymm10,ymm11 // /tmp/cpu-mode-161014-1777968431720902827-3/solution/solution.rs:149 : 962 let mut reduced = lo ^ hi ^ (hi << 1) ^ (hi << 3) ^ (hi << 4); 0 : 15974: vpunpcklqdq xmm3,xmm3,xmm4 2 : 15978: vinserti128 ymm3,ymm3,xmm5,0x1 // /tmp/cpu-mode-161014-1777968431720902827-3/solution/solution.rs:122 0 : 1597e: vpbroadcastq ymm4,xmm7 10 : 15983: vpblendd ymm3,ymm3,ymm4,0xc0 0 : 15989: vpaddq ymm4,ymm6,ymm6 2 : 1598d: vpxor ymm3,ymm3,ymm4 : 969 *row.add(j + 4) ^= gf_reduce128(p4); 3 : 15991: vpxor ymm3,ymm8,ymm3 // /tmp/cpu-mode-161014-1777968431720902827-3/solution/solution.rs:149 : 971 reduced ^= carry ^ (carry << 1) ^ (carry << 3) ^ (carry << 4); 11 : 15995: vpsllq ymm4,ymm9,0x3 // /tmp/cpu-mode-161014-1777968431720902827-3/solution/solution.rs:124 : 973 *row.add(j + 4) ^= gf_reduce128(p4); 0 : 1599b: vpxor ymm3,ymm3,ymm4 4 : 1599f: vpxor ymm3,ymm10,ymm3 // /tmp/cpu-mode-161014-1777968431720902827-3/solution/solution.rs:149 2 : 159a3: vpxor ymm4,ymm9,ymm6 13 : 159a7: vpxor ymm3,ymm3,YMMWORD PTR [rcx+rbx*8] 9 : 159ac: vpxor ymm3,ymm3,ymm4 8 : 159b0: vmovdqu YMMWORD PTR [rcx+rbx*8],ymm3 3 : 159b5: mov r15,r10 // /tmp/cpu-mode-161014-1777968431720902827-3/solution/solution.rs:0 0 : 159b8: mov r9,rsi : 982 while j + 8 <= m { 2 : 159bb: add rbx,0x8 // /tmp/cpu-mode-161014-1777968431720902827-3/solution/solution.rs:135 3 : 159bf: add r11,0x10 3 : 159c3: sub r8,0xffffffffffffff80 0 : 159c7: add r10,0x40 3 : 159cb: add rsi,0x80 0 : 159d2: cmp r11,r13 13 : 159d5: jbe 15850 0 : 159db: jmp 15a58 0 : 159dd: nop DWORD PTR [rax] 0 : 159e0: vpclmullqlqdq xmm3,xmm2,XMMWORD PTR [r9] 0 : 159e6: vmovq rsi,xmm3 0 : 159eb: vpextrq rax,xmm3,0x1 : 995 let mut reduced = lo ^ hi ^ (hi << 1) ^ (hi << 3) ^ (hi << 4); 0 : 159f1: lea r8,[rax+rax*1] 0 : 159f5: lea r11,[rax*8+0x0] 0 : 159fd: xor r8,r11 : 999 let carry = (hi >> 63) ^ (hi >> 61) ^ (hi >> 60); 0 : 15a00: mov r11,rax 0 : 15a03: shr r11,0x3f 0 : 15a07: mov r10,rax 0 : 15a0a: shr r10,0x3d 0 : 15a0e: xor r10,r11 0 : 15a11: mov r11,rax 0 : 15a14: shr r11,0x3c 0 : 15a18: xor r11,r10 : 1008 reduced ^= carry ^ (carry << 1) ^ (carry << 3) ^ (carry << 4); 0 : 15a1b: lea r10d,[r11+r11*1] 0 : 15a1f: lea edx,[r11*8+0x0] : 1011 *row.add(j) ^= gf_reduce128(p); 0 : 15a27: xor rdx,r10 0 : 15a2a: xor rdx,rax : 1014 let mut reduced = lo ^ hi ^ (hi << 1) ^ (hi << 3) ^ (hi << 4); 0 : 15a2d: shl rax,0x4 : 1016 reduced ^= carry ^ (carry << 1) ^ (carry << 3) ^ (carry << 4); 0 : 15a31: mov r10d,r11d 0 : 15a34: shl r10d,0x4 0 : 15a38: xor rsi,QWORD PTR [r15] 0 : 15a3b: xor rsi,r8 : 1021 *row.add(j) ^= gf_reduce128(p); 0 : 15a3e: xor rsi,rax 0 : 15a41: xor rsi,r10 0 : 15a44: xor rsi,r11 0 : 15a47: xor rsi,rdx 0 : 15a4a: mov QWORD PTR [r15],rsi : 1027 j += 1; 0 : 15a4d: inc rbx : 1029 while j < m { 0 : 15a50: add r15,0x8 0 : 15a54: add r9,0x10 0 : 15a58: cmp rbx,r13 0 : 15a5b: jb 159e0 0 : 15a5d: inc rdi 0 : 15a60: add rcx,0x8 0 : 15a64: mov r10,QWORD PTR [rbp-0xc0] 0 : 15a6b: add r10,0x8 0 : 15a6f: cmp rdi,QWORD PTR [rbp-0x58] 0 : 15a73: jne 15830 0 : 15a79: mov rax,QWORD PTR [rbp-0x78] : 1041 unsafe { : 1042 convolve(&a, &bvec, &mut c); : 1043 } : : 1045 let mut out = Vec::with_capacity((n + m) * 21); 0 : 15a7d: lea r15,[rax+rax*4] 0 : 15a81: shl r15,0x2 0 : 15a85: add r15,rax 0 : 15a88: jns 15aa0 0 : 15a8a: xor ebx,ebx 0 : 15a8c: mov rdi,rbx 0 : 15a8f: mov rsi,r15 0 : 15a92: vzeroupper 0 : 15a95: call QWORD PTR [rip+0x4183d] # 572d8 <_DYNAMIC+0x238> 0 : 15a9b: jmp 16331 0 : 15aa0: test rax,rax 0 : 15aa3: je 15af0 0 : 15aa5: vzeroupper 0 : 15aa8: call QWORD PTR [rip+0x4183a] # 572e8 <_DYNAMIC+0x248> 0 : 15aae: mov ebx,0x1 0 : 15ab3: mov esi,0x1 0 : 15ab8: mov rdi,r15 0 : 15abb: call QWORD PTR [rip+0x4182f] # 572f0 <_DYNAMIC+0x250> 0 : 15ac1: test rax,rax 0 : 15ac4: je 15a8c 0 : 15ac6: mov QWORD PTR [rbp-0x168],r15 0 : 15acd: mov QWORD PTR [rbp-0x160],rax 0 : 15ad4: mov QWORD PTR [rbp-0x158],0x0 0 : 15adf: cmp QWORD PTR [rbp-0xc8],0x0 0 : 15ae7: jne 15b0d 0 : 15ae9: xor ebx,ebx 0 : 15aeb: jmp 161a9 0 : 15af0: mov QWORD PTR [rbp-0x168],r15 0 : 15af7: mov QWORD PTR [rbp-0x160],0x1 0 : 15b02: mov QWORD PTR [rbp-0x158],0x0 0 : 15b0d: xor ebx,ebx 0 : 15b0f: mov QWORD PTR [rbp-0x58],0x0 0 : 15b17: mov rax,QWORD PTR [rbp-0x70] 0 : 15b1b: jmp 15b4b 0 : 15b1d: mov rax,QWORD PTR [rbp-0x160] 0 : 15b24: mov BYTE PTR [rax+rbx*1],0x30 0 : 15b28: inc rbx 0 : 15b2b: mov QWORD PTR [rbp-0x158],rbx 0 : 15b32: mov rax,QWORD PTR [rbp-0xc0] 0 : 15b39: add rax,0x8 0 : 15b3d: add QWORD PTR [rbp-0xd0],0xfffffffffffffff8 0 : 15b45: je 16190 : 1088 for (i, &v) in c.iter().enumerate() { 0 : 15b4b: test rax,rax 0 : 15b4e: je 16190 1 : 15b54: mov QWORD PTR [rbp-0xc0],rax 0 : 15b5b: mov r15,QWORD PTR [rax] : 1093 if i != 0 { 0 : 15b5e: sub QWORD PTR [rbp-0x58],0x1 0 : 15b63: jb 15b93 0 : 15b65: cmp rbx,QWORD PTR [rbp-0x168] 0 : 15b6c: jne 15b7e 0 : 15b6e: lea rdi,[rbp-0x168] 0 : 15b75: vzeroupper 0 : 15b78: call QWORD PTR [rip+0x417a2] # 57320 <_DYNAMIC+0x280> 0 : 15b7e: mov rax,QWORD PTR [rbp-0x160] 0 : 15b85: mov BYTE PTR [rax+rbx*1],0x20 0 : 15b89: inc rbx 0 : 15b8c: mov QWORD PTR [rbp-0x158],rbx : 1105 if v == 0 { 0 : 15b93: test r15,r15 0 : 15b96: je 16150 : 1108 let mut buf = [0u8; 20]; 0 : 15b9c: vpxor xmm0,xmm0,xmm0 0 : 15ba0: vmovdqa XMMWORD PTR [rbp-0x40],xmm0 0 : 15ba5: mov DWORD PTR [rbp-0x31],0x0 : 1112 v /= 10; 0 : 15bac: mov rdx,r15 0 : 15baf: movabs rax,0xcccccccccccccccd 0 : 15bb9: mulx rdx,rdx,rax 0 : 15bbe: shr rdx,0x3 0 : 15bc2: lea eax,[rdx+rdx*1] 0 : 15bc5: lea eax,[rax+rax*4] 0 : 15bc8: mov ecx,r15d 0 : 15bcb: sub ecx,eax : 1121 buf[n] = b'0' + (v % 10) as u8; 0 : 15bcd: or cl,0x30 0 : 15bd0: mov BYTE PTR [rbp-0x2d],cl 0 : 15bd3: mov rdi,r15 0 : 15bd6: mov r15d,0x1 0 : 15bdc: lea r13,[rbp-0x2d] : 1127 while v > 0 { 0 : 15be0: cmp rdi,0x9 0 : 15be4: jbe 16120 : 1130 buf[n] = b'0' + (v % 10) as u8; 0 : 15bea: movabs rax,0x199999999999999a 0 : 15bf4: mulx rax,rax,rax 0 : 15bf9: add eax,eax 0 : 15bfb: lea eax,[rax+rax*4] 0 : 15bfe: sub edx,eax 0 : 15c00: or dl,0x30 0 : 15c03: mov BYTE PTR [rbp-0x2e],dl 0 : 15c06: mov r15d,0x2 0 : 15c0c: lea r13,[rbp-0x2e] : 1140 while v > 0 { 0 : 15c10: cmp rdi,0x64 0 : 15c14: jb 16120 : 1143 v /= 10; 0 : 15c1a: mov rdx,rdi 0 : 15c1d: shr rdx,0x2 0 : 15c21: movabs rax,0x28f5c28f5c28f5c3 0 : 15c2b: mulx rdx,rdx,rax 0 : 15c30: shr rdx,0x2 : 1149 buf[n] = b'0' + (v % 10) as u8; 0 : 15c34: movabs rax,0x199999999999999a 0 : 15c3e: mulx rax,rax,rax 0 : 15c43: add eax,eax 0 : 15c45: lea eax,[rax+rax*4] 0 : 15c48: sub edx,eax 0 : 15c4a: or dl,0x30 0 : 15c4d: mov BYTE PTR [rbp-0x2f],dl 0 : 15c50: mov r15d,0x3 0 : 15c56: lea r13,[rbp-0x2f] : 1159 while v > 0 { 0 : 15c5a: cmp rdi,0x3e8 0 : 15c61: jb 16120 : 1162 v /= 10; 0 : 15c67: mov rdx,rdi 0 : 15c6a: shr rdx,0x3 0 : 15c6e: movabs rax,0x20c49ba5e353f7cf 0 : 15c78: mulx rdx,rdx,rax 0 : 15c7d: shr rdx,0x4 : 1168 buf[n] = b'0' + (v % 10) as u8; 0 : 15c81: movabs rax,0x199999999999999a 0 : 15c8b: mulx rax,rax,rax 0 : 15c90: add eax,eax 0 : 15c92: lea eax,[rax+rax*4] 0 : 15c95: sub edx,eax 0 : 15c97: or dl,0x30 0 : 15c9a: mov BYTE PTR [rbp-0x30],dl 0 : 15c9d: mov r15d,0x4 0 : 15ca3: lea r13,[rbp-0x30] : 1178 while v > 0 { 0 : 15ca7: cmp rdi,0x2710 0 : 15cae: jb 16120 : 1181 v /= 10; 0 : 15cb4: mov rdx,rdi 0 : 15cb7: movabs rax,0x346dc5d63886594b 0 : 15cc1: mulx rdx,rdx,rax 0 : 15cc6: shr rdx,0xb : 1186 buf[n] = b'0' + (v % 10) as u8; 0 : 15cca: movabs rax,0x199999999999999a 0 : 15cd4: mulx rax,rax,rax 0 : 15cd9: add eax,eax 0 : 15cdb: lea eax,[rax+rax*4] 0 : 15cde: sub edx,eax 0 : 15ce0: or dl,0x30 0 : 15ce3: mov BYTE PTR [rbp-0x31],dl 0 : 15ce6: mov r15d,0x5 0 : 15cec: lea r13,[rbp-0x31] : 1196 while v > 0 { 0 : 15cf0: cmp rdi,0x186a0 0 : 15cf7: jb 16120 : 1199 v /= 10; 0 : 15cfd: mov rdx,rdi 0 : 15d00: shr rdx,0x5 0 : 15d04: movabs rax,0xa7c5ac471b47843 0 : 15d0e: mulx rdx,rdx,rax 0 : 15d13: shr rdx,0x7 : 1205 buf[n] = b'0' + (v % 10) as u8; 0 : 15d17: movabs rax,0x199999999999999a 0 : 15d21: mulx rax,rax,rax 0 : 15d26: add eax,eax 0 : 15d28: lea eax,[rax+rax*4] 0 : 15d2b: sub edx,eax 0 : 15d2d: or dl,0x30 0 : 15d30: mov BYTE PTR [rbp-0x32],dl 0 : 15d33: mov r15d,0x6 1 : 15d39: lea r13,[rbp-0x32] : 1215 while v > 0 { 0 : 15d3d: cmp rdi,0xf4240 0 : 15d44: jb 16120 : 1218 v /= 10; 0 : 15d4a: mov rdx,rdi 0 : 15d4d: movabs rax,0x431bde82d7b634db 1 : 15d57: mulx rdx,rdx,rax 0 : 15d5c: shr rdx,0x12 : 1223 buf[n] = b'0' + (v % 10) as u8; 0 : 15d60: movabs rax,0x199999999999999a 0 : 15d6a: mulx rax,rax,rax 0 : 15d6f: add eax,eax 0 : 15d71: lea eax,[rax+rax*4] 0 : 15d74: sub edx,eax 0 : 15d76: or dl,0x30 0 : 15d79: mov BYTE PTR [rbp-0x33],dl 0 : 15d7c: mov r15d,0x7 0 : 15d82: lea r13,[rbp-0x33] : 1233 while v > 0 { 0 : 15d86: cmp rdi,0x989680 0 : 15d8d: jb 16120 : 1236 v /= 10; 0 : 15d93: mov rdx,rdi 0 : 15d96: movabs rax,0xd6bf94d5e57a42bd 0 : 15da0: mulx rdx,rdx,rax 0 : 15da5: shr rdx,0x17 : 1241 buf[n] = b'0' + (v % 10) as u8; 0 : 15da9: movabs rax,0x199999999999999a 0 : 15db3: mulx rax,rax,rax 0 : 15db8: add eax,eax 0 : 15dba: lea eax,[rax+rax*4] 0 : 15dbd: sub edx,eax 0 : 15dbf: or dl,0x30 0 : 15dc2: mov BYTE PTR [rbp-0x34],dl 0 : 15dc5: mov r15d,0x8 0 : 15dcb: lea r13,[rbp-0x34] : 1251 while v > 0 { 0 : 15dcf: cmp rdi,0x5f5e100 0 : 15dd6: jb 16120 : 1254 v /= 10; 0 : 15ddc: mov rdx,rdi 0 : 15ddf: movabs rax,0xabcc77118461cefd 0 : 15de9: mulx rdx,rdx,rax 0 : 15dee: shr rdx,0x1a : 1259 buf[n] = b'0' + (v % 10) as u8; 0 : 15df2: movabs rax,0x199999999999999a 0 : 15dfc: mulx rax,rax,rax 0 : 15e01: add eax,eax 0 : 15e03: lea eax,[rax+rax*4] 0 : 15e06: sub edx,eax 0 : 15e08: or dl,0x30 0 : 15e0b: mov BYTE PTR [rbp-0x35],dl 0 : 15e0e: mov r15d,0x9 0 : 15e14: lea r13,[rbp-0x35] : 1269 while v > 0 { 0 : 15e18: cmp rdi,0x3b9aca00 0 : 15e1f: jb 16120 : 1272 v /= 10; 0 : 15e25: mov rdx,rdi 0 : 15e28: shr rdx,0x9 0 : 15e2c: movabs rax,0x44b82fa09b5a53 0 : 15e36: mulx rdx,rdx,rax 0 : 15e3b: shr rdx,0xb : 1278 buf[n] = b'0' + (v % 10) as u8; 0 : 15e3f: movabs rax,0x199999999999999a 0 : 15e49: mulx rax,rax,rax 0 : 15e4e: add eax,eax 0 : 15e50: lea eax,[rax+rax*4] 0 : 15e53: sub edx,eax 0 : 15e55: or dl,0x30 0 : 15e58: mov BYTE PTR [rbp-0x36],dl : 1286 while v > 0 { 0 : 15e5b: mov rax,rdi 0 : 15e5e: shr rax,0xa 0 : 15e62: mov r15d,0xa 0 : 15e68: lea r13,[rbp-0x36] 0 : 15e6c: cmp rax,0x9502f9 0 : 15e72: jb 16120 : 1293 v /= 10; 0 : 15e78: mov rdx,rdi 0 : 15e7b: movabs rax,0xdbe6fecebdedd5bf 0 : 15e85: mulx rax,rax,rax 0 : 15e8a: shr rax,0x21 : 1298 buf[n] = b'0' + (v % 10) as u8; 0 : 15e8e: imul rcx,rax,0x66666667 0 : 15e95: shr rcx,0x22 0 : 15e99: add ecx,ecx 0 : 15e9b: lea ecx,[rcx+rcx*4] 0 : 15e9e: sub eax,ecx 0 : 15ea0: or al,0x30 0 : 15ea2: mov BYTE PTR [rbp-0x37],al : 1306 while v > 0 { 0 : 15ea5: mov rax,rdi 0 : 15ea8: shr rax,0xb 0 : 15eac: mov r15d,0xb 0 : 15eb2: lea r13,[rbp-0x37] 0 : 15eb6: cmp rax,0x2e90edd 0 : 15ebc: jb 16120 : 1313 v /= 10; 0 : 15ec2: mov rdx,rdi 0 : 15ec5: movabs rax,0xafebff0bcb24aaff 0 : 15ecf: mulx rax,rax,rax 0 : 15ed4: shr rax,0x24 : 1318 buf[n] = b'0' + (v % 10) as u8; 0 : 15ed8: imul rcx,rax,0x1999999a 0 : 15edf: shr rcx,0x20 0 : 15ee3: add ecx,ecx 0 : 15ee5: lea ecx,[rcx+rcx*4] 0 : 15ee8: sub eax,ecx 0 : 15eea: or al,0x30 0 : 15eec: mov BYTE PTR [rbp-0x38],al : 1326 while v > 0 { 0 : 15eef: mov rax,rdi 0 : 15ef2: shr rax,0xc 0 : 15ef6: mov r15d,0xc 0 : 15efc: lea r13,[rbp-0x38] 0 : 15f00: cmp rax,0xe8d4a51 0 : 15f06: jb 16120 : 1333 v /= 10; 0 : 15f0c: mov rdx,rdi 0 : 15f0f: movabs rax,0x232f33025bd42233 0 : 15f19: mulx rax,rax,rax 0 : 15f1e: shr rax,0x25 : 1338 buf[n] = b'0' + (v % 10) as u8; 0 : 15f22: imul rcx,rax,0x1999999a 0 : 15f29: shr rcx,0x20 0 : 15f2d: add ecx,ecx 0 : 15f2f: lea ecx,[rcx+rcx*4] 0 : 15f32: sub eax,ecx 0 : 15f34: or al,0x30 0 : 15f36: mov BYTE PTR [rbp-0x39],al : 1346 while v > 0 { 0 : 15f39: mov rax,rdi 0 : 15f3c: shr rax,0xd 0 : 15f40: mov r15d,0xd 0 : 15f46: lea r13,[rbp-0x39] 0 : 15f4a: cmp rax,0x48c27395 0 : 15f50: jb 16120 : 1353 v /= 10; 0 : 15f56: mov rdx,rdi 0 : 15f59: movabs rax,0x384b84d092ed0385 0 : 15f63: mulx rax,rax,rax 0 : 15f68: shr rax,0x29 : 1358 buf[n] = b'0' + (v % 10) as u8; 0 : 15f6c: imul rcx,rax,0x1999999a 0 : 15f73: shr rcx,0x20 0 : 15f77: add ecx,ecx 0 : 15f79: lea ecx,[rcx+rcx*4] 0 : 15f7c: sub eax,ecx 0 : 15f7e: or al,0x30 0 : 15f80: mov BYTE PTR [rbp-0x3a],al 0 : 15f83: mov r15d,0xe 0 : 15f89: lea r13,[rbp-0x3a] : 1368 while v > 0 { 0 : 15f8d: movabs rax,0x5af3107a4000 0 : 15f97: cmp rdi,rax 0 : 15f9a: jb 16120 : 1372 v /= 10; 0 : 15fa0: mov rdx,rdi 0 : 15fa3: movabs rax,0xb424dc35095cd81 0 : 15fad: mulx rax,rax,rax 0 : 15fb2: shr rax,0x2a : 1377 buf[n] = b'0' + (v % 10) as u8; 0 : 15fb6: imul rcx,rax,0x1999999a 0 : 15fbd: shr rcx,0x20 0 : 15fc1: add ecx,ecx 0 : 15fc3: lea ecx,[rcx+rcx*4] 0 : 15fc6: sub eax,ecx 0 : 15fc8: or al,0x30 0 : 15fca: mov BYTE PTR [rbp-0x3b],al 0 : 15fcd: mov r15d,0xf 0 : 15fd3: lea r13,[rbp-0x3b] : 1387 while v > 0 { 0 : 15fd7: movabs rax,0x38d7ea4c68000 0 : 15fe1: cmp rdi,rax 0 : 15fe4: jb 16120 : 1391 v /= 10; 0 : 15fea: mov rdx,rdi 0 : 15fed: shr rdx,0xf 0 : 15ff1: movabs rax,0x24075f3dceac3 0 : 15ffb: mulx rax,rax,rax 0 : 16000: shr rax,0x14 : 1397 buf[n] = b'0' + (v % 10) as u8; 0 : 16004: imul ecx,eax,0x6667 0 : 1600a: shr ecx,0x11 0 : 1600d: and ecx,0xfffffffe 0 : 16010: lea ecx,[rcx+rcx*4] 0 : 16013: sub eax,ecx 0 : 16015: or al,0x30 0 : 16017: mov BYTE PTR [rbp-0x3c],al 0 : 1601a: mov r15d,0x10 0 : 16020: lea r13,[rbp-0x3c] : 1407 while v > 0 { 0 : 16024: movabs rax,0x2386f26fc10000 0 : 1602e: cmp rdi,rax 0 : 16031: jb 16120 : 1411 v /= 10; 0 : 16037: mov rdx,rdi 0 : 1603a: movabs rax,0x39a5652fb1137857 0 : 16044: mulx rax,rax,rax 0 : 16049: shr rax,0x33 : 1416 buf[n] = b'0' + (v % 10) as u8; 0 : 1604d: imul ecx,eax,0x199a 0 : 16053: shr ecx,0xf 0 : 16056: and ecx,0xfffffffe 0 : 16059: lea ecx,[rcx+rcx*4] 0 : 1605c: sub eax,ecx 0 : 1605e: or al,0x30 0 : 16060: mov BYTE PTR [rbp-0x3d],al 0 : 16063: mov r15d,0x11 0 : 16069: lea r13,[rbp-0x3d] : 1426 while v > 0 { 0 : 1606d: movabs rax,0x16345785d8a0000 0 : 16077: cmp rdi,rax 0 : 1607a: jb 16120 : 1430 v /= 10; 0 : 16080: mov rdx,rdi 0 : 16083: shr rdx,0x11 0 : 16087: movabs rax,0x5c3bd5191b53 0 : 16091: mulx rax,rax,rax 0 : 16096: shr eax,0x16 : 1436 buf[n] = b'0' + (v % 10) as u8; 0 : 16099: imul ecx,eax,0xcd 0 : 1609f: shr ecx,0xa 0 : 160a2: and ecx,0xfffffffe 0 : 160a5: lea ecx,[rcx+rcx*4] 0 : 160a8: sub al,cl 0 : 160aa: or al,0x30 0 : 160ac: mov BYTE PTR [rbp-0x3e],al 0 : 160af: mov r15d,0x12 0 : 160b5: lea r13,[rbp-0x3e] : 1446 while v > 0 { 0 : 160b9: movabs rax,0xde0b6b3a7640000 0 : 160c3: cmp rdi,rax 0 : 160c6: jb 16120 : 1450 v /= 10; 0 : 160c8: mov rdx,rdi 0 : 160cb: shr rdx,0x12 0 : 160cf: movabs rax,0x49c97747490f 0 : 160d9: mulx rax,rax,rax 0 : 160de: shr eax,0x18 : 1456 buf[n] = b'0' + (v % 10) as u8; 0 : 160e1: lea ecx,[rax-0xa] 0 : 160e4: movabs rdx,0x8ac7230489e80000 0 : 160ee: cmp rdi,rdx 0 : 160f1: movzx ecx,cl 0 : 160f4: cmovb ecx,eax 0 : 160f7: or cl,0x30 0 : 160fa: mov BYTE PTR [rbp-0x3f],cl 0 : 160fd: mov r15d,0x13 0 : 16103: lea r13,[rbp-0x3f] 0 : 16107: cmp rdi,rdx : 1467 while v > 0 { 0 : 1610a: jb 16120 : 1469 buf[n] = b'0' + (v % 10) as u8; 0 : 1610c: mov BYTE PTR [rbp-0x40],0x31 0 : 16110: mov r15d,0x14 0 : 16116: lea r13,[rbp-0x40] 0 : 1611a: nop WORD PTR [rax+rax*1+0x0] 0 : 16120: mov rax,QWORD PTR [rbp-0x168] 0 : 16127: sub rax,rbx 0 : 1612a: cmp r15,rax 0 : 1612d: ja 16172 0 : 1612f: mov rdi,QWORD PTR [rbp-0x160] 0 : 16136: add rdi,rbx 0 : 16139: mov rsi,r13 0 : 1613c: mov rdx,r15 0 : 1613f: vzeroupper 0 : 16142: call QWORD PTR [rip+0x411e0] # 57328 0 : 16148: add rbx,r15 0 : 1614b: jmp 15b2b 0 : 16150: cmp rbx,QWORD PTR [rbp-0x168] 0 : 16157: jne 15b1d 0 : 1615d: lea rdi,[rbp-0x168] 0 : 16164: vzeroupper 0 : 16167: call QWORD PTR [rip+0x411b3] # 57320 <_DYNAMIC+0x280> 0 : 1616d: jmp 15b1d 0 : 16172: lea rdi,[rbp-0x168] 0 : 16179: mov rsi,rbx 0 : 1617c: mov rdx,r15 0 : 1617f: vzeroupper 0 : 16182: call 14c30 ::reserve::do_reserve_and_handle> 0 : 16187: mov rbx,QWORD PTR [rbp-0x158] 0 : 1618e: jmp 1612f 0 : 16190: cmp rbx,QWORD PTR [rbp-0x168] 0 : 16197: jne 161a9 0 : 16199: lea rdi,[rbp-0x168] 0 : 161a0: vzeroupper 0 : 161a3: call QWORD PTR [rip+0x41177] # 57320 <_DYNAMIC+0x280> 0 : 161a9: mov rax,QWORD PTR [rbp-0x160] 0 : 161b0: mov BYTE PTR [rax+rbx*1],0xa 0 : 161b4: inc rbx 0 : 161b7: mov QWORD PTR [rbp-0x158],rbx : 1508 out.push(b' '); : 1509 } : 1510 push_u64(&mut out, v); : 1511 } : 1512 out.push(b'\n'); : 1513 io::stdout().write_all(&out).unwrap(); 0 : 161be: vzeroupper 0 : 161c1: call QWORD PTR [rip+0x41169] # 57330 <_DYNAMIC+0x290> 0 : 161c7: mov QWORD PTR [rbp-0x180],rax 0 : 161ce: mov rsi,QWORD PTR [rbp-0x160] 0 : 161d5: mov rdx,QWORD PTR [rbp-0x158] 0 : 161dc: lea rdi,[rbp-0x180] 0 : 161e3: call QWORD PTR [rip+0x4114f] # 57338 <_DYNAMIC+0x298> 0 : 161e9: test rax,rax 0 : 161ec: jne 16309 : 1523 } 0 : 161f2: mov rsi,QWORD PTR [rbp-0x168] 0 : 161f9: test rsi,rsi 0 : 161fc: je 16210 0 : 161fe: mov rdi,QWORD PTR [rbp-0x160] 0 : 16205: mov edx,0x1 0 : 1620a: call QWORD PTR [rip+0x410c0] # 572d0 <_DYNAMIC+0x230> 0 : 16210: mov rsi,QWORD PTR [rbp-0x98] 0 : 16217: test rsi,rsi 0 : 1621a: je 1622f 0 : 1621c: shl rsi,0x3 0 : 16220: mov edx,0x8 0 : 16225: mov rdi,QWORD PTR [rbp-0x70] 0 : 16229: call QWORD PTR [rip+0x410a1] # 572d0 <_DYNAMIC+0x230> 0 : 1622f: mov rsi,QWORD PTR [rbp-0x90] 0 : 16236: test rsi,rsi 0 : 16239: je 1624e 0 : 1623b: shl rsi,0x4 0 : 1623f: mov edx,0x10 0 : 16244: mov rdi,QWORD PTR [rbp-0x48] 0 : 16248: call QWORD PTR [rip+0x41082] # 572d0 <_DYNAMIC+0x230> 0 : 1624e: mov rsi,QWORD PTR [rbp-0xa0] 0 : 16255: test rsi,rsi 0 : 16258: je 1626d 0 : 1625a: shl rsi,0x3 0 : 1625e: mov edx,0x8 0 : 16263: mov rdi,QWORD PTR [rbp-0x60] 0 : 16267: call QWORD PTR [rip+0x41063] # 572d0 <_DYNAMIC+0x230> 0 : 1626d: mov rsi,QWORD PTR [rbp-0xa8] 0 : 16274: test rsi,rsi 0 : 16277: je 1628c 0 : 16279: shl rsi,0x3 0 : 1627d: mov edx,0x8 0 : 16282: mov rdi,QWORD PTR [rbp-0x50] 0 : 16286: call QWORD PTR [rip+0x41044] # 572d0 <_DYNAMIC+0x230> 0 : 1628c: mov rsi,QWORD PTR [rbp-0xd8] 0 : 16293: test rsi,rsi 0 : 16296: sete al 0 : 16299: mov rcx,QWORD PTR [rbp-0xb0] 0 : 162a0: or cl,al 0 : 162a2: cmp cl,0x1 0 : 162a5: je 162b5 0 : 162a7: mov edx,0x1 0 : 162ac: mov rdi,r14 0 : 162af: call QWORD PTR [rip+0x4101b] # 572d0 <_DYNAMIC+0x230> 0 : 162b5: cmp BYTE PTR [rbp-0x64],0x0 0 : 162b9: jne 162c7 : 1570 let _ = munmap(self.ptr as *mut core::ffi::c_void, self.len); 0 : 162bb: mov rdi,r14 0 : 162be: mov rsi,r12 0 : 162c1: call QWORD PTR [rip+0x41079] # 57340 : 1574 } 0 : 162c7: add rsp,0x158 0 : 162ce: pop rbx 0 : 162cf: pop r12 0 : 162d1: pop r13 0 : 162d3: pop r14 0 : 162d5: pop r15 0 : 162d7: pop rbp 0 : 162d8: ret 0 : 162d9: mov QWORD PTR [rbp-0x90],rdx 0 : 162e0: lea rdi,[rip+0xffffffffffff1a29] # 7d10 0 : 162e7: lea rcx,[rip+0x3f07a] # 55368 <__frame_dummy_init_array_entry+0x38> 0 : 162ee: lea r8,[rip+0x3f093] # 55388 <__frame_dummy_init_array_entry+0x58> 0 : 162f5: lea rdx,[rbp-0x90] 0 : 162fc: mov esi,0x2b 0 : 16301: call QWORD PTR [rip+0x41041] # 57348 <_DYNAMIC+0x2a8> 0 : 16307: jmp 16331 0 : 16309: mov QWORD PTR [rbp-0x40],rax 0 : 1630d: lea rdi,[rip+0xffffffffffff19fc] # 7d10 0 : 16314: lea rcx,[rip+0x3f04d] # 55368 <__frame_dummy_init_array_entry+0x38> 0 : 1631b: lea r8,[rip+0x3f07e] # 553a0 <__frame_dummy_init_array_entry+0x70> 0 : 16322: lea rdx,[rbp-0x40] 0 : 16326: mov esi,0x2b 0 : 1632b: call QWORD PTR [rip+0x41017] # 57348 <_DYNAMIC+0x2a8> 0 : 16331: ud2 0 : 16333: jmp 16335 0 : 16335: mov r15,rax 0 : 16338: jmp 16350 0 : 1633a: jmp 163d9 0 : 1633f: mov r15,rax 0 : 16342: jmp 16385 0 : 16344: mov r15,rax 0 : 16347: lea rdi,[rbp-0x40] 0 : 1634b: call 14a60 > 0 : 16350: mov rsi,QWORD PTR [rbp-0x168] 0 : 16357: test rsi,rsi 0 : 1635a: je 163b8 0 : 1635c: mov rdi,QWORD PTR [rbp-0x160] 0 : 16363: mov edx,0x1 0 : 16368: call QWORD PTR [rip+0x40f62] # 572d0 <_DYNAMIC+0x230> 0 : 1636e: jmp 163b8 0 : 16370: call QWORD PTR [rip+0x40fda] # 57350 <_DYNAMIC+0x2b0> 0 : 16376: mov r15,rax 0 : 16379: lea rdi,[rbp-0x90] 0 : 16380: call 14a60 > : 1619 }; 0 : 16385: mov rsi,QWORD PTR [rbp-0x168] 0 : 1638c: test rsi,rsi 0 : 1638f: je 16483 0 : 16395: mov rdi,QWORD PTR [rbp-0x160] 0 : 1639c: mov edx,0x1 0 : 163a1: call QWORD PTR [rip+0x40f29] # 572d0 <_DYNAMIC+0x230> 0 : 163a7: mov rdi,r15 0 : 163aa: call 542f0 <_Unwind_Resume@plt> 0 : 163af: call QWORD PTR [rip+0x40f9b] # 57350 <_DYNAMIC+0x2b0> 0 : 163b5: mov r15,rax 0 : 163b8: mov rsi,QWORD PTR [rbp-0x98] 0 : 163bf: test rsi,rsi 0 : 163c2: je 163dc 0 : 163c4: shl rsi,0x3 0 : 163c8: mov edx,0x8 0 : 163cd: mov rdi,QWORD PTR [rbp-0x70] 0 : 163d1: call QWORD PTR [rip+0x40ef9] # 572d0 <_DYNAMIC+0x230> 0 : 163d7: jmp 163dc 0 : 163d9: mov r15,rax : 1639 } 0 : 163dc: mov rsi,QWORD PTR [rbp-0x90] 0 : 163e3: test rsi,rsi 0 : 163e6: je 16403 0 : 163e8: mov rdi,QWORD PTR [rbp-0x88] 0 : 163ef: shl rsi,0x4 0 : 163f3: mov edx,0x10 0 : 163f8: call QWORD PTR [rip+0x40ed2] # 572d0 <_DYNAMIC+0x230> 0 : 163fe: jmp 16403 0 : 16400: mov r15,rax 0 : 16403: mov rsi,QWORD PTR [rbp-0xa0] 0 : 1640a: test rsi,rsi 0 : 1640d: je 16427 0 : 1640f: shl rsi,0x3 0 : 16413: mov edx,0x8 0 : 16418: mov rdi,QWORD PTR [rbp-0x60] 0 : 1641c: call QWORD PTR [rip+0x40eae] # 572d0 <_DYNAMIC+0x230> 0 : 16422: jmp 16427 0 : 16424: mov r15,rax 0 : 16427: mov rsi,QWORD PTR [rbp-0xa8] 0 : 1642e: test rsi,rsi 0 : 16431: je 1644b 0 : 16433: shl rsi,0x3 0 : 16437: mov edx,0x8 0 : 1643c: mov rdi,QWORD PTR [rbp-0x50] 0 : 16440: call QWORD PTR [rip+0x40e8a] # 572d0 <_DYNAMIC+0x230> 0 : 16446: jmp 1644b 0 : 16448: mov r15,rax 0 : 1644b: mov rsi,QWORD PTR [rbp-0xd8] 0 : 16452: test rsi,rsi 0 : 16455: sete al 0 : 16458: mov rcx,QWORD PTR [rbp-0xb0] 0 : 1645f: or cl,al 0 : 16461: jne 16471 0 : 16463: mov edx,0x1 0 : 16468: mov rdi,r14 0 : 1646b: call QWORD PTR [rip+0x40e5f] # 572d0 <_DYNAMIC+0x230> 0 : 16471: cmp BYTE PTR [rbp-0x64],0x0 0 : 16475: jne 16483 : 1678 let _ = munmap(self.ptr as *mut core::ffi::c_void, self.len); 0 : 16477: mov rdi,r14 0 : 1647a: mov rsi,r12 0 : 1647d: call QWORD PTR [rip+0x40ebd] # 57340 0 : 16483: mov rdi,r15 0 : 16486: call 542f0 <_Unwind_Resume@plt>