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

```asm
<ddsGetDXT5Alpha>:
  endbr64
  mov    %edi,%eax
  mov    %esi,%ecx
  cmp    %esi,%edi
  jle    L7
  cmp    $0x7,%edx
  ja     L14
  mov    %edx,%edx
  lea    D0(%rip),%rsi
  movslq (%rsi,%rdx,4),%rdx
  add    %rsi,%rdx
  notrack jmp *%rdx
  mov    %ecx,%eax
  ret
  lea    (%rdi,%rdi,2),%eax
  lea    (%rcx,%rax,2),%edx
  movslq %edx,%rax
  imul   $0xffffffff92492493,%rax,%rax
  shr    $0x20,%rax
  add    %edx,%eax
  sar    $0x2,%eax
  sar    $0x1f,%edx
  sub    %edx,%eax
  ret
  lea    (%rdi,%rdi,4),%eax
  lea    (%rax,%rcx,2),%edx
  movslq %edx,%rax
  imul   $0xffffffff92492493,%rax,%rax
  shr    $0x20,%rax
  add    %edx,%eax
  sar    $0x2,%eax
  sar    $0x1f,%edx
  sub    %edx,%eax
  ret
  lea    (%rcx,%rcx,2),%edx
  lea    (%rdx,%rdi,4),%edx
  movslq %edx,%rax
  imul   $0xffffffff92492493,%rax,%rax
  shr    $0x20,%rax
  add    %edx,%eax
  sar    $0x2,%eax
  sar    $0x1f,%edx
  sub    %edx,%eax
  ret
  lea    (%rdi,%rdi,2),%eax
  lea    (%rax,%rcx,4),%edx
  movslq %edx,%rax
  imul   $0xffffffff92492493,%rax,%rax
  shr    $0x20,%rax
  add    %edx,%eax
  sar    $0x2,%eax
  sar    $0x1f,%edx
  sub    %edx,%eax
  ret
  lea    (%rcx,%rcx,4),%edx
  lea    (%rdx,%rdi,2),%edx
  movslq %edx,%rax
  imul   $0xffffffff92492493,%rax,%rax
  shr    $0x20,%rax
  add    %edx,%eax
  sar    $0x2,%eax
  sar    $0x1f,%edx
  sub    %edx,%eax
  ret
  lea    (%rcx,%rcx,2),%edx
  lea    (%rdi,%rdx,2),%edx
  movslq %edx,%rax
  imul   $0xffffffff92492493,%rax,%rax
  shr    $0x20,%rax
  add    %edx,%eax
  sar    $0x2,%eax
  sar    $0x1f,%edx
  sub    %edx,%eax
  ret
L7:
  cmp    $0x7,%edx
  ja     L4
  mov    %edx,%edx
  lea    D9(%rip),%rsi
  movslq (%rsi,%rdx,4),%rdx
  add    %rsi,%rdx
  notrack jmp *%rdx
  mov    %ecx,%eax
  ret
  lea    (%rcx,%rdi,4),%edx
  movslq %edx,%rax
  imul   $0x66666667,%rax,%rax
  sar    $0x21,%rax
  sar    $0x1f,%edx
  sub    %edx,%eax
  ret
  lea    (%rdi,%rdi,2),%eax
  lea    (%rax,%rcx,2),%edx
  movslq %edx,%rax
  imul   $0x66666667,%rax,%rax
  sar    $0x21,%rax
  sar    $0x1f,%edx
  sub    %edx,%eax
  ret
  lea    (%rcx,%rcx,2),%edx
  lea    (%rdx,%rdi,2),%edx
  movslq %edx,%rax
  imul   $0x66666667,%rax,%rax
  sar    $0x21,%rax
  sar    $0x1f,%edx
  sub    %edx,%eax
  ret
  lea    (%rdi,%rcx,4),%edx
  movslq %edx,%rax
  imul   $0x66666667,%rax,%rax
  sar    $0x21,%rax
  sar    $0x1f,%edx
  sub    %edx,%eax
  ret
  mov    $0xff,%eax
  ret
L14:
  mov    $0x0,%eax
  ret
L4:
  mov    $0x0,%eax
  ret
```

assistant: ```c
int ddsGetDXT5Alpha(int a0, int a1, int t) {
  if (a0 > a1)
    switch (t) {
    case 0:
      return a0;
    case 1:
      return a1;
    case 2:
      return (6 * a0 + a1) / 7;
    case 3:
      return (5 * a0 + 2 * a1) / 7;
    case 4:
      return (4 * a0 + 3 * a1) / 7;
    case 5:
      return (3 * a0 + 4 * a1) / 7;
    case 6:
      return (2 * a0 + 5 * a1) / 7;
    case 7:
      return (a0 + 6 * a1) / 7;
    }
  else
    switch (t) {
    case 0:
      return a0;
    case 1:
      return a1;
    case 2:
      return (4 * a0 + a1) / 5;
    case 3:
      return (3 * a0 + 2 * a1) / 5;
    case 4:
      return (2 * a0 + 3 * a1) / 5;
    case 5:
      return (a0 + 4 * a1) / 5;
    case 6:
      return 0;
    case 7:
      return 255;
    }
  return 0;
}
```