long bread(void *buf, long nbytes) {
  long sum = 0;
  register long *p, *next;
  register char *end;
  p = (long *)buf;
  end = (char *)buf + nbytes;
  for (next = p + 128; (void *)next <= (void *)end; p = next, next += 128) {
    sum +=
        p[0] + p[1] + p[2] + p[3] + p[4] + p[5] + p[6] + p[7] + p[8] + p[9] +
        p[10] + p[11] + p[12] + p[13] + p[14] + p[15] + p[16] + p[17] + p[18] +
        p[19] + p[20] + p[21] + p[22] + p[23] + p[24] + p[25] + p[26] + p[27] +
        p[28] + p[29] + p[30] + p[31] + p[32] + p[33] + p[34] + p[35] + p[36] +
        p[37] + p[38] + p[39] + p[40] + p[41] + p[42] + p[43] + p[44] + p[45] +
        p[46] + p[47] + p[48] + p[49] + p[50] + p[51] + p[52] + p[53] + p[54] +
        p[55] + p[56] + p[57] + p[58] + p[59] + p[60] + p[61] + p[62] + p[63] +
        p[64] + p[65] + p[66] + p[67] + p[68] + p[69] + p[70] + p[71] + p[72] +
        p[73] + p[74] + p[75] + p[76] + p[77] + p[78] + p[79] + p[80] + p[81] +
        p[82] + p[83] + p[84] + p[85] + p[86] + p[87] + p[88] + p[89] + p[90] +
        p[91] + p[92] + p[93] + p[94] + p[95] + p[96] + p[97] + p[98] + p[99] +
        p[100] + p[101] + p[102] + p[103] + p[104] + p[105] + p[106] + p[107] +
        p[108] + p[109] + p[110] + p[111] + p[112] + p[113] + p[114] + p[115] +
        p[116] + p[117] + p[118] + p[119] + p[120] + p[121] + p[122] + p[123] +
        p[124] + p[125] + p[126] + p[127];
  }
  for (next = p + 16; (void *)next <= (void *)end; p = next, next += 16) {
    sum += p[0] + p[1] + p[2] + p[3] + p[4] + p[5] + p[6] + p[7] + p[8] + p[9] +
           p[10] + p[11] + p[12] + p[13] + p[14] + p[15];
  }
  for (next = p + 1; (void *)next <= (void *)end; p = next, next++) {
    sum += *p;
  }
  return sum;
}


