user: 下面的汇编指令对应的C源代码是什么:

```asm
<hs7huan4ma3xu4lie4>:
  endbr64
  push   %r15
  push   %r14
  push   %r13
  push   %r12
  push   %rbp
  push   %rbx
  sub    $0x48,%rsp
  mov    %rdi,%r12
  mov    %rsi,%rdi
  mov    %rsi,0x8(%rsp)
  mov    %rdx,0x18(%rsp)
  mov    %fs:0x28,%rax
  mov    %rax,0x38(%rsp)
  xor    %eax,%eax
  call   <strlen@plt>
  mov    %eax,0x4(%rsp)
  cmpb   $0x0,(%r12)
  je     L499
  mov    %r12,%r13
  mov    $0x0,%r15d
  mov    $0x0,%ebp
  add    $0x1,%eax
  mov    %eax,0x10(%rsp)
  jmp    L68
  mov    $0xc,%eax
  jmp    L29
  mov    $0xd,%eax
  jmp    L29
  mov    $0x9,%eax
  jmp    L29
  mov    $0xb,%eax
  jmp    L29
L305:
  mov    0x18(%rsp),%rdi
  test   %rdi,%rdi
  je     L532
  lea    0x1(%r15),%eax
  mov    %eax,(%rdi)
L532:
  mov    0x38(%rsp),%rax
  sub    %fs:0x28,%rax
  jne    L124
  mov    %r12,%rax
  add    $0x48,%rsp
  pop    %rbx
  pop    %rbp
  pop    %r12
  pop    %r13
  pop    %r14
  pop    %r15
  ret
  mov    0x4(%rsp),%eax
  lea    0x2(%rax),%ebx
  movslq 0x10(%rsp),%rax
  lea    (%r12,%rbp,1),%rdx
  movsbl (%rdx,%rax,1),%edi
  mov    $0x2f,%eax
L423:
  test   %edi,%edi
  je     L29
  mov    %edi,0x14(%rsp)
  lea    -0x31(%rdi),%r14d
  cmp    $0x1,%r14d
  jbe    L480
L196:
  lea    -0x30(%rdi),%eax
  cmp    $0x4a,%eax
  ja     L324
  mov    %eax,%eax
  lea    D19(%rip),%rcx
  movslq (%rcx,%rax,4),%rax
  add    %rcx,%rax
  notrack jmp *%rax
L357:
  movsbl %al,%edx
  sub    $0x30,%edx
  movsbl %al,%eax
  cmp    $0x7,%edx
  ja     L29
  mov    0x4(%rsp),%ebx
  mov    $0x38,%edi
  jmp    L441
  mov    0x10(%rsp),%ebx
  mov    $0x0,%edi
  mov    $0x7,%eax
  jmp    L423
  mov    $0x4,%r10d
  jmp    L114
  mov    $0x3,%r10d
  jmp    L114
  mov    $0x3,%r10d
  jmp    L114
  mov    $0x2,%r10d
  jmp    L114
L324:
  mov    0x18(%rsp),%rax
  test   %rax,%rax
  je     L532
  movl   $0xffff,(%rax)
  jmp    L532
L480:
  mov    $0x8,%r10d
L114:
  cmp    $0x8,%r14d
  mov    $0x3a,%r11d
  cmovbe %edi,%r11d
  lea    0x1(%rbx),%eax
  cltq
  mov    $0x0,%ecx
  lea    (%r12,%rbp,1),%r9
  lea    0x2f(%rsp),%r8
  movslq %ebx,%rbx
  sub    %rbx,%r8
  jmp    L457
  mov    $0x6,%r10d
  jmp    L114
L306:
  cmp    $0x40,%edi
  jle    L385
  mov    %edx,%esi
  and    $0xffffffdf,%esi
  sub    $0x41,%esi
  cmp    $0x19,%sil
  ja     L385
L342:
  add    $0x1,%ecx
  mov    %dl,-0x1(%r8,%rax,1)
  mov    %eax,%ebx
  add    $0x1,%rax
  cmp    %ecx,%r10d
  je     L428
L457:
  lea    -0x1(%rax),%ebx
  movzbl -0x1(%r9,%rax,1),%edx
  movsbl %dl,%esi
  cmp    $0x2f,%dl
  jle    L306
  cmp    %esi,%r11d
  jg     L342
  jmp    L306
L428:
  mov    %r10d,%ecx
L385:
  test   %ecx,%ecx
  je     L166
  mov    %ecx,%ecx
  movb   $0x0,0x2f(%rsp,%rcx,1)
  lea    -0x30(%rdi),%esi
  cmp    $0x8,%r14d
  jbe    L67
  mov    $0xa,%esi
  cmp    $0x30,%edi
  je     L67
  mov    0x14(%rsp),%eax
  sub    $0x41,%eax
  lea    -0x3c(%rdi),%esi
  cmp    $0x19,%eax
  jbe    L79
L67:
  lea    0x28(%rsp),%rdx
  lea    0x2f(%rsp),%rdi
  call   <hs7chuan4_zheng3shu4@plt>
  mov    0x28(%rsp),%edx
  test   %edx,%edx
  jne    L256
L29:
  mov    %al,0x0(%r13)
  movslq %ebx,%rbx
  add    %rbp,%rbx
  movzbl (%r12,%rbx,1),%eax
  mov    %al,0x1(%r12,%rbp,1)
  test   %al,%al
  je     L490
  mov    $0x0,%edx
L218:
  add    $0x1,%edx
  mov    %edx,%eax
  add    %r12,%rax
  movzbl (%rax,%rbx,1),%ecx
  mov    %cl,0x1(%rbp,%rax,1)
  test   %cl,%cl
  jne    L218
L490:
  add    $0x1,%r15d
  mov    %r15d,%ebp
  lea    (%r12,%rbp,1),%r13
  cmpb   $0x0,0x0(%r13)
  je     L95
L68:
  mov    0x4(%rsp),%r14d
  mov    %r14d,%edx
  mov    0x8(%rsp),%rsi
  mov    %r13,%rdi
  call   <strncmp@plt>
  test   %rax,%rax
  jne    L490
  mov    0x10(%rsp),%ebx
  mov    %r14d,%eax
  lea    (%r12,%rbp,1),%rdx
  movzbl (%rdx,%rax,1),%eax
  test   %al,%al
  je     L305
  lea    -0x2f(%rax),%edx
  cmp    $0x49,%dl
  ja     L357
  ja     L357
  movzbl %dl,%edx
  lea    D9(%rip),%rdi
  movslq (%rdi,%rdx,4),%rdx
  add    %rdi,%rdx
  notrack jmp *%rdx
L166:
  mov    0x18(%rsp),%rax
  test   %rax,%rax
  je     L532
  movl   $0xfffe,(%rax)
  jmp    L532
L79:
  lea    -0x36(%rdi),%esi
  movzbl 0x2f(%rsp),%eax
  test   %al,%al
  je     L67
  lea    0x2f(%rsp),%rdx
  jmp    L322
L502:
  add    $0x1,%rdx
  movzbl (%rdx),%eax
  test   %al,%al
  je     L67
L322:
  lea    -0x61(%rax),%ecx
  cmp    $0x19,%cl
  ja     L502
  sub    $0x20,%eax
  mov    %al,(%rdx)
  jmp    L502
L256:
  mov    0x18(%rsp),%rdi
  test   %rdi,%rdi
  je     L532
  mov    $0xfffe,%eax
  sub    %edx,%eax
  mov    %eax,(%rdi)
  jmp    L532
L499:
  mov    $0x0,%r15d
L95:
  mov    0x18(%rsp),%rax
  test   %rax,%rax
  je     L532
  mov    %r15d,(%rax)
  jmp    L532
  mov    $0x8,%eax
  jmp    L29
  mov    $0xa,%eax
  jmp    L29
  mov    0x10(%rsp),%ebx
  mov    $0x46,%edi
L441:
  mov    %edi,0x14(%rsp)
  lea    -0x31(%rdi),%r14d
  jmp    L196
L124:
  call   <__stack_chk_fail@plt>
```

