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

```asm
<make_kn>:
  endbr64
  mov    %rsi,%rcx
  push   %rbx
  mov    %edx,%esi
  test   %edx,%edx
  jle    L80
  sub    $0x1,%edx
  je     L29
  lea    0x11(%rcx),%rax
  lea    0x10(%rdi),%r8
  cmp    %rax,%rdi
  setae  %al
  cmp    %r8,%rcx
  setae  %r8b
  or     %r8b,%al
  je     L676
  cmp    $0xf,%edx
  jle    L676
  test   %edx,%edx
  mov    $0x1,%r9d
  movdqa D28(%rip),%xmm4
  movdqa D0(%rip),%xmm8
  cmovg  %edx,%r9d
  movdqa D24(%rip),%xmm7
  movdqa D30(%rip),%xmm6
  xor    %eax,%eax
  pxor   %xmm5,%xmm5
  mov    %r9d,%r8d
  shr    $0x4,%r8d
  shl    $0x4,%r8
L768:
  movdqu (%rcx,%rax,1),%xmm1
  movdqa %xmm5,%xmm0
  movdqa %xmm4,%xmm3
  paddd  %xmm8,%xmm4
  paddd  %xmm6,%xmm3
  paddb  %xmm1,%xmm1
  movups %xmm1,(%rdi,%rax,1)
  movdqu 0x1(%rcx,%rax,1),%xmm9
  movdqa %xmm1,%xmm2
  por    %xmm7,%xmm2
  pcmpgtb %xmm9,%xmm0
  pand   %xmm0,%xmm2
  pandn  %xmm1,%xmm0
  por    %xmm2,%xmm0
  movups %xmm0,(%rdi,%rax,1)
  add    $0x10,%rax
  cmp    %rax,%r8
  jne    L768
  mov    %r9d,%r8d
  pshufd $0xff,%xmm3,%xmm3
  and    $0xfffffff0,%r8d
  and    $0xf,%r9d
  movd   %xmm3,%eax
  je     L738
  mov    %r8d,%eax
  movzbl (%rcx,%rax,1),%r10d
  lea    0x1(%rax),%r9
  lea    (%rdi,%rax,1),%rbx
  lea    (%rcx,%r9,1),%r11
  add    %r10d,%r10d
  mov    %r10b,(%rbx)
  cmpb   $0x0,(%r11)
  js     L347
L496:
  lea    0x1(%r8),%r10d
  cmp    %r10d,%edx
  jle    L592
  movzbl (%r11),%r11d
  lea    0x2(%rax),%r10
  add    %rdi,%r9
  lea    (%rcx,%r10,1),%rbx
  add    %r11d,%r11d
  mov    %r11b,(%r9)
  cmpb   $0x0,(%rbx)
  js     L761
L553:
  lea    0x2(%r8),%r9d
  cmp    %r9d,%edx
  jle    L498
  movzbl (%rbx),%r11d
  lea    0x3(%rax),%r9
  add    %rdi,%r10
  lea    (%rcx,%r9,1),%rbx
  add    %r11d,%r11d
  mov    %r11b,(%r10)
  cmpb   $0x0,(%rbx)
  js     L450
L353:
  lea    0x3(%r8),%r10d
  cmp    %r10d,%edx
  jle    L592
  movzbl (%rbx),%r11d
  lea    0x4(%rax),%r10
  add    %rdi,%r9
  lea    (%rcx,%r10,1),%rbx
  add    %r11d,%r11d
  mov    %r11b,(%r9)
  cmpb   $0x0,(%rbx)
  js     L696
L736:
  lea    0x4(%r8),%r9d
  cmp    %r9d,%edx
  jle    L498
  movzbl (%rbx),%r11d
  lea    0x5(%rax),%r9
  add    %rdi,%r10
  lea    (%rcx,%r9,1),%rbx
  add    %r11d,%r11d
  mov    %r11b,(%r10)
  cmpb   $0x0,(%rbx)
  js     L125
  lea    0x5(%r8),%r10d
  cmp    %r10d,%edx
  jle    L592
L811:
  movzbl (%rbx),%r11d
  lea    0x6(%rax),%r10
  add    %rdi,%r9
  lea    (%rcx,%r10,1),%rbx
  add    %r11d,%r11d
  mov    %r11b,(%r9)
  cmpb   $0x0,(%rbx)
  js     L765
L343:
  lea    0x6(%r8),%r9d
  cmp    %r9d,%edx
  jle    L498
  movzbl (%rbx),%r11d
  lea    0x7(%rax),%r9
  add    %rdi,%r10
  lea    (%rcx,%r9,1),%rbx
  add    %r11d,%r11d
  mov    %r11b,(%r10)
  cmpb   $0x0,(%rbx)
  js     L269
L767:
  lea    0x7(%r8),%r10d
  cmp    %r10d,%edx
  jle    L592
  movzbl (%rbx),%r11d
  lea    0x8(%rax),%r10
  add    %rdi,%r9
  lea    (%rcx,%r10,1),%rbx
  add    %r11d,%r11d
  mov    %r11b,(%r9)
  cmpb   $0x0,(%rbx)
  js     L476
L694:
  lea    0x8(%r8),%r9d
  cmp    %r9d,%edx
  jle    L498
  movzbl (%rbx),%r11d
  lea    0x9(%rax),%r9
  add    %rdi,%r10
  lea    (%rcx,%r9,1),%rbx
  add    %r11d,%r11d
  mov    %r11b,(%r10)
  cmpb   $0x0,(%rbx)
  js     L53
L228:
  lea    0x9(%r8),%r10d
  cmp    %r10d,%edx
  jle    L592
  movzbl (%rbx),%r11d
  lea    0xa(%rax),%r10
  add    %rdi,%r9
  lea    (%rcx,%r10,1),%rbx
  add    %r11d,%r11d
  mov    %r11b,(%r9)
  cmpb   $0x0,(%rbx)
  js     L349
L37:
  lea    0xa(%r8),%r9d
  cmp    %r9d,%edx
  jle    L498
  movzbl (%rbx),%r11d
  lea    0xb(%rax),%r9
  add    %rdi,%r10
  lea    (%rcx,%r9,1),%rbx
  add    %r11d,%r11d
  mov    %r11b,(%r10)
  cmpb   $0x0,(%rbx)
  js     L703
L147:
  lea    0xb(%r8),%r10d
  cmp    %r10d,%edx
  jle    L592
  movzbl (%rbx),%r11d
  lea    0xc(%rax),%r10
  add    %rdi,%r9
  lea    (%rcx,%r10,1),%rbx
  add    %r11d,%r11d
  mov    %r11b,(%r9)
  cmpb   $0x0,(%rbx)
  js     L17
L71:
  lea    0xc(%r8),%r9d
  cmp    %r9d,%edx
  jle    L498
  movzbl (%rbx),%r11d
  lea    0xd(%rax),%r9
  add    %rdi,%r10
  lea    (%rcx,%r9,1),%rbx
  add    %r11d,%r11d
  mov    %r11b,(%r10)
  cmpb   $0x0,(%rbx)
  js     L588
L808:
  lea    0xd(%r8),%r10d
  cmp    %r10d,%edx
  jle    L592
  movzbl (%rbx),%r11d
  lea    0xe(%rax),%r10
  add    %rdi,%r9
  lea    (%rcx,%r10,1),%rbx
  add    %r11d,%r11d
  mov    %r11b,(%r9)
  cmpb   $0x0,(%rbx)
  js     L799
L295:
  lea    0xe(%r8),%r9d
  cmp    %r9d,%edx
  jle    L498
  movzbl (%rbx),%edx
  add    %rdi,%r10
  add    %edx,%edx
  mov    %dl,(%r10)
  cmpb   $0x0,0xf(%rcx,%rax,1)
  js     L213
L265:
  lea    0xf(%r8),%edx
L99:
  cmp    %edx,%esi
  jle    L80
  nopw   0x0(%rax,%rax,1)
L29:
  mov    %esi,%r11d
  movslq %edx,%rax
  sub    %edx,%r11d
  lea    (%rdi,%rax,1),%r10
  lea    -0x1(%r11),%r8d
  cmp    $0xe,%r8d
  seta   %r9b
  cmp    %edx,%esi
  setg   %r8b
  test   %r8b,%r9b
  lea    0x1(%rax),%r8
  je     L579
  lea    (%rcx,%r8,1),%rbx
  mov    %r10,%r9
  sub    %rbx,%r9
  cmp    $0xe,%r9
  jbe    L579
  cmp    %edx,%esi
  mov    $0x1,%r8d
  cmovle %r8d,%r11d
  lea    (%rcx,%rax,1),%r8
  xor    %eax,%eax
  mov    %r11d,%r9d
  shr    $0x4,%r9d
  shl    $0x4,%r9
  nopl   (%rax)
L541:
  movdqu (%r8,%rax,1),%xmm0
  paddb  %xmm0,%xmm0
  movups %xmm0,(%r10,%rax,1)
  add    $0x10,%rax
  cmp    %r9,%rax
  jne    L541
  mov    %r11d,%eax
  and    $0xfffffff0,%eax
  add    %eax,%edx
  cmp    %eax,%r11d
  je     L80
  movslq %edx,%r8
  movzbl (%rcx,%r8,1),%eax
  add    %eax,%eax
  mov    %al,(%rdi,%r8,1)
  lea    0x1(%rdx),%eax
  cmp    %esi,%eax
  jge    L80
  cltq
  movzbl (%rcx,%rax,1),%ebx
  lea    (%rbx,%rbx,1),%r8d
  mov    %r8b,(%rdi,%rax,1)
  lea    0x2(%rdx),%eax
  cmp    %eax,%esi
  jle    L80
  cltq
  movzbl (%rcx,%rax,1),%ebx
  lea    (%rbx,%rbx,1),%r8d
  mov    %r8b,(%rdi,%rax,1)
  lea    0x3(%rdx),%eax
  cmp    %eax,%esi
  jle    L80
  cltq
  movzbl (%rcx,%rax,1),%ebx
  lea    (%rbx,%rbx,1),%r8d
  mov    %r8b,(%rdi,%rax,1)
  lea    0x4(%rdx),%eax
  cmp    %eax,%esi
  jle    L80
  cltq
  movzbl (%rcx,%rax,1),%ebx
  lea    (%rbx,%rbx,1),%r8d
  mov    %r8b,(%rdi,%rax,1)
  lea    0x5(%rdx),%eax
  cmp    %eax,%esi
  jle    L80
  cltq
  movzbl (%rcx,%rax,1),%ebx
  lea    (%rbx,%rbx,1),%r8d
  mov    %r8b,(%rdi,%rax,1)
  lea    0x6(%rdx),%eax
  cmp    %eax,%esi
  jle    L80
  cltq
  movzbl (%rcx,%rax,1),%ebx
  lea    (%rbx,%rbx,1),%r8d
  mov    %r8b,(%rdi,%rax,1)
  lea    0x7(%rdx),%eax
  cmp    %eax,%esi
  jle    L80
  cltq
  movzbl (%rcx,%rax,1),%ebx
  lea    (%rbx,%rbx,1),%r8d
  mov    %r8b,(%rdi,%rax,1)
  lea    0x8(%rdx),%eax
  cmp    %eax,%esi
  jle    L80
  cltq
  movzbl (%rcx,%rax,1),%ebx
  lea    (%rbx,%rbx,1),%r8d
  mov    %r8b,(%rdi,%rax,1)
  lea    0x9(%rdx),%eax
  cmp    %eax,%esi
  jle    L80
  cltq
  movzbl (%rcx,%rax,1),%ebx
  lea    (%rbx,%rbx,1),%r8d
  mov    %r8b,(%rdi,%rax,1)
  lea    0xa(%rdx),%eax
  cmp    %eax,%esi
  jle    L80
  cltq
  movzbl (%rcx,%rax,1),%ebx
  lea    (%rbx,%rbx,1),%r8d
  mov    %r8b,(%rdi,%rax,1)
  lea    0xb(%rdx),%eax
  cmp    %eax,%esi
  jle    L80
  cltq
  movzbl (%rcx,%rax,1),%ebx
  lea    (%rbx,%rbx,1),%r8d
  mov    %r8b,(%rdi,%rax,1)
  lea    0xc(%rdx),%eax
  cmp    %eax,%esi
  jle    L80
  cltq
  movzbl (%rcx,%rax,1),%ebx
  lea    (%rbx,%rbx,1),%r8d
  mov    %r8b,(%rdi,%rax,1)
  lea    0xd(%rdx),%eax
  cmp    %eax,%esi
  jle    L80
  cltq
  add    $0xe,%edx
  movzbl (%rcx,%rax,1),%ebx
  lea    (%rbx,%rbx,1),%r8d
  mov    %r8b,(%rdi,%rax,1)
  cmp    %edx,%esi
  jle    L80
  movslq %edx,%rdx
  movzbl (%rcx,%rdx,1),%eax
  add    %eax,%eax
  mov    %al,(%rdi,%rdx,1)
  nopl   0x0(%rax,%rax,1)
L80:
  cmpb   $0x0,(%rcx)
  js     L515
L121:
  pop    %rbx
  ret
  nopw   0x0(%rax,%rax,1)
L676:
  lea    -0x2(%rsi),%r8d
  mov    $0x1,%eax
  add    $0x2,%r8
  jmp    L454
  nop
L478:
  mov    %eax,%edx
  add    $0x1,%rax
  cmp    %r8,%rax
  je     L99
L454:
  movzbl -0x1(%rcx,%rax,1),%ebx
  lea    (%rbx,%rbx,1),%edx
  mov    %dl,-0x1(%rdi,%rax,1)
  cmpb   $0x0,(%rcx,%rax,1)
  jns    L478
  or     $0x1,%edx
  mov    %dl,-0x1(%rdi,%rax,1)
  jmp    L478
  nopw   0x0(%rax,%rax,1)
L304:
  add    $0x1,%r8
L579:
  movzbl (%rcx,%rax,1),%ebx
  lea    (%rbx,%rbx,1),%edx
  mov    %dl,(%rdi,%rax,1)
  mov    %r8,%rax
  cmp    %r8d,%esi
  jg     L304
  cmpb   $0x0,(%rcx)
  jns    L121
L515:
  cmp    $0x10,%esi
  movslq %esi,%rdx
  mov    $0xffffff87,%eax
  mov    $0x1b,%ecx
  cmovne %ecx,%eax
  xor    %al,-0x1(%rdi,%rdx,1)
  pop    %rbx
  ret
  nopl   0x0(%rax)
L347:
  or     $0x1,%r10d
  mov    %r10b,(%rbx)
  jmp    L496
  nopl   0x0(%rax)
L592:
  mov    %r10d,%edx
  cmp    %edx,%esi
  jg     L29
  jmp    L80
  nopl   0x0(%rax,%rax,1)
L498:
  mov    %r9d,%edx
  cmp    %edx,%esi
  jg     L29
  jmp    L80
L761:
  or     $0x1,%r11d
  mov    %r11b,(%r9)
  jmp    L553
  nopl   0x0(%rax)
L450:
  or     $0x1,%r11d
  mov    %r11b,(%r10)
  jmp    L353
  nopl   0x0(%rax)
L696:
  or     $0x1,%r11d
  mov    %r11b,(%r9)
  jmp    L736
  nopl   0x0(%rax)
L125:
  or     $0x1,%r11d
  mov    %r11b,(%r10)
  lea    0x5(%r8),%r10d
  cmp    %r10d,%edx
  jg     L811
  jmp    L592
  cs nopw 0x0(%rax,%rax,1)
L53:
  or     $0x1,%r11d
  mov    %r11b,(%r10)
  jmp    L228
  nopl   0x0(%rax)
L349:
  or     $0x1,%r11d
  mov    %r11b,(%r9)
  jmp    L37
  nopl   0x0(%rax)
L703:
  or     $0x1,%r11d
  mov    %r11b,(%r10)
  jmp    L147
  nopl   0x0(%rax)
L17:
  or     $0x1,%r11d
  mov    %r11b,(%r9)
  jmp    L71
L588:
  or     $0x1,%r11d
  mov    %r11b,(%r10)
  jmp    L808
  nopl   0x0(%rax,%rax,1)
L765:
  or     $0x1,%r11d
  mov    %r11b,(%r9)
  jmp    L343
  nopl   0x0(%rax)
L269:
  or     $0x1,%r11d
  mov    %r11b,(%r10)
  jmp    L767
  nopl   0x0(%rax)
L476:
  or     $0x1,%r11d
  mov    %r11b,(%r9)
  jmp    L694
L738:
  mov    %eax,%edx
  jmp    L99
L799:
  or     $0x1,%r11d
  mov    %r11b,(%r9)
  jmp    L295
L213:
  or     $0x1,%edx
  mov    %dl,(%r10)
  jmp    L265
```

tool_calls: name: read_data
arguments: data_label: D28
type_guessed: byte[16]
name: read_data
arguments: data_label: D0
type_guessed: byte[16]
name: read_data
arguments: data_label: D24
type_guessed: byte[16]
name: read_data
arguments: data_label: D30
type_guessed: byte[16]

tool: {"D28": [0x00,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x02,0x00,0x00,0x00,0x03,0x00,0x00,0x00]}

tool: {"D0": [0x10,0x00,0x00,0x00,0x10,0x00,0x00,0x00,0x10,0x00,0x00,0x00,0x10,0x00,0x00,0x00]}

tool: {"D24": [0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01]}

tool: {"D30": [0x0d,0x00,0x00,0x00,0x0d,0x00,0x00,0x00,0x0d,0x00,0x00,0x00,0x0d,0x00,0x00,0x00]}

assistant: ```c
void make_kn(unsigned char *k1, unsigned char *l, int bl) {
  int i;
  for (i = 0; i < bl; i++) {
    k1[i] = l[i] << 1;
    if (i < bl - 1 && l[i + 1] & 0x80)
      k1[i] |= 1;
  }
  if (l[0] & 0x80)
    k1[bl - 1] ^= bl == 16 ? 0x87 : 0x1b;
}
```