user: 提供的汇编代码用C语言表示会是什么样子：

```asm
<utf8_to_code>:
  endbr64
  mov    %rdi,%rax
  test   %rdi,%rdi
  je     L195
  movzbl (%rdi),%ecx
  test   %cl,%cl
  je     L127
  jns    L159
  cmp    $0xbf,%cl
  jbe    L215
  cmp    $0xdf,%cl
  ja     L85
  movzbl 0x1(%rdi),%edx
  lea    -0x80(%rdx),%eax
  cmp    $0x3f,%al
  ja     L147
  movzbl %cl,%eax
  sub    $0xc0,%eax
  shl    $0x6,%eax
  movzbl %dl,%edx
  add    $0xffffff80,%edx
  or     %edx,%eax
  ret
L195:
  mov    D24(%rip),%rax
  mov    (%rax),%rdx
  mov    D110(%rip),%rax
  mov    %rdx,(%rax)
  mov    $0x0,%eax
  ret
L127:
  mov    D110(%rip),%rax
  movq   $0x0,(%rax)
  mov    $0x0,%eax
  ret
L159:
  mov    $0x1,%eax
  test   %rsi,%rsi
  je     L158
  movzbl %cl,%eax
  mov    %eax,(%rsi)
  mov    $0x1,%eax
  ret
L215:
  mov    D27(%rip),%rax
  mov    (%rax),%rdx
  mov    D110(%rip),%rax
  mov    %rdx,(%rax)
  mov    $0x0,%eax
  ret
L147:
  mov    D27(%rip),%rax
  mov    (%rax),%rdx
  mov    D110(%rip),%rax
  mov    %rdx,(%rax)
  mov    $0x0,%eax
  ret
L85:
  cmp    $0xef,%cl
  ja     L34
  movzbl 0x1(%rdi),%edx
  lea    -0x80(%rdx),%esi
  cmp    $0x3f,%sil
  ja     L111
  movzbl 0x2(%rdi),%esi
  lea    -0x80(%rsi),%eax
  cmp    $0x3f,%al
  jbe    L86
L111:
  mov    D27(%rip),%rax
  mov    (%rax),%rdx
  mov    D110(%rip),%rax
  mov    %rdx,(%rax)
  mov    $0x0,%eax
  ret
L86:
  movzbl %cl,%eax
  sub    $0xe0,%eax
  shl    $0xc,%eax
  movzbl %dl,%edx
  add    $0xffffff80,%edx
  shl    $0x6,%edx
  or     %edx,%eax
  movzbl %sil,%edx
  add    $0xffffff80,%edx
  or     %edx,%eax
  ret
L34:
  cmp    $0xf7,%cl
  ja     L40
  movzbl 0x1(%rdi),%edx
  lea    -0x80(%rdx),%esi
  cmp    $0x3f,%sil
  ja     L12
  movzbl 0x2(%rdi),%esi
  lea    -0x80(%rsi),%edi
  cmp    $0x3f,%dil
  jbe    L106
L12:
  mov    D27(%rip),%rax
  mov    (%rax),%rdx
  mov    D110(%rip),%rax
  mov    %rdx,(%rax)
  mov    $0x0,%eax
  ret
L106:
  movzbl 0x3(%rax),%edi
  lea    -0x80(%rdi),%eax
  cmp    $0x3f,%al
  ja     L12
  movzbl %cl,%eax
  sub    $0xf0,%eax
  shl    $0x12,%eax
  movzbl %dl,%edx
  add    $0xffffff80,%edx
  shl    $0xc,%edx
  or     %edx,%eax
  movzbl %dil,%edx
  add    $0xffffff80,%edx
  or     %edx,%eax
  movzbl %sil,%edx
  add    $0xffffff80,%edx
  shl    $0x6,%edx
  or     %edx,%eax
  ret
L40:
  cmp    $0xfb,%cl
  ja     L205
  movzbl 0x1(%rdi),%edx
  lea    -0x80(%rdx),%esi
  cmp    $0x3f,%sil
  ja     L200
  movzbl 0x2(%rdi),%esi
  lea    -0x80(%rsi),%edi
  cmp    $0x3f,%dil
  jbe    L235
L200:
  mov    D27(%rip),%rax
  mov    (%rax),%rdx
  mov    D110(%rip),%rax
  mov    %rdx,(%rax)
  mov    $0x0,%eax
  ret
L235:
  movzbl 0x3(%rax),%edi
  lea    -0x80(%rdi),%r8d
  cmp    $0x3f,%r8b
  ja     L200
  movzbl 0x4(%rax),%r8d
  lea    -0x80(%r8),%eax
  cmp    $0x3f,%al
  ja     L200
  mov    %ecx,%eax
  shl    $0x18,%eax
  lea    0x8000000(%rax),%eax
  movzbl %dl,%edx
  add    $0xffffff80,%edx
  shl    $0x12,%edx
  or     %edx,%eax
  movzbl %r8b,%edx
  add    $0xffffff80,%edx
  or     %edx,%eax
  movzbl %sil,%edx
  add    $0xffffff80,%edx
  shl    $0xc,%edx
  or     %edx,%eax
  movzbl %dil,%edx
  add    $0xffffff80,%edx
  shl    $0x6,%edx
  or     %edx,%eax
  ret
L205:
  cmp    $0xfd,%cl
  ja     L236
  movzbl 0x1(%rdi),%edi
  lea    -0x80(%rdi),%edx
  cmp    $0x3f,%dl
  ja     L210
  movzbl 0x2(%rax),%esi
  lea    -0x80(%rsi),%edx
  cmp    $0x3f,%dl
  jbe    L50
L210:
  mov    D27(%rip),%rax
  mov    (%rax),%rdx
  mov    D110(%rip),%rax
  mov    %rdx,(%rax)
  mov    $0x0,%eax
  ret
L50:
  movzbl 0x3(%rax),%r8d
  lea    -0x80(%r8),%edx
  cmp    $0x3f,%dl
  ja     L210
  movzbl 0x4(%rax),%edx
  lea    -0x80(%rdx),%r9d
  cmp    $0x3f,%r9b
  ja     L210
  movzbl 0x5(%rax),%r9d
  lea    -0x80(%r9),%eax
  cmp    $0x3f,%al
  ja     L210
  mov    %ecx,%eax
  shl    $0x1e,%eax
  shl    $0x18,%edi
  lea    -0x80000000(%rdi),%ecx
  or     %ecx,%eax
  movzbl %r9b,%ecx
  add    $0xffffff80,%ecx
  or     %ecx,%eax
  movzbl %sil,%ecx
  add    $0xffffff80,%ecx
  shl    $0x12,%ecx
  or     %ecx,%eax
  movzbl %r8b,%ecx
  add    $0xffffff80,%ecx
  shl    $0xc,%ecx
  or     %ecx,%eax
  movzbl %dl,%edx
  add    $0xffffff80,%edx
  shl    $0x6,%edx
  or     %edx,%eax
  ret
L236:
  mov    D27(%rip),%rax
  mov    (%rax),%rdx
  mov    D110(%rip),%rax
  mov    %rdx,(%rax)
  mov    $0x0,%eax
L158:
  ret
```

