user: 下面的汇编指令对应的C源代码是什么:

```asm
<dist1>:
  endbr64
  mov    %ecx,%eax
  push   %r12
  push   %rbp
  push   %rbx
  mov    0x20(%rsp),%r11d
  or     %r8d,%eax
  jne    L133
  test   %r9d,%r9d
  jle    L32
  xor    %r8d,%r8d
  movslq %edx,%rcx
  jmp    L2
  nopl   0x0(%rax)
L156:
  add    $0x1,%r8d
  add    %rcx,%rdi
  add    %rcx,%rsi
  cmp    %r8d,%r9d
  je     L32
L2:
  movzbl (%rsi),%r10d
  movzbl (%rdi),%edx
  mov    %r10d,%ebx
  sub    %edx,%ebx
  sub    %r10d,%edx
  movzbl 0x1(%rsi),%r10d
  cmovs  %ebx,%edx
  mov    %r10d,%ebx
  add    %eax,%edx
  movzbl 0x1(%rdi),%eax
  sub    %eax,%ebx
  sub    %r10d,%eax
  movzbl 0x2(%rsi),%r10d
  cmovs  %ebx,%eax
  mov    %r10d,%ebx
  add    %eax,%edx
  movzbl 0x2(%rdi),%eax
  sub    %eax,%ebx
  sub    %r10d,%eax
  movzbl 0x3(%rsi),%r10d
  cmovs  %ebx,%eax
  mov    %r10d,%ebx
  add    %eax,%edx
  movzbl 0x3(%rdi),%eax
  sub    %eax,%ebx
  sub    %r10d,%eax
  movzbl 0x4(%rsi),%r10d
  cmovs  %ebx,%eax
  mov    %r10d,%ebx
  add    %eax,%edx
  movzbl 0x4(%rdi),%eax
  sub    %eax,%ebx
  sub    %r10d,%eax
  movzbl 0x5(%rsi),%r10d
  cmovs  %ebx,%eax
  mov    %r10d,%ebx
  add    %eax,%edx
  movzbl 0x5(%rdi),%eax
  sub    %eax,%ebx
  sub    %r10d,%eax
  movzbl 0x6(%rsi),%r10d
  cmovs  %ebx,%eax
  mov    %r10d,%ebx
  add    %eax,%edx
  movzbl 0x6(%rdi),%eax
  sub    %eax,%ebx
  sub    %r10d,%eax
  movzbl 0x7(%rsi),%r10d
  cmovs  %ebx,%eax
  mov    %r10d,%ebx
  add    %eax,%edx
  movzbl 0x7(%rdi),%eax
  sub    %eax,%ebx
  sub    %r10d,%eax
  movzbl 0x8(%rsi),%r10d
  cmovs  %ebx,%eax
  mov    %r10d,%ebx
  add    %eax,%edx
  movzbl 0x8(%rdi),%eax
  sub    %eax,%ebx
  sub    %r10d,%eax
  movzbl 0x9(%rsi),%r10d
  cmovs  %ebx,%eax
  mov    %r10d,%ebx
  add    %eax,%edx
  movzbl 0x9(%rdi),%eax
  sub    %eax,%ebx
  sub    %r10d,%eax
  movzbl 0xa(%rsi),%r10d
  cmovs  %ebx,%eax
  mov    %r10d,%ebx
  add    %eax,%edx
  movzbl 0xa(%rdi),%eax
  sub    %eax,%ebx
  sub    %r10d,%eax
  movzbl 0xb(%rsi),%r10d
  cmovs  %ebx,%eax
  mov    %r10d,%ebx
  add    %eax,%edx
  movzbl 0xb(%rdi),%eax
  sub    %eax,%ebx
  sub    %r10d,%eax
  movzbl 0xc(%rsi),%r10d
  cmovs  %ebx,%eax
  mov    %r10d,%ebx
  add    %eax,%edx
  movzbl 0xc(%rdi),%eax
  sub    %eax,%ebx
  sub    %r10d,%eax
  movzbl 0xd(%rsi),%r10d
  cmovs  %ebx,%eax
  mov    %r10d,%ebx
  add    %eax,%edx
  movzbl 0xd(%rdi),%eax
  sub    %eax,%ebx
  sub    %r10d,%eax
  movzbl 0xe(%rsi),%r10d
  cmovs  %ebx,%eax
  mov    %r10d,%ebx
  add    %eax,%edx
  movzbl 0xe(%rdi),%eax
  sub    %eax,%ebx
  sub    %r10d,%eax
  movzbl 0xf(%rsi),%r10d
  cmovs  %ebx,%eax
  mov    %r10d,%ebx
  add    %eax,%edx
  movzbl 0xf(%rdi),%eax
  sub    %eax,%ebx
  sub    %r10d,%eax
  cmovs  %ebx,%eax
  add    %edx,%eax
  cmp    %r11d,%eax
  jl     L156
L32:
  pop    %rbx
  pop    %rbp
  pop    %r12
  ret
  nop
L133:
  test   %ecx,%ecx
  je     L93
  test   %r8d,%r8d
  jne    L93
  test   %r9d,%r9d
  jle    L40
  movslq %edx,%rdx
  xor    %eax,%eax
  xor    %ecx,%ecx
  nopl   0x0(%rax)
L51:
  movzbl 0x1(%rdi),%r10d
  movzbl (%rdi),%r8d
  movzbl (%rsi),%r11d
  lea    0x1(%r10,%r8,1),%r8d
  shr    %r8d
  sub    %r11d,%r8d
  mov    %eax,%r11d
  sub    %r8d,%r11d
  add    %r8d,%eax
  test   %r8d,%r8d
  cmovs  %r11d,%eax
  movzbl 0x2(%rdi),%r11d
  lea    0x1(%r11,%r10,1),%r8d
  movzbl 0x1(%rsi),%r10d
  shr    %r8d
  sub    %r10d,%r8d
  mov    %eax,%r10d
  sub    %r8d,%r10d
  add    %r8d,%eax
  test   %r8d,%r8d
  cmovs  %r10d,%eax
  movzbl 0x3(%rdi),%r10d
  lea    0x1(%r10,%r11,1),%r8d
  movzbl 0x2(%rsi),%r11d
  shr    %r8d
  sub    %r11d,%r8d
  mov    %eax,%r11d
  sub    %r8d,%r11d
  add    %r8d,%eax
  test   %r8d,%r8d
  cmovs  %r11d,%eax
  movzbl 0x4(%rdi),%r11d
  lea    0x1(%r11,%r10,1),%r8d
  movzbl 0x3(%rsi),%r10d
  shr    %r8d
  sub    %r10d,%r8d
  mov    %eax,%r10d
  sub    %r8d,%r10d
  add    %r8d,%eax
  test   %r8d,%r8d
  cmovs  %r10d,%eax
  movzbl 0x5(%rdi),%r10d
  lea    0x1(%r10,%r11,1),%r8d
  movzbl 0x4(%rsi),%r11d
  shr    %r8d
  sub    %r11d,%r8d
  mov    %eax,%r11d
  sub    %r8d,%r11d
  add    %r8d,%eax
  test   %r8d,%r8d
  cmovs  %r11d,%eax
  movzbl 0x6(%rdi),%r11d
  lea    0x1(%r11,%r10,1),%r8d
  movzbl 0x5(%rsi),%r10d
  shr    %r8d
  sub    %r10d,%r8d
  mov    %eax,%r10d
  sub    %r8d,%r10d
  add    %r8d,%eax
  test   %r8d,%r8d
  cmovs  %r10d,%eax
  movzbl 0x7(%rdi),%r10d
  lea    0x1(%r10,%r11,1),%r8d
  movzbl 0x6(%rsi),%r11d
  shr    %r8d
  sub    %r11d,%r8d
  mov    %eax,%r11d
  sub    %r8d,%r11d
  add    %r8d,%eax
  test   %r8d,%r8d
  cmovs  %r11d,%eax
  movzbl 0x8(%rdi),%r11d
  lea    0x1(%r11,%r10,1),%r8d
  movzbl 0x7(%rsi),%r10d
  shr    %r8d
  sub    %r10d,%r8d
  mov    %eax,%r10d
  sub    %r8d,%r10d
  add    %r8d,%eax
  test   %r8d,%r8d
  cmovs  %r10d,%eax
  movzbl 0x9(%rdi),%r10d
  lea    0x1(%r10,%r11,1),%r8d
  movzbl 0x8(%rsi),%r11d
  shr    %r8d
  sub    %r11d,%r8d
  mov    %eax,%r11d
  sub    %r8d,%r11d
  add    %r8d,%eax
  test   %r8d,%r8d
  cmovs  %r11d,%eax
  movzbl 0xa(%rdi),%r11d
  lea    0x1(%r11,%r10,1),%r8d
  movzbl 0x9(%rsi),%r10d
  shr    %r8d
  sub    %r10d,%r8d
  mov    %eax,%r10d
  sub    %r8d,%r10d
  add    %r8d,%eax
  test   %r8d,%r8d
  cmovs  %r10d,%eax
  movzbl 0xb(%rdi),%r10d
  lea    0x1(%r10,%r11,1),%r8d
  movzbl 0xa(%rsi),%r11d
  shr    %r8d
  sub    %r11d,%r8d
  mov    %eax,%r11d
  sub    %r8d,%r11d
  add    %r8d,%eax
  test   %r8d,%r8d
  cmovs  %r11d,%eax
  movzbl 0xc(%rdi),%r11d
  lea    0x1(%r11,%r10,1),%r8d
  movzbl 0xb(%rsi),%r10d
  shr    %r8d
  sub    %r10d,%r8d
  mov    %eax,%r10d
  sub    %r8d,%r10d
  add    %r8d,%eax
  test   %r8d,%r8d
  cmovs  %r10d,%eax
  movzbl 0xd(%rdi),%r10d
  lea    0x1(%r10,%r11,1),%r8d
  movzbl 0xc(%rsi),%r11d
  shr    %r8d
  sub    %r11d,%r8d
  mov    %eax,%r11d
  sub    %r8d,%r11d
  add    %r8d,%eax
  test   %r8d,%r8d
  cmovs  %r11d,%eax
  movzbl 0xe(%rdi),%r11d
  lea    0x1(%r11,%r10,1),%r8d
  movzbl 0xd(%rsi),%r10d
  shr    %r8d
  sub    %r10d,%r8d
  mov    %eax,%r10d
  sub    %r8d,%r10d
  add    %r8d,%eax
  test   %r8d,%r8d
  cmovs  %r10d,%eax
  movzbl 0xf(%rdi),%r10d
  lea    0x1(%r10,%r11,1),%r8d
  movzbl 0xe(%rsi),%r11d
  shr    %r8d
  sub    %r11d,%r8d
  mov    %eax,%r11d
  sub    %r8d,%r11d
  add    %r8d,%eax
  test   %r8d,%r8d
  movzbl 0x10(%rdi),%r8d
  cmovs  %r11d,%eax
  lea    0x1(%r10,%r8,1),%r8d
  movzbl 0xf(%rsi),%r10d
  shr    %r8d
  sub    %r10d,%r8d
  mov    %eax,%r10d
  sub    %r8d,%r10d
  add    %r8d,%eax
  test   %r8d,%r8d
  cmovs  %r10d,%eax
  add    $0x1,%ecx
  add    %rdx,%rdi
  add    %rdx,%rsi
  cmp    %ecx,%r9d
  jne    L51
  pop    %rbx
  pop    %rbp
  pop    %r12
  ret
L93:
  movslq %edx,%r10
  xor    %eax,%eax
  lea    (%rdi,%r10,1),%rdx
  test   %ecx,%ecx
  jne    L77
  test   %r8d,%r8d
  je     L77
  test   %r9d,%r9d
  jle    L32
  nopl   (%rax)
L87:
  movzbl (%rdx),%r11d
  movzbl (%rdi),%r8d
  lea    0x1(%r11,%r8,1),%r8d
  movzbl (%rsi),%r11d
  shr    %r8d
  sub    %r11d,%r8d
  mov    %eax,%r11d
  sub    %r8d,%r11d
  add    %r8d,%eax
  test   %r8d,%r8d
  movzbl 0x1(%rdi),%r8d
  cmovs  %r11d,%eax
  movzbl 0x1(%rdx),%r11d
  lea    0x1(%r11,%r8,1),%r8d
  movzbl 0x1(%rsi),%r11d
  shr    %r8d
  sub    %r11d,%r8d
  mov    %eax,%r11d
  sub    %r8d,%r11d
  add    %r8d,%eax
  test   %r8d,%r8d
  movzbl 0x2(%rdi),%r8d
  cmovs  %r11d,%eax
  movzbl 0x2(%rdx),%r11d
  lea    0x1(%r11,%r8,1),%r8d
  movzbl 0x2(%rsi),%r11d
  shr    %r8d
  sub    %r11d,%r8d
  mov    %eax,%r11d
  sub    %r8d,%r11d
  add    %r8d,%eax
  test   %r8d,%r8d
  movzbl 0x3(%rdi),%r8d
  cmovs  %r11d,%eax
  movzbl 0x3(%rdx),%r11d
  lea    0x1(%r11,%r8,1),%r8d
  movzbl 0x3(%rsi),%r11d
  shr    %r8d
  sub    %r11d,%r8d
  mov    %eax,%r11d
  sub    %r8d,%r11d
  add    %r8d,%eax
  test   %r8d,%r8d
  movzbl 0x4(%rdi),%r8d
  cmovs  %r11d,%eax
  movzbl 0x4(%rdx),%r11d
  lea    0x1(%r11,%r8,1),%r8d
  movzbl 0x4(%rsi),%r11d
  shr    %r8d
  sub    %r11d,%r8d
  mov    %eax,%r11d
  sub    %r8d,%r11d
  add    %r8d,%eax
  test   %r8d,%r8d
  movzbl 0x5(%rdi),%r8d
  cmovs  %r11d,%eax
  movzbl 0x5(%rdx),%r11d
  lea    0x1(%r11,%r8,1),%r8d
  movzbl 0x5(%rsi),%r11d
  shr    %r8d
  sub    %r11d,%r8d
  mov    %eax,%r11d
  sub    %r8d,%r11d
  add    %r8d,%eax
  test   %r8d,%r8d
  movzbl 0x6(%rdi),%r8d
  cmovs  %r11d,%eax
  movzbl 0x6(%rdx),%r11d
  lea    0x1(%r11,%r8,1),%r8d
  movzbl 0x6(%rsi),%r11d
  shr    %r8d
  sub    %r11d,%r8d
  mov    %eax,%r11d
  sub    %r8d,%r11d
  add    %r8d,%eax
  test   %r8d,%r8d
  movzbl 0x7(%rdi),%r8d
  cmovs  %r11d,%eax
  movzbl 0x7(%rdx),%r11d
  lea    0x1(%r11,%r8,1),%r8d
  movzbl 0x7(%rsi),%r11d
  shr    %r8d
  sub    %r11d,%r8d
  mov    %eax,%r11d
  sub    %r8d,%r11d
  add    %r8d,%eax
  test   %r8d,%r8d
  movzbl 0x8(%rdi),%r8d
  cmovs  %r11d,%eax
  movzbl 0x8(%rdx),%r11d
  lea    0x1(%r11,%r8,1),%r8d
  movzbl 0x8(%rsi),%r11d
  shr    %r8d
  sub    %r11d,%r8d
  mov    %eax,%r11d
  sub    %r8d,%r11d
  add    %r8d,%eax
  test   %r8d,%r8d
  movzbl 0x9(%rdi),%r8d
  cmovs  %r11d,%eax
  movzbl 0x9(%rdx),%r11d
  lea    0x1(%r11,%r8,1),%r8d
  movzbl 0x9(%rsi),%r11d
  shr    %r8d
  sub    %r11d,%r8d
  mov    %eax,%r11d
  sub    %r8d,%r11d
  add    %r8d,%eax
  test   %r8d,%r8d
  movzbl 0xa(%rdi),%r8d
  cmovs  %r11d,%eax
  movzbl 0xa(%rdx),%r11d
  lea    0x1(%r11,%r8,1),%r8d
  movzbl 0xa(%rsi),%r11d
  shr    %r8d
  sub    %r11d,%r8d
  mov    %eax,%r11d
  sub    %r8d,%r11d
  add    %r8d,%eax
  test   %r8d,%r8d
  movzbl 0xb(%rdi),%r8d
  cmovs  %r11d,%eax
  movzbl 0xb(%rdx),%r11d
  lea    0x1(%r11,%r8,1),%r8d
  movzbl 0xb(%rsi),%r11d
  shr    %r8d
  sub    %r11d,%r8d
  mov    %eax,%r11d
  sub    %r8d,%r11d
  add    %r8d,%eax
  test   %r8d,%r8d
  movzbl 0xc(%rdi),%r8d
  cmovs  %r11d,%eax
  movzbl 0xc(%rdx),%r11d
  lea    0x1(%r11,%r8,1),%r8d
  movzbl 0xc(%rsi),%r11d
  shr    %r8d
  sub    %r11d,%r8d
  mov    %eax,%r11d
  sub    %r8d,%r11d
  add    %r8d,%eax
  test   %r8d,%r8d
  movzbl 0xd(%rdi),%r8d
  cmovs  %r11d,%eax
  movzbl 0xd(%rdx),%r11d
  lea    0x1(%r11,%r8,1),%r8d
  movzbl 0xd(%rsi),%r11d
  shr    %r8d
  sub    %r11d,%r8d
  mov    %eax,%r11d
  sub    %r8d,%r11d
  add    %r8d,%eax
  test   %r8d,%r8d
  movzbl 0xe(%rdi),%r8d
  cmovs  %r11d,%eax
  movzbl 0xe(%rdx),%r11d
  lea    0x1(%r11,%r8,1),%r8d
  movzbl 0xe(%rsi),%r11d
  shr    %r8d
  sub    %r11d,%r8d
  mov    %eax,%r11d
  sub    %r8d,%r11d
  add    %r8d,%eax
  test   %r8d,%r8d
  movzbl 0xf(%rdi),%r8d
  cmovs  %r11d,%eax
  movzbl 0xf(%rdx),%r11d
  lea    0x1(%r11,%r8,1),%r8d
  movzbl 0xf(%rsi),%r11d
  shr    %r8d
  sub    %r11d,%r8d
  mov    %eax,%r11d
  sub    %r8d,%r11d
  add    %r8d,%eax
  test   %r8d,%r8d
  cmovs  %r11d,%eax
  add    $0x1,%ecx
  add    %r10,%rdx
  add    %r10,%rsi
  add    %r10,%rdi
  cmp    %ecx,%r9d
  jne    L87
  pop    %rbx
  pop    %rbp
  pop    %r12
  ret
L77:
  test   %r9d,%r9d
  jle    L32
  xor    %ecx,%ecx
  nopw   0x0(%rax,%rax,1)
L106:
  movzbl 0x1(%rdi),%ebx
  movzbl (%rdi),%r8d
  movzbl (%rdx),%r11d
  movzbl 0x1(%rdx),%ebp
  add    %ebx,%r8d
  movzbl 0x2(%rdx),%r12d
  add    %r11d,%r8d
  movzbl (%rsi),%r11d
  lea    0x2(%rbp,%r8,1),%r8d
  shr    $0x2,%r8d
  sub    %r11d,%r8d
  lea    (%rax,%r8,1),%r11d
  sub    %r8d,%eax
  test   %r8d,%r8d
  cmovns %r11d,%eax
  movzbl 0x2(%rdi),%r11d
  add    %r11d,%ebx
  add    %ebp,%ebx
  movzbl 0x3(%rdx),%ebp
  lea    0x2(%r12,%rbx,1),%r8d
  movzbl 0x1(%rsi),%ebx
  shr    $0x2,%r8d
  sub    %ebx,%r8d
  lea    (%r8,%rax,1),%ebx
  sub    %r8d,%eax
  test   %r8d,%r8d
  cmovns %ebx,%eax
  movzbl 0x3(%rdi),%ebx
  add    %ebx,%r11d
  add    %r12d,%r11d
  movzbl 0x4(%rdx),%r12d
  lea    0x2(%rbp,%r11,1),%r8d
  movzbl 0x2(%rsi),%r11d
  shr    $0x2,%r8d
  sub    %r11d,%r8d
  lea    (%rax,%r8,1),%r11d
  sub    %r8d,%eax
  test   %r8d,%r8d
  cmovns %r11d,%eax
  movzbl 0x4(%rdi),%r11d
  add    %r11d,%ebx
  add    %ebp,%ebx
  movzbl 0x5(%rdx),%ebp
  lea    0x2(%r12,%rbx,1),%r8d
  movzbl 0x3(%rsi),%ebx
  shr    $0x2,%r8d
  sub    %ebx,%r8d
  lea    (%rax,%r8,1),%ebx
  sub    %r8d,%eax
  test   %r8d,%r8d
  cmovns %ebx,%eax
  movzbl 0x5(%rdi),%ebx
  add    %ebx,%r11d
  add    %r12d,%r11d
  movzbl 0x6(%rdx),%r12d
  lea    0x2(%rbp,%r11,1),%r8d
  movzbl 0x4(%rsi),%r11d
  shr    $0x2,%r8d
  sub    %r11d,%r8d
  lea    (%rax,%r8,1),%r11d
  sub    %r8d,%eax
  test   %r8d,%r8d
  cmovns %r11d,%eax
  movzbl 0x6(%rdi),%r11d
  add    %r11d,%ebx
  add    %ebp,%ebx
  movzbl 0x7(%rdx),%ebp
  lea    0x2(%r12,%rbx,1),%r8d
  movzbl 0x5(%rsi),%ebx
  shr    $0x2,%r8d
  sub    %ebx,%r8d
  lea    (%rax,%r8,1),%ebx
  sub    %r8d,%eax
  test   %r8d,%r8d
  cmovns %ebx,%eax
  movzbl 0x7(%rdi),%ebx
  add    %ebx,%r11d
  add    %r12d,%r11d
  movzbl 0x8(%rdx),%r12d
  lea    0x2(%rbp,%r11,1),%r8d
  movzbl 0x6(%rsi),%r11d
  shr    $0x2,%r8d
  sub    %r11d,%r8d
  lea    (%rax,%r8,1),%r11d
  sub    %r8d,%eax
  test   %r8d,%r8d
  cmovns %r11d,%eax
  movzbl 0x8(%rdi),%r11d
  add    %r11d,%ebx
  add    %ebp,%ebx
  movzbl 0x9(%rdx),%ebp
  lea    0x2(%r12,%rbx,1),%r8d
  movzbl 0x7(%rsi),%ebx
  shr    $0x2,%r8d
  sub    %ebx,%r8d
  lea    (%rax,%r8,1),%ebx
  sub    %r8d,%eax
  test   %r8d,%r8d
  cmovns %ebx,%eax
  movzbl 0x9(%rdi),%ebx
  add    %ebx,%r11d
  add    %r12d,%r11d
  movzbl 0xa(%rdx),%r12d
  lea    0x2(%rbp,%r11,1),%r8d
  movzbl 0x8(%rsi),%r11d
  shr    $0x2,%r8d
  sub    %r11d,%r8d
  lea    (%r8,%rax,1),%r11d
  sub    %r8d,%eax
  test   %r8d,%r8d
  cmovns %r11d,%eax
  movzbl 0xa(%rdi),%r11d
  add    %r11d,%ebx
  add    %ebp,%ebx
  lea    0x2(%r12,%rbx,1),%r8d
  movzbl 0x9(%rsi),%ebx
  shr    $0x2,%r8d
  sub    %ebx,%r8d
  lea    (%rax,%r8,1),%ebx
  sub    %r8d,%eax
  test   %r8d,%r8d
  cmovns %ebx,%eax
  movzbl 0xb(%rdi),%ebx
  movzbl 0xb(%rdx),%ebp
  add    %ebx,%r11d
  add    %r12d,%r11d
  movzbl 0xc(%rdx),%r12d
  lea    0x2(%rbp,%r11,1),%r8d
  movzbl 0xa(%rsi),%r11d
  shr    $0x2,%r8d
  sub    %r11d,%r8d
  lea    (%rax,%r8,1),%r11d
  sub    %r8d,%eax
  test   %r8d,%r8d
  cmovns %r11d,%eax
  movzbl 0xc(%rdi),%r11d
  add    %r11d,%ebx
  add    %ebp,%ebx
  movzbl 0xd(%rdx),%ebp
  lea    0x2(%r12,%rbx,1),%r8d
  movzbl 0xb(%rsi),%ebx
  shr    $0x2,%r8d
  sub    %ebx,%r8d
  lea    (%rax,%r8,1),%ebx
  sub    %r8d,%eax
  test   %r8d,%r8d
  cmovns %ebx,%eax
  movzbl 0xd(%rdi),%ebx
  add    %ebx,%r11d
  add    %r12d,%r11d
  movzbl 0xe(%rdx),%r12d
  lea    0x2(%rbp,%r11,1),%r8d
  movzbl 0xc(%rsi),%r11d
  shr    $0x2,%r8d
  sub    %r11d,%r8d
  lea    (%rax,%r8,1),%r11d
  sub    %r8d,%eax
  test   %r8d,%r8d
  cmovns %r11d,%eax
  movzbl 0xe(%rdi),%r11d
  add    %r11d,%ebx
  add    %ebp,%ebx
  movzbl 0xf(%rdi),%ebp
  lea    0x2(%r12,%rbx,1),%r8d
  movzbl 0xd(%rsi),%ebx
  shr    $0x2,%r8d
  sub    %ebx,%r8d
  lea    (%rax,%r8,1),%ebx
  sub    %r8d,%eax
  test   %r8d,%r8d
  cmovns %ebx,%eax
  movzbl 0xf(%rdx),%ebx
  add    %ebp,%r11d
  add    %r12d,%r11d
  lea    0x2(%rbx,%r11,1),%r8d
  movzbl 0xe(%rsi),%r11d
  shr    $0x2,%r8d
  sub    %r11d,%r8d
  lea    (%rax,%r8,1),%r11d
  sub    %r8d,%eax
  test   %r8d,%r8d
  movzbl 0x10(%rdi),%r8d
  cmovns %r11d,%eax
  movzbl 0x10(%rdx),%r11d
  add    %ebp,%r8d
  add    %ebx,%r8d
  lea    0x2(%r8,%r11,1),%r8d
  movzbl 0xf(%rsi),%r11d
  shr    $0x2,%r8d
  sub    %r11d,%r8d
  mov    %eax,%r11d
  sub    %r8d,%r11d
  add    %r8d,%eax
  test   %r8d,%r8d
  cmovs  %r11d,%eax
  add    $0x1,%ecx
  add    %r10,%rdx
  add    %r10,%rsi
  add    %r10,%rdi
  cmp    %ecx,%r9d
  jne    L106
  pop    %rbx
  pop    %rbp
  pop    %r12
  ret
L40:
  xor    %eax,%eax
  jmp    L32
```

