user: 这段汇编代码用C语言表示是什么样的？

```asm
<e_mk_info_button>:
  endbr64
  push   %r15
  push   %r14
  push   %r13
  push   %r12
  push   %rbp
  push   %rbx
  sub    $0x28,%rsp
  mov    %rdi,%r13
  call   <strlen@plt>
  mov    %eax,0x18(%rsp)
  movzbl 0x0(%r13),%edi
  cmp    $0xa,%dil
  je     L428
  test   %dil,%dil
  je     L428
  mov    %r13,0x10(%rsp)
  mov    $0x0,%r14d
L179:
  movsbl %dil,%edi
  call   <isspace@plt>
  test   %rax,%rax
  je     L249
  add    $0x1,%r14d
  addq   $0x1,0x10(%rsp)
  mov    0x10(%rsp),%rax
  movzbl (%rax),%edi
  test   %dil,%dil
  jne    L179
L482:
  mov    $0xffffffff,%eax
  jmp    L407
L249:
  movslq %r14d,%rax
  mov    %rax,0x8(%rsp)
  lea    0x0(%r13,%rax,1),%r15
  movzbl (%r15),%eax
  test   %al,%al
  je     L482
  mov    0x8(%rsp),%rbx
  mov    %r14d,0x1c(%rsp)
  jmp    L107
L367:
  add    $0x1,%rbx
  movzbl 0x0(%r13,%rbx,1),%eax
  test   %al,%al
  je     L482
L107:
  mov    %r14d,%ebp
  mov    0x8(%rsp),%rsi
  sub    %esi,%ebp
  add    %ebx,%ebp
  mov    %r15,%r12
  sub    %rsi,%r12
  add    %rbx,%r12
  cmp    $0x3a,%al
  jne    L367
  movsbl 0x1(%r13,%rbx,1),%edi
  call   <isspace@plt>
  test   %rax,%rax
  jne    L356
  movzbl 0x1(%r13,%rbx,1),%eax
  cmp    $0x28,%al
  je     L45
  cmp    $0x3a,%al
  jne    L367
  movsbl 0x2(%r13,%rbx,1),%edi
  call   <isspace@plt>
  test   %rax,%rax
  jne    L356
  cmpb   $0x2e,0x2(%r13,%rbx,1)
  jne    L367
L356:
  cmpb   $0x0,(%r12)
  je     L270
  cmpb   $0x3a,0x1(%r13,%rbx,1)
  je     L359
L341:
  add    $0x1,%ebp
  movslq %ebp,%rax
  lea    0x0(%r13,%rax,1),%r15
  movzbl (%r15),%edi
  test   %dil,%dil
  je     L232
  lea    0x1(%r13,%rax,1),%rbx
L91:
  mov    %rbx,%r12
  sub    %r13,%r12
  movsbl %dil,%edi
  call   <isspace@plt>
  test   %rax,%rax
  je     L142
  add    $0x1,%ebp
  mov    %rbx,%r15
  add    $0x1,%rbx
  movzbl -0x1(%rbx),%edi
  test   %dil,%dil
  jne    L91
L116:
  movslq %ebp,%rcx
  lea    0x0(%r13,%rcx,1),%rdx
  movzbl (%rdx),%eax
  test   %al,%al
  je     L232
  lea    0x1(%r13,%rcx,1),%r12
  mov    %rdx,%rbx
  mov    %ebp,%r14d
  sub    %edx,%r14d
  jmp    L171
L142:
  cmpb   $0x28,(%r15)
  jne    L116
  mov    0x18(%rsp),%esi
  cmp    %r14d,%esi
  jl     L297
  movslq %esi,%rdx
  lea    0x0(%r13,%rdx,1),%rax
  lea    -0x1(%r13,%rdx,1),%rcx
  mov    %esi,%edx
  sub    0x1c(%rsp),%edx
  sub    %rdx,%rcx
L112:
  movzbl (%rax),%edx
  mov    %dl,0x1(%rax)
  sub    $0x1,%rax
  cmp    %rcx,%rax
  jne    L112
L297:
  mov    0x10(%rsp),%rax
  movb   $0x3,(%rax)
  movb   $0x5,0x0(%r13,%r12,1)
  lea    0x1(%rbp),%eax
  cltq
  lea    0x0(%r13,%rax,1),%rcx
  movzbl (%rcx),%edx
  test   %dl,%dl
  je     L183
  cmp    $0x29,%dl
  je     L183
  lea    0x1(%r13,%rax,1),%rax
L499:
  mov    %rax,%rcx
  movzbl (%rax),%edx
  add    $0x1,%rax
  test   %dl,%dl
  je     L183
  cmp    $0x29,%dl
  jne    L499
L183:
  mov    $0x0,%eax
  test   %dl,%dl
  je     L407
  movb   $0x5,(%rcx)
  jmp    L407
L229:
  movzbl (%r12),%eax
  add    $0x1,%r12
  add    $0x1,%rbx
  test   %al,%al
  je     L232
L171:
  lea    (%r14,%rbx,1),%ebp
  cmp    $0x2e,%al
  jne    L229
  movsbl (%r12),%edi
  call   <isalnum@plt>
  test   %rax,%rax
  jne    L229
  cmpb   $0x5f,(%r12)
  jne    L7
  movzbl (%r12),%eax
  add    $0x1,%r12
  add    $0x1,%rbx
  jmp    L171
L7:
  cmpb   $0x0,(%rbx)
  je     L421
  movslq %ebp,%rbx
  jmp    L384
L205:
  sub    $0x1,%rbx
L384:
  cmpb   $0x3a,0x0(%r13,%rbx,1)
  jne    L205
  movsbl 0x1(%r13,%rbx,1),%edi
  call   <isspace@plt>
  test   %rax,%rax
  je     L205
  lea    0x1(%rbx),%ebx
  movslq %ebx,%rbx
L456:
  mov    %ebx,%r14d
  movsbl 0x0(%r13,%rbx,1),%edi
  call   <isspace@plt>
  add    $0x1,%rbx
  test   %rax,%rax
  jne    L456
L359:
  mov    0x18(%rsp),%edi
  cmp    %edi,%ebp
  jg     L237
  movslq %edi,%rdx
  lea    0x0(%r13,%rdx,1),%rax
  mov    %ebp,%esi
  lea    -0x1(%r13,%rdx,1),%rcx
  mov    %edi,%edx
  sub    %ebp,%edx
  sub    %rdx,%rcx
L55:
  movzbl (%rax),%edx
  mov    %dl,0x2(%rax)
  sub    $0x1,%rax
  cmp    %rcx,%rax
  jne    L55
  lea    -0x1(%rsi),%eax
  mov    %eax,0x18(%rsp)
L237:
  movslq %ebp,%rbp
  movb   $0x5,0x1(%r13,%rbp,1)
  mov    0x18(%rsp),%esi
  cmp    %esi,%r14d
  jg     L416
  movslq %esi,%rdx
  lea    0x0(%r13,%rdx,1),%rax
  lea    -0x1(%r13,%rdx,1),%rcx
  mov    %esi,%edx
  sub    %r14d,%edx
  sub    %rdx,%rcx
L387:
  movzbl (%rax),%edx
  mov    %dl,0x1(%rax)
  sub    $0x1,%rax
  cmp    %rcx,%rax
  jne    L387
L416:
  movslq %r14d,%r14
  movb   $0x1,0x0(%r13,%r14,1)
  mov    $0x0,%eax
  jmp    L407
L428:
  mov    $0x1,%eax
L407:
  add    $0x28,%rsp
  pop    %rbx
  pop    %rbp
  pop    %r12
  pop    %r13
  pop    %r14
  pop    %r15
  ret
L270:
  mov    $0xffffffff,%eax
  jmp    L407
L421:
  mov    $0xffffffff,%eax
  jmp    L407
L232:
  mov    $0xffffffff,%eax
  jmp    L407
L45:
  cmpb   $0x0,(%r12)
  jne    L341
  mov    $0xffffffff,%eax
  jmp    L407
```

