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     L217
  movl   $0x0,0x4(%rsp)
  mov    %eax,%r15d
  mov    %r12,%r13
  xor    %ebp,%ebp
  lea    0x2f(%rsp),%r14
  nopw   0x0(%rax,%rax,1)
L380:
  mov    0x8(%rsp),%rsi
  mov    %r15d,%edx
  mov    %r13,%rdi
  call   <strncmp@plt>
  test   %rax,%rax
  jne    L90
  mov    %r15d,%eax
  lea    (%r12,%rbp,1),%rsi
  lea    0x1(%r15),%ebx
  movzbl (%rsi,%rax,1),%eax
  test   %al,%al
  je     L235
  lea    -0x2f(%rax),%edx
  cmp    $0x49,%dl
  ja     L283
  lea    D18(%rip),%rcx
  movzbl %dl,%edx
  movslq (%rcx,%rdx,4),%rdx
  add    %rcx,%rdx
  notrack jmp *%rdx
L209:
  test   %ecx,%ecx
  je     L55
  mov    %r14,%rdi
L349:
  cmpl   $0x8,0x18(%rsp)
  movb   $0x0,0x2f(%rsp,%rcx,1)
  lea    -0x30(%r9),%esi
  jbe    L243
  mov    $0xa,%esi
  cmp    $0x30,%r9d
  je     L243
  mov    0x1c(%rsp),%eax
  lea    -0x3c(%r9),%esi
  sub    $0x41,%eax
  cmp    $0x19,%eax
  jbe    L428
L243:
  lea    0x28(%rsp),%rdx
  call   <hs7chuan4_zheng3shu4@plt>
  mov    0x28(%rsp),%edx
  test   %edx,%edx
  jne    L21
L163:
  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     L90
  xor    %edx,%edx
  nopw   0x0(%rax,%rax,1)
L263:
  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    L263
L90:
  addl   $0x1,0x4(%rsp)
  mov    0x4(%rsp),%ebp
  lea    (%r12,%rbp,1),%r13
  cmpb   $0x0,0x0(%r13)
  jne    L380
L308:
  mov    0x10(%rsp),%rax
  test   %rax,%rax
  je     L477
  mov    0x4(%rsp),%esi
  mov    %esi,(%rax)
  jmp    L477
  cs nopw 0x0(%rax,%rax,1)
L283:
  movsbl %al,%edx
  sub    $0x30,%edx
  cmp    $0x7,%edx
  ja     L163
  mov    %r15d,%edx
  movl   $0x7,0x18(%rsp)
  mov    $0x38,%r9d
  mov    $0x3,%r10d
  movl   $0x38,0x1c(%rsp)
  nopw   0x0(%rax,%rax,1)
L457:
  cmpl   $0x8,0x18(%rsp)
  lea    0x1(%rdx),%eax
  mov    $0x3a,%r11d
  movslq %edx,%rdx
  mov    %r14,%r8
  cmovbe %r9d,%r11d
  cltq
  xor    %ecx,%ecx
  sub    %rdx,%r8
  nop
L22:
  movsbl -0x1(%rsi,%rax,1),%edi
  lea    -0x1(%rax),%ebx
  mov    %edi,%edx
  cmp    $0x2f,%dil
  jle    L314
  cmp    %edi,%r11d
  jg     L65
L314:
  cmp    $0x40,%r9d
  jle    L209
  mov    %edx,%edi
  and    $0xffffffdf,%edi
  sub    $0x41,%edi
  cmp    $0x19,%dil
  ja     L209
L65:
  add    $0x1,%ecx
  mov    %dl,-0x1(%r8,%rax,1)
  mov    %eax,%ebx
  mov    %r14,%rdi
  add    $0x1,%rax
  cmp    %ecx,%r10d
  jne    L22
  jmp    L349
  movl   $0x15,0x18(%rsp)
  mov    %ebx,%edx
  mov    $0x46,%r9d
  movl   $0x46,0x1c(%rsp)
  mov    $0x2,%r10d
  jmp    L457
  movslq %ebx,%rbx
  lea    0x2(%r15),%edx
  movsbl (%rsi,%rbx,1),%r9d
  mov    %edx,%ebx
  mov    %r9d,%ecx
  test   %r9d,%r9d
  je     L163
  lea    -0x31(%r9),%eax
  mov    %r9d,0x1c(%rsp)
  mov    %eax,0x18(%rsp)
  cmp    $0x1,%eax
  ja     L358
  mov    $0x8,%r10d
  jmp    L457
  mov    $0x8,%eax
  jmp    L163
  mov    $0x7,%eax
  jmp    L163
  mov    $0xd,%eax
  jmp    L163
  mov    $0xa,%eax
  jmp    L163
  mov    $0xc,%eax
  jmp    L163
  nopl   0x0(%rax)
L235:
  mov    0x10(%rsp),%rsi
  test   %rsi,%rsi
  je     L477
  mov    0x4(%rsp),%eax
  add    $0x1,%eax
  mov    %eax,(%rsi)
L477:
  mov    0x38(%rsp),%rax
  sub    %fs:0x28,%rax
  jne    L125
  add    $0x48,%rsp
  mov    %r12,%rax
  pop    %rbx
  pop    %rbp
  pop    %r12
  pop    %r13
  pop    %r14
  pop    %r15
  ret
L428:
  movzbl 0x2f(%rsp),%eax
  lea    -0x36(%r9),%esi
  test   %al,%al
  je     L243
  mov    %rdi,%rdx
  nopl   (%rax)
L39:
  lea    -0x61(%rax),%ecx
  cmp    $0x19,%cl
  ja     L465
  sub    $0x20,%eax
  mov    %al,(%rdx)
L465:
  movzbl 0x1(%rdx),%eax
  add    $0x1,%rdx
  test   %al,%al
  jne    L39
  jmp    L243
  mov    $0xb,%eax
  jmp    L163
  mov    $0x9,%eax
  jmp    L163
L55:
  mov    0x10(%rsp),%rax
  test   %rax,%rax
  je     L477
  movl   $0xfffe,(%rax)
  jmp    L477
L21:
  mov    0x10(%rsp),%rsi
  mov    %edx,%eax
  test   %rsi,%rsi
  je     L477
  mov    $0xfffe,%edx
  sub    %eax,%edx
  mov    %edx,(%rsi)
  jmp    L477
L217:
  movl   $0x0,0x4(%rsp)
  jmp    L308
L125:
  call   <__stack_chk_fail@plt>
L358:
  sub    $0x30,%ecx
  cmp    $0x4a,%cl
  ja     L31
  lea    D17(%rip),%rbx
  movzbl %cl,%ecx
  movslq (%rbx,%rcx,4),%rax
  add    %rbx,%rax
  notrack jmp *%rax
  nopl   0x0(%rax,%rax,1)
  mov    $0x3,%r10d
  jmp    L457
L31:
  mov    0x10(%rsp),%rax
  test   %rax,%rax
  je     L477
  movl   $0xffff,(%rax)
  jmp    L477
  mov    $0x4,%r10d
  jmp    L457
  movl   $0x33,0x1c(%rsp)
  mov    $0x33,%r9d
  mov    $0x6,%r10d
  jmp    L457
```

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