assistant: ```c
int dist1(blk1, blk2, lx, hx, hy, h, distlim)
unsigned char *blk1, *blk2;
int lx, hx, hy, h;
int distlim;
{
  unsigned char *p1, *p1a, *p2;
  int i, j;
  int s, v;
  s = 0;
  p1 = blk1;
  p2 = blk2;
  if (!hx && !hy)
    for (j = 0; j < h; j++) {
      if ((v = p1[0] - p2[0]) < 0)
        v = -v;
      s += v;
      if ((v = p1[1] - p2[1]) < 0)
        v = -v;
      s += v;
      if ((v = p1[2] - p2[2]) < 0)
        v = -v;
      s += v;
      if ((v = p1[3] - p2[3]) < 0)
        v = -v;
      s += v;
      if ((v = p1[4] - p2[4]) < 0)
        v = -v;
      s += v;
      if ((v = p1[5] - p2[5]) < 0)
        v = -v;
      s += v;
      if ((v = p1[6] - p2[6]) < 0)
        v = -v;
      s += v;
      if ((v = p1[7] - p2[7]) < 0)
        v = -v;
      s += v;
      if ((v = p1[8] - p2[8]) < 0)
        v = -v;
      s += v;
      if ((v = p1[9] - p2[9]) < 0)
        v = -v;
      s += v;
      if ((v = p1[10] - p2[10]) < 0)
        v = -v;
      s += v;
      if ((v = p1[11] - p2[11]) < 0)
        v = -v;
      s += v;
      if ((v = p1[12] - p2[12]) < 0)
        v = -v;
      s += v;
      if ((v = p1[13] - p2[13]) < 0)
        v = -v;
      s += v;
      if ((v = p1[14] - p2[14]) < 0)
        v = -v;
      s += v;
      if ((v = p1[15] - p2[15]) < 0)
        v = -v;
      s += v;
      if (s >= distlim)
        break;
      p1 += lx;
      p2 += lx;
    }
  else if (hx && !hy)
    for (j = 0; j < h; j++) {
      for (i = 0; i < 16; i++) {
        v = ((unsigned int)(p1[i] + p1[i + 1] + 1) >> 1) - p2[i];
        if (v >= 0)
          s += v;
        else
          s -= v;
      }
      p1 += lx;
      p2 += lx;
    }
  else if (!hx && hy) {
    p1a = p1 + lx;
    for (j = 0; j < h; j++) {
      for (i = 0; i < 16; i++) {
        v = ((unsigned int)(p1[i] + p1a[i] + 1) >> 1) - p2[i];
        if (v >= 0)
          s += v;
        else
          s -= v;
      }
      p1 = p1a;
      p1a += lx;
      p2 += lx;
    }
  } else {
    p1a = p1 + lx;
    for (j = 0; j < h; j++) {
      for (i = 0; i < 16; i++) {
        v = ((unsigned int)(p1[i] + p1[i + 1] + p1a[i] + p1a[i + 1] + 2) >> 2) - p2[i];
        if (v >= 0)
          s += v;
        else
          s -= v;
      }
      p1 = p1a;
      p1a += lx;
      p2 += lx;
    }
  }
  return s;
}
```