x86 assembly (clang, -O0):
<bread>:
push   %rbp
mov    %rsp,%rbp
mov    %rdi,-0x8(%rbp)
mov    %rsi,-0x10(%rbp)
movq   $0x0,-0x18(%rbp)
mov    -0x8(%rbp),%rax
mov    %rax,-0x20(%rbp)
mov    -0x8(%rbp),%rax
add    -0x10(%rbp),%rax
mov    %rax,-0x30(%rbp)
mov    -0x20(%rbp),%rax
add    $0x400,%rax
mov    %rax,-0x28(%rbp)
mov    -0x28(%rbp),%rax
cmp    -0x30(%rbp),%rax
ja     16b6 <bread+0x5b6>
mov    -0x20(%rbp),%rax
mov    (%rax),%rax
mov    -0x20(%rbp),%rcx
add    0x8(%rcx),%rax
mov    -0x20(%rbp),%rcx
add    0x10(%rcx),%rax
mov    -0x20(%rbp),%rcx
add    0x18(%rcx),%rax
mov    -0x20(%rbp),%rcx
add    0x20(%rcx),%rax
mov    -0x20(%rbp),%rcx
add    0x28(%rcx),%rax
mov    -0x20(%rbp),%rcx
add    0x30(%rcx),%rax
mov    -0x20(%rbp),%rcx
add    0x38(%rcx),%rax
mov    -0x20(%rbp),%rcx
add    0x40(%rcx),%rax
mov    -0x20(%rbp),%rcx
add    0x48(%rcx),%rax
mov    -0x20(%rbp),%rcx
add    0x50(%rcx),%rax
mov    -0x20(%rbp),%rcx
add    0x58(%rcx),%rax
mov    -0x20(%rbp),%rcx
add    0x60(%rcx),%rax
mov    -0x20(%rbp),%rcx
add    0x68(%rcx),%rax
mov    -0x20(%rbp),%rcx
add    0x70(%rcx),%rax
mov    -0x20(%rbp),%rcx
add    0x78(%rcx),%rax
mov    -0x20(%rbp),%rcx
add    0x80(%rcx),%rax
mov    -0x20(%rbp),%rcx
add    0x88(%rcx),%rax
mov    -0x20(%rbp),%rcx
add    0x90(%rcx),%rax
mov    -0x20(%rbp),%rcx
add    0x98(%rcx),%rax
mov    -0x20(%rbp),%rcx
add    0xa0(%rcx),%rax
mov    -0x20(%rbp),%rcx
add    0xa8(%rcx),%rax
mov    -0x20(%rbp),%rcx
add    0xb0(%rcx),%rax
mov    -0x20(%rbp),%rcx
add    0xb8(%rcx),%rax
mov    -0x20(%rbp),%rcx
add    0xc0(%rcx),%rax
mov    -0x20(%rbp),%rcx
add    0xc8(%rcx),%rax
mov    -0x20(%rbp),%rcx
add    0xd0(%rcx),%rax
mov    -0x20(%rbp),%rcx
add    0xd8(%rcx),%rax
mov    -0x20(%rbp),%rcx
add    0xe0(%rcx),%rax
mov    -0x20(%rbp),%rcx
add    0xe8(%rcx),%rax
mov    -0x20(%rbp),%rcx
add    0xf0(%rcx),%rax
mov    -0x20(%rbp),%rcx
add    0xf8(%rcx),%rax
mov    -0x20(%rbp),%rcx
add    0x100(%rcx),%rax
mov    -0x20(%rbp),%rcx
add    0x108(%rcx),%rax
mov    -0x20(%rbp),%rcx
add    0x110(%rcx),%rax
mov    -0x20(%rbp),%rcx
add    0x118(%rcx),%rax
mov    -0x20(%rbp),%rcx
add    0x120(%rcx),%rax
mov    -0x20(%rbp),%rcx
add    0x128(%rcx),%rax
mov    -0x20(%rbp),%rcx
add    0x130(%rcx),%rax
mov    -0x20(%rbp),%rcx
add    0x138(%rcx),%rax
mov    -0x20(%rbp),%rcx
add    0x140(%rcx),%rax
mov    -0x20(%rbp),%rcx
add    0x148(%rcx),%rax
mov    -0x20(%rbp),%rcx
add    0x150(%rcx),%rax
mov    -0x20(%rbp),%rcx
add    0x158(%rcx),%rax
mov    -0x20(%rbp),%rcx
add    0x160(%rcx),%rax
mov    -0x20(%rbp),%rcx
add    0x168(%rcx),%rax
mov    -0x20(%rbp),%rcx
add    0x170(%rcx),%rax
mov    -0x20(%rbp),%rcx
add    0x178(%rcx),%rax
mov    -0x20(%rbp),%rcx
add    0x180(%rcx),%rax
mov    -0x20(%rbp),%rcx
add    0x188(%rcx),%rax
mov    -0x20(%rbp),%rcx
add    0x190(%rcx),%rax
mov    -0x20(%rbp),%rcx
add    0x198(%rcx),%rax
mov    -0x20(%rbp),%rcx
add    0x1a0(%rcx),%rax
mov    -0x20(%rbp),%rcx
add    0x1a8(%rcx),%rax
mov    -0x20(%rbp),%rcx
add    0x1b0(%rcx),%rax
mov    -0x20(%rbp),%rcx
add    0x1b8(%rcx),%rax
mov    -0x20(%rbp),%rcx
add    0x1c0(%rcx),%rax
mov    -0x20(%rbp),%rcx
add    0x1c8(%rcx),%rax
mov    -0x20(%rbp),%rcx
add    0x1d0(%rcx),%rax
mov    -0x20(%rbp),%rcx
add    0x1d8(%rcx),%rax
mov    -0x20(%rbp),%rcx
add    0x1e0(%rcx),%rax
mov    -0x20(%rbp),%rcx
add    0x1e8(%rcx),%rax
mov    -0x20(%rbp),%rcx
add    0x1f0(%rcx),%rax
mov    -0x20(%rbp),%rcx
add    0x1f8(%rcx),%rax
mov    -0x20(%rbp),%rcx
add    0x200(%rcx),%rax
mov    -0x20(%rbp),%rcx
add    0x208(%rcx),%rax
mov    -0x20(%rbp),%rcx
add    0x210(%rcx),%rax
mov    -0x20(%rbp),%rcx
add    0x218(%rcx),%rax
mov    -0x20(%rbp),%rcx
add    0x220(%rcx),%rax
mov    -0x20(%rbp),%rcx
add    0x228(%rcx),%rax
mov    -0x20(%rbp),%rcx
add    0x230(%rcx),%rax
mov    -0x20(%rbp),%rcx
add    0x238(%rcx),%rax
mov    -0x20(%rbp),%rcx
add    0x240(%rcx),%rax
mov    -0x20(%rbp),%rcx
add    0x248(%rcx),%rax
mov    -0x20(%rbp),%rcx
add    0x250(%rcx),%rax
mov    -0x20(%rbp),%rcx
add    0x258(%rcx),%rax
mov    -0x20(%rbp),%rcx
add    0x260(%rcx),%rax
mov    -0x20(%rbp),%rcx
add    0x268(%rcx),%rax
mov    -0x20(%rbp),%rcx
add    0x270(%rcx),%rax
mov    -0x20(%rbp),%rcx
add    0x278(%rcx),%rax
mov    -0x20(%rbp),%rcx
add    0x280(%rcx),%rax
mov    -0x20(%rbp),%rcx
add    0x288(%rcx),%rax
mov    -0x20(%rbp),%rcx
add    0x290(%rcx),%rax
mov    -0x20(%rbp),%rcx
add    0x298(%rcx),%rax
mov    -0x20(%rbp),%rcx
add    0x2a0(%rcx),%rax
mov    -0x20(%rbp),%rcx
add    0x2a8(%rcx),%rax
mov    -0x20(%rbp),%rcx
add    0x2b0(%rcx),%rax
mov    -0x20(%rbp),%rcx
add    0x2b8(%rcx),%rax
mov    -0x20(%rbp),%rcx
add    0x2c0(%rcx),%rax
mov    -0x20(%rbp),%rcx
add    0x2c8(%rcx),%rax
mov    -0x20(%rbp),%rcx
add    0x2d0(%rcx),%rax
mov    -0x20(%rbp),%rcx
add    0x2d8(%rcx),%rax
mov    -0x20(%rbp),%rcx
add    0x2e0(%rcx),%rax
mov    -0x20(%rbp),%rcx
add    0x2e8(%rcx),%rax
mov    -0x20(%rbp),%rcx
add    0x2f0(%rcx),%rax
mov    -0x20(%rbp),%rcx
add    0x2f8(%rcx),%rax
mov    -0x20(%rbp),%rcx
add    0x300(%rcx),%rax
mov    -0x20(%rbp),%rcx
add    0x308(%rcx),%rax
mov    -0x20(%rbp),%rcx
add    0x310(%rcx),%rax
mov    -0x20(%rbp),%rcx
add    0x318(%rcx),%rax
mov    -0x20(%rbp),%rcx
add    0x320(%rcx),%rax
mov    -0x20(%rbp),%rcx
add    0x328(%rcx),%rax
mov    -0x20(%rbp),%rcx
add    0x330(%rcx),%rax
mov    -0x20(%rbp),%rcx
add    0x338(%rcx),%rax
mov    -0x20(%rbp),%rcx
add    0x340(%rcx),%rax
mov    -0x20(%rbp),%rcx
add    0x348(%rcx),%rax
mov    -0x20(%rbp),%rcx
add    0x350(%rcx),%rax
mov    -0x20(%rbp),%rcx
add    0x358(%rcx),%rax
mov    -0x20(%rbp),%rcx
add    0x360(%rcx),%rax
mov    -0x20(%rbp),%rcx
add    0x368(%rcx),%rax
mov    -0x20(%rbp),%rcx
add    0x370(%rcx),%rax
mov    -0x20(%rbp),%rcx
add    0x378(%rcx),%rax
mov    -0x20(%rbp),%rcx
add    0x380(%rcx),%rax
mov    -0x20(%rbp),%rcx
add    0x388(%rcx),%rax
mov    -0x20(%rbp),%rcx
add    0x390(%rcx),%rax
mov    -0x20(%rbp),%rcx
add    0x398(%rcx),%rax
mov    -0x20(%rbp),%rcx
add    0x3a0(%rcx),%rax
mov    -0x20(%rbp),%rcx
add    0x3a8(%rcx),%rax
mov    -0x20(%rbp),%rcx
add    0x3b0(%rcx),%rax
mov    -0x20(%rbp),%rcx
add    0x3b8(%rcx),%rax
mov    -0x20(%rbp),%rcx
add    0x3c0(%rcx),%rax
mov    -0x20(%rbp),%rcx
add    0x3c8(%rcx),%rax
mov    -0x20(%rbp),%rcx
add    0x3d0(%rcx),%rax
mov    -0x20(%rbp),%rcx
add    0x3d8(%rcx),%rax
mov    -0x20(%rbp),%rcx
add    0x3e0(%rcx),%rax
mov    -0x20(%rbp),%rcx
add    0x3e8(%rcx),%rax
mov    -0x20(%rbp),%rcx
add    0x3f0(%rcx),%rax
mov    -0x20(%rbp),%rcx
add    0x3f8(%rcx),%rax
add    -0x18(%rbp),%rax
mov    %rax,-0x18(%rbp)
mov    -0x28(%rbp),%rax
mov    %rax,-0x20(%rbp)
mov    -0x28(%rbp),%rax
add    $0x400,%rax
mov    %rax,-0x28(%rbp)
jmp    1136 <bread+0x36>
mov    -0x20(%rbp),%rax
add    $0x80,%rax
mov    %rax,-0x28(%rbp)
mov    -0x28(%rbp),%rax
cmp    -0x30(%rbp),%rax
ja     1774 <bread+0x674>
mov    -0x20(%rbp),%rax
mov    (%rax),%rax
mov    -0x20(%rbp),%rcx
add    0x8(%rcx),%rax
mov    -0x20(%rbp),%rcx
add    0x10(%rcx),%rax
mov    -0x20(%rbp),%rcx
add    0x18(%rcx),%rax
mov    -0x20(%rbp),%rcx
add    0x20(%rcx),%rax
mov    -0x20(%rbp),%rcx
add    0x28(%rcx),%rax
mov    -0x20(%rbp),%rcx
add    0x30(%rcx),%rax
mov    -0x20(%rbp),%rcx
add    0x38(%rcx),%rax
mov    -0x20(%rbp),%rcx
add    0x40(%rcx),%rax
mov    -0x20(%rbp),%rcx
add    0x48(%rcx),%rax
mov    -0x20(%rbp),%rcx
add    0x50(%rcx),%rax
mov    -0x20(%rbp),%rcx
add    0x58(%rcx),%rax
mov    -0x20(%rbp),%rcx
add    0x60(%rcx),%rax
mov    -0x20(%rbp),%rcx
add    0x68(%rcx),%rax
mov    -0x20(%rbp),%rcx
add    0x70(%rcx),%rax
mov    -0x20(%rbp),%rcx
add    0x78(%rcx),%rax
add    -0x18(%rbp),%rax
mov    %rax,-0x18(%rbp)
mov    -0x28(%rbp),%rax
mov    %rax,-0x20(%rbp)
mov    -0x28(%rbp),%rax
add    $0x80,%rax
mov    %rax,-0x28(%rbp)
jmp    16c4 <bread+0x5c4>
mov    -0x20(%rbp),%rax
add    $0x8,%rax
mov    %rax,-0x28(%rbp)
mov    -0x28(%rbp),%rax
cmp    -0x30(%rbp),%rax
ja     17b6 <bread+0x6b6>
mov    -0x20(%rbp),%rax
mov    (%rax),%rax
add    -0x18(%rbp),%rax
mov    %rax,-0x18(%rbp)
mov    -0x28(%rbp),%rax
mov    %rax,-0x20(%rbp)
mov    -0x28(%rbp),%rax
add    $0x8,%rax
mov    %rax,-0x28(%rbp)
jmp    1780 <bread+0x680>
mov    -0x18(%rbp),%rax
pop    %rbp
ret

