user: What would the C source look like for the assembly code provided here?

```asm
<unquote>:
  endbr64
  push   %rbp
  mov    %rsp,%rbp
  push   %rbx
  sub    $0x28,%rsp
  mov    %rdi,-0x28(%rbp)
  mov    %rsi,-0x30(%rbp)
  mov    -0x30(%rbp),%rax
  mov    %rax,-0x20(%rbp)
  mov    -0x28(%rbp),%rax
  mov    %rax,-0x18(%rbp)
  jmp    L171
L186:
  mov    -0x20(%rbp),%rax
  movzbl (%rax),%eax
  cmp    $0x5c,%al
  jne    L55
  mov    -0x20(%rbp),%rax
  add    $0x1,%rax
  movzbl (%rax),%eax
  test   %al,%al
  je     L55
  mov    -0x20(%rbp),%rax
  add    $0x1,%rax
  movzbl (%rax),%eax
  cmp    $0x2f,%al
  jle    L0
  mov    -0x20(%rbp),%rax
  add    $0x1,%rax
  movzbl (%rax),%eax
  cmp    $0x37,%al
  jg     L0
  mov    -0x20(%rbp),%rax
  add    $0x2,%rax
  movzbl (%rax),%eax
  cmp    $0x2f,%al
  jle    L0
  mov    -0x20(%rbp),%rax
  add    $0x2,%rax
  movzbl (%rax),%eax
  cmp    $0x37,%al
  jg     L0
  mov    -0x20(%rbp),%rax
  add    $0x3,%rax
  movzbl (%rax),%eax
  cmp    $0x2f,%al
  jle    L0
  mov    -0x20(%rbp),%rax
  add    $0x3,%rax
  movzbl (%rax),%eax
  cmp    $0x37,%al
  jg     L0
  mov    -0x20(%rbp),%rax
  add    $0x1,%rax
  movzbl (%rax),%eax
  movsbl %al,%eax
  sub    $0x30,%eax
  lea    0x0(,%rax,8),%edx
  mov    -0x20(%rbp),%rax
  add    $0x2,%rax
  movzbl (%rax),%eax
  movsbl %al,%eax
  sub    $0x30,%eax
  add    %edx,%eax
  lea    0x0(,%rax,8),%edx
  mov    -0x20(%rbp),%rax
  add    $0x3,%rax
  movzbl (%rax),%eax
  add    %edx,%eax
  lea    -0x30(%rax),%ecx
  mov    -0x18(%rbp),%rax
  lea    0x1(%rax),%rdx
  mov    %rdx,-0x18(%rbp)
  mov    %ecx,%edx
  mov    %dl,(%rax)
  addq   $0x4,-0x20(%rbp)
  jmp    L33
L0:
  mov    -0x20(%rbp),%rax
  add    $0x1,%rax
  movzbl (%rax),%eax
  cmp    $0x78,%al
  jne    L192
  mov    -0x20(%rbp),%rax
  add    $0x2,%rax
  movzbl (%rax),%eax
  cmp    $0x2f,%al
  jle    L220
  mov    -0x20(%rbp),%rax
  add    $0x2,%rax
  movzbl (%rax),%eax
  cmp    $0x39,%al
  jle    L291
L220:
  mov    -0x20(%rbp),%rax
  add    $0x2,%rax
  movzbl (%rax),%eax
  movsbl %al,%eax
  mov    %eax,%edi
  call   <tolower@plt>
  cmp    $0x60,%eax
  jle    L192
  mov    -0x20(%rbp),%rax
  add    $0x2,%rax
  movzbl (%rax),%eax
  movsbl %al,%eax
  mov    %eax,%edi
  call   <tolower@plt>
  cmp    $0x66,%eax
  jg     L192
L291:
  mov    -0x20(%rbp),%rax
  add    $0x3,%rax
  movzbl (%rax),%eax
  cmp    $0x2f,%al
  jle    L166
  mov    -0x20(%rbp),%rax
  add    $0x3,%rax
  movzbl (%rax),%eax
  cmp    $0x39,%al
  jle    L374
L166:
  mov    -0x20(%rbp),%rax
  add    $0x3,%rax
  movzbl (%rax),%eax
  movsbl %al,%eax
  mov    %eax,%edi
  call   <tolower@plt>
  cmp    $0x60,%eax
  jle    L192
  mov    -0x20(%rbp),%rax
  add    $0x3,%rax
  movzbl (%rax),%eax
  movsbl %al,%eax
  mov    %eax,%edi
  call   <tolower@plt>
  cmp    $0x66,%eax
  jg     L192
L374:
  mov    -0x20(%rbp),%rax
  add    $0x2,%rax
  movzbl (%rax),%eax
  cmp    $0x39,%al
  jle    L154
  mov    -0x20(%rbp),%rax
  add    $0x2,%rax
  movzbl (%rax),%eax
  movsbl %al,%eax
  mov    %eax,%edi
  call   <tolower@plt>
  sub    $0x57,%eax
  shl    $0x4,%eax
  mov    %eax,%ebx
  jmp    L100
L154:
  mov    -0x20(%rbp),%rax
  add    $0x2,%rax
  movzbl (%rax),%eax
  movsbl %al,%eax
  sub    $0x30,%eax
  shl    $0x4,%eax
  mov    %eax,%ebx
L100:
  mov    -0x20(%rbp),%rax
  add    $0x3,%rax
  movzbl (%rax),%eax
  cmp    $0x39,%al
  jle    L311
  mov    -0x20(%rbp),%rax
  add    $0x3,%rax
  movzbl (%rax),%eax
  movsbl %al,%eax
  mov    %eax,%edi
  call   <tolower@plt>
  sub    $0x57,%eax
  jmp    L277
L311:
  mov    -0x20(%rbp),%rax
  add    $0x3,%rax
  movzbl (%rax),%eax
  sub    $0x30,%eax
L277:
  lea    (%rbx,%rax,1),%ecx
  mov    -0x18(%rbp),%rax
  lea    0x1(%rax),%rdx
  mov    %rdx,-0x18(%rbp)
  mov    %ecx,%edx
  mov    %dl,(%rax)
  addq   $0x4,-0x20(%rbp)
  jmp    L33
L192:
  mov    -0x20(%rbp),%rax
  add    $0x1,%rax
  movzbl (%rax),%eax
  cmp    $0x6e,%al
  jne    L176
  mov    -0x18(%rbp),%rax
  lea    0x1(%rax),%rdx
  mov    %rdx,-0x18(%rbp)
  movb   $0xa,(%rax)
  jmp    L287
L176:
  mov    -0x20(%rbp),%rax
  add    $0x1,%rax
  movzbl (%rax),%eax
  cmp    $0x72,%al
  jne    L181
  mov    -0x18(%rbp),%rax
  lea    0x1(%rax),%rdx
  mov    %rdx,-0x18(%rbp)
  movb   $0xd,(%rax)
  jmp    L287
L181:
  mov    -0x20(%rbp),%rax
  add    $0x1,%rax
  movzbl (%rax),%eax
  cmp    $0x66,%al
  jne    L199
  mov    -0x18(%rbp),%rax
  lea    0x1(%rax),%rdx
  mov    %rdx,-0x18(%rbp)
  movb   $0xc,(%rax)
  jmp    L287
L199:
  mov    -0x20(%rbp),%rax
  add    $0x1,%rax
  movzbl (%rax),%eax
  cmp    $0x74,%al
  jne    L125
  mov    -0x18(%rbp),%rax
  lea    0x1(%rax),%rdx
  mov    %rdx,-0x18(%rbp)
  movb   $0x9,(%rax)
  jmp    L287
L125:
  mov    -0x20(%rbp),%rax
  add    $0x1,%rax
  movzbl (%rax),%eax
  cmp    $0x61,%al
  jne    L170
  mov    -0x18(%rbp),%rax
  lea    0x1(%rax),%rdx
  mov    %rdx,-0x18(%rbp)
  movb   $0x7,(%rax)
  jmp    L287
L170:
  mov    -0x20(%rbp),%rax
  add    $0x1,%rax
  movzbl (%rax),%eax
  cmp    $0x76,%al
  jne    L88
  mov    -0x18(%rbp),%rax
  lea    0x1(%rax),%rdx
  mov    %rdx,-0x18(%rbp)
  movb   $0xb,(%rax)
  jmp    L287
L88:
  mov    -0x20(%rbp),%rax
  add    $0x1,%rax
  movzbl (%rax),%eax
  cmp    $0xa,%al
  jne    L35
  mov    -0x18(%rbp),%rax
  add    $0x1,%rax
  mov    %rax,-0x18(%rbp)
  jmp    L287
L35:
  mov    -0x20(%rbp),%rax
  lea    0x1(%rax),%rcx
  mov    -0x18(%rbp),%rax
  lea    0x1(%rax),%rdx
  mov    %rdx,-0x18(%rbp)
  movzbl (%rcx),%edx
  mov    %dl,(%rax)
L287:
  addq   $0x2,-0x20(%rbp)
L33:
  jmp    L171
L55:
  mov    -0x20(%rbp),%rdx
  lea    0x1(%rdx),%rax
  mov    %rax,-0x20(%rbp)
  mov    -0x18(%rbp),%rax
  lea    0x1(%rax),%rcx
  mov    %rcx,-0x18(%rbp)
  movzbl (%rdx),%edx
  mov    %dl,(%rax)
L171:
  mov    -0x20(%rbp),%rax
  movzbl (%rax),%eax
  test   %al,%al
  jne    L186
  mov    -0x18(%rbp),%rax
  lea    0x1(%rax),%rdx
  mov    %rdx,-0x18(%rbp)
  movb   $0x0,(%rax)
  nop
  mov    -0x8(%rbp),%rbx
  leave
  ret
```

