user: What would the C source look like for the assembly code provided here?

```asm
<cvmx_nand_compute_boot_ecc>:
  endbr64
  push   %rbp
  mov    %rsp,%rbp
  mov    %rdi,-0x18(%rbp)
  mov    %rsi,-0x20(%rbp)
  movb   $0x0,-0x9(%rbp)
  movzbl -0x9(%rbp),%eax
  mov    %al,-0xa(%rbp)
  movzbl -0xa(%rbp),%eax
  mov    %al,-0xb(%rbp)
  movl   $0x0,-0x8(%rbp)
  jmp    L278
L92:
  mov    -0x8(%rbp),%eax
  movslq %eax,%rdx
  mov    -0x18(%rbp),%rax
  add    %rdx,%rax
  movzbl (%rax),%edx
  mov    -0x8(%rbp),%eax
  movslq %eax,%rcx
  mov    -0x18(%rbp),%rax
  add    %rcx,%rax
  movzbl (%rax),%eax
  shr    $0x2,%al
  mov    %edx,%ecx
  xor    %eax,%ecx
  mov    -0x8(%rbp),%eax
  movslq %eax,%rdx
  mov    -0x18(%rbp),%rax
  add    %rdx,%rax
  movzbl (%rax),%eax
  shr    $0x4,%al
  xor    %eax,%ecx
  mov    -0x8(%rbp),%eax
  movslq %eax,%rdx
  mov    -0x18(%rbp),%rax
  add    %rdx,%rax
  movzbl (%rax),%eax
  shr    $0x6,%al
  xor    %ecx,%eax
  and    $0x1,%eax
  mov    %eax,%edx
  movzbl -0xb(%rbp),%eax
  xor    %edx,%eax
  mov    %al,-0xb(%rbp)
  addl   $0x1,-0x8(%rbp)
L278:
  cmpl   $0xff,-0x8(%rbp)
  jle    L92
  movl   $0x0,-0x8(%rbp)
  jmp    L488
L42:
  mov    -0x8(%rbp),%eax
  movslq %eax,%rdx
  mov    -0x18(%rbp),%rax
  add    %rdx,%rax
  movzbl (%rax),%edx
  mov    -0x8(%rbp),%eax
  movslq %eax,%rcx
  mov    -0x18(%rbp),%rax
  add    %rcx,%rax
  movzbl (%rax),%eax
  shr    %al
  mov    %edx,%ecx
  xor    %eax,%ecx
  mov    -0x8(%rbp),%eax
  movslq %eax,%rdx
  mov    -0x18(%rbp),%rax
  add    %rdx,%rax
  movzbl (%rax),%eax
  shr    $0x4,%al
  xor    %eax,%ecx
  mov    -0x8(%rbp),%eax
  movslq %eax,%rdx
  mov    -0x18(%rbp),%rax
  add    %rdx,%rax
  movzbl (%rax),%eax
  shr    $0x5,%al
  xor    %ecx,%eax
  movzbl %al,%eax
  add    %eax,%eax
  and    $0x2,%eax
  mov    %eax,%edx
  movzbl -0xb(%rbp),%eax
  xor    %edx,%eax
  mov    %al,-0xb(%rbp)
  addl   $0x1,-0x8(%rbp)
L488:
  cmpl   $0xff,-0x8(%rbp)
  jle    L42
  movl   $0x0,-0x8(%rbp)
  jmp    L338
L297:
  mov    -0x8(%rbp),%eax
  movslq %eax,%rdx
  mov    -0x18(%rbp),%rax
  add    %rdx,%rax
  movzbl (%rax),%edx
  mov    -0x8(%rbp),%eax
  movslq %eax,%rcx
  mov    -0x18(%rbp),%rax
  add    %rcx,%rax
  movzbl (%rax),%eax
  shr    %al
  mov    %edx,%ecx
  xor    %eax,%ecx
  mov    -0x8(%rbp),%eax
  movslq %eax,%rdx
  mov    -0x18(%rbp),%rax
  add    %rdx,%rax
  movzbl (%rax),%eax
  shr    $0x2,%al
  xor    %eax,%ecx
  mov    -0x8(%rbp),%eax
  movslq %eax,%rdx
  mov    -0x18(%rbp),%rax
  add    %rdx,%rax
  movzbl (%rax),%eax
  shr    $0x3,%al
  xor    %ecx,%eax
  movzbl %al,%eax
  shl    $0x2,%eax
  and    $0x4,%eax
  mov    %eax,%edx
  movzbl -0xb(%rbp),%eax
  xor    %edx,%eax
  mov    %al,-0xb(%rbp)
  addl   $0x1,-0x8(%rbp)
L338:
  cmpl   $0xff,-0x8(%rbp)
  jle    L297
  movl   $0x0,-0x8(%rbp)
  jmp    L626
L284:
  mov    -0x8(%rbp),%eax
  add    %eax,%eax
  movslq %eax,%rdx
  mov    -0x18(%rbp),%rax
  add    %rdx,%rax
  movzbl (%rax),%edx
  mov    -0x8(%rbp),%eax
  add    %eax,%eax
  movslq %eax,%rcx
  mov    -0x18(%rbp),%rax
  add    %rcx,%rax
  movzbl (%rax),%eax
  shr    %al
  mov    %edx,%ecx
  xor    %eax,%ecx
  mov    -0x8(%rbp),%eax
  add    %eax,%eax
  movslq %eax,%rdx
  mov    -0x18(%rbp),%rax
  add    %rdx,%rax
  movzbl (%rax),%eax
  shr    $0x2,%al
  xor    %eax,%ecx
  mov    -0x8(%rbp),%eax
  add    %eax,%eax
  movslq %eax,%rdx
  mov    -0x18(%rbp),%rax
  add    %rdx,%rax
  movzbl (%rax),%eax
  shr    $0x3,%al
  xor    %eax,%ecx
  mov    -0x8(%rbp),%eax
  add    %eax,%eax
  movslq %eax,%rdx
  mov    -0x18(%rbp),%rax
  add    %rdx,%rax
  movzbl (%rax),%eax
  shr    $0x4,%al
  xor    %eax,%ecx
  mov    -0x8(%rbp),%eax
  add    %eax,%eax
  movslq %eax,%rdx
  mov    -0x18(%rbp),%rax
  add    %rdx,%rax
  movzbl (%rax),%eax
  shr    $0x5,%al
  xor    %eax,%ecx
  mov    -0x8(%rbp),%eax
  add    %eax,%eax
  movslq %eax,%rdx
  mov    -0x18(%rbp),%rax
  add    %rdx,%rax
  movzbl (%rax),%eax
  shr    $0x6,%al
  xor    %eax,%ecx
  mov    -0x8(%rbp),%eax
  add    %eax,%eax
  movslq %eax,%rdx
  mov    -0x18(%rbp),%rax
  add    %rdx,%rax
  movzbl (%rax),%eax
  shr    $0x7,%al
  xor    %ecx,%eax
  movzbl %al,%eax
  shl    $0x3,%eax
  and    $0x8,%eax
  mov    %eax,%edx
  movzbl -0xb(%rbp),%eax
  xor    %edx,%eax
  mov    %al,-0xb(%rbp)
  addl   $0x1,-0x8(%rbp)
L626:
  cmpl   $0x7f,-0x8(%rbp)
  jle    L284
  movl   $0x0,-0x8(%rbp)
  jmp    L325
L379:
  movl   $0x0,-0x4(%rbp)
  jmp    L263
L199:
  mov    -0x8(%rbp),%eax
  lea    0x0(,%rax,4),%edx
  mov    -0x4(%rbp),%eax
  add    %edx,%eax
  movslq %eax,%rdx
  mov    -0x18(%rbp),%rax
  add    %rdx,%rax
  movzbl (%rax),%edx
  mov    -0x8(%rbp),%eax
  lea    0x0(,%rax,4),%ecx
  mov    -0x4(%rbp),%eax
  add    %ecx,%eax
  movslq %eax,%rcx
  mov    -0x18(%rbp),%rax
  add    %rcx,%rax
  movzbl (%rax),%eax
  shr    %al
  mov    %edx,%ecx
  xor    %eax,%ecx
  mov    -0x8(%rbp),%eax
  lea    0x0(,%rax,4),%edx
  mov    -0x4(%rbp),%eax
  add    %edx,%eax
  movslq %eax,%rdx
  mov    -0x18(%rbp),%rax
  add    %rdx,%rax
  movzbl (%rax),%eax
  shr    $0x2,%al
  xor    %eax,%ecx
  mov    -0x8(%rbp),%eax
  lea    0x0(,%rax,4),%edx
  mov    -0x4(%rbp),%eax
  add    %edx,%eax
  movslq %eax,%rdx
  mov    -0x18(%rbp),%rax
  add    %rdx,%rax
  movzbl (%rax),%eax
  shr    $0x3,%al
  xor    %eax,%ecx
  mov    -0x8(%rbp),%eax
  lea    0x0(,%rax,4),%edx
  mov    -0x4(%rbp),%eax
  add    %edx,%eax
  movslq %eax,%rdx
  mov    -0x18(%rbp),%rax
  add    %rdx,%rax
  movzbl (%rax),%eax
  shr    $0x4,%al
  xor    %eax,%ecx
  mov    -0x8(%rbp),%eax
  lea    0x0(,%rax,4),%edx
  mov    -0x4(%rbp),%eax
  add    %edx,%eax
  movslq %eax,%rdx
  mov    -0x18(%rbp),%rax
  add    %rdx,%rax
  movzbl (%rax),%eax
  shr    $0x5,%al
  xor    %eax,%ecx
  mov    -0x8(%rbp),%eax
  lea    0x0(,%rax,4),%edx
  mov    -0x4(%rbp),%eax
  add    %edx,%eax
  movslq %eax,%rdx
  mov    -0x18(%rbp),%rax
  add    %rdx,%rax
  movzbl (%rax),%eax
  shr    $0x6,%al
  xor    %eax,%ecx
  mov    -0x8(%rbp),%eax
  lea    0x0(,%rax,4),%edx
  mov    -0x4(%rbp),%eax
  add    %edx,%eax
  movslq %eax,%rdx
  mov    -0x18(%rbp),%rax
  add    %rdx,%rax
  movzbl (%rax),%eax
  shr    $0x7,%al
  xor    %ecx,%eax
  movzbl %al,%eax
  shl    $0x4,%eax
  and    $0x10,%eax
  mov    %eax,%edx
  movzbl -0xb(%rbp),%eax
  xor    %edx,%eax
  mov    %al,-0xb(%rbp)
  addl   $0x1,-0x4(%rbp)
L263:
  cmpl   $0x1,-0x4(%rbp)
  jle    L199
  addl   $0x1,-0x8(%rbp)
L325:
  cmpl   $0x3f,-0x8(%rbp)
  jle    L379
  movl   $0x0,-0x8(%rbp)
  jmp    L486
L471:
  movl   $0x0,-0x4(%rbp)
  jmp    L523
L518:
  mov    -0x8(%rbp),%eax
  lea    0x0(,%rax,8),%edx
  mov    -0x4(%rbp),%eax
  add    %edx,%eax
  movslq %eax,%rdx
  mov    -0x18(%rbp),%rax
  add    %rdx,%rax
  movzbl (%rax),%edx
  mov    -0x8(%rbp),%eax
  lea    0x0(,%rax,8),%ecx
  mov    -0x4(%rbp),%eax
  add    %ecx,%eax
  movslq %eax,%rcx
  mov    -0x18(%rbp),%rax
  add    %rcx,%rax
  movzbl (%rax),%eax
  shr    %al
  mov    %edx,%ecx
  xor    %eax,%ecx
  mov    -0x8(%rbp),%eax
  lea    0x0(,%rax,8),%edx
  mov    -0x4(%rbp),%eax
  add    %edx,%eax
  movslq %eax,%rdx
  mov    -0x18(%rbp),%rax
  add    %rdx,%rax
  movzbl (%rax),%eax
  shr    $0x2,%al
  xor    %eax,%ecx
  mov    -0x8(%rbp),%eax
  lea    0x0(,%rax,8),%edx
  mov    -0x4(%rbp),%eax
  add    %edx,%eax
  movslq %eax,%rdx
  mov    -0x18(%rbp),%rax
  add    %rdx,%rax
  movzbl (%rax),%eax
  shr    $0x3,%al
  xor    %eax,%ecx
  mov    -0x8(%rbp),%eax
  lea    0x0(,%rax,8),%edx
  mov    -0x4(%rbp),%eax
  add    %edx,%eax
  movslq %eax,%rdx
  mov    -0x18(%rbp),%rax
  add    %rdx,%rax
  movzbl (%rax),%eax
  shr    $0x4,%al
  xor    %eax,%ecx
  mov    -0x8(%rbp),%eax
  lea    0x0(,%rax,8),%edx
  mov    -0x4(%rbp),%eax
  add    %edx,%eax
  movslq %eax,%rdx
  mov    -0x18(%rbp),%rax
  add    %rdx,%rax
  movzbl (%rax),%eax
  shr    $0x5,%al
  xor    %eax,%ecx
  mov    -0x8(%rbp),%eax
  lea    0x0(,%rax,8),%edx
  mov    -0x4(%rbp),%eax
  add    %edx,%eax
  movslq %eax,%rdx
  mov    -0x18(%rbp),%rax
  add    %rdx,%rax
  movzbl (%rax),%eax
  shr    $0x6,%al
  xor    %eax,%ecx
  mov    -0x8(%rbp),%eax
  lea    0x0(,%rax,8),%edx
  mov    -0x4(%rbp),%eax
  add    %edx,%eax
  movslq %eax,%rdx
  mov    -0x18(%rbp),%rax
  add    %rdx,%rax
  movzbl (%rax),%eax
  shr    $0x7,%al
  xor    %ecx,%eax
  movzbl %al,%eax
  shl    $0x5,%eax
  and    $0x20,%eax
  mov    %eax,%edx
  movzbl -0xb(%rbp),%eax
  xor    %edx,%eax
  mov    %al,-0xb(%rbp)
  addl   $0x1,-0x4(%rbp)
L523:
  cmpl   $0x3,-0x4(%rbp)
  jle    L518
  addl   $0x1,-0x8(%rbp)
L486:
  cmpl   $0x1f,-0x8(%rbp)
  jle    L471
  movl   $0x0,-0x8(%rbp)
  jmp    L261
L198:
  movl   $0x0,-0x4(%rbp)
  jmp    L119
L302:
  mov    -0x8(%rbp),%eax
  shl    $0x4,%eax
  mov    %eax,%edx
  mov    -0x4(%rbp),%eax
  add    %edx,%eax
  movslq %eax,%rdx
  mov    -0x18(%rbp),%rax
  add    %rdx,%rax
  movzbl (%rax),%edx
  mov    -0x8(%rbp),%eax
  shl    $0x4,%eax
  mov    %eax,%ecx
  mov    -0x4(%rbp),%eax
  add    %ecx,%eax
  movslq %eax,%rcx
  mov    -0x18(%rbp),%rax
  add    %rcx,%rax
  movzbl (%rax),%eax
  shr    %al
  mov    %edx,%ecx
  xor    %eax,%ecx
  mov    -0x8(%rbp),%eax
  shl    $0x4,%eax
  mov    %eax,%edx
  mov    -0x4(%rbp),%eax
  add    %edx,%eax
  movslq %eax,%rdx
  mov    -0x18(%rbp),%rax
  add    %rdx,%rax
  movzbl (%rax),%eax
  shr    $0x2,%al
  xor    %eax,%ecx
  mov    -0x8(%rbp),%eax
  shl    $0x4,%eax
  mov    %eax,%edx
  mov    -0x4(%rbp),%eax
  add    %edx,%eax
  movslq %eax,%rdx
  mov    -0x18(%rbp),%rax
  add    %rdx,%rax
  movzbl (%rax),%eax
  shr    $0x3,%al
  xor    %eax,%ecx
  mov    -0x8(%rbp),%eax
  shl    $0x4,%eax
  mov    %eax,%edx
  mov    -0x4(%rbp),%eax
  add    %edx,%eax
  movslq %eax,%rdx
  mov    -0x18(%rbp),%rax
  add    %rdx,%rax
  movzbl (%rax),%eax
  shr    $0x4,%al
  xor    %eax,%ecx
  mov    -0x8(%rbp),%eax
  shl    $0x4,%eax
  mov    %eax,%edx
  mov    -0x4(%rbp),%eax
  add    %edx,%eax
  movslq %eax,%rdx
  mov    -0x18(%rbp),%rax
  add    %rdx,%rax
  movzbl (%rax),%eax
  shr    $0x5,%al
  xor    %eax,%ecx
  mov    -0x8(%rbp),%eax
  shl    $0x4,%eax
  mov    %eax,%edx
  mov    -0x4(%rbp),%eax
  add    %edx,%eax
  movslq %eax,%rdx
  mov    -0x18(%rbp),%rax
  add    %rdx,%rax
  movzbl (%rax),%eax
  shr    $0x6,%al
  xor    %eax,%ecx
  mov    -0x8(%rbp),%eax
  shl    $0x4,%eax
  mov    %eax,%edx
  mov    -0x4(%rbp),%eax
  add    %edx,%eax
  movslq %eax,%rdx
  mov    -0x18(%rbp),%rax
  add    %rdx,%rax
  movzbl (%rax),%eax
  shr    $0x7,%al
  xor    %ecx,%eax
  movzbl %al,%eax
  shl    $0x6,%eax
  and    $0x40,%eax
  mov    %eax,%edx
  movzbl -0xb(%rbp),%eax
  xor    %edx,%eax
  mov    %al,-0xb(%rbp)
  addl   $0x1,-0x4(%rbp)
L119:
  cmpl   $0x7,-0x4(%rbp)
  jle    L302
  addl   $0x1,-0x8(%rbp)
L261:
  cmpl   $0xf,-0x8(%rbp)
  jle    L198
  movl   $0x0,-0x8(%rbp)
  jmp    L666
L430:
  movl   $0x0,-0x4(%rbp)
  jmp    L267
L345:
  mov    -0x8(%rbp),%eax
  shl    $0x5,%eax
  mov    %eax,%edx
  mov    -0x4(%rbp),%eax
  add    %edx,%eax
  movslq %eax,%rdx
  mov    -0x18(%rbp),%rax
  add    %rdx,%rax
  movzbl (%rax),%edx
  mov    -0x8(%rbp),%eax
  shl    $0x5,%eax
  mov    %eax,%ecx
  mov    -0x4(%rbp),%eax
  add    %ecx,%eax
  movslq %eax,%rcx
  mov    -0x18(%rbp),%rax
  add    %rcx,%rax
  movzbl (%rax),%eax
  shr    %al
  mov    %edx,%ecx
  xor    %eax,%ecx
  mov    -0x8(%rbp),%eax
  shl    $0x5,%eax
  mov    %eax,%edx
  mov    -0x4(%rbp),%eax
  add    %edx,%eax
  movslq %eax,%rdx
  mov    -0x18(%rbp),%rax
  add    %rdx,%rax
  movzbl (%rax),%eax
  shr    $0x2,%al
  xor    %eax,%ecx
  mov    -0x8(%rbp),%eax
  shl    $0x5,%eax
  mov    %eax,%edx
  mov    -0x4(%rbp),%eax
  add    %edx,%eax
  movslq %eax,%rdx
  mov    -0x18(%rbp),%rax
  add    %rdx,%rax
  movzbl (%rax),%eax
  shr    $0x3,%al
  xor    %eax,%ecx
  mov    -0x8(%rbp),%eax
  shl    $0x5,%eax
  mov    %eax,%edx
  mov    -0x4(%rbp),%eax
  add    %edx,%eax
  movslq %eax,%rdx
  mov    -0x18(%rbp),%rax
  add    %rdx,%rax
  movzbl (%rax),%eax
  shr    $0x4,%al
  xor    %eax,%ecx
  mov    -0x8(%rbp),%eax
  shl    $0x5,%eax
  mov    %eax,%edx
  mov    -0x4(%rbp),%eax
  add    %edx,%eax
  movslq %eax,%rdx
  mov    -0x18(%rbp),%rax
  add    %rdx,%rax
  movzbl (%rax),%eax
  shr    $0x5,%al
  xor    %eax,%ecx
  mov    -0x8(%rbp),%eax
  shl    $0x5,%eax
  mov    %eax,%edx
  mov    -0x4(%rbp),%eax
  add    %edx,%eax
  movslq %eax,%rdx
  mov    -0x18(%rbp),%rax
  add    %rdx,%rax
  movzbl (%rax),%eax
  shr    $0x6,%al
  xor    %eax,%ecx
  mov    -0x8(%rbp),%eax
  shl    $0x5,%eax
  mov    %eax,%edx
  mov    -0x4(%rbp),%eax
  add    %edx,%eax
  movslq %eax,%rdx
  mov    -0x18(%rbp),%rax
  add    %rdx,%rax
  movzbl (%rax),%eax
  shr    $0x7,%al
  xor    %ecx,%eax
  movzbl %al,%eax
  shl    $0x7,%eax
  mov    %eax,%edx
  movzbl -0xb(%rbp),%eax
  xor    %edx,%eax
  mov    %al,-0xb(%rbp)
  addl   $0x1,-0x4(%rbp)
L267:
  cmpl   $0xf,-0x4(%rbp)
  jle    L345
  addl   $0x1,-0x8(%rbp)
L666:
  cmpl   $0x7,-0x8(%rbp)
  jle    L430
  movl   $0x0,-0x8(%rbp)
  jmp    L412
L607:
  movl   $0x0,-0x4(%rbp)
  jmp    L468
L397:
  mov    -0x8(%rbp),%eax
  shl    $0x6,%eax
  mov    %eax,%edx
  mov    -0x4(%rbp),%eax
  add    %edx,%eax
  movslq %eax,%rdx
  mov    -0x18(%rbp),%rax
  add    %rdx,%rax
  movzbl (%rax),%edx
  mov    -0x8(%rbp),%eax
  shl    $0x6,%eax
  mov    %eax,%ecx
  mov    -0x4(%rbp),%eax
  add    %ecx,%eax
  movslq %eax,%rcx
  mov    -0x18(%rbp),%rax
  add    %rcx,%rax
  movzbl (%rax),%eax
  shr    %al
  mov    %edx,%ecx
  xor    %eax,%ecx
  mov    -0x8(%rbp),%eax
  shl    $0x6,%eax
  mov    %eax,%edx
  mov    -0x4(%rbp),%eax
  add    %edx,%eax
  movslq %eax,%rdx
  mov    -0x18(%rbp),%rax
  add    %rdx,%rax
  movzbl (%rax),%eax
  shr    $0x2,%al
  xor    %eax,%ecx
  mov    -0x8(%rbp),%eax
  shl    $0x6,%eax
  mov    %eax,%edx
  mov    -0x4(%rbp),%eax
  add    %edx,%eax
  movslq %eax,%rdx
  mov    -0x18(%rbp),%rax
  add    %rdx,%rax
  movzbl (%rax),%eax
  shr    $0x3,%al
  xor    %eax,%ecx
  mov    -0x8(%rbp),%eax
  shl    $0x6,%eax
  mov    %eax,%edx
  mov    -0x4(%rbp),%eax
  add    %edx,%eax
  movslq %eax,%rdx
  mov    -0x18(%rbp),%rax
  add    %rdx,%rax
  movzbl (%rax),%eax
  shr    $0x4,%al
  xor    %eax,%ecx
  mov    -0x8(%rbp),%eax
  shl    $0x6,%eax
  mov    %eax,%edx
  mov    -0x4(%rbp),%eax
  add    %edx,%eax
  movslq %eax,%rdx
  mov    -0x18(%rbp),%rax
  add    %rdx,%rax
  movzbl (%rax),%eax
  shr    $0x5,%al
  xor    %eax,%ecx
  mov    -0x8(%rbp),%eax
  shl    $0x6,%eax
  mov    %eax,%edx
  mov    -0x4(%rbp),%eax
  add    %edx,%eax
  movslq %eax,%rdx
  mov    -0x18(%rbp),%rax
  add    %rdx,%rax
  movzbl (%rax),%eax
  shr    $0x6,%al
  xor    %eax,%ecx
  mov    -0x8(%rbp),%eax
  shl    $0x6,%eax
  mov    %eax,%edx
  mov    -0x4(%rbp),%eax
  add    %edx,%eax
  movslq %eax,%rdx
  mov    -0x18(%rbp),%rax
  add    %rdx,%rax
  movzbl (%rax),%eax
  shr    $0x7,%al
  xor    %ecx,%eax
  and    $0x1,%eax
  mov    %eax,%edx
  movzbl -0xa(%rbp),%eax
  xor    %edx,%eax
  mov    %al,-0xa(%rbp)
  addl   $0x1,-0x4(%rbp)
L468:
  cmpl   $0x1f,-0x4(%rbp)
  jle    L397
  addl   $0x1,-0x8(%rbp)
L412:
  cmpl   $0x3,-0x8(%rbp)
  jle    L607
  movl   $0x0,-0x8(%rbp)
  jmp    L575
L470:
  movl   $0x0,-0x4(%rbp)
  jmp    L120
L348:
  mov    -0x8(%rbp),%eax
  shl    $0x7,%eax
  mov    %eax,%edx
  mov    -0x4(%rbp),%eax
  add    %edx,%eax
  movslq %eax,%rdx
  mov    -0x18(%rbp),%rax
  add    %rdx,%rax
  movzbl (%rax),%edx
  mov    -0x8(%rbp),%eax
  shl    $0x7,%eax
  mov    %eax,%ecx
  mov    -0x4(%rbp),%eax
  add    %ecx,%eax
  movslq %eax,%rcx
  mov    -0x18(%rbp),%rax
  add    %rcx,%rax
  movzbl (%rax),%eax
  shr    %al
  mov    %edx,%ecx
  xor    %eax,%ecx
  mov    -0x8(%rbp),%eax
  shl    $0x7,%eax
  mov    %eax,%edx
  mov    -0x4(%rbp),%eax
  add    %edx,%eax
  movslq %eax,%rdx
  mov    -0x18(%rbp),%rax
  add    %rdx,%rax
  movzbl (%rax),%eax
  shr    $0x2,%al
  xor    %eax,%ecx
  mov    -0x8(%rbp),%eax
  shl    $0x7,%eax
  mov    %eax,%edx
  mov    -0x4(%rbp),%eax
  add    %edx,%eax
  movslq %eax,%rdx
  mov    -0x18(%rbp),%rax
  add    %rdx,%rax
  movzbl (%rax),%eax
  shr    $0x3,%al
  xor    %eax,%ecx
  mov    -0x8(%rbp),%eax
  shl    $0x7,%eax
  mov    %eax,%edx
  mov    -0x4(%rbp),%eax
  add    %edx,%eax
  movslq %eax,%rdx
  mov    -0x18(%rbp),%rax
  add    %rdx,%rax
  movzbl (%rax),%eax
  shr    $0x4,%al
  xor    %eax,%ecx
  mov    -0x8(%rbp),%eax
  shl    $0x7,%eax
  mov    %eax,%edx
  mov    -0x4(%rbp),%eax
  add    %edx,%eax
  movslq %eax,%rdx
  mov    -0x18(%rbp),%rax
  add    %rdx,%rax
  movzbl (%rax),%eax
  shr    $0x5,%al
  xor    %eax,%ecx
  mov    -0x8(%rbp),%eax
  shl    $0x7,%eax
  mov    %eax,%edx
  mov    -0x4(%rbp),%eax
  add    %edx,%eax
  movslq %eax,%rdx
  mov    -0x18(%rbp),%rax
  add    %rdx,%rax
  movzbl (%rax),%eax
  shr    $0x6,%al
  xor    %eax,%ecx
  mov    -0x8(%rbp),%eax
  shl    $0x7,%eax
  mov    %eax,%edx
  mov    -0x4(%rbp),%eax
  add    %edx,%eax
  movslq %eax,%rdx
  mov    -0x18(%rbp),%rax
  add    %rdx,%rax
  movzbl (%rax),%eax
  shr    $0x7,%al
  xor    %ecx,%eax
  movzbl %al,%eax
  add    %eax,%eax
  and    $0x2,%eax
  mov    %eax,%edx
  movzbl -0xa(%rbp),%eax
  xor    %edx,%eax
  mov    %al,-0xa(%rbp)
  addl   $0x1,-0x4(%rbp)
L120:
  cmpl   $0x3f,-0x4(%rbp)
  jle    L348
  addl   $0x1,-0x8(%rbp)
L575:
  cmpl   $0x1,-0x8(%rbp)
  jle    L470
  movl   $0x0,-0x8(%rbp)
  jmp    L215
L21:
  mov    -0x8(%rbp),%eax
  movslq %eax,%rdx
  mov    -0x18(%rbp),%rax
  add    %rdx,%rax
  movzbl (%rax),%edx
  mov    -0x8(%rbp),%eax
  movslq %eax,%rcx
  mov    -0x18(%rbp),%rax
  add    %rcx,%rax
  movzbl (%rax),%eax
  shr    %al
  mov    %edx,%ecx
  xor    %eax,%ecx
  mov    -0x8(%rbp),%eax
  movslq %eax,%rdx
  mov    -0x18(%rbp),%rax
  add    %rdx,%rax
  movzbl (%rax),%eax
  shr    $0x2,%al
  xor    %eax,%ecx
  mov    -0x8(%rbp),%eax
  movslq %eax,%rdx
  mov    -0x18(%rbp),%rax
  add    %rdx,%rax
  movzbl (%rax),%eax
  shr    $0x3,%al
  xor    %eax,%ecx
  mov    -0x8(%rbp),%eax
  movslq %eax,%rdx
  mov    -0x18(%rbp),%rax
  add    %rdx,%rax
  movzbl (%rax),%eax
  shr    $0x4,%al
  xor    %eax,%ecx
  mov    -0x8(%rbp),%eax
  movslq %eax,%rdx
  mov    -0x18(%rbp),%rax
  add    %rdx,%rax
  movzbl (%rax),%eax
  shr    $0x5,%al
  xor    %eax,%ecx
  mov    -0x8(%rbp),%eax
  movslq %eax,%rdx
  mov    -0x18(%rbp),%rax
  add    %rdx,%rax
  movzbl (%rax),%eax
  shr    $0x6,%al
  xor    %eax,%ecx
  mov    -0x8(%rbp),%eax
  movslq %eax,%rdx
  mov    -0x18(%rbp),%rax
  add    %rdx,%rax
  movzbl (%rax),%eax
  shr    $0x7,%al
  xor    %ecx,%eax
  movzbl %al,%eax
  shl    $0x2,%eax
  and    $0x4,%eax
  mov    %eax,%edx
  movzbl -0xa(%rbp),%eax
  xor    %edx,%eax
  mov    %al,-0xa(%rbp)
  addl   $0x1,-0x8(%rbp)
L215:
  cmpl   $0x7f,-0x8(%rbp)
  jle    L21
  movl   $0x0,-0x8(%rbp)
  jmp    L609
L301:
  mov    -0x8(%rbp),%eax
  movslq %eax,%rdx
  mov    -0x18(%rbp),%rax
  add    %rdx,%rax
  movzbl (%rax),%eax
  shr    %al
  mov    %eax,%ecx
  mov    -0x8(%rbp),%eax
  movslq %eax,%rdx
  mov    -0x18(%rbp),%rax
  add    %rdx,%rax
  movzbl (%rax),%eax
  shr    $0x3,%al
  xor    %eax,%ecx
  mov    -0x8(%rbp),%eax
  movslq %eax,%rdx
  mov    -0x18(%rbp),%rax
  add    %rdx,%rax
  movzbl (%rax),%eax
  shr    $0x5,%al
  xor    %eax,%ecx
  mov    -0x8(%rbp),%eax
  movslq %eax,%rdx
  mov    -0x18(%rbp),%rax
  add    %rdx,%rax
  movzbl (%rax),%eax
  shr    $0x7,%al
  xor    %ecx,%eax
  movzbl %al,%eax
  shl    $0x5,%eax
  and    $0x20,%eax
  mov    %eax,%edx
  movzbl -0xa(%rbp),%eax
  xor    %edx,%eax
  mov    %al,-0xa(%rbp)
  addl   $0x1,-0x8(%rbp)
L609:
  cmpl   $0xff,-0x8(%rbp)
  jle    L301
  movl   $0x0,-0x8(%rbp)
  jmp    L9
L214:
  mov    -0x8(%rbp),%eax
  movslq %eax,%rdx
  mov    -0x18(%rbp),%rax
  add    %rdx,%rax
  movzbl (%rax),%eax
  shr    $0x2,%al
  mov    %eax,%ecx
  mov    -0x8(%rbp),%eax
  movslq %eax,%rdx
  mov    -0x18(%rbp),%rax
  add    %rdx,%rax
  movzbl (%rax),%eax
  shr    $0x3,%al
  xor    %eax,%ecx
  mov    -0x8(%rbp),%eax
  movslq %eax,%rdx
  mov    -0x18(%rbp),%rax
  add    %rdx,%rax
  movzbl (%rax),%eax
  shr    $0x6,%al
  xor    %eax,%ecx
  mov    -0x8(%rbp),%eax
  movslq %eax,%rdx
  mov    -0x18(%rbp),%rax
  add    %rdx,%rax
  movzbl (%rax),%eax
  shr    $0x7,%al
  xor    %ecx,%eax
  movzbl %al,%eax
  shl    $0x6,%eax
  and    $0x40,%eax
  mov    %eax,%edx
  movzbl -0xa(%rbp),%eax
  xor    %edx,%eax
  mov    %al,-0xa(%rbp)
  addl   $0x1,-0x8(%rbp)
L9:
  cmpl   $0xff,-0x8(%rbp)
  jle    L214
  movl   $0x0,-0x8(%rbp)
  jmp    L638
L537:
  mov    -0x8(%rbp),%eax
  movslq %eax,%rdx
  mov    -0x18(%rbp),%rax
  add    %rdx,%rax
  movzbl (%rax),%eax
  shr    $0x4,%al
  mov    %eax,%ecx
  mov    -0x8(%rbp),%eax
  movslq %eax,%rdx
  mov    -0x18(%rbp),%rax
  add    %rdx,%rax
  movzbl (%rax),%eax
  shr    $0x5,%al
  xor    %eax,%ecx
  mov    -0x8(%rbp),%eax
  movslq %eax,%rdx
  mov    -0x18(%rbp),%rax
  add    %rdx,%rax
  movzbl (%rax),%eax
  shr    $0x6,%al
  xor    %eax,%ecx
  mov    -0x8(%rbp),%eax
  movslq %eax,%rdx
  mov    -0x18(%rbp),%rax
  add    %rdx,%rax
  movzbl (%rax),%eax
  shr    $0x7,%al
  xor    %ecx,%eax
  movzbl %al,%eax
  shl    $0x7,%eax
  mov    %eax,%edx
  movzbl -0xa(%rbp),%eax
  xor    %edx,%eax
  mov    %al,-0xa(%rbp)
  addl   $0x1,-0x8(%rbp)
L638:
  cmpl   $0xff,-0x8(%rbp)
  jle    L537
  movl   $0x0,-0x8(%rbp)
  jmp    L236
L402:
  mov    -0x8(%rbp),%eax
  add    %eax,%eax
  cltq
  lea    0x1(%rax),%rdx
  mov    -0x18(%rbp),%rax
  add    %rdx,%rax
  movzbl (%rax),%edx
  mov    -0x8(%rbp),%eax
  add    %eax,%eax
  cltq
  lea    0x1(%rax),%rcx
  mov    -0x18(%rbp),%rax
  add    %rcx,%rax
  movzbl (%rax),%eax
  shr    %al
  xor    %eax,%edx
  mov    -0x8(%rbp),%eax
  add    %eax,%eax
  cltq
  lea    0x1(%rax),%rcx
  mov    -0x18(%rbp),%rax
  add    %rcx,%rax
  movzbl (%rax),%eax
  shr    $0x2,%al
  xor    %eax,%edx
  mov    -0x8(%rbp),%eax
  add    %eax,%eax
  cltq
  lea    0x1(%rax),%rcx
  mov    -0x18(%rbp),%rax
  add    %rcx,%rax
  movzbl (%rax),%eax
  shr    $0x3,%al
  xor    %eax,%edx
  mov    -0x8(%rbp),%eax
  add    %eax,%eax
  cltq
  lea    0x1(%rax),%rcx
  mov    -0x18(%rbp),%rax
  add    %rcx,%rax
  movzbl (%rax),%eax
  shr    $0x4,%al
  xor    %eax,%edx
  mov    -0x8(%rbp),%eax
  add    %eax,%eax
  cltq
  lea    0x1(%rax),%rcx
  mov    -0x18(%rbp),%rax
  add    %rcx,%rax
  movzbl (%rax),%eax
  shr    $0x5,%al
  xor    %eax,%edx
  mov    -0x8(%rbp),%eax
  add    %eax,%eax
  cltq
  lea    0x1(%rax),%rcx
  mov    -0x18(%rbp),%rax
  add    %rcx,%rax
  movzbl (%rax),%eax
  shr    $0x6,%al
  xor    %eax,%edx
  mov    -0x8(%rbp),%eax
  add    %eax,%eax
  cltq
  lea    0x1(%rax),%rcx
  mov    -0x18(%rbp),%rax
  add    %rcx,%rax
  movzbl (%rax),%eax
  shr    $0x7,%al
  xor    %edx,%eax
  and    $0x1,%eax
  mov    %eax,%edx
  movzbl -0x9(%rbp),%eax
  xor    %edx,%eax
  mov    %al,-0x9(%rbp)
  addl   $0x1,-0x8(%rbp)
L236:
  cmpl   $0x7f,-0x8(%rbp)
  jle    L402
  movl   $0x0,-0x8(%rbp)
  jmp    L155
L41:
  movl   $0x2,-0x4(%rbp)
  jmp    L583
L235:
  mov    -0x8(%rbp),%eax
  lea    0x0(,%rax,4),%edx
  mov    -0x4(%rbp),%eax
  add    %edx,%eax
  movslq %eax,%rdx
  mov    -0x18(%rbp),%rax
  add    %rdx,%rax
  movzbl (%rax),%edx
  mov    -0x8(%rbp),%eax
  lea    0x0(,%rax,4),%ecx
  mov    -0x4(%rbp),%eax
  add    %ecx,%eax
  movslq %eax,%rcx
  mov    -0x18(%rbp),%rax
  add    %rcx,%rax
  movzbl (%rax),%eax
  shr    %al
  mov    %edx,%ecx
  xor    %eax,%ecx
  mov    -0x8(%rbp),%eax
  lea    0x0(,%rax,4),%edx
  mov    -0x4(%rbp),%eax
  add    %edx,%eax
  movslq %eax,%rdx
  mov    -0x18(%rbp),%rax
  add    %rdx,%rax
  movzbl (%rax),%eax
  shr    $0x2,%al
  xor    %eax,%ecx
  mov    -0x8(%rbp),%eax
  lea    0x0(,%rax,4),%edx
  mov    -0x4(%rbp),%eax
  add    %edx,%eax
  movslq %eax,%rdx
  mov    -0x18(%rbp),%rax
  add    %rdx,%rax
  movzbl (%rax),%eax
  shr    $0x3,%al
  xor    %eax,%ecx
  mov    -0x8(%rbp),%eax
  lea    0x0(,%rax,4),%edx
  mov    -0x4(%rbp),%eax
  add    %edx,%eax
  movslq %eax,%rdx
  mov    -0x18(%rbp),%rax
  add    %rdx,%rax
  movzbl (%rax),%eax
  shr    $0x4,%al
  xor    %eax,%ecx
  mov    -0x8(%rbp),%eax
  lea    0x0(,%rax,4),%edx
  mov    -0x4(%rbp),%eax
  add    %edx,%eax
  movslq %eax,%rdx
  mov    -0x18(%rbp),%rax
  add    %rdx,%rax
  movzbl (%rax),%eax
  shr    $0x5,%al
  xor    %eax,%ecx
  mov    -0x8(%rbp),%eax
  lea    0x0(,%rax,4),%edx
  mov    -0x4(%rbp),%eax
  add    %edx,%eax
  movslq %eax,%rdx
  mov    -0x18(%rbp),%rax
  add    %rdx,%rax
  movzbl (%rax),%eax
  shr    $0x6,%al
  xor    %eax,%ecx
  mov    -0x8(%rbp),%eax
  lea    0x0(,%rax,4),%edx
  mov    -0x4(%rbp),%eax
  add    %edx,%eax
  movslq %eax,%rdx
  mov    -0x18(%rbp),%rax
  add    %rdx,%rax
  movzbl (%rax),%eax
  shr    $0x7,%al
  xor    %ecx,%eax
  movzbl %al,%eax
  add    %eax,%eax
  and    $0x2,%eax
  mov    %eax,%edx
  movzbl -0x9(%rbp),%eax
  xor    %edx,%eax
  mov    %al,-0x9(%rbp)
  addl   $0x1,-0x4(%rbp)
L583:
  cmpl   $0x3,-0x4(%rbp)
  jle    L235
  addl   $0x1,-0x8(%rbp)
L155:
  cmpl   $0x3f,-0x8(%rbp)
  jle    L41
  movl   $0x0,-0x8(%rbp)
  jmp    L437
L425:
  movl   $0x4,-0x4(%rbp)
  jmp    L224
L463:
  mov    -0x8(%rbp),%eax
  lea    0x0(,%rax,8),%edx
  mov    -0x4(%rbp),%eax
  add    %edx,%eax
  movslq %eax,%rdx
  mov    -0x18(%rbp),%rax
  add    %rdx,%rax
  movzbl (%rax),%edx
  mov    -0x8(%rbp),%eax
  lea    0x0(,%rax,8),%ecx
  mov    -0x4(%rbp),%eax
  add    %ecx,%eax
  movslq %eax,%rcx
  mov    -0x18(%rbp),%rax
  add    %rcx,%rax
  movzbl (%rax),%eax
  shr    %al
  mov    %edx,%ecx
  xor    %eax,%ecx
  mov    -0x8(%rbp),%eax
  lea    0x0(,%rax,8),%edx
  mov    -0x4(%rbp),%eax
  add    %edx,%eax
  movslq %eax,%rdx
  mov    -0x18(%rbp),%rax
  add    %rdx,%rax
  movzbl (%rax),%eax
  shr    $0x2,%al
  xor    %eax,%ecx
  mov    -0x8(%rbp),%eax
  lea    0x0(,%rax,8),%edx
  mov    -0x4(%rbp),%eax
  add    %edx,%eax
  movslq %eax,%rdx
  mov    -0x18(%rbp),%rax
  add    %rdx,%rax
  movzbl (%rax),%eax
  shr    $0x3,%al
  xor    %eax,%ecx
  mov    -0x8(%rbp),%eax
  lea    0x0(,%rax,8),%edx
  mov    -0x4(%rbp),%eax
  add    %edx,%eax
  movslq %eax,%rdx
  mov    -0x18(%rbp),%rax
  add    %rdx,%rax
  movzbl (%rax),%eax
  shr    $0x4,%al
  xor    %eax,%ecx
  mov    -0x8(%rbp),%eax
  lea    0x0(,%rax,8),%edx
  mov    -0x4(%rbp),%eax
  add    %edx,%eax
  movslq %eax,%rdx
  mov    -0x18(%rbp),%rax
  add    %rdx,%rax
  movzbl (%rax),%eax
  shr    $0x5,%al
  xor    %eax,%ecx
  mov    -0x8(%rbp),%eax
  lea    0x0(,%rax,8),%edx
  mov    -0x4(%rbp),%eax
  add    %edx,%eax
  movslq %eax,%rdx
  mov    -0x18(%rbp),%rax
  add    %rdx,%rax
  movzbl (%rax),%eax
  shr    $0x6,%al
  xor    %eax,%ecx
  mov    -0x8(%rbp),%eax
  lea    0x0(,%rax,8),%edx
  mov    -0x4(%rbp),%eax
  add    %edx,%eax
  movslq %eax,%rdx
  mov    -0x18(%rbp),%rax
  add    %rdx,%rax
  movzbl (%rax),%eax
  shr    $0x7,%al
  xor    %ecx,%eax
  movzbl %al,%eax
  shl    $0x2,%eax
  and    $0x4,%eax
  mov    %eax,%edx
  movzbl -0x9(%rbp),%eax
  xor    %edx,%eax
  mov    %al,-0x9(%rbp)
  addl   $0x1,-0x4(%rbp)
L224:
  cmpl   $0x7,-0x4(%rbp)
  jle    L463
  addl   $0x1,-0x8(%rbp)
L437:
  cmpl   $0x1f,-0x8(%rbp)
  jle    L425
  movl   $0x0,-0x8(%rbp)
  jmp    L423
L160:
  movl   $0x8,-0x4(%rbp)
  jmp    L229
L269:
  mov    -0x8(%rbp),%eax
  shl    $0x4,%eax
  mov    %eax,%edx
  mov    -0x4(%rbp),%eax
  add    %edx,%eax
  movslq %eax,%rdx
  mov    -0x18(%rbp),%rax
  add    %rdx,%rax
  movzbl (%rax),%edx
  mov    -0x8(%rbp),%eax
  shl    $0x4,%eax
  mov    %eax,%ecx
  mov    -0x4(%rbp),%eax
  add    %ecx,%eax
  movslq %eax,%rcx
  mov    -0x18(%rbp),%rax
  add    %rcx,%rax
  movzbl (%rax),%eax
  shr    %al
  mov    %edx,%ecx
  xor    %eax,%ecx
  mov    -0x8(%rbp),%eax
  shl    $0x4,%eax
  mov    %eax,%edx
  mov    -0x4(%rbp),%eax
  add    %edx,%eax
  movslq %eax,%rdx
  mov    -0x18(%rbp),%rax
  add    %rdx,%rax
  movzbl (%rax),%eax
  shr    $0x2,%al
  xor    %eax,%ecx
  mov    -0x8(%rbp),%eax
  shl    $0x4,%eax
  mov    %eax,%edx
  mov    -0x4(%rbp),%eax
  add    %edx,%eax
  movslq %eax,%rdx
  mov    -0x18(%rbp),%rax
  add    %rdx,%rax
  movzbl (%rax),%eax
  shr    $0x3,%al
  xor    %eax,%ecx
  mov    -0x8(%rbp),%eax
  shl    $0x4,%eax
  mov    %eax,%edx
  mov    -0x4(%rbp),%eax
  add    %edx,%eax
  movslq %eax,%rdx
  mov    -0x18(%rbp),%rax
  add    %rdx,%rax
  movzbl (%rax),%eax
  shr    $0x4,%al
  xor    %eax,%ecx
  mov    -0x8(%rbp),%eax
  shl    $0x4,%eax
  mov    %eax,%edx
  mov    -0x4(%rbp),%eax
  add    %edx,%eax
  movslq %eax,%rdx
  mov    -0x18(%rbp),%rax
  add    %rdx,%rax
  movzbl (%rax),%eax
  shr    $0x5,%al
  xor    %eax,%ecx
  mov    -0x8(%rbp),%eax
  shl    $0x4,%eax
  mov    %eax,%edx
  mov    -0x4(%rbp),%eax
  add    %edx,%eax
  movslq %eax,%rdx
  mov    -0x18(%rbp),%rax
  add    %rdx,%rax
  movzbl (%rax),%eax
  shr    $0x6,%al
  xor    %eax,%ecx
  mov    -0x8(%rbp),%eax
  shl    $0x4,%eax
  mov    %eax,%edx
  mov    -0x4(%rbp),%eax
  add    %edx,%eax
  movslq %eax,%rdx
  mov    -0x18(%rbp),%rax
  add    %rdx,%rax
  movzbl (%rax),%eax
  shr    $0x7,%al
  xor    %ecx,%eax
  movzbl %al,%eax
  shl    $0x3,%eax
  and    $0x8,%eax
  mov    %eax,%edx
  movzbl -0x9(%rbp),%eax
  xor    %edx,%eax
  mov    %al,-0x9(%rbp)
  addl   $0x1,-0x4(%rbp)
L229:
  cmpl   $0xf,-0x4(%rbp)
  jle    L269
  addl   $0x1,-0x8(%rbp)
L423:
  cmpl   $0xf,-0x8(%rbp)
  jle    L160
  movl   $0x0,-0x8(%rbp)
  jmp    L247
L104:
  movl   $0x10,-0x4(%rbp)
  jmp    L22
L584:
  mov    -0x8(%rbp),%eax
  shl    $0x5,%eax
  mov    %eax,%edx
  mov    -0x4(%rbp),%eax
  add    %edx,%eax
  movslq %eax,%rdx
  mov    -0x18(%rbp),%rax
  add    %rdx,%rax
  movzbl (%rax),%edx
  mov    -0x8(%rbp),%eax
  shl    $0x5,%eax
  mov    %eax,%ecx
  mov    -0x4(%rbp),%eax
  add    %ecx,%eax
  movslq %eax,%rcx
  mov    -0x18(%rbp),%rax
  add    %rcx,%rax
  movzbl (%rax),%eax
  shr    %al
  mov    %edx,%ecx
  xor    %eax,%ecx
  mov    -0x8(%rbp),%eax
  shl    $0x5,%eax
  mov    %eax,%edx
  mov    -0x4(%rbp),%eax
  add    %edx,%eax
  movslq %eax,%rdx
  mov    -0x18(%rbp),%rax
  add    %rdx,%rax
  movzbl (%rax),%eax
  shr    $0x2,%al
  xor    %eax,%ecx
  mov    -0x8(%rbp),%eax
  shl    $0x5,%eax
  mov    %eax,%edx
  mov    -0x4(%rbp),%eax
  add    %edx,%eax
  movslq %eax,%rdx
  mov    -0x18(%rbp),%rax
  add    %rdx,%rax
  movzbl (%rax),%eax
  shr    $0x3,%al
  xor    %eax,%ecx
  mov    -0x8(%rbp),%eax
  shl    $0x5,%eax
  mov    %eax,%edx
  mov    -0x4(%rbp),%eax
  add    %edx,%eax
  movslq %eax,%rdx
  mov    -0x18(%rbp),%rax
  add    %rdx,%rax
  movzbl (%rax),%eax
  shr    $0x4,%al
  xor    %eax,%ecx
  mov    -0x8(%rbp),%eax
  shl    $0x5,%eax
  mov    %eax,%edx
  mov    -0x4(%rbp),%eax
  add    %edx,%eax
  movslq %eax,%rdx
  mov    -0x18(%rbp),%rax
  add    %rdx,%rax
  movzbl (%rax),%eax
  shr    $0x5,%al
  xor    %eax,%ecx
  mov    -0x8(%rbp),%eax
  shl    $0x5,%eax
  mov    %eax,%edx
  mov    -0x4(%rbp),%eax
  add    %edx,%eax
  movslq %eax,%rdx
  mov    -0x18(%rbp),%rax
  add    %rdx,%rax
  movzbl (%rax),%eax
  shr    $0x6,%al
  xor    %eax,%ecx
  mov    -0x8(%rbp),%eax
  shl    $0x5,%eax
  mov    %eax,%edx
  mov    -0x4(%rbp),%eax
  add    %edx,%eax
  movslq %eax,%rdx
  mov    -0x18(%rbp),%rax
  add    %rdx,%rax
  movzbl (%rax),%eax
  shr    $0x7,%al
  xor    %ecx,%eax
  movzbl %al,%eax
  shl    $0x4,%eax
  and    $0x10,%eax
  mov    %eax,%edx
  movzbl -0x9(%rbp),%eax
  xor    %edx,%eax
  mov    %al,-0x9(%rbp)
  addl   $0x1,-0x4(%rbp)
L22:
  cmpl   $0x1f,-0x4(%rbp)
  jle    L584
  addl   $0x1,-0x8(%rbp)
L247:
  cmpl   $0x7,-0x8(%rbp)
  jle    L104
  movl   $0x0,-0x8(%rbp)
  jmp    L456
L616:
  movl   $0x20,-0x4(%rbp)
  jmp    L503
L227:
  mov    -0x8(%rbp),%eax
  shl    $0x6,%eax
  mov    %eax,%edx
  mov    -0x4(%rbp),%eax
  add    %edx,%eax
  movslq %eax,%rdx
  mov    -0x18(%rbp),%rax
  add    %rdx,%rax
  movzbl (%rax),%edx
  mov    -0x8(%rbp),%eax
  shl    $0x6,%eax
  mov    %eax,%ecx
  mov    -0x4(%rbp),%eax
  add    %ecx,%eax
  movslq %eax,%rcx
  mov    -0x18(%rbp),%rax
  add    %rcx,%rax
  movzbl (%rax),%eax
  shr    %al
  mov    %edx,%ecx
  xor    %eax,%ecx
  mov    -0x8(%rbp),%eax
  shl    $0x6,%eax
  mov    %eax,%edx
  mov    -0x4(%rbp),%eax
  add    %edx,%eax
  movslq %eax,%rdx
  mov    -0x18(%rbp),%rax
  add    %rdx,%rax
  movzbl (%rax),%eax
  shr    $0x2,%al
  xor    %eax,%ecx
  mov    -0x8(%rbp),%eax
  shl    $0x6,%eax
  mov    %eax,%edx
  mov    -0x4(%rbp),%eax
  add    %edx,%eax
  movslq %eax,%rdx
  mov    -0x18(%rbp),%rax
  add    %rdx,%rax
  movzbl (%rax),%eax
  shr    $0x3,%al
  xor    %eax,%ecx
  mov    -0x8(%rbp),%eax
  shl    $0x6,%eax
  mov    %eax,%edx
  mov    -0x4(%rbp),%eax
  add    %edx,%eax
  movslq %eax,%rdx
  mov    -0x18(%rbp),%rax
  add    %rdx,%rax
  movzbl (%rax),%eax
  shr    $0x4,%al
  xor    %eax,%ecx
  mov    -0x8(%rbp),%eax
  shl    $0x6,%eax
  mov    %eax,%edx
  mov    -0x4(%rbp),%eax
  add    %edx,%eax
  movslq %eax,%rdx
  mov    -0x18(%rbp),%rax
  add    %rdx,%rax
  movzbl (%rax),%eax
  shr    $0x5,%al
  xor    %eax,%ecx
  mov    -0x8(%rbp),%eax
  shl    $0x6,%eax
  mov    %eax,%edx
  mov    -0x4(%rbp),%eax
  add    %edx,%eax
  movslq %eax,%rdx
  mov    -0x18(%rbp),%rax
  add    %rdx,%rax
  movzbl (%rax),%eax
  shr    $0x6,%al
  xor    %eax,%ecx
  mov    -0x8(%rbp),%eax
  shl    $0x6,%eax
  mov    %eax,%edx
  mov    -0x4(%rbp),%eax
  add    %edx,%eax
  movslq %eax,%rdx
  mov    -0x18(%rbp),%rax
  add    %rdx,%rax
  movzbl (%rax),%eax
  shr    $0x7,%al
  xor    %ecx,%eax
  movzbl %al,%eax
  shl    $0x5,%eax
  and    $0x20,%eax
  mov    %eax,%edx
  movzbl -0x9(%rbp),%eax
  xor    %edx,%eax
  mov    %al,-0x9(%rbp)
  addl   $0x1,-0x4(%rbp)
L503:
  cmpl   $0x3f,-0x4(%rbp)
  jle    L227
  addl   $0x1,-0x8(%rbp)
L456:
  cmpl   $0x3,-0x8(%rbp)
  jle    L616
  movl   $0x0,-0x8(%rbp)
  jmp    L525
L405:
  movl   $0x40,-0x4(%rbp)
  jmp    L526
L336:
  mov    -0x8(%rbp),%eax
  shl    $0x7,%eax
  mov    %eax,%edx
  mov    -0x4(%rbp),%eax
  add    %edx,%eax
  movslq %eax,%rdx
  mov    -0x18(%rbp),%rax
  add    %rdx,%rax
  movzbl (%rax),%edx
  mov    -0x8(%rbp),%eax
  shl    $0x7,%eax
  mov    %eax,%ecx
  mov    -0x4(%rbp),%eax
  add    %ecx,%eax
  movslq %eax,%rcx
  mov    -0x18(%rbp),%rax
  add    %rcx,%rax
  movzbl (%rax),%eax
  shr    %al
  mov    %edx,%ecx
  xor    %eax,%ecx
  mov    -0x8(%rbp),%eax
  shl    $0x7,%eax
  mov    %eax,%edx
  mov    -0x4(%rbp),%eax
  add    %edx,%eax
  movslq %eax,%rdx
  mov    -0x18(%rbp),%rax
  add    %rdx,%rax
  movzbl (%rax),%eax
  shr    $0x2,%al
  xor    %eax,%ecx
  mov    -0x8(%rbp),%eax
  shl    $0x7,%eax
  mov    %eax,%edx
  mov    -0x4(%rbp),%eax
  add    %edx,%eax
  movslq %eax,%rdx
  mov    -0x18(%rbp),%rax
  add    %rdx,%rax
  movzbl (%rax),%eax
  shr    $0x3,%al
  xor    %eax,%ecx
  mov    -0x8(%rbp),%eax
  shl    $0x7,%eax
  mov    %eax,%edx
  mov    -0x4(%rbp),%eax
  add    %edx,%eax
  movslq %eax,%rdx
  mov    -0x18(%rbp),%rax
  add    %rdx,%rax
  movzbl (%rax),%eax
  shr    $0x4,%al
  xor    %eax,%ecx
  mov    -0x8(%rbp),%eax
  shl    $0x7,%eax
  mov    %eax,%edx
  mov    -0x4(%rbp),%eax
  add    %edx,%eax
  movslq %eax,%rdx
  mov    -0x18(%rbp),%rax
  add    %rdx,%rax
  movzbl (%rax),%eax
  shr    $0x5,%al
  xor    %eax,%ecx
  mov    -0x8(%rbp),%eax
  shl    $0x7,%eax
  mov    %eax,%edx
  mov    -0x4(%rbp),%eax
  add    %edx,%eax
  movslq %eax,%rdx
  mov    -0x18(%rbp),%rax
  add    %rdx,%rax
  movzbl (%rax),%eax
  shr    $0x6,%al
  xor    %eax,%ecx
  mov    -0x8(%rbp),%eax
  shl    $0x7,%eax
  mov    %eax,%edx
  mov    -0x4(%rbp),%eax
  add    %edx,%eax
  movslq %eax,%rdx
  mov    -0x18(%rbp),%rax
  add    %rdx,%rax
  movzbl (%rax),%eax
  shr    $0x7,%al
  xor    %ecx,%eax
  movzbl %al,%eax
  shl    $0x6,%eax
  and    $0x40,%eax
  mov    %eax,%edx
  movzbl -0x9(%rbp),%eax
  xor    %edx,%eax
  mov    %al,-0x9(%rbp)
  addl   $0x1,-0x4(%rbp)
L526:
  cmpl   $0x7f,-0x4(%rbp)
  jle    L336
  addl   $0x1,-0x8(%rbp)
L525:
  cmpl   $0x1,-0x8(%rbp)
  jle    L405
  movl   $0x80,-0x8(%rbp)
  jmp    L662
L239:
  mov    -0x8(%rbp),%eax
  movslq %eax,%rdx
  mov    -0x18(%rbp),%rax
  add    %rdx,%rax
  movzbl (%rax),%edx
  mov    -0x8(%rbp),%eax
  movslq %eax,%rcx
  mov    -0x18(%rbp),%rax
  add    %rcx,%rax
  movzbl (%rax),%eax
  shr    %al
  mov    %edx,%ecx
  xor    %eax,%ecx
  mov    -0x8(%rbp),%eax
  movslq %eax,%rdx
  mov    -0x18(%rbp),%rax
  add    %rdx,%rax
  movzbl (%rax),%eax
  shr    $0x2,%al
  xor    %eax,%ecx
  mov    -0x8(%rbp),%eax
  movslq %eax,%rdx
  mov    -0x18(%rbp),%rax
  add    %rdx,%rax
  movzbl (%rax),%eax
  shr    $0x3,%al
  xor    %eax,%ecx
  mov    -0x8(%rbp),%eax
  movslq %eax,%rdx
  mov    -0x18(%rbp),%rax
  add    %rdx,%rax
  movzbl (%rax),%eax
  shr    $0x4,%al
  xor    %eax,%ecx
  mov    -0x8(%rbp),%eax
  movslq %eax,%rdx
  mov    -0x18(%rbp),%rax
  add    %rdx,%rax
  movzbl (%rax),%eax
  shr    $0x5,%al
  xor    %eax,%ecx
  mov    -0x8(%rbp),%eax
  movslq %eax,%rdx
  mov    -0x18(%rbp),%rax
  add    %rdx,%rax
  movzbl (%rax),%eax
  shr    $0x6,%al
  xor    %eax,%ecx
  mov    -0x8(%rbp),%eax
  movslq %eax,%rdx
  mov    -0x18(%rbp),%rax
  add    %rdx,%rax
  movzbl (%rax),%eax
  shr    $0x7,%al
  xor    %ecx,%eax
  movzbl %al,%eax
  shl    $0x7,%eax
  mov    %eax,%edx
  movzbl -0x9(%rbp),%eax
  xor    %edx,%eax
  mov    %al,-0x9(%rbp)
  addl   $0x1,-0x8(%rbp)
L662:
  cmpl   $0xff,-0x8(%rbp)
  jle    L239
  mov    -0x20(%rbp),%rax
  movzbl -0xb(%rbp),%edx
  mov    %dl,(%rax)
  mov    -0x20(%rbp),%rax
  lea    0x1(%rax),%rdx
  movzbl -0xa(%rbp),%eax
  mov    %al,(%rdx)
  mov    -0x20(%rbp),%rax
  lea    0x2(%rax),%rdx
  movzbl -0x9(%rbp),%eax
  mov    %al,(%rdx)
  nop
  pop    %rbp
  ret
```

