user: Demonstrate the C code that generates the assembly output below:

```asm
<stripped_core>:
  endbr64
  push   %rbp
  mov    %rsp,%rbp
  sub    $0x50,%rsp
  mov    %rdi,-0x28(%rbp)
  mov    %rsi,-0x30(%rbp)
  mov    %rdx,-0x38(%rbp)
  mov    %rcx,-0x40(%rbp)
  mov    %r8d,-0x44(%rbp)
  movl   $0x1,-0x14(%rbp)
  movl   $0x0,-0x10(%rbp)
  movb   $0x0,-0x16(%rbp)
  movl   $0x0,-0xc(%rbp)
  movl   $0x0,-0x8(%rbp)
  movl   $0x0,-0x4(%rbp)
  jmp    L432
L174:
  mov    -0x28(%rbp),%rax
  movzbl (%rax),%eax
  mov    %al,-0x15(%rbp)
  cmpl   $0x0,-0x4(%rbp)
  je     L237
  movzbl -0x15(%rbp),%eax
  cmp    $0x3e,%eax
  je     L552
  cmp    $0x3e,%eax
  jg     L395
  cmp    $0x22,%eax
  je     L449
  cmp    $0x27,%eax
  je     L449
  jmp    L395
L552:
  cmpb   $0x0,-0x16(%rbp)
  jne    L434
  movl   $0x0,-0x4(%rbp)
  jmp    L434
L449:
  cmpb   $0x0,-0x16(%rbp)
  jne    L277
  movzbl -0x15(%rbp),%eax
  mov    %al,-0x16(%rbp)
  jmp    L508
L277:
  movsbl -0x16(%rbp),%edx
  movzbl -0x15(%rbp),%eax
  cmp    %eax,%edx
  jne    L508
  movb   $0x0,-0x16(%rbp)
  jmp    L508
L237:
  cmpl   $0x0,-0x10(%rbp)
  je     L267
  movzbl -0x15(%rbp),%eax
  cmp    $0x7d,%eax
  je     L163
  cmp    $0x7d,%eax
  jg     L119
  cmp    $0x22,%eax
  je     L473
  cmp    $0x27,%eax
  je     L473
  jmp    L119
L163:
  cmpb   $0x0,-0x16(%rbp)
  jne    L8
  movl   $0x0,-0x10(%rbp)
  mov    -0x28(%rbp),%rax
  add    $0x1,%rax
  cmp    %rax,-0x30(%rbp)
  jbe    L8
  mov    -0x28(%rbp),%rax
  add    $0x1,%rax
  movzbl (%rax),%eax
  cmp    $0x3b,%al
  jne    L8
  addq   $0x1,-0x28(%rbp)
  jmp    L8
L473:
  cmpb   $0x0,-0x16(%rbp)
  jne    L344
  movzbl -0x15(%rbp),%eax
  mov    %al,-0x16(%rbp)
  jmp    L498
L344:
  movsbl -0x16(%rbp),%edx
  movzbl -0x15(%rbp),%eax
  cmp    %eax,%edx
  jne    L498
  movb   $0x0,-0x16(%rbp)
  jmp    L498
L267:
  cmpb   $0x3c,-0x15(%rbp)
  jne    L351
  movl   $0x1,-0x4(%rbp)
  movl   $0x1,-0x8(%rbp)
  jmp    L441
L351:
  cmpb   $0x26,-0x15(%rbp)
  jne    L228
  mov    -0x28(%rbp),%rax
  add    $0x1,%rax
  cmp    %rax,-0x30(%rbp)
  jbe    L228
  mov    -0x28(%rbp),%rax
  add    $0x1,%rax
  movzbl (%rax),%eax
  cmp    $0x7b,%al
  jne    L228
  movl   $0x1,-0x10(%rbp)
  movl   $0x1,-0x8(%rbp)
  addq   $0x1,-0x28(%rbp)
  jmp    L441
L228:
  cmpb   $0x6,-0x15(%rbp)
  ja     L557
  mov    -0x44(%rbp),%eax
  and    $0x1,%eax
  test   %eax,%eax
  jne    L215
L557:
  movzbl -0x15(%rbp),%eax
  test   %al,%al
  jns    L450
  mov    -0x44(%rbp),%eax
  and    $0x2,%eax
  test   %eax,%eax
  jne    L215
L450:
  cmpb   $0x22,-0x15(%rbp)
  jne    L234
  mov    -0x44(%rbp),%eax
  and    $0x8,%eax
  test   %eax,%eax
  je     L215
L234:
  cmpb   $0x27,-0x15(%rbp)
  jne    L537
  mov    -0x44(%rbp),%eax
  and    $0x8,%eax
  test   %eax,%eax
  je     L215
L537:
  cmpb   $0x5c,-0x15(%rbp)
  jne    L152
  mov    -0x44(%rbp),%eax
  and    $0x10,%eax
  test   %eax,%eax
  je     L215
L152:
  cmpb   $0x3e,-0x15(%rbp)
  jne    L368
L215:
  movl   $0x1,-0x8(%rbp)
  jmp    L441
L368:
  cmpb   $0x20,-0x15(%rbp)
  jne    L247
  addl   $0x1,-0xc(%rbp)
  jmp    L441
L247:
  cmpl   $0x0,-0x14(%rbp)
  je     L142
  movl   $0x0,-0x14(%rbp)
  movl   $0x0,-0x8(%rbp)
  mov    -0x44(%rbp),%eax
  and    $0x4,%eax
  test   %eax,%eax
  jne    L142
  movl   $0x0,-0xc(%rbp)
L142:
  cmpl   $0x0,-0xc(%rbp)
  jne    L281
  cmpl   $0x0,-0x8(%rbp)
  je     L281
  mov    -0x44(%rbp),%eax
  and    $0x20,%eax
  test   %eax,%eax
  jne    L281
  movl   $0x1,-0xc(%rbp)
L281:
  movl   $0x0,-0x8(%rbp)
  mov    -0x38(%rbp),%rax
  mov    (%rax),%rdx
  mov    -0xc(%rbp),%eax
  cltq
  add    %rax,%rdx
  mov    -0x40(%rbp),%rax
  sub    %rdx,%rax
  test   %rax,%rax
  js     L455
  mov    -0x38(%rbp),%rax
  mov    (%rax),%rax
  mov    -0xc(%rbp),%edx
  mov    $0x20,%esi
  mov    %rax,%rdi
  call   <memset@plt>
L455:
  mov    -0x38(%rbp),%rax
  mov    (%rax),%rdx
  mov    -0xc(%rbp),%eax
  cltq
  add    %rax,%rdx
  mov    -0x38(%rbp),%rax
  mov    %rdx,(%rax)
  movl   $0x0,-0xc(%rbp)
  mov    -0x38(%rbp),%rax
  mov    (%rax),%rax
  lea    0x1(%rax),%rdx
  mov    -0x40(%rbp),%rax
  sub    %rdx,%rax
  test   %rax,%rax
  js     L293
  mov    -0x38(%rbp),%rax
  mov    (%rax),%rax
  movzbl -0x15(%rbp),%edx
  mov    %dl,(%rax)
L293:
  mov    -0x38(%rbp),%rax
  mov    (%rax),%rax
  lea    0x1(%rax),%rdx
  mov    -0x38(%rbp),%rax
  mov    %rdx,(%rax)
  jmp    L441
L395:
  nop
  jmp    L441
L434:
  nop
  jmp    L441
L508:
  nop
  jmp    L441
L119:
  nop
  jmp    L441
L8:
  nop
  jmp    L441
L498:
  nop
L441:
  addq   $0x1,-0x28(%rbp)
L432:
  mov    -0x28(%rbp),%rax
  cmp    -0x30(%rbp),%rax
  jb     L174
  mov    -0x44(%rbp),%eax
  and    $0x4,%eax
  test   %eax,%eax
  je     L623
  mov    -0x38(%rbp),%rax
  mov    (%rax),%rdx
  mov    -0xc(%rbp),%eax
  cltq
  add    %rax,%rdx
  mov    -0x40(%rbp),%rax
  sub    %rdx,%rax
  test   %rax,%rax
  js     L236
  mov    -0x38(%rbp),%rax
  mov    (%rax),%rax
  mov    -0xc(%rbp),%edx
  mov    $0x20,%esi
  mov    %rax,%rdi
  call   <memset@plt>
L236:
  mov    -0x38(%rbp),%rax
  mov    (%rax),%rdx
  mov    -0xc(%rbp),%eax
  cltq
  add    %rax,%rdx
  mov    -0x38(%rbp),%rax
  mov    %rdx,(%rax)
  movl   $0x0,-0xc(%rbp)
L623:
  mov    $0x0,%eax
  leave
  ret
```