assistant: ```c
size_t utf8_to_code(const unsigned char *const buffer, unsigned int *const codeptr) {
  if (!buffer) {
    errno = EINVAL;
    return 0;
  }
  if (*buffer == 0U) {
    errno = 0;
    return 0;
  }
  if (*buffer < 128U) {
    if (codeptr)
      *codeptr = buffer[0];
    return 1;
  }
  if (*buffer < 192U) {
    errno = EILSEQ;
    return 0;
  }
  if (*buffer < 224U) {
    if (buffer[1] >= 128U && buffer[1] < 192U)
      return ((buffer[0] - 192U) << 6U) | (buffer[1] - 128U);
    errno = EILSEQ;
    return 0;
  }
  if (*buffer < 240U) {
    if (buffer[1] >= 128U && buffer[1] < 192U && buffer[2] >= 128U && buffer[2] < 192U)
      return ((buffer[0] - 224U) << 12U) | ((buffer[1] - 128U) << 6U) | (buffer[2] - 128U);
    errno = EILSEQ;
    return 0;
  }
  if (*buffer < 248U) {
    if (buffer[1] >= 128U && buffer[1] < 192U && buffer[2] >= 128U && buffer[2] < 192U && buffer[3] >= 128U && buffer[3] < 192U)
      return ((buffer[0] - 240U) << 18U) | ((buffer[1] - 128U) << 12U) | ((buffer[2] - 128U) << 6U) | (buffer[3] - 128U);
    errno = EILSEQ;
    return 0;
  }
  if (*buffer < 252U) {
    if (buffer[1] >= 128U && buffer[1] < 192U && buffer[2] >= 128U && buffer[2] < 192U && buffer[3] >= 128U && buffer[3] < 192U && buffer[4] >= 128U && buffer[4] < 192U)
      return ((buffer[0] - 248U) << 24U) | ((buffer[1] - 128U) << 18U) | ((buffer[2] - 128U) << 12U) | ((buffer[3] - 128U) << 6U) | (buffer[4] - 128U);
    errno = EILSEQ;
    return 0;
  }
  if (*buffer < 254U) {
    if (buffer[1] >= 128U && buffer[1] < 192U && buffer[2] >= 128U && buffer[2] < 192U && buffer[3] >= 128U && buffer[3] < 192U && buffer[4] >= 128U && buffer[4] < 192U && buffer[5] >= 128U && buffer[5] < 192U)
      return ((buffer[0] - 252U) << 30U) | ((buffer[1] - 128U) << 24U) | ((buffer[2] - 128U) << 18U) | ((buffer[3] - 128U) << 12U) | ((buffer[4] - 128U) << 6U) | (buffer[5] - 128U);
    errno = EILSEQ;
    return 0;
  }
  errno = EILSEQ;
  return 0;
}
```