assistant: ```c
char *hs7huan4ma3xu4lie4(char *z4f2ch4, char *ying3dao3fu2, unsigned *z4f2d4l2_) {
  char huan3cong1[9];
  int d4l2, z4f2, jin4zhi4, c4w4;
  unsigned pian1yi2, chang2;
  unsigned ying3dao3fu2chang2 = strlen(ying3dao3fu2);
  unsigned z4f2d4l2 = 0;
  while (*(z4f2ch4 + z4f2d4l2)) {
    if (strncmp(z4f2ch4 + z4f2d4l2, ying3dao3fu2, ying3dao3fu2chang2) == 0) {
      jin4zhi4 = 0;
      d4l2 = ying3dao3fu2chang2 + 1;
      switch (z4f2 = *(z4f2ch4 + z4f2d4l2 + ying3dao3fu2chang2)) {
      case 'a':
        z4f2 = '\a';
        break;
      case 'b':
        z4f2 = '\b';
        break;
      case 'f':
        z4f2 = '\f';
        break;
      case 'n':
        z4f2 = '\n';
        break;
      case 'r':
        z4f2 = '\r';
        break;
      case 't':
        z4f2 = '\t';
        break;
      case 'v':
        z4f2 = '\v';
        break;
      case 0:
        if (z4f2d4l2_)
          *z4f2d4l2_ = ++z4f2d4l2;
        return z4f2ch4;
      case 'x':
      case 'X':
        jin4zhi4 = 'F';
        break;
      case '/':
        jin4zhi4 = *(z4f2ch4 + z4f2d4l2 + d4l2++);
        break;
      default:
        if (z4f2 >= '0' && z4f2 <= '7') {
          jin4zhi4 = '8';
          d4l2--;
        }
        break;
      }
      if (jin4zhi4) {
        if (jin4zhi4 >= '1' && jin4zhi4 <= '2')
          chang2 = 8;
        else if (jin4zhi4 == '3')
          chang2 = 6;
        else if (jin4zhi4 >= '4' && jin4zhi4 <= '6')
          chang2 = 4;
        else if ((jin4zhi4 >= '7' && jin4zhi4 <= '9') || jin4zhi4 == '0' || (jin4zhi4 >= 'A' && jin4zhi4 <= 'E'))
          chang2 = 3;
        else if ((jin4zhi4 >= 'F' && jin4zhi4 <= 'Z') || (jin4zhi4 >= 'a' && jin4zhi4 <= 'z'))
          chang2 = 2;
        else {
          if (z4f2d4l2_)
            *z4f2d4l2_ = 0xffff;
          return z4f2ch4;
        }
        for (pian1yi2 = 0; pian1yi2 < chang2 && (((z4f2 = *(z4f2ch4 + z4f2d4l2 + d4l2)) >= '0' && z4f2 < (jin4zhi4 >= '1' && jin4zhi4 <= '9' ? jin4zhi4 : '9' + 1)) || (jin4zhi4 >= 'A' && ((z4f2 >= 'A' && z4f2 <= 'Z') || (z4f2 >= 'a' && z4f2 <= 'z')))); ++d4l2) {
          huan3cong1[pian1yi2++] = z4f2;
        }
        if (!pian1yi2) {
          if (z4f2d4l2_)
            *z4f2d4l2_ = 0xfffe;
          return z4f2ch4;
        }
        huan3cong1[pian1yi2] = 0;
        if (jin4zhi4 >= '1' && jin4zhi4 <= '9')
          jin4zhi4 -= '0';
        else if (jin4zhi4 == '0')
          jin4zhi4 = 10;
        else if (jin4zhi4 >= 'A' && jin4zhi4 <= 'Z') {
          int i;
          jin4zhi4 = jin4zhi4 - 'A' + 11;
          for (i = 0; huan3cong1[i]; i++) {
            if (huan3cong1[i] >= 'a' && huan3cong1[i] <= 'z') {
              huan3cong1[i] = huan3cong1[i] - 'a' + 'A';
            }
          }
        } else
          jin4zhi4 = jin4zhi4 - 'a' + 37;
        z4f2 = (int)hs7chuan4_zheng3shu4(huan3cong1, jin4zhi4, &c4w4);
        if (c4w4) {
          if (z4f2d4l2_)
            *z4f2d4l2_ = 0xfffe - c4w4;
          return z4f2ch4;
        }
      }
      *(z4f2ch4 + z4f2d4l2) = z4f2;
      for (pian1yi2 = 0; (*(z4f2ch4 + z4f2d4l2 + 1 + pian1yi2) = *(z4f2ch4 + z4f2d4l2 + d4l2 + pian1yi2)); pian1yi2++)
        ;
    }
    z4f2d4l2++;
  }
  if (z4f2d4l2_)
    *z4f2d4l2_ = z4f2d4l2;
  return z4f2ch4;
}
```