x86 assembly (clang, -O2):
<bread>:
lea    (%rdi,%rsi,1),%r8
xor    %eax,%eax
cmp    $0x400,%rsi
jge    1117 <bread+0x17>
mov    %rdi,%rcx
jmp    1441 <bread+0x341>
mov    %rdi,%rdx
nopw   0x0(%rax,%rax,1)
movdqu 0x2a0(%rdx),%xmm0
movdqu 0xa0(%rdx),%xmm1
paddq  %xmm0,%xmm1
movdqu 0x3a0(%rdx),%xmm0
movdqu 0x1a0(%rdx),%xmm12
paddq  %xmm0,%xmm12
paddq  %xmm1,%xmm12
movdqu 0x220(%rdx),%xmm8
movdqu 0x320(%rdx),%xmm0
movdqu 0x120(%rdx),%xmm11
paddq  %xmm0,%xmm11
movdqu 0x2e0(%rdx),%xmm0
movdqu 0xe0(%rdx),%xmm1
paddq  %xmm0,%xmm1
movdqu 0x3e0(%rdx),%xmm0
movdqu 0x1e0(%rdx),%xmm2
paddq  %xmm0,%xmm2
paddq  %xmm1,%xmm2
movdqu 0x260(%rdx),%xmm0
movdqu 0x60(%rdx),%xmm1
paddq  %xmm0,%xmm1
movdqu 0x360(%rdx),%xmm0
movdqu 0x160(%rdx),%xmm3
paddq  %xmm0,%xmm3
paddq  %xmm1,%xmm3
paddq  %xmm2,%xmm3
movdqu 0x280(%rdx),%xmm0
movdqu 0x80(%rdx),%xmm1
paddq  %xmm0,%xmm1
movdqu 0x380(%rdx),%xmm0
movdqu 0x180(%rdx),%xmm4
paddq  %xmm0,%xmm4
paddq  %xmm1,%xmm4
movdqu 0x200(%rdx),%xmm9
movdqu 0x300(%rdx),%xmm0
movdqu 0x100(%rdx),%xmm13
paddq  %xmm0,%xmm13
movdqu 0x2c0(%rdx),%xmm0
movdqu 0xc0(%rdx),%xmm1
paddq  %xmm0,%xmm1
movdqu 0x3c0(%rdx),%xmm0
movdqu 0x1c0(%rdx),%xmm2
paddq  %xmm0,%xmm2
paddq  %xmm1,%xmm2
movdqu 0x240(%rdx),%xmm0
movdqu 0x40(%rdx),%xmm5
paddq  %xmm0,%xmm5
movdqu 0x340(%rdx),%xmm0
movdqu 0x140(%rdx),%xmm1
paddq  %xmm0,%xmm1
paddq  %xmm5,%xmm1
paddq  %xmm2,%xmm1
movdqu 0x2b0(%rdx),%xmm0
movdqu 0xb0(%rdx),%xmm2
paddq  %xmm0,%xmm2
movdqu 0x3b0(%rdx),%xmm0
movdqu 0x1b0(%rdx),%xmm7
paddq  %xmm0,%xmm7
paddq  %xmm2,%xmm7
movdqu 0x230(%rdx),%xmm10
movdqu 0x330(%rdx),%xmm0
movdqu 0x130(%rdx),%xmm14
paddq  %xmm0,%xmm14
movdqu 0x2f0(%rdx),%xmm0
movdqu 0xf0(%rdx),%xmm2
paddq  %xmm0,%xmm2
movdqu 0x3f0(%rdx),%xmm0
movdqu 0x1f0(%rdx),%xmm6
paddq  %xmm0,%xmm6
paddq  %xmm2,%xmm6
movdqu 0x270(%rdx),%xmm0
movdqu 0x70(%rdx),%xmm5
paddq  %xmm0,%xmm5
movdqu 0x370(%rdx),%xmm0
movdqu 0x170(%rdx),%xmm2
paddq  %xmm0,%xmm2
paddq  %xmm5,%xmm2
paddq  %xmm6,%xmm2
movdqu 0x290(%rdx),%xmm0
movdqu 0x90(%rdx),%xmm5
paddq  %xmm0,%xmm5
movdqu 0x390(%rdx),%xmm6
movdqu 0x190(%rdx),%xmm0
paddq  %xmm6,%xmm0
paddq  %xmm5,%xmm0
movdqu 0x210(%rdx),%xmm5
movdqu (%rdx),%xmm6
paddq  %xmm9,%xmm6
paddq  %xmm13,%xmm6
paddq  %xmm4,%xmm6
paddq  %xmm1,%xmm6
movdqu 0x10(%rdx),%xmm4
paddq  %xmm5,%xmm4
movdqu 0x20(%rdx),%xmm1
paddq  %xmm8,%xmm1
paddq  %xmm11,%xmm1
paddq  %xmm12,%xmm1
paddq  %xmm3,%xmm1
paddq  %xmm6,%xmm1
movdqu 0x30(%rdx),%xmm3
paddq  %xmm10,%xmm3
paddq  %xmm14,%xmm3
paddq  %xmm7,%xmm3
paddq  %xmm2,%xmm3
movdqu 0x310(%rdx),%xmm2
movdqu 0x110(%rdx),%xmm5
paddq  %xmm2,%xmm5
paddq  %xmm4,%xmm5
paddq  %xmm0,%xmm5
movdqu 0x2d0(%rdx),%xmm0
movdqu 0xd0(%rdx),%xmm2
paddq  %xmm0,%xmm2
movdqu 0x3d0(%rdx),%xmm0
movdqu 0x1d0(%rdx),%xmm4
paddq  %xmm0,%xmm4
paddq  %xmm2,%xmm4
movdqu 0x250(%rdx),%xmm0
movdqu 0x50(%rdx),%xmm2
paddq  %xmm0,%xmm2
movdqu 0x350(%rdx),%xmm0
movdqu 0x150(%rdx),%xmm6
paddq  %xmm0,%xmm6
paddq  %xmm2,%xmm6
paddq  %xmm4,%xmm6
paddq  %xmm5,%xmm6
paddq  %xmm3,%xmm6
paddq  %xmm1,%xmm6
pshufd $0xee,%xmm6,%xmm0
paddq  %xmm6,%xmm0
movq   %xmm0,%rcx
add    %rcx,%rax
lea    0x400(%rdx),%rcx
add    $0x800,%rdx
cmp    %rdx,%r8
mov    %rcx,%rdx
jae    1120 <bread+0x20>
lea    0x80(%rcx),%rdx
cmp    %rdx,%r8
jae    1460 <bread+0x360>
mov    %rcx,%rdx
jmp    14ca <bread+0x3ca>
cs nopw 0x0(%rax,%rax,1)
nopl   0x0(%rax)
movdqu 0x50(%rcx),%xmm0
movdqu 0x70(%rcx),%xmm1
movdqu 0x40(%rcx),%xmm2
movdqu 0x60(%rcx),%xmm3
movdqu (%rcx),%xmm4
paddq  %xmm2,%xmm4
movdqu 0x10(%rcx),%xmm2
paddq  %xmm0,%xmm2
movdqu 0x20(%rcx),%xmm0
paddq  %xmm3,%xmm0
paddq  %xmm4,%xmm0
movdqu 0x30(%rcx),%xmm3
paddq  %xmm1,%xmm3
paddq  %xmm2,%xmm3
paddq  %xmm0,%xmm3
pshufd $0xee,%xmm3,%xmm0
paddq  %xmm3,%xmm0
movq   %xmm0,%rdx
add    %rdx,%rax
lea    0x80(%rcx),%rdx
add    $0x100,%rcx
cmp    %rcx,%r8
mov    %rdx,%rcx
jae    1460 <bread+0x360>
lea    0x8(%rdx),%rcx
cmp    %rcx,%r8
jb     15ff <bread+0x4ff>
add    %rdi,%rsi
add    $0x1,%rsi
lea    0x10(%rdx),%r10
cmp    %r10,%rsi
cmova  %rsi,%r10
sub    %rdx,%r10
add    $0xfffffffffffffff7,%r10
cmp    $0x18,%r10
jb     15f0 <bread+0x4f0>
shr    $0x3,%r10
add    $0x1,%r10
mov    %r10,%r9
and    $0xfffffffffffffffc,%r9
movq   %rax,%xmm0
lea    -0x4(%r9),%rdi
mov    %rdi,%rax
shr    $0x2,%rax
add    $0x1,%rax
mov    %eax,%esi
and    $0x3,%esi
cmp    $0xc,%rdi
jae    1530 <bread+0x430>
pxor   %xmm1,%xmm1
xor    %edi,%edi
jmp    1599 <bread+0x499>
and    $0xfffffffffffffffc,%rax
pxor   %xmm1,%xmm1
xor    %edi,%edi
nopw   0x0(%rax,%rax,1)
movdqu (%rdx,%rdi,8),%xmm2
paddq  %xmm0,%xmm2
movdqu 0x10(%rdx,%rdi,8),%xmm0
paddq  %xmm1,%xmm0
movdqu 0x20(%rdx,%rdi,8),%xmm1
movdqu 0x30(%rdx,%rdi,8),%xmm3
movdqu 0x40(%rdx,%rdi,8),%xmm4
paddq  %xmm1,%xmm4
paddq  %xmm2,%xmm4
movdqu 0x50(%rdx,%rdi,8),%xmm2
paddq  %xmm3,%xmm2
paddq  %xmm0,%xmm2
movdqu 0x60(%rdx,%rdi,8),%xmm0
paddq  %xmm4,%xmm0
movdqu 0x70(%rdx,%rdi,8),%xmm1
paddq  %xmm2,%xmm1
add    $0x10,%rdi
add    $0xfffffffffffffffc,%rax
jne    1540 <bread+0x440>
test   %rsi,%rsi
je     15cc <bread+0x4cc>
lea    (%rdx,%rdi,8),%rax
add    $0x10,%rax
shl    $0x5,%rsi
xor    %edi,%edi
nopl   0x0(%rax)
movdqu -0x10(%rax,%rdi,1),%xmm2
paddq  %xmm2,%xmm0
movdqu (%rax,%rdi,1),%xmm2
paddq  %xmm2,%xmm1
add    $0x20,%rdi
cmp    %rdi,%rsi
jne    15b0 <bread+0x4b0>
paddq  %xmm1,%xmm0
pshufd $0xee,%xmm0,%xmm1
paddq  %xmm0,%xmm1
movq   %xmm1,%rax
cmp    %r9,%r10
je     15ff <bread+0x4ff>
lea    (%rcx,%r9,8),%rcx
lea    (%rdx,%r9,8),%rdx
nopl   0x0(%rax,%rax,1)
add    (%rdx),%rax
mov    %rcx,%rdx
add    $0x8,%rcx
cmp    %rcx,%r8
jae    15f0 <bread+0x4f0>
ret