assistant: ```c
void unquote(char *unquotedString, const char *quotedString) {
  const char *s = quotedString;
  char *d = unquotedString;
  while (*s != '\0') {
    if (*s == '\\' && s[1] != '\0') {
      if (((s[1]) >= '0' && (s[1]) <= '7') && ((s[2]) >= '0' && (s[2]) <= '7') && ((s[3]) >= '0' && (s[3]) <= '7')) {
        *d++ = ((s[1]) - '0') * 64 + ((s[2]) - '0') * 8 + ((s[3]) - '0');
        s += 4;
      } else if (s[1] == 'x' && (((s[2]) >= '0' && (s[2]) <= '9') || (tolower(s[2]) >= 'a' && tolower(s[2]) <= 'f')) && (((s[3]) >= '0' && (s[3]) <= '9') || (tolower(s[3]) >= 'a' && tolower(s[3]) <= 'f'))) {
        *d++ = ((s[2]) > '9' ? (10 + (tolower(s[2]) - 'a')) : ((s[2]) - '0')) * 16 + ((s[3]) > '9' ? (10 + (tolower(s[3]) - 'a')) : ((s[3]) - '0'));
        s += 4;
      } else {
        if (s[1] == 'n')
          *d++ = '\n';
        else if (s[1] == 'r')
          *d++ = '\r';
        else if (s[1] == 'f')
          *d++ = '\f';
        else if (s[1] == 't')
          *d++ = '\t';
        else if (s[1] == 'a')
          *d++ = '\a';
        else if (s[1] == 'v')
          *d++ = '\v';
        else if (s[1] == '\n')
          *d++;
        else
          *d++ = s[1];
        s += 2;
      }
    } else {
      *d++ = *s++;
    }
  }
  *d++ = '\0';
}
```