user: What is the c source code of the assembly code below:

```asm
<t_special>:
  endbr64
  cmp    %esi,%edi
  sete   %r9b
  cmp    %edx,%edi
  sete   %al
  or     %r9b,%al
  jne    L316
  cmp    %edx,%esi
  je     L334
  mov    %edi,%eax
  add    %esi,%eax
  jne    L298
  movzbl 0x7(%rcx),%eax
  cmp    $0x65,%al
  je     L215
  jle    L298
  cmp    $0x69,%al
  je     L59
L298:
  jmp    1050 <t1@plt>
  nopl   (%rax)
L316:
  movzbl 0x7(%rcx),%r8d
  cmp    $0x34,%r8b
  je     L103
  sub    $0x62,%r8d
  cmp    $0xa,%r8b
  ja     L298
  lea    D18(%rip),%r10
  movzbl %r8b,%r8d
  movslq (%r10,%r8,4),%r8
  add    %r10,%r8
  notrack jmp *%r8
  nopw   0x0(%rax,%rax,1)
L334:
  movzbl 0x7(%rcx),%eax
  cmp    $0x34,%al
  je     L298
  sub    $0x62,%eax
  cmp    $0xa,%al
  ja     L298
  lea    D11(%rip),%r8
  movzbl %al,%eax
  movslq (%r8,%rax,4),%rax
  add    %r8,%rax
  notrack jmp *%rax
  nopl   0x0(%rax,%rax,1)
L59:
  test   $0x1,%dl
  je     L298
L320:
  xor    %eax,%eax
  ret
  test   $0x1,%dl
  je     L298
  cmp    %esi,%edi
  jne    L225
  jmp    L320
  nopl   0x0(%rax,%rax,1)
L215:
  test   $0x1,%dl
  je     L298
L225:
  mov    %edi,%eax
  add    %esi,%eax
  jne    L298
  jmp    L320
  nopl   (%rax)
  test   %al,%al
  je     L214
  cmp    %esi,%edi
  jne    L260
  test   $0x1,%dl
  jne    L320
  cmp    %edx,%edi
  je     L260
L214:
  cmp    %edx,%esi
  jne    L298
  test   $0x1,%dil
  jne    L320
  jmp    L298
  nopl   0x0(%rax)
  lea    (%rdi,%rdi,1),%eax
  cmp    %esi,%edi
  jne    L144
  lea    (%rdx,%rax,1),%r8d
  mov    %edx,%r9d
  and    $0x3,%r8d
  and    $0x1,%r9d
  or     %r9d,%r8d
  jne    L320
  cmp    %edx,%edi
  je     L144
L124:
  cmp    %edx,%esi
  jne    L298
  nopw   0x0(%rax,%rax,1)
  lea    (%rdi,%rsi,2),%eax
  mov    %edi,%r8d
  and    $0x3,%eax
  and    $0x1,%r8d
  or     %r8d,%eax
  jne    L320
  jmp    L298
  nopl   0x0(%rax,%rax,1)
L103:
  lea    (%rdx,%rdi,2),%eax
  mov    %edx,%r8d
  and    $0x3,%eax
  and    $0x1,%r8d
  or     %r8d,%eax
  je     L298
  cmp    %esi,%edi
  je     L320
  jmp    L298
  nopl   0x0(%rax,%rax,1)
  test   $0x1,%dl
  je     L298
  test   %r9b,%r9b
  jne    L320
  jmp    L298
  nop
L260:
  test   $0x1,%sil
  je     L214
  jmp    L320
  nop
L144:
  add    %esi,%eax
  mov    %esi,%r8d
  and    $0x3,%eax
  and    $0x1,%r8d
  or     %r8d,%eax
  je     L124
  jmp    L320
```

assistant: ```c
int t_special(int h, int k, int l, char string[]) {
  if (h == k || h == l || k == l || h == -k) {
    switch (string[7]) {
    case 'l':
      if (l % 2 != 0 && h == k)
        return 0;
      break;
    case '4':
      if (((2 * h + l) % 4 != 0 || l % 2 != 0) && h == k)
        return 0;
      break;
    case 'i':
      if (l % 2 != 0 && h == -k)
        return 0;
      break;
    case 'e':
      if (l % 2 != 0 && (h == k || h == -k))
        return 0;
      break;
    case 'c':
      if (h == k || h == l || k == l) {
        if (h == k)
          if (l % 2 != 0)
            return 0;
        if (h == l)
          if (k % 2 != 0)
            return 0;
        if (k == l)
          if (h % 2 != 0)
            return 0;
      }
      break;
    case 'b':
      if (h == k || h == l || k == l) {
        if (h == k)
          if ((2 * h + l) % 4 != 0 || l % 2 != 0)
            return 0;
        if (h == l)
          if ((2 * h + k) % 4 != 0 || k % 2 != 0)
            return 0;
        if (k == l)
          if ((2 * k + h) % 4 != 0 || h % 2 != 0)
            return 0;
      }
      break;
    default:
      break;
    }
    return t1(h, k, l, string);
  } else
    return t1(h, k, l, string);
}
```