LLVM IR (-O0):
define i64 @bread(i8* %0, i64 %1) {
%3 = alloca i8*
%4 = alloca i64
%5 = alloca i64
%6 = alloca i64*
%7 = alloca i64*
%8 = alloca i8*
store i8* %0, i8** %3
store i64 %1, i64* %4
store i64 0, i64* %5
%9 = load i8*, i8** %3
%10 = bitcast i8* %9 to i64*
store i64* %10, i64** %6
%11 = load i8*, i8** %3
%12 = load i64, i64* %4
%13 = getelementptr inbounds i8, i8* %11, i64 %12
store i8* %13, i8** %8
%14 = load i64*, i64** %6
%15 = getelementptr inbounds i64, i64* %14, i64 128
store i64* %15, i64** %7
br label %16
16: ; preds = %535, %2
%17 = load i64*, i64** %7
%18 = bitcast i64* %17 to i8*
%19 = load i8*, i8** %8
%20 = icmp ule i8* %18, %19
br i1 %20, label %21, label %539
21: ; preds = %16
%22 = load i64*, i64** %6
%23 = getelementptr inbounds i64, i64* %22, i64 0
%24 = load i64, i64* %23
%25 = load i64*, i64** %6
%26 = getelementptr inbounds i64, i64* %25, i64 1
%27 = load i64, i64* %26
%28 = add nsw i64 %24, %27
%29 = load i64*, i64** %6
%30 = getelementptr inbounds i64, i64* %29, i64 2
%31 = load i64, i64* %30
%32 = add nsw i64 %28, %31
%33 = load i64*, i64** %6
%34 = getelementptr inbounds i64, i64* %33, i64 3
%35 = load i64, i64* %34
%36 = add nsw i64 %32, %35
%37 = load i64*, i64** %6
%38 = getelementptr inbounds i64, i64* %37, i64 4
%39 = load i64, i64* %38
%40 = add nsw i64 %36, %39
%41 = load i64*, i64** %6
%42 = getelementptr inbounds i64, i64* %41, i64 5
%43 = load i64, i64* %42
%44 = add nsw i64 %40, %43
%45 = load i64*, i64** %6
%46 = getelementptr inbounds i64, i64* %45, i64 6
%47 = load i64, i64* %46
%48 = add nsw i64 %44, %47
%49 = load i64*, i64** %6
%50 = getelementptr inbounds i64, i64* %49, i64 7
%51 = load i64, i64* %50
%52 = add nsw i64 %48, %51
%53 = load i64*, i64** %6
%54 = getelementptr inbounds i64, i64* %53, i64 8
%55 = load i64, i64* %54
%56 = add nsw i64 %52, %55
%57 = load i64*, i64** %6
%58 = getelementptr inbounds i64, i64* %57, i64 9
%59 = load i64, i64* %58
%60 = add nsw i64 %56, %59
%61 = load i64*, i64** %6
%62 = getelementptr inbounds i64, i64* %61, i64 10
%63 = load i64, i64* %62
%64 = add nsw i64 %60, %63
%65 = load i64*, i64** %6
%66 = getelementptr inbounds i64, i64* %65, i64 11
%67 = load i64, i64* %66
%68 = add nsw i64 %64, %67
%69 = load i64*, i64** %6
%70 = getelementptr inbounds i64, i64* %69, i64 12
%71 = load i64, i64* %70
%72 = add nsw i64 %68, %71
%73 = load i64*, i64** %6
%74 = getelementptr inbounds i64, i64* %73, i64 13
%75 = load i64, i64* %74
%76 = add nsw i64 %72, %75
%77 = load i64*, i64** %6
%78 = getelementptr inbounds i64, i64* %77, i64 14
%79 = load i64, i64* %78
%80 = add nsw i64 %76, %79
%81 = load i64*, i64** %6
%82 = getelementptr inbounds i64, i64* %81, i64 15
%83 = load i64, i64* %82
%84 = add nsw i64 %80, %83
%85 = load i64*, i64** %6
%86 = getelementptr inbounds i64, i64* %85, i64 16
%87 = load i64, i64* %86
%88 = add nsw i64 %84, %87
%89 = load i64*, i64** %6
%90 = getelementptr inbounds i64, i64* %89, i64 17
%91 = load i64, i64* %90
%92 = add nsw i64 %88, %91
%93 = load i64*, i64** %6
%94 = getelementptr inbounds i64, i64* %93, i64 18
%95 = load i64, i64* %94
%96 = add nsw i64 %92, %95
%97 = load i64*, i64** %6
%98 = getelementptr inbounds i64, i64* %97, i64 19
%99 = load i64, i64* %98
%100 = add nsw i64 %96, %99
%101 = load i64*, i64** %6
%102 = getelementptr inbounds i64, i64* %101, i64 20
%103 = load i64, i64* %102
%104 = add nsw i64 %100, %103
%105 = load i64*, i64** %6
%106 = getelementptr inbounds i64, i64* %105, i64 21
%107 = load i64, i64* %106
%108 = add nsw i64 %104, %107
%109 = load i64*, i64** %6
%110 = getelementptr inbounds i64, i64* %109, i64 22
%111 = load i64, i64* %110
%112 = add nsw i64 %108, %111
%113 = load i64*, i64** %6
%114 = getelementptr inbounds i64, i64* %113, i64 23
%115 = load i64, i64* %114
%116 = add nsw i64 %112, %115
%117 = load i64*, i64** %6
%118 = getelementptr inbounds i64, i64* %117, i64 24
%119 = load i64, i64* %118
%120 = add nsw i64 %116, %119
%121 = load i64*, i64** %6
%122 = getelementptr inbounds i64, i64* %121, i64 25
%123 = load i64, i64* %122
%124 = add nsw i64 %120, %123
%125 = load i64*, i64** %6
%126 = getelementptr inbounds i64, i64* %125, i64 26
%127 = load i64, i64* %126
%128 = add nsw i64 %124, %127
%129 = load i64*, i64** %6
%130 = getelementptr inbounds i64, i64* %129, i64 27
%131 = load i64, i64* %130
%132 = add nsw i64 %128, %131
%133 = load i64*, i64** %6
%134 = getelementptr inbounds i64, i64* %133, i64 28
%135 = load i64, i64* %134
%136 = add nsw i64 %132, %135
%137 = load i64*, i64** %6
%138 = getelementptr inbounds i64, i64* %137, i64 29
%139 = load i64, i64* %138
%140 = add nsw i64 %136, %139
%141 = load i64*, i64** %6
%142 = getelementptr inbounds i64, i64* %141, i64 30
%143 = load i64, i64* %142
%144 = add nsw i64 %140, %143
%145 = load i64*, i64** %6
%146 = getelementptr inbounds i64, i64* %145, i64 31
%147 = load i64, i64* %146
%148 = add nsw i64 %144, %147
%149 = load i64*, i64** %6
%150 = getelementptr inbounds i64, i64* %149, i64 32
%151 = load i64, i64* %150
%152 = add nsw i64 %148, %151
%153 = load i64*, i64** %6
%154 = getelementptr inbounds i64, i64* %153, i64 33
%155 = load i64, i64* %154
%156 = add nsw i64 %152, %155
%157 = load i64*, i64** %6
%158 = getelementptr inbounds i64, i64* %157, i64 34
%159 = load i64, i64* %158
%160 = add nsw i64 %156, %159
%161 = load i64*, i64** %6
%162 = getelementptr inbounds i64, i64* %161, i64 35
%163 = load i64, i64* %162
%164 = add nsw i64 %160, %163
%165 = load i64*, i64** %6
%166 = getelementptr inbounds i64, i64* %165, i64 36
%167 = load i64, i64* %166
%168 = add nsw i64 %164, %167
%169 = load i64*, i64** %6
%170 = getelementptr inbounds i64, i64* %169, i64 37
%171 = load i64, i64* %170
%172 = add nsw i64 %168, %171
%173 = load i64*, i64** %6
%174 = getelementptr inbounds i64, i64* %173, i64 38
%175 = load i64, i64* %174
%176 = add nsw i64 %172, %175
%177 = load i64*, i64** %6
%178 = getelementptr inbounds i64, i64* %177, i64 39
%179 = load i64, i64* %178
%180 = add nsw i64 %176, %179
%181 = load i64*, i64** %6
%182 = getelementptr inbounds i64, i64* %181, i64 40
%183 = load i64, i64* %182
%184 = add nsw i64 %180, %183
%185 = load i64*, i64** %6
%186 = getelementptr inbounds i64, i64* %185, i64 41
%187 = load i64, i64* %186
%188 = add nsw i64 %184, %187
%189 = load i64*, i64** %6
%190 = getelementptr inbounds i64, i64* %189, i64 42
%191 = load i64, i64* %190
%192 = add nsw i64 %188, %191
%193 = load i64*, i64** %6
%194 = getelementptr inbounds i64, i64* %193, i64 43
%195 = load i64, i64* %194
%196 = add nsw i64 %192, %195
%197 = load i64*, i64** %6
%198 = getelementptr inbounds i64, i64* %197, i64 44
%199 = load i64, i64* %198
%200 = add nsw i64 %196, %199
%201 = load i64*, i64** %6
%202 = getelementptr inbounds i64, i64* %201, i64 45
%203 = load i64, i64* %202
%204 = add nsw i64 %200, %203
%205 = load i64*, i64** %6
%206 = getelementptr inbounds i64, i64* %205, i64 46
%207 = load i64, i64* %206
%208 = add nsw i64 %204, %207
%209 = load i64*, i64** %6
%210 = getelementptr inbounds i64, i64* %209, i64 47
%211 = load i64, i64* %210
%212 = add nsw i64 %208, %211
%213 = load i64*, i64** %6
%214 = getelementptr inbounds i64, i64* %213, i64 48
%215 = load i64, i64* %214
%216 = add nsw i64 %212, %215
%217 = load i64*, i64** %6
%218 = getelementptr inbounds i64, i64* %217, i64 49
%219 = load i64, i64* %218
%220 = add nsw i64 %216, %219
%221 = load i64*, i64** %6
%222 = getelementptr inbounds i64, i64* %221, i64 50
%223 = load i64, i64* %222
%224 = add nsw i64 %220, %223
%225 = load i64*, i64** %6
%226 = getelementptr inbounds i64, i64* %225, i64 51
%227 = load i64, i64* %226
%228 = add nsw i64 %224, %227
%229 = load i64*, i64** %6
%230 = getelementptr inbounds i64, i64* %229, i64 52
%231 = load i64, i64* %230
%232 = add nsw i64 %228, %231
%233 = load i64*, i64** %6
%234 = getelementptr inbounds i64, i64* %233, i64 53
%235 = load i64, i64* %234
%236 = add nsw i64 %232, %235
%237 = load i64*, i64** %6
%238 = getelementptr inbounds i64, i64* %237, i64 54
%239 = load i64, i64* %238
%240 = add nsw i64 %236, %239
%241 = load i64*, i64** %6
%242 = getelementptr inbounds i64, i64* %241, i64 55
%243 = load i64, i64* %242
%244 = add nsw i64 %240, %243
%245 = load i64*, i64** %6
%246 = getelementptr inbounds i64, i64* %245, i64 56
%247 = load i64, i64* %246
%248 = add nsw i64 %244, %247
%249 = load i64*, i64** %6
%250 = getelementptr inbounds i64, i64* %249, i64 57
%251 = load i64, i64* %250
%252 = add nsw i64 %248, %251
%253 = load i64*, i64** %6
%254 = getelementptr inbounds i64, i64* %253, i64 58
%255 = load i64, i64* %254
%256 = add nsw i64 %252, %255
%257 = load i64*, i64** %6
%258 = getelementptr inbounds i64, i64* %257, i64 59
%259 = load i64, i64* %258
%260 = add nsw i64 %256, %259
%261 = load i64*, i64** %6
%262 = getelementptr inbounds i64, i64* %261, i64 60
%263 = load i64, i64* %262
%264 = add nsw i64 %260, %263
%265 = load i64*, i64** %6
%266 = getelementptr inbounds i64, i64* %265, i64 61
%267 = load i64, i64* %266
%268 = add nsw i64 %264, %267
%269 = load i64*, i64** %6
%270 = getelementptr inbounds i64, i64* %269, i64 62
%271 = load i64, i64* %270
%272 = add nsw i64 %268, %271
%273 = load i64*, i64** %6
%274 = getelementptr inbounds i64, i64* %273, i64 63
%275 = load i64, i64* %274
%276 = add nsw i64 %272, %275
%277 = load i64*, i64** %6
%278 = getelementptr inbounds i64, i64* %277, i64 64
%279 = load i64, i64* %278
%280 = add nsw i64 %276, %279
%281 = load i64*, i64** %6
%282 = getelementptr inbounds i64, i64* %281, i64 65
%283 = load i64, i64* %282
%284 = add nsw i64 %280, %283
%285 = load i64*, i64** %6
%286 = getelementptr inbounds i64, i64* %285, i64 66
%287 = load i64, i64* %286
%288 = add nsw i64 %284, %287
%289 = load i64*, i64** %6
%290 = getelementptr inbounds i64, i64* %289, i64 67
%291 = load i64, i64* %290
%292 = add nsw i64 %288, %291
%293 = load i64*, i64** %6
%294 = getelementptr inbounds i64, i64* %293, i64 68
%295 = load i64, i64* %294
%296 = add nsw i64 %292, %295
%297 = load i64*, i64** %6
%298 = getelementptr inbounds i64, i64* %297, i64 69
%299 = load i64, i64* %298
%300 = add nsw i64 %296, %299
%301 = load i64*, i64** %6
%302 = getelementptr inbounds i64, i64* %301, i64 70
%303 = load i64, i64* %302
%304 = add nsw i64 %300, %303
%305 = load i64*, i64** %6
%306 = getelementptr inbounds i64, i64* %305, i64 71
%307 = load i64, i64* %306
%308 = add nsw i64 %304, %307
%309 = load i64*, i64** %6
%310 = getelementptr inbounds i64, i64* %309, i64 72
%311 = load i64, i64* %310
%312 = add nsw i64 %308, %311
%313 = load i64*, i64** %6
%314 = getelementptr inbounds i64, i64* %313, i64 73
%315 = load i64, i64* %314
%316 = add nsw i64 %312, %315
%317 = load i64*, i64** %6
%318 = getelementptr inbounds i64, i64* %317, i64 74
%319 = load i64, i64* %318
%320 = add nsw i64 %316, %319
%321 = load i64*, i64** %6
%322 = getelementptr inbounds i64, i64* %321, i64 75
%323 = load i64, i64* %322
%324 = add nsw i64 %320, %323
%325 = load i64*, i64** %6
%326 = getelementptr inbounds i64, i64* %325, i64 76
%327 = load i64, i64* %326
%328 = add nsw i64 %324, %327
%329 = load i64*, i64** %6
%330 = getelementptr inbounds i64, i64* %329, i64 77
%331 = load i64, i64* %330
%332 = add nsw i64 %328, %331
%333 = load i64*, i64** %6
%334 = getelementptr inbounds i64, i64* %333, i64 78
%335 = load i64, i64* %334
%336 = add nsw i64 %332, %335
%337 = load i64*, i64** %6
%338 = getelementptr inbounds i64, i64* %337, i64 79
%339 = load i64, i64* %338
%340 = add nsw i64 %336, %339
%341 = load i64*, i64** %6
%342 = getelementptr inbounds i64, i64* %341, i64 80
%343 = load i64, i64* %342
%344 = add nsw i64 %340, %343
%345 = load i64*, i64** %6
%346 = getelementptr inbounds i64, i64* %345, i64 81
%347 = load i64, i64* %346
%348 = add nsw i64 %344, %347
%349 = load i64*, i64** %6
%350 = getelementptr inbounds i64, i64* %349, i64 82
%351 = load i64, i64* %350
%352 = add nsw i64 %348, %351
%353 = load i64*, i64** %6
%354 = getelementptr inbounds i64, i64* %353, i64 83
%355 = load i64, i64* %354
%356 = add nsw i64 %352, %355
%357 = load i64*, i64** %6
%358 = getelementptr inbounds i64, i64* %357, i64 84
%359 = load i64, i64* %358
%360 = add nsw i64 %356, %359
%361 = load i64*, i64** %6
%362 = getelementptr inbounds i64, i64* %361, i64 85
%363 = load i64, i64* %362
%364 = add nsw i64 %360, %363
%365 = load i64*, i64** %6
%366 = getelementptr inbounds i64, i64* %365, i64 86
%367 = load i64, i64* %366
%368 = add nsw i64 %364, %367
%369 = load i64*, i64** %6
%370 = getelementptr inbounds i64, i64* %369, i64 87
%371 = load i64, i64* %370
%372 = add nsw i64 %368, %371
%373 = load i64*, i64** %6
%374 = getelementptr inbounds i64, i64* %373, i64 88
%375 = load i64, i64* %374
%376 = add nsw i64 %372, %375
%377 = load i64*, i64** %6
%378 = getelementptr inbounds i64, i64* %377, i64 89
%379 = load i64, i64* %378
%380 = add nsw i64 %376, %379
%381 = load i64*, i64** %6
%382 = getelementptr inbounds i64, i64* %381, i64 90
%383 = load i64, i64* %382
%384 = add nsw i64 %380, %383
%385 = load i64*, i64** %6
%386 = getelementptr inbounds i64, i64* %385, i64 91
%387 = load i64, i64* %386
%388 = add nsw i64 %384, %387
%389 = load i64*, i64** %6
%390 = getelementptr inbounds i64, i64* %389, i64 92
%391 = load i64, i64* %390
%392 = add nsw i64 %388, %391
%393 = load i64*, i64** %6
%394 = getelementptr inbounds i64, i64* %393, i64 93
%395 = load i64, i64* %394
%396 = add nsw i64 %392, %395
%397 = load i64*, i64** %6
%398 = getelementptr inbounds i64, i64* %397, i64 94
%399 = load i64, i64* %398
%400 = add nsw i64 %396, %399
%401 = load i64*, i64** %6
%402 = getelementptr inbounds i64, i64* %401, i64 95
%403 = load i64, i64* %402
%404 = add nsw i64 %400, %403
%405 = load i64*, i64** %6
%406 = getelementptr inbounds i64, i64* %405, i64 96
%407 = load i64, i64* %406
%408 = add nsw i64 %404, %407
%409 = load i64*, i64** %6
%410 = getelementptr inbounds i64, i64* %409, i64 97
%411 = load i64, i64* %410
%412 = add nsw i64 %408, %411
%413 = load i64*, i64** %6
%414 = getelementptr inbounds i64, i64* %413, i64 98
%415 = load i64, i64* %414
%416 = add nsw i64 %412, %415
%417 = load i64*, i64** %6
%418 = getelementptr inbounds i64, i64* %417, i64 99
%419 = load i64, i64* %418
%420 = add nsw i64 %416, %419
%421 = load i64*, i64** %6
%422 = getelementptr inbounds i64, i64* %421, i64 100
%423 = load i64, i64* %422
%424 = add nsw i64 %420, %423
%425 = load i64*, i64** %6
%426 = getelementptr inbounds i64, i64* %425, i64 101
%427 = load i64, i64* %426
%428 = add nsw i64 %424, %427
%429 = load i64*, i64** %6
%430 = getelementptr inbounds i64, i64* %429, i64 102
%431 = load i64, i64* %430
%432 = add nsw i64 %428, %431
%433 = load i64*, i64** %6
%434 = getelementptr inbounds i64, i64* %433, i64 103
%435 = load i64, i64* %434
%436 = add nsw i64 %432, %435
%437 = load i64*, i64** %6
%438 = getelementptr inbounds i64, i64* %437, i64 104
%439 = load i64, i64* %438
%440 = add nsw i64 %436, %439
%441 = load i64*, i64** %6
%442 = getelementptr inbounds i64, i64* %441, i64 105
%443 = load i64, i64* %442
%444 = add nsw i64 %440, %443
%445 = load i64*, i64** %6
%446 = getelementptr inbounds i64, i64* %445, i64 106
%447 = load i64, i64* %446
%448 = add nsw i64 %444, %447
%449 = load i64*, i64** %6
%450 = getelementptr inbounds i64, i64* %449, i64 107
%451 = load i64, i64* %450
%452 = add nsw i64 %448, %451
%453 = load i64*, i64** %6
%454 = getelementptr inbounds i64, i64* %453, i64 108
%455 = load i64, i64* %454
%456 = add nsw i64 %452, %455
%457 = load i64*, i64** %6
%458 = getelementptr inbounds i64, i64* %457, i64 109
%459 = load i64, i64* %458
%460 = add nsw i64 %456, %459
%461 = load i64*, i64** %6
%462 = getelementptr inbounds i64, i64* %461, i64 110
%463 = load i64, i64* %462
%464 = add nsw i64 %460, %463
%465 = load i64*, i64** %6
%466 = getelementptr inbounds i64, i64* %465, i64 111
%467 = load i64, i64* %466
%468 = add nsw i64 %464, %467
%469 = load i64*, i64** %6
%470 = getelementptr inbounds i64, i64* %469, i64 112
%471 = load i64, i64* %470
%472 = add nsw i64 %468, %471
%473 = load i64*, i64** %6
%474 = getelementptr inbounds i64, i64* %473, i64 113
%475 = load i64, i64* %474
%476 = add nsw i64 %472, %475
%477 = load i64*, i64** %6
%478 = getelementptr inbounds i64, i64* %477, i64 114
%479 = load i64, i64* %478
%480 = add nsw i64 %476, %479
%481 = load i64*, i64** %6
%482 = getelementptr inbounds i64, i64* %481, i64 115
%483 = load i64, i64* %482
%484 = add nsw i64 %480, %483
%485 = load i64*, i64** %6
%486 = getelementptr inbounds i64, i64* %485, i64 116
%487 = load i64, i64* %486
%488 = add nsw i64 %484, %487
%489 = load i64*, i64** %6
%490 = getelementptr inbounds i64, i64* %489, i64 117
%491 = load i64, i64* %490
%492 = add nsw i64 %488, %491
%493 = load i64*, i64** %6
%494 = getelementptr inbounds i64, i64* %493, i64 118
%495 = load i64, i64* %494
%496 = add nsw i64 %492, %495
%497 = load i64*, i64** %6
%498 = getelementptr inbounds i64, i64* %497, i64 119
%499 = load i64, i64* %498
%500 = add nsw i64 %496, %499
%501 = load i64*, i64** %6
%502 = getelementptr inbounds i64, i64* %501, i64 120
%503 = load i64, i64* %502
%504 = add nsw i64 %500, %503
%505 = load i64*, i64** %6
%506 = getelementptr inbounds i64, i64* %505, i64 121
%507 = load i64, i64* %506
%508 = add nsw i64 %504, %507
%509 = load i64*, i64** %6
%510 = getelementptr inbounds i64, i64* %509, i64 122
%511 = load i64, i64* %510
%512 = add nsw i64 %508, %511
%513 = load i64*, i64** %6
%514 = getelementptr inbounds i64, i64* %513, i64 123
%515 = load i64, i64* %514
%516 = add nsw i64 %512, %515
%517 = load i64*, i64** %6
%518 = getelementptr inbounds i64, i64* %517, i64 124
%519 = load i64, i64* %518
%520 = add nsw i64 %516, %519
%521 = load i64*, i64** %6
%522 = getelementptr inbounds i64, i64* %521, i64 125
%523 = load i64, i64* %522
%524 = add nsw i64 %520, %523
%525 = load i64*, i64** %6
%526 = getelementptr inbounds i64, i64* %525, i64 126
%527 = load i64, i64* %526
%528 = add nsw i64 %524, %527
%529 = load i64*, i64** %6
%530 = getelementptr inbounds i64, i64* %529, i64 127
%531 = load i64, i64* %530
%532 = add nsw i64 %528, %531
%533 = load i64, i64* %5
%534 = add nsw i64 %533, %532
store i64 %534, i64* %5
br label %535
535: ; preds = %21
%536 = load i64*, i64** %7
store i64* %536, i64** %6
%537 = load i64*, i64** %7
%538 = getelementptr inbounds i64, i64* %537, i64 128
store i64* %538, i64** %7
br label %16
539: ; preds = %16
%540 = load i64*, i64** %6
%541 = getelementptr inbounds i64, i64* %540, i64 16
store i64* %541, i64** %7
br label %542
542: ; preds = %613, %539
%543 = load i64*, i64** %7
%544 = bitcast i64* %543 to i8*
%545 = load i8*, i8** %8
%546 = icmp ule i8* %544, %545
br i1 %546, label %547, label %617
547: ; preds = %542
%548 = load i64*, i64** %6
%549 = getelementptr inbounds i64, i64* %548, i64 0
%550 = load i64, i64* %549
%551 = load i64*, i64** %6
%552 = getelementptr inbounds i64, i64* %551, i64 1
%553 = load i64, i64* %552
%554 = add nsw i64 %550, %553
%555 = load i64*, i64** %6
%556 = getelementptr inbounds i64, i64* %555, i64 2
%557 = load i64, i64* %556
%558 = add nsw i64 %554, %557
%559 = load i64*, i64** %6
%560 = getelementptr inbounds i64, i64* %559, i64 3
%561 = load i64, i64* %560
%562 = add nsw i64 %558, %561
%563 = load i64*, i64** %6
%564 = getelementptr inbounds i64, i64* %563, i64 4
%565 = load i64, i64* %564
%566 = add nsw i64 %562, %565
%567 = load i64*, i64** %6
%568 = getelementptr inbounds i64, i64* %567, i64 5
%569 = load i64, i64* %568
%570 = add nsw i64 %566, %569
%571 = load i64*, i64** %6
%572 = getelementptr inbounds i64, i64* %571, i64 6
%573 = load i64, i64* %572
%574 = add nsw i64 %570, %573
%575 = load i64*, i64** %6
%576 = getelementptr inbounds i64, i64* %575, i64 7
%577 = load i64, i64* %576
%578 = add nsw i64 %574, %577
%579 = load i64*, i64** %6
%580 = getelementptr inbounds i64, i64* %579, i64 8
%581 = load i64, i64* %580
%582 = add nsw i64 %578, %581
%583 = load i64*, i64** %6
%584 = getelementptr inbounds i64, i64* %583, i64 9
%585 = load i64, i64* %584
%586 = add nsw i64 %582, %585
%587 = load i64*, i64** %6
%588 = getelementptr inbounds i64, i64* %587, i64 10
%589 = load i64, i64* %588
%590 = add nsw i64 %586, %589
%591 = load i64*, i64** %6
%592 = getelementptr inbounds i64, i64* %591, i64 11
%593 = load i64, i64* %592
%594 = add nsw i64 %590, %593
%595 = load i64*, i64** %6
%596 = getelementptr inbounds i64, i64* %595, i64 12
%597 = load i64, i64* %596
%598 = add nsw i64 %594, %597
%599 = load i64*, i64** %6
%600 = getelementptr inbounds i64, i64* %599, i64 13
%601 = load i64, i64* %600
%602 = add nsw i64 %598, %601
%603 = load i64*, i64** %6
%604 = getelementptr inbounds i64, i64* %603, i64 14
%605 = load i64, i64* %604
%606 = add nsw i64 %602, %605
%607 = load i64*, i64** %6
%608 = getelementptr inbounds i64, i64* %607, i64 15
%609 = load i64, i64* %608
%610 = add nsw i64 %606, %609
%611 = load i64, i64* %5
%612 = add nsw i64 %611, %610
store i64 %612, i64* %5
br label %613
613: ; preds = %547
%614 = load i64*, i64** %7
store i64* %614, i64** %6
%615 = load i64*, i64** %7
%616 = getelementptr inbounds i64, i64* %615, i64 16
store i64* %616, i64** %7
br label %542
617: ; preds = %542
%618 = load i64*, i64** %6
%619 = getelementptr inbounds i64, i64* %618, i64 1
store i64* %619, i64** %7
br label %620
620: ; preds = %630, %617
%621 = load i64*, i64** %7
%622 = bitcast i64* %621 to i8*
%623 = load i8*, i8** %8
%624 = icmp ule i8* %622, %623
br i1 %624, label %625, label %634
625: ; preds = %620
%626 = load i64*, i64** %6
%627 = load i64, i64* %626
%628 = load i64, i64* %5
%629 = add nsw i64 %628, %627
store i64 %629, i64* %5
br label %630
630: ; preds = %625
%631 = load i64*, i64** %7
store i64* %631, i64** %6
%632 = load i64*, i64** %7
%633 = getelementptr inbounds i64, i64* %632, i32 1
store i64* %633, i64** %7
br label %620
634: ; preds = %620
%635 = load i64, i64* %5
ret i64 %635
}