assistant: ```c
int stripped_core(const char *r, const char *in_end, char **w, const char *out_end, unsigned int flags) {
  int leading = 1;
  int in_js_entity = 0;
  char in_quote_char = '\0';
  int space = 0;
  int stripped = 0;
  int in_tag = 0;
  for (; r < in_end; r++) {
    unsigned char c = *r;
    if (in_tag) {
      switch (c) {
      case '>':
        if (!in_quote_char) {
          in_tag = 0;
        }
        break;
      case '"':
      case '\'':
        if (!in_quote_char) {
          in_quote_char = c;
        } else if (in_quote_char == c) {
          in_quote_char = '\0';
        }
        break;
      default:
        break;
      }
    } else if (in_js_entity) {
      switch (c) {
      case '}':
        if (!in_quote_char) {
          in_js_entity = 0;
          if (r + 1 < in_end && *(r + 1) == ';') {
            r++;
          }
        }
        break;
      case '"':
      case '\'':
        if (!in_quote_char) {
          in_quote_char = c;
        } else if (in_quote_char == c) {
          in_quote_char = '\0';
        }
        break;
      default:
        break;
      }
    } else {
      if (c == '<') {
        in_tag = 1;
        stripped = 1;
      } else if (c == '&' && r + 1 < in_end && *(r + 1) == '{') {
        in_js_entity = 1;
        stripped = 1;
        r++;
      } else if ((c < 0x07 && (flags & 0x1)) || (c >= 0x80 && (flags & 0x2)) || (c == '"' && !(flags & 0x8)) || (c == '\'' && !(flags & 0x8)) || (c == '\\' && !(flags & 0x10)) || c == '>') {
        stripped = 1;
      } else if (c == ' ') {
        space++;
      } else {
        if (leading) {
          leading = 0;
          stripped = 0;
          if (!(flags & 0x4)) {
            space = 0;
          }
        }
        if (!space && stripped && !(flags & 0x20)) {
          space = 1;
        }
        stripped = 0;
        do {
          if (((((out_end)) - ((*(w)) + ((space)))) >= 0))
            memset(*(w), ' ', (space));
          *(w) += (space);
          (space) = 0;
        } while (0);
        do {
          if (((((out_end)) - ((*(w)) + (1))) >= 0))
            **(w) = (c);
          (*(w))++;
        } while (0);
      }
    }
  }
  if (flags & 0x4)
    do {
      if (((((out_end)) - ((*(w)) + ((space)))) >= 0))
        memset(*(w), ' ', (space));
      *(w) += (space);
      (space) = 0;
    } while (0);
  return 0;
}
```