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

```asm
<hs7huan4ma3xu4lie4>:
  endbr64
  push   %r15
  push   %r14
  push   %r13
  push   %r12
  mov    %rdi,%r12
  mov    %rsi,%rdi
  push   %rbp
  push   %rbx
  sub    $0x48,%rsp
  mov    %rsi,0x8(%rsp)
  mov    %rdx,0x10(%rsp)
  mov    %fs:0x28,%rax
  mov    %rax,0x38(%rsp)
  xor    %eax,%eax
  call   <strlen@plt>
  cmpb   $0x0,(%r12)
  je     L439
  mov    %eax,%r15d
  lea    0x1(%rax),%eax
  mov    %r12,%r13
  xor    %r14d,%r14d
  mov    %eax,0x18(%rsp)
  xor    %ebp,%ebp
  nopl   0x0(%rax)
L781:
  mov    0x8(%rsp),%rsi
  mov    %r15d,%edx
  mov    %r13,%rdi
  call   <strncmp@plt>
  test   %rax,%rax
  jne    L46
  mov    %r15d,%eax
  lea    (%r12,%rbp,1),%rdx
  mov    0x18(%rsp),%ebx
  movzbl (%rdx,%rax,1),%eax
  test   %al,%al
  je     L356
  lea    -0x2f(%rax),%esi
  cmp    $0x49,%sil
  ja     L175
  lea    D5(%rip),%rdi
  movzbl %sil,%esi
  movslq (%rdi,%rsi,4),%rsi
  add    %rdi,%rsi
  notrack jmp *%rsi
  mov    0x18(%rsp),%edi
  mov    $0x46,%esi
  mov    $0x15,%ecx
  movl   $0x46,0x1c(%rsp)
  mov    $0x2,%eax
L122:
  movslq %edi,%r9
  cmp    $0x8,%ecx
  mov    $0x3a,%r8d
  movsbl (%rdx,%r9,1),%r10d
  cmovbe %esi,%r8d
  mov    %r10d,%r9d
  cmp    $0x2f,%r10b
  jle    L466
L846:
  cmp    %r10d,%r8d
  jg     L283
L466:
  cmp    $0x40,%esi
  jle    L707
  mov    %r9d,%r10d
  and    $0xffffffdf,%r10d
  sub    $0x41,%r10d
  cmp    $0x19,%r10b
  ja     L707
L283:
  lea    0x1(%rdi),%ebx
  mov    %r9b,0x2f(%rsp)
  movslq %ebx,%r10
  movsbl (%rdx,%r10,1),%r11d
  mov    %r11d,%r10d
  cmp    $0x2f,%r11b
  jle    L196
  cmp    %r8d,%r11d
  jl     L728
L196:
  cmp    $0x40,%esi
  jle    L371
  mov    %r10d,%r11d
  and    $0xffffffdf,%r11d
  sub    $0x41,%r11d
  cmp    $0x19,%r11b
  ja     L157
L728:
  mov    %r10b,0x30(%rsp)
  lea    0x2(%rdi),%ebx
  cmp    $0x2,%eax
  je     L332
  movslq %ebx,%r10
  movsbl (%rdx,%r10,1),%r11d
  mov    %r11d,%r10d
  cmp    $0x2f,%r11b
  jle    L996
  cmp    %r8d,%r11d
  jl     L624
L996:
  cmp    $0x40,%esi
  jle    L27
  mov    %r10d,%r11d
  and    $0xffffffdf,%r11d
  sub    $0x41,%r11d
  cmp    $0x19,%r11b
  ja     L468
L624:
  mov    %r10b,0x31(%rsp)
  lea    0x3(%rdi),%ebx
  cmp    $0x3,%eax
  je     L332
  movslq %ebx,%r10
  movsbl (%rdx,%r10,1),%r11d
  mov    %r11d,%r10d
  cmp    $0x2f,%r11b
  jle    L394
  cmp    %r8d,%r11d
  jl     L719
L394:
  cmp    $0x40,%esi
  jle    L109
  mov    %r10d,%r11d
  and    $0xffffffdf,%r11d
  sub    $0x41,%r11d
  cmp    $0x19,%r11b
  ja     L493
L719:
  mov    %r10b,0x32(%rsp)
  lea    0x4(%rdi),%ebx
  cmp    $0x4,%eax
  je     L332
  movslq %ebx,%r10
  movsbl (%rdx,%r10,1),%r11d
  mov    %r11d,%r10d
  cmp    $0x2f,%r11b
  jle    L310
  cmp    %r8d,%r11d
  jl     L400
L310:
  cmp    $0x40,%esi
  jle    L336
  mov    %r10d,%r11d
  and    $0xffffffdf,%r11d
  sub    $0x41,%r11d
  cmp    $0x19,%r11b
  ja     L640
L400:
  mov    %r10b,0x33(%rsp)
  lea    0x5(%rdi),%ebx
  cmp    $0x5,%eax
  je     L332
  movslq %ebx,%r10
  movsbl (%rdx,%r10,1),%r11d
  mov    %r11d,%r10d
  cmp    $0x2f,%r11b
  jle    L255
  cmp    %r8d,%r11d
  jl     L296
L255:
  cmp    $0x40,%esi
  jle    L333
  mov    %r10d,%r11d
  and    $0xffffffdf,%r11d
  sub    $0x41,%r11d
  cmp    $0x19,%r11b
  ja     L613
L296:
  mov    %r10b,0x34(%rsp)
  lea    0x6(%rdi),%ebx
  cmp    $0x6,%eax
  je     L332
  movslq %ebx,%r10
  movsbl (%rdx,%r10,1),%r11d
  mov    %r11d,%r10d
  cmp    $0x2f,%r11b
  jle    L412
  cmp    %r8d,%r11d
  jl     L424
L412:
  cmp    $0x40,%esi
  jle    L275
  mov    %r10d,%r11d
  and    $0xffffffdf,%r11d
  sub    $0x41,%r11d
  cmp    $0x19,%r11b
  ja     L10
L424:
  mov    %r10b,0x35(%rsp)
  lea    0x7(%rdi),%ebx
  cmp    $0x8,%eax
  jne    L1068
  movslq %ebx,%r10
  movsbl (%rdx,%r10,1),%r10d
  mov    %r10d,%edx
  cmp    $0x2f,%r10b
  jle    L811
  cmp    %r8d,%r10d
  jl     L438
L811:
  cmp    $0x40,%esi
  jle    L1068
  mov    %edx,%r8d
  and    $0xffffffdf,%r8d
  sub    $0x41,%r8d
  cmp    $0x19,%r8b
  ja     L422
L438:
  mov    %dl,0x36(%rsp)
  lea    0x8(%rdi),%ebx
L332:
  movb   $0x0,0x2f(%rsp,%rax,1)
  cmp    $0x8,%ecx
  jbe    L40
  mov    $0xa,%r8d
  cmp    $0x30,%esi
  je     L715
L828:
  mov    0x1c(%rsp),%eax
  lea    -0x3c(%rsi),%r8d
  sub    $0x41,%eax
  cmp    $0x19,%eax
  jbe    L521
L715:
  lea    0x28(%rsp),%rdx
  lea    0x2f(%rsp),%rdi
  mov    %r8d,%esi
  call   <hs7chuan4_zheng3shu4@plt>
  mov    0x28(%rsp),%edx
  test   %edx,%edx
  jne    L551
L581:
  movslq %ebx,%rbx
  mov    %al,0x0(%r13)
  add    %rbp,%rbx
  movzbl (%r12,%rbx,1),%eax
  mov    %al,0x1(%r12,%rbp,1)
  test   %al,%al
  je     L46
  xor    %edx,%edx
  nopl   0x0(%rax)
L186:
  lea    0x1(%rdx),%eax
  mov    %rax,%rdx
  add    %r12,%rax
  movzbl (%rax,%rbx,1),%ecx
  mov    %cl,0x1(%rbp,%rax,1)
  test   %cl,%cl
  jne    L186
L46:
  lea    0x1(%r14),%ebp
  lea    (%r12,%rbp,1),%r13
  mov    %rbp,%r14
  cmpb   $0x0,0x0(%r13)
  jne    L781
L1001:
  mov    0x10(%rsp),%rax
  test   %rax,%rax
  je     L372
  mov    %r14d,(%rax)
  jmp    L372
  nopl   0x0(%rax)
L175:
  movsbl %al,%esi
  sub    $0x30,%esi
  cmp    $0x7,%esi
  ja     L581
  movslq %r15d,%rax
  mov    %r15d,%edi
  movsbl (%rdx,%rax,1),%r10d
  mov    %r10d,%r9d
  cmp    $0x2f,%r10b
  jle    L707
  mov    $0x38,%esi
  mov    $0x7,%ecx
  mov    $0x3,%eax
  movl   $0x38,0x1c(%rsp)
  mov    $0x38,%r8d
  jmp    L846
  mov    $0xd,%eax
  jmp    L581
  mov    $0xa,%eax
  jmp    L581
  mov    $0xc,%eax
  jmp    L581
  mov    $0x8,%eax
  jmp    L581
  movslq 0x18(%rsp),%rsi
  lea    0x2(%r15),%edi
  mov    %edi,%ebx
  movsbl (%rdx,%rsi,1),%esi
  mov    %esi,%r8d
  test   %esi,%esi
  je     L581
  lea    -0x31(%rsi),%ecx
  mov    %esi,0x1c(%rsp)
  cmp    $0x1,%ecx
  ja     L513
  mov    $0x8,%eax
  jmp    L122
  mov    $0x7,%eax
  jmp    L581
L157:
  mov    $0x1,%eax
  nopl   0x0(%rax,%rax,1)
L687:
  movb   $0x0,0x2f(%rsp,%rax,1)
  cmp    $0x8,%ecx
  ja     L828
  xchg   %ax,%ax
L40:
  lea    -0x30(%rsi),%r8d
  jmp    L715
  nopl   0x0(%rax)
L356:
  mov    0x10(%rsp),%rax
  test   %rax,%rax
  je     L372
  add    $0x1,%r14d
  mov    %r14d,(%rax)
L372:
  mov    0x38(%rsp),%rax
  sub    %fs:0x28,%rax
  jne    L31
  add    $0x48,%rsp
  mov    %r12,%rax
  pop    %rbx
  pop    %rbp
  pop    %r12
  pop    %r13
  pop    %r14
  pop    %r15
  ret
L521:
  lea    -0x36(%rsi),%r8d
  test   %r9b,%r9b
  je     L715
  lea    -0x61(%r9),%eax
  cmp    $0x19,%al
  ja     L519
  sub    $0x20,%r9d
  mov    %r9b,0x2f(%rsp)
L519:
  movzbl 0x30(%rsp),%eax
  test   %al,%al
  je     L715
  lea    -0x61(%rax),%edx
  cmp    $0x19,%dl
  ja     L866
  sub    $0x20,%eax
  mov    %al,0x30(%rsp)
L866:
  movzbl 0x31(%rsp),%eax
  test   %al,%al
  je     L715
  lea    -0x61(%rax),%edx
  cmp    $0x19,%dl
  ja     L172
  sub    $0x20,%eax
  mov    %al,0x31(%rsp)
L172:
  movzbl 0x32(%rsp),%eax
  test   %al,%al
  je     L715
  lea    -0x61(%rax),%edx
  cmp    $0x19,%dl
  ja     L1016
  sub    $0x20,%eax
  mov    %al,0x32(%rsp)
L1016:
  movzbl 0x33(%rsp),%eax
  test   %al,%al
  je     L715
  lea    -0x61(%rax),%edx
  cmp    $0x19,%dl
  ja     L431
  sub    $0x20,%eax
  mov    %al,0x33(%rsp)
L431:
  movzbl 0x34(%rsp),%eax
  test   %al,%al
  je     L715
  lea    -0x61(%rax),%edx
  cmp    $0x19,%dl
  ja     L662
  sub    $0x20,%eax
  mov    %al,0x34(%rsp)
L662:
  movzbl 0x35(%rsp),%eax
  test   %al,%al
  je     L715
  lea    -0x61(%rax),%edx
  cmp    $0x19,%dl
  ja     L973
  sub    $0x20,%eax
  mov    %al,0x35(%rsp)
L973:
  movzbl 0x36(%rsp),%eax
  test   %al,%al
  je     L715
  lea    -0x61(%rax),%edx
  cmp    $0x19,%dl
  ja     L715
  sub    $0x20,%eax
  mov    %al,0x36(%rsp)
  jmp    L715
  mov    $0xb,%eax
  jmp    L581
  mov    $0x9,%eax
  jmp    L581
L707:
  mov    0x10(%rsp),%rax
  test   %rax,%rax
  je     L372
  movl   $0xfffe,(%rax)
  jmp    L372
L1068:
  mov    $0x7,%eax
  jmp    L332
L371:
  mov    $0x1,%eax
  jmp    L332
L27:
  mov    $0x2,%eax
  jmp    L332
L468:
  mov    $0x2,%eax
  jmp    L687
L109:
  mov    $0x3,%eax
  jmp    L332
L551:
  mov    0x10(%rsp),%rdi
  mov    %edx,%eax
  test   %rdi,%rdi
  je     L372
  mov    $0xfffe,%edx
  sub    %eax,%edx
  mov    %edx,(%rdi)
  jmp    L372
L493:
  mov    $0x3,%eax
  jmp    L687
L336:
  mov    $0x4,%eax
  jmp    L332
L333:
  mov    $0x5,%eax
  jmp    L332
L640:
  mov    $0x4,%eax
  jmp    L687
L613:
  mov    $0x5,%eax
  jmp    L687
L10:
  mov    $0x6,%eax
  jmp    L687
L275:
  mov    $0x6,%eax
  jmp    L332
L422:
  mov    $0x7,%eax
  jmp    L687
L439:
  xor    %r14d,%r14d
  jmp    L1001
L513:
  sub    $0x30,%r8d
  cmp    $0x4a,%r8b
  ja     L277
  lea    D14(%rip),%rbx
  movzbl %r8b,%r8d
  movslq (%rbx,%r8,4),%rax
  add    %rbx,%rax
  notrack jmp *%rax
  cs nopw 0x0(%rax,%rax,1)
  mov    $0x3,%eax
  jmp    L122
L277:
  mov    0x10(%rsp),%rax
  test   %rax,%rax
  je     L372
  movl   $0xffff,(%rax)
  jmp    L372
L31:
  call   <__stack_chk_fail@plt>
  mov    $0x4,%eax
  jmp    L122
  movl   $0x33,0x1c(%rsp)
  mov    $0x33,%esi
  mov    $0x6,%eax
  jmp    L122
```

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;
}
```