assistant: ```c
int e_mk_info_button(char *str) {
  int i, bg, nd, len = strlen(str);
  if (str[0] == '\n' || str[0] == '\0')
    return (1);
  for (bg = 0; str[bg] && isspace(str[bg]); bg++)
    ;
  for (nd = bg; str[nd] && (str[nd] != ':' || (!isspace(str[nd + 1]) && (str[nd + 1] != '(') && (str[nd + 1] != ':' || (!isspace(str[nd + 2]) && str[nd + 2] != '.')))); nd++)
    ;
  if (!str[nd])
    return (-1);
  if (str[nd + 1] != ':') {
    for (nd++; str[nd] && isspace(str[nd]); nd++)
      ;
    if (str[nd] == '(') {
      for (i = len; i >= bg; i--)
        str[i + 1] = str[i];
      str[bg] = 3;
      str[nd + 1] = 5;
      for (nd++; str[nd] && str[nd] && str[nd] != ')'; nd++)
        ;
      if (str[nd])
        str[nd] = 5;
      return (0);
    }
    for (; str[nd] && (str[nd] != '.' || (isalnum(str[nd + 1]) || (str[nd + 1]) == '_')); nd++)
      ;
    if (!str[nd])
      return (-1);
    for (bg = nd; str[bg] != ':' || !isspace(str[bg + 1]); bg--)
      ;
    for (bg++; isspace(str[bg]); bg++)
      ;
  }
  for (i = len; i >= nd; i--)
    str[i + 2] = str[i];
  str[nd + 1] = 5;
  for (; i >= bg; i--)
    str[i + 1] = str[i];
  str[bg] = 1;
  return (0);
}
```