user: 请将以下的汇编代码转换成C语言代码：

```asm
<copy_body>:
  endbr64
  push   %rbp
  mov    %rsp,%rbp
  sub    $0x10,%rsp
  movl   $0x0,-0xc(%rbp)
L215:
  mov    $0x0,%eax
  call   <getchar_no_eof@plt>
  mov    %eax,-0x8(%rbp)
  cmpl   $0x7d,-0x8(%rbp)
  jne    L193
  cmpl   $0x0,-0xc(%rbp)
  je     L227
L193:
  mov    -0x8(%rbp),%eax
  mov    %eax,%edi
  call   <putchar@plt>
  cmpl   $0x7d,-0x8(%rbp)
  je     L244
  cmpl   $0x7d,-0x8(%rbp)
  jg     L226
  cmpl   $0x7b,-0x8(%rbp)
  je     L196
  cmpl   $0x7b,-0x8(%rbp)
  jg     L226
  cmpl   $0x2f,-0x8(%rbp)
  je     L100
  cmpl   $0x2f,-0x8(%rbp)
  jg     L226
  cmpl   $0x22,-0x8(%rbp)
  je     L189
  cmpl   $0x27,-0x8(%rbp)
  je     L189
  jmp    L226
L196:
  addl   $0x1,-0xc(%rbp)
  jmp    L6
L244:
  subl   $0x1,-0xc(%rbp)
  jmp    L6
L100:
  mov    $0x0,%eax
  call   <getchar_update_lineno@plt>
  mov    %eax,-0x8(%rbp)
  mov    -0x8(%rbp),%eax
  mov    %eax,%edi
  call   <putchar@plt>
  cmpl   $0x2f,-0x8(%rbp)
  jne    L79
L109:
  mov    $0x0,%eax
  call   <getchar_no_eof@plt>
  mov    %eax,-0x8(%rbp)
  mov    -0x8(%rbp),%eax
  mov    %eax,%edi
  call   <putchar@plt>
  cmpl   $0xa,-0x8(%rbp)
  jne    L109
  jmp    L80
L79:
  cmpl   $0x2a,-0x8(%rbp)
  jne    L80
L68:
  mov    $0x0,%eax
  call   <getchar_no_eof@plt>
  mov    %eax,-0x8(%rbp)
  mov    -0x8(%rbp),%eax
  mov    %eax,%edi
  call   <putchar@plt>
  cmpl   $0x2a,-0x8(%rbp)
  jne    L68
L18:
  mov    $0x0,%eax
  call   <getchar_no_eof@plt>
  mov    %eax,-0x8(%rbp)
  mov    -0x8(%rbp),%eax
  mov    %eax,%edi
  call   <putchar@plt>
  cmpl   $0x2a,-0x8(%rbp)
  je     L18
  cmpl   $0x2f,-0x8(%rbp)
  je     L20
  jmp    L68
L20:
  nop
  jmp    L80
L189:
  mov    -0x8(%rbp),%eax
  mov    %eax,-0x4(%rbp)
L115:
  mov    $0x0,%eax
  call   <getchar_no_eof@plt>
  mov    %eax,-0x8(%rbp)
  mov    -0x8(%rbp),%eax
  mov    %eax,%edi
  call   <putchar@plt>
  cmpl   $0x5c,-0x8(%rbp)
  jne    L126
  mov    $0x0,%eax
  call   <getchar_no_eof@plt>
  mov    %eax,-0x8(%rbp)
  mov    -0x8(%rbp),%eax
  mov    %eax,%edi
  call   <putchar@plt>
  movl   $0x0,-0x8(%rbp)
L126:
  mov    -0x8(%rbp),%eax
  cmp    -0x4(%rbp),%eax
  jne    L115
  jmp    L6
L226:
  nop
  jmp    L215
L80:
  nop
L6:
  jmp    L215
L227:
  nop
  leave
  ret
```

assistant: ```c
void copy_body(void) {
  int nesting = 0;
  while (1) {
    int c;
    c = getchar_no_eof();
    if (c == '}' && nesting == 0)
      return;
    putchar(c);
    switch (c) {
    default:
      break;
    case '{':
      ++nesting;
      break;
    case '}':
      --nesting;
      break;
    case '/':
      c = getchar_update_lineno();
      putchar(c);
      if (c == '/') {
        do {
          c = getchar_no_eof();
          putchar(c);
        } while (c != '\n');
      } else if (c == '*') {
        while (1) {
          c = getchar_no_eof();
          putchar(c);
          if (c == '*') {
            do {
              c = getchar_no_eof();
              putchar(c);
            } while (c == '*');
            if (c == '/')
              break;
          }
        }
      }
      break;
    case '"':
    case '\'': {
      int delim = c;
      do {
        c = getchar_no_eof();
        putchar(c);
        if (c == '\\') {
          c = getchar_no_eof();
          putchar(c);
          c = '\0';
        }
      } while (c != delim);
    } break;
    }
  }
}
```