assistant: ```c
void cvmx_nand_compute_boot_ecc(unsigned char *block, unsigned char *eccp) {
  unsigned char pd0, pd1, pd2;
  int i, j;
  pd0 = pd1 = pd2 = 0;
  for (i = 0; i < 256; i++)
    pd0 ^= (block[i] ^ (block[i] >> 2) ^ (block[i] >> 4) ^ (block[i] >> 6)) & 1;
  for (i = 0; i < 256; i++)
    pd0 ^= ((block[i] ^ (block[i] >> 1) ^ (block[i] >> 4) ^ (block[i] >> 5)) & 1) << 1;
  for (i = 0; i < 256; i++)
    pd0 ^= ((block[i] ^ (block[i] >> 1) ^ (block[i] >> 2) ^ (block[i] >> 3)) & 1) << 2;
  for (i = 0; i < 128; i++)
    pd0 ^= ((block[2 * i] ^ (block[2 * i] >> 1) ^ (block[2 * i] >> 2) ^ (block[2 * i] >> 3) ^ (block[2 * i] >> 4) ^ (block[2 * i] >> 5) ^ (block[2 * i] >> 6) ^ (block[2 * i] >> 7)) & 1) << 3;
  for (i = 0; i < 64; i++)
    for (j = 0; j < 2; j++)
      pd0 ^= ((block[4 * i + j] ^ (block[4 * i + j] >> 1) ^ (block[4 * i + j] >> 2) ^ (block[4 * i + j] >> 3) ^ (block[4 * i + j] >> 4) ^ (block[4 * i + j] >> 5) ^ (block[4 * i + j] >> 6) ^ (block[4 * i + j] >> 7)) & 1) << 4;
  for (i = 0; i < 32; i++)
    for (j = 0; j < 4; j++)
      pd0 ^= ((block[8 * i + j] ^ (block[8 * i + j] >> 1) ^ (block[8 * i + j] >> 2) ^ (block[8 * i + j] >> 3) ^ (block[8 * i + j] >> 4) ^ (block[8 * i + j] >> 5) ^ (block[8 * i + j] >> 6) ^ (block[8 * i + j] >> 7)) & 1) << 5;
  for (i = 0; i < 16; i++)
    for (j = 0; j < 8; j++)
      pd0 ^= ((block[16 * i + j] ^ (block[16 * i + j] >> 1) ^ (block[16 * i + j] >> 2) ^ (block[16 * i + j] >> 3) ^ (block[16 * i + j] >> 4) ^ (block[16 * i + j] >> 5) ^ (block[16 * i + j] >> 6) ^ (block[16 * i + j] >> 7)) & 1) << 6;
  for (i = 0; i < 8; i++)
    for (j = 0; j < 16; j++)
      pd0 ^= ((block[32 * i + j] ^ (block[32 * i + j] >> 1) ^ (block[32 * i + j] >> 2) ^ (block[32 * i + j] >> 3) ^ (block[32 * i + j] >> 4) ^ (block[32 * i + j] >> 5) ^ (block[32 * i + j] >> 6) ^ (block[32 * i + j] >> 7)) & 1) << 7;
  for (i = 0; i < 4; i++)
    for (j = 0; j < 32; j++)
      pd1 ^= ((block[64 * i + j] ^ (block[64 * i + j] >> 1) ^ (block[64 * i + j] >> 2) ^ (block[64 * i + j] >> 3) ^ (block[64 * i + j] >> 4) ^ (block[64 * i + j] >> 5) ^ (block[64 * i + j] >> 6) ^ (block[64 * i + j] >> 7)) & 1) << 0;
  for (i = 0; i < 2; i++)
    for (j = 0; j < 64; j++)
      pd1 ^= ((block[128 * i + j] ^ (block[128 * i + j] >> 1) ^ (block[128 * i + j] >> 2) ^ (block[128 * i + j] >> 3) ^ (block[128 * i + j] >> 4) ^ (block[128 * i + j] >> 5) ^ (block[128 * i + j] >> 6) ^ (block[128 * i + j] >> 7)) & 1) << 1;
  for (i = 0; i < 128; i++)
    pd1 ^= ((block[i] ^ (block[i] >> 1) ^ (block[i] >> 2) ^ (block[i] >> 3) ^ (block[i] >> 4) ^ (block[i] >> 5) ^ (block[i] >> 6) ^ (block[i] >> 7)) & 1) << 2;
  for (i = 0; i < 256; i++)
    pd1 ^= (((block[i] >> 1) ^ (block[i] >> 3) ^ (block[i] >> 5) ^ (block[i] >> 7)) & 1) << 5;
  for (i = 0; i < 256; i++)
    pd1 ^= (((block[i] >> 2) ^ (block[i] >> 3) ^ (block[i] >> 6) ^ (block[i] >> 7)) & 1) << 6;
  for (i = 0; i < 256; i++)
    pd1 ^= (((block[i] >> 4) ^ (block[i] >> 5) ^ (block[i] >> 6) ^ (block[i] >> 7)) & 1) << 7;
  for (i = 0; i < 128; i++)
    pd2 ^= ((block[2 * i + 1] ^ (block[2 * i + 1] >> 1) ^ (block[2 * i + 1] >> 2) ^ (block[2 * i + 1] >> 3) ^ (block[2 * i + 1] >> 4) ^ (block[2 * i + 1] >> 5) ^ (block[2 * i + 1] >> 6) ^ (block[2 * i + 1] >> 7)) & 1) << 0;
  for (i = 0; i < 64; i++)
    for (j = 2; j < 4; j++)
      pd2 ^= ((block[4 * i + j] ^ (block[4 * i + j] >> 1) ^ (block[4 * i + j] >> 2) ^ (block[4 * i + j] >> 3) ^ (block[4 * i + j] >> 4) ^ (block[4 * i + j] >> 5) ^ (block[4 * i + j] >> 6) ^ (block[4 * i + j] >> 7)) & 1) << 1;
  for (i = 0; i < 32; i++)
    for (j = 4; j < 8; j++)
      pd2 ^= ((block[8 * i + j] ^ (block[8 * i + j] >> 1) ^ (block[8 * i + j] >> 2) ^ (block[8 * i + j] >> 3) ^ (block[8 * i + j] >> 4) ^ (block[8 * i + j] >> 5) ^ (block[8 * i + j] >> 6) ^ (block[8 * i + j] >> 7)) & 1) << 2;
  for (i = 0; i < 16; i++)
    for (j = 8; j < 16; j++)
      pd2 ^= ((block[16 * i + j] ^ (block[16 * i + j] >> 1) ^ (block[16 * i + j] >> 2) ^ (block[16 * i + j] >> 3) ^ (block[16 * i + j] >> 4) ^ (block[16 * i + j] >> 5) ^ (block[16 * i + j] >> 6) ^ (block[16 * i + j] >> 7)) & 1) << 3;
  for (i = 0; i < 8; i++)
    for (j = 16; j < 32; j++)
      pd2 ^= ((block[32 * i + j] ^ (block[32 * i + j] >> 1) ^ (block[32 * i + j] >> 2) ^ (block[32 * i + j] >> 3) ^ (block[32 * i + j] >> 4) ^ (block[32 * i + j] >> 5) ^ (block[32 * i + j] >> 6) ^ (block[32 * i + j] >> 7)) & 1) << 4;
  for (i = 0; i < 4; i++)
    for (j = 32; j < 64; j++)
      pd2 ^= ((block[64 * i + j] ^ (block[64 * i + j] >> 1) ^ (block[64 * i + j] >> 2) ^ (block[64 * i + j] >> 3) ^ (block[64 * i + j] >> 4) ^ (block[64 * i + j] >> 5) ^ (block[64 * i + j] >> 6) ^ (block[64 * i + j] >> 7)) & 1) << 5;
  for (i = 0; i < 2; i++)
    for (j = 64; j < 128; j++)
      pd2 ^= ((block[128 * i + j] ^ (block[128 * i + j] >> 1) ^ (block[128 * i + j] >> 2) ^ (block[128 * i + j] >> 3) ^ (block[128 * i + j] >> 4) ^ (block[128 * i + j] >> 5) ^ (block[128 * i + j] >> 6) ^ (block[128 * i + j] >> 7)) & 1) << 6;
  for (i = 128; i < 256; i++)
    pd2 ^= ((block[i] ^ (block[i] >> 1) ^ (block[i] >> 2) ^ (block[i] >> 3) ^ (block[i] >> 4) ^ (block[i] >> 5) ^ (block[i] >> 6) ^ (block[i] >> 7)) & 1) << 7;
  eccp[0] = pd0;
  eccp[1] = pd1;
  eccp[2] = pd2;
}
```