LLVM IR (-O2):
define i64 @bread(i8* %0, i64 %1) {
%3 = ptrtoint i8* %0 to i64
%4 = bitcast i8* %0 to i64*
%5 = getelementptr inbounds i8, i8* %0, i64 %1
%6 = icmp slt i64 %1, 1024
br i1 %6, label %10, label %7
7: ; preds = %2
%8 = getelementptr inbounds i8, i8* %0, i64 1024
%9 = bitcast i8* %8 to i64*
br label %16
10: ; preds = %16, %2
%11 = phi i64* [ %4, %2 ], [ %18, %16 ]
%12 = phi i64 [ 0, %2 ], [ %23, %16 ]
%13 = getelementptr inbounds i64, i64* %11, i64 16
%14 = bitcast i64* %13 to i8*
%15 = icmp ult i8* %5, %14
br i1 %15, label %27, label %132
16: ; preds = %7, %16
%17 = phi i64 [ %23, %16 ], [ 0, %7 ]
%18 = phi i64* [ %24, %16 ], [ %9, %7 ]
%19 = phi i64* [ %18, %16 ], [ %4, %7 ]
%20 = bitcast i64* %19 to <128 x i64>*
%21 = load <128 x i64>, <128 x i64>* %20
%22 = call i64 @llvm.vector.reduce.add.v128i64(<128 x i64> %21)
%23 = add i64 %22, %17
%24 = getelementptr inbounds i64, i64* %18, i64 128
%25 = bitcast i64* %24 to i8*
%26 = icmp ult i8* %5, %25
br i1 %26, label %10, label %16
27: ; preds = %132, %10
%28 = phi i64* [ %11, %10 ], [ %133, %132 ]
%29 = phi i64 [ %12, %10 ], [ %139, %132 ]
%30 = ptrtoint i64* %28 to i64
%31 = getelementptr inbounds i64, i64* %28, i64 1
%32 = bitcast i64* %31 to i8*
%33 = icmp ult i8* %5, %32
br i1 %33, label %152, label %34
34: ; preds = %27
%35 = add i64 %3, %1
%36 = add i64 %35, 1
%37 = add i64 %30, 16
%38 = call i64 @llvm.umax.i64(i64 %36, i64 %37)
%39 = add i64 %38, -9
%40 = sub i64 %39, %30
%41 = lshr i64 %40, 3
%42 = add nuw nsw i64 %41, 1
%43 = icmp ult i64 %40, 24
br i1 %43, label %128, label %44
44: ; preds = %34
%45 = and i64 %42, 4611686018427387900
%46 = getelementptr i64, i64* %31, i64 %45
%47 = getelementptr i64, i64* %28, i64 %45
%48 = insertelement <2 x i64> <i64 poison, i64 0>, i64 %29, i64 0
%49 = add nsw i64 %45, -4
%50 = lshr exact i64 %49, 2
%51 = add nuw nsw i64 %50, 1
%52 = and i64 %51, 3
%53 = icmp ult i64 %49, 12
br i1 %53, label %99, label %54
54: ; preds = %44
%55 = and i64 %51, 9223372036854775804
br label %56
56: ; preds = %56, %54
%57 = phi i64 [ 0, %54 ], [ %96, %56 ]
%58 = phi <2 x i64> [ %48, %54 ], [ %94, %56 ]
%59 = phi <2 x i64> [ zeroinitializer, %54 ], [ %95, %56 ]
%60 = phi i64 [ 0, %54 ], [ %97, %56 ]
%61 = getelementptr i64, i64* %28, i64 %57
%62 = bitcast i64* %61 to <2 x i64>*
%63 = load <2 x i64>, <2 x i64>* %62
%64 = getelementptr i64, i64* %61, i64 2
%65 = bitcast i64* %64 to <2 x i64>*
%66 = load <2 x i64>, <2 x i64>* %65
%67 = add <2 x i64> %63, %58
%68 = add <2 x i64> %66, %59
%69 = or i64 %57, 4
%70 = getelementptr i64, i64* %28, i64 %69
%71 = bitcast i64* %70 to <2 x i64>*
%72 = load <2 x i64>, <2 x i64>* %71
%73 = getelementptr i64, i64* %70, i64 2
%74 = bitcast i64* %73 to <2 x i64>*
%75 = load <2 x i64>, <2 x i64>* %74
%76 = add <2 x i64> %72, %67
%77 = add <2 x i64> %75, %68
%78 = or i64 %57, 8
%79 = getelementptr i64, i64* %28, i64 %78
%80 = bitcast i64* %79 to <2 x i64>*
%81 = load <2 x i64>, <2 x i64>* %80
%82 = getelementptr i64, i64* %79, i64 2
%83 = bitcast i64* %82 to <2 x i64>*
%84 = load <2 x i64>, <2 x i64>* %83
%85 = add <2 x i64> %81, %76
%86 = add <2 x i64> %84, %77
%87 = or i64 %57, 12
%88 = getelementptr i64, i64* %28, i64 %87
%89 = bitcast i64* %88 to <2 x i64>*
%90 = load <2 x i64>, <2 x i64>* %89
%91 = getelementptr i64, i64* %88, i64 2
%92 = bitcast i64* %91 to <2 x i64>*
%93 = load <2 x i64>, <2 x i64>* %92
%94 = add <2 x i64> %90, %85
%95 = add <2 x i64> %93, %86
%96 = add nuw i64 %57, 16
%97 = add nuw i64 %60, 4
%98 = icmp eq i64 %97, %55
br i1 %98, label %99, label %56
99: ; preds = %56, %44
%100 = phi <2 x i64> [ undef, %44 ], [ %94, %56 ]
%101 = phi <2 x i64> [ undef, %44 ], [ %95, %56 ]
%102 = phi i64 [ 0, %44 ], [ %96, %56 ]
%103 = phi <2 x i64> [ %48, %44 ], [ %94, %56 ]
%104 = phi <2 x i64> [ zeroinitializer, %44 ], [ %95, %56 ]
%105 = icmp eq i64 %52, 0
br i1 %105, label %122, label %106
106: ; preds = %99, %106
%107 = phi i64 [ %119, %106 ], [ %102, %99 ]
%108 = phi <2 x i64> [ %117, %106 ], [ %103, %99 ]
%109 = phi <2 x i64> [ %118, %106 ], [ %104, %99 ]
%110 = phi i64 [ %120, %106 ], [ 0, %99 ]
%111 = getelementptr i64, i64* %28, i64 %107
%112 = bitcast i64* %111 to <2 x i64>*
%113 = load <2 x i64>, <2 x i64>* %112
%114 = getelementptr i64, i64* %111, i64 2
%115 = bitcast i64* %114 to <2 x i64>*
%116 = load <2 x i64>, <2 x i64>* %115
%117 = add <2 x i64> %113, %108
%118 = add <2 x i64> %116, %109
%119 = add nuw i64 %107, 4
%120 = add i64 %110, 1
%121 = icmp eq i64 %120, %52
br i1 %121, label %122, label %106
122: ; preds = %106, %99
%123 = phi <2 x i64> [ %100, %99 ], [ %117, %106 ]
%124 = phi <2 x i64> [ %101, %99 ], [ %118, %106 ]
%125 = add <2 x i64> %124, %123
%126 = call i64 @llvm.vector.reduce.add.v2i64(<2 x i64> %125)
%127 = icmp eq i64 %42, %45
br i1 %127, label %152, label %128
128: ; preds = %34, %122
%129 = phi i64* [ %31, %34 ], [ %46, %122 ]
%130 = phi i64 [ %29, %34 ], [ %126, %122 ]
%131 = phi i64* [ %28, %34 ], [ %47, %122 ]
br label %143
132: ; preds = %10, %132
%133 = phi i64* [ %140, %132 ], [ %13, %10 ]
%134 = phi i64 [ %139, %132 ], [ %12, %10 ]
%135 = phi i64* [ %133, %132 ], [ %11, %10 ]
%136 = bitcast i64* %135 to <16 x i64>*
%137 = load <16 x i64>, <16 x i64>* %136
%138 = call i64 @llvm.vector.reduce.add.v16i64(<16 x i64> %137)
%139 = add i64 %138, %134
%140 = getelementptr inbounds i64, i64* %133, i64 16
%141 = bitcast i64* %140 to i8*
%142 = icmp ult i8* %5, %141
br i1 %142, label %27, label %132
143: ; preds = %128, %143
%144 = phi i64* [ %149, %143 ], [ %129, %128 ]
%145 = phi i64 [ %148, %143 ], [ %130, %128 ]
%146 = phi i64* [ %144, %143 ], [ %131, %128 ]
%147 = load i64, i64* %146
%148 = add nsw i64 %147, %145
%149 = getelementptr inbounds i64, i64* %144, i64 1
%150 = bitcast i64* %149 to i8*
%151 = icmp ult i8* %5, %150
br i1 %151, label %152, label %143
152: ; preds = %143, %122, %27
%153 = phi i64 [ %29, %27 ], [ %126, %122 ], [ %148, %143 ]
ret i64 %153
}