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

```asm
<IsUTF8Text>:
  endbr64
  mov    %rdi,%rdx
  test   %esi,%esi
  jle    L66
  xor    %eax,%eax
L168:
  movslq %eax,%r8
  mov    $0x1,%edi
  movzbl (%rdx,%r8,1),%ecx
  test   %cl,%cl
  js     L28
L368:
  add    %edi,%eax
  cmp    %eax,%esi
  jg     L168
L66:
  mov    $0x1,%eax
  ret
  nopw   0x0(%rax,%rax,1)
L28:
  mov    %ecx,%edi
  and    $0xffffffe0,%edi
  cmp    $0xc0,%dil
  je     L164
  mov    %ecx,%edi
  and    $0xfffffff0,%edi
  cmp    $0xe0,%dil
  je     L217
  mov    %ecx,%edi
  and    $0xfffffff8,%edi
  cmp    $0xf0,%dil
  je     L223
  mov    %ecx,%edi
  and    $0xfffffffc,%edi
  cmp    $0xf8,%dil
  je     L427
  mov    %ecx,%edi
  and    $0xfffffffe,%edi
  cmp    $0xfc,%dil
  jne    L182
  lea    0x6(%rax),%edi
  cmp    %esi,%edi
  jg     L182
  cmp    $0xfc,%cl
  jne    L334
  testb  $0x3e,0x1(%rdx,%r8,1)
  je     L182
L334:
  lea    0x1(%rax),%ecx
  movslq %ecx,%rcx
  movzbl (%rdx,%rcx,1),%ecx
  and    $0xffffffc0,%ecx
  cmp    $0x80,%cl
  jne    L182
  mov    $0x6,%edi
L310:
  lea    0x2(%rax),%ecx
  movslq %ecx,%rcx
  movzbl (%rdx,%rcx,1),%ecx
  and    $0xffffffc0,%ecx
  cmp    $0x80,%cl
  jne    L182
  lea    0x3(%rax),%ecx
  movslq %ecx,%rcx
  movzbl (%rdx,%rcx,1),%ecx
  and    $0xffffffc0,%ecx
  cmp    $0x80,%cl
  jne    L182
  cmp    $0x4,%edi
  je     L368
  lea    0x4(%rax),%ecx
  movslq %ecx,%rcx
  movzbl (%rdx,%rcx,1),%ecx
  and    $0xffffffc0,%ecx
  cmp    $0x80,%cl
  jne    L182
  cmp    $0x6,%edi
  jne    L381
  lea    0x5(%rax),%ecx
  movslq %ecx,%rcx
  movzbl (%rdx,%rcx,1),%ecx
  and    $0xffffffc0,%ecx
  cmp    $0x80,%cl
  je     L368
L182:
  xor    %eax,%eax
  ret
  nopl   0x0(%rax,%rax,1)
L164:
  lea    0x2(%rax),%edi
  cmp    %esi,%edi
  jg     L182
  and    $0x1e,%ecx
  je     L182
  lea    0x1(%rax),%ecx
  movslq %ecx,%rcx
  movzbl (%rdx,%rcx,1),%ecx
  and    $0xffffffc0,%ecx
  cmp    $0x80,%cl
  jne    L182
  mov    $0x2,%edi
  jmp    L368
L217:
  lea    0x3(%rax),%edi
  cmp    %esi,%edi
  jg     L182
  cmp    $0xed,%cl
  je     L230
  and    $0xf,%ecx
  jne    L309
  testb  $0x20,0x1(%rdx,%r8,1)
  je     L182
L309:
  lea    0x1(%rax),%ecx
  movslq %ecx,%rcx
  movzbl (%rdx,%rcx,1),%ecx
  and    $0xffffffc0,%ecx
  cmp    $0x80,%cl
  jne    L182
  lea    0x2(%rax),%ecx
  movslq %ecx,%rcx
  movzbl (%rdx,%rcx,1),%ecx
  and    $0xffffffc0,%ecx
  cmp    $0x80,%cl
  jne    L182
  mov    $0x3,%edi
  jmp    L368
  nopl   0x0(%rax,%rax,1)
L427:
  lea    0x5(%rax),%edi
  cmp    %esi,%edi
  jg     L182
  and    $0x3,%ecx
  je     L295
L207:
  lea    0x1(%rax),%ecx
  movslq %ecx,%rcx
  movzbl (%rdx,%rcx,1),%ecx
  and    $0xffffffc0,%ecx
  cmp    $0x80,%cl
  jne    L182
  mov    $0x5,%edi
  jmp    L310
L223:
  lea    0x4(%rax),%edi
  cmp    %esi,%edi
  jg     L182
  and    $0x7,%ecx
  jne    L280
  testb  $0x30,0x1(%rdx,%r8,1)
  je     L182
L280:
  lea    0x1(%rax),%ecx
  movslq %ecx,%rcx
  movzbl (%rdx,%rcx,1),%ecx
  and    $0xffffffc0,%ecx
  cmp    $0x80,%cl
  jne    L182
  mov    $0x4,%edi
  jmp    L310
L230:
  movzbl 0x1(%rdx,%r8,1),%ecx
  and    $0xffffffa0,%ecx
  cmp    $0xa0,%cl
  jne    L309
  jmp    L182
  nopl   0x0(%rax,%rax,1)
L295:
  testb  $0x38,0x1(%rdx,%r8,1)
  jne    L207
  jmp    L182
L381:
  mov    $0x5,%edi
  jmp    L368
```

assistant: ```c
int IsUTF8Text(const unsigned char *utf8, int len) {
  int i;
  int j;
  int clen;
  for (i = 0; i < len; i += clen) {
    if ((0 == ((utf8[i]) & 0x80))) {
      clen = 1;
    } else if ((0xC0 == ((utf8[i]) & 0xE0))) {
      clen = 2;
      if ((i + clen) > len)
        return 0;
      if (0 == (utf8[i] & 0x1E))
        return 0;
    } else if ((0xE0 == ((utf8[i]) & 0xF0))) {
      clen = 3;
      if ((i + clen) > len)
        return 0;
      if ((0xED == utf8[i]) && (0xA0 == (utf8[i + 1] & 0xA0)))
        return 0;
      if ((0 == (utf8[i] & 0x0F)) && (0 == (utf8[i + 1] & 0x20)))
        return 0;
    } else if ((0xF0 == ((utf8[i]) & 0xF8))) {
      clen = 4;
      if ((i + clen) > len)
        return 0;
      if ((0 == (utf8[i] & 0x07)) && (0 == (utf8[i + 1] & 0x30)))
        return 0;
    } else if ((0xF8 == ((utf8[i]) & 0xFC))) {
      clen = 5;
      if ((i + clen) > len)
        return 0;
      if ((0 == (utf8[i] & 0x03)) && (0 == (utf8[i + 1] & 0x38)))
        return 0;
    } else if ((0xFC == ((utf8[i]) & 0xFE))) {
      clen = 6;
      if ((i + clen) > len)
        return 0;
      if ((0 == (utf8[i] & 0x01)) && (0 == (utf8[i + 1] & 0x3E)))
        return 0;
    } else {
      return 0;
    }
    for (j = 1; j < clen; j++) {
      if (!(0x80 == ((utf8[i + j]) & 0xC0)))
        return 0;
    }
  }
  return 1;
}
```