user: 请显示与下面列出的汇编代码相匹配的C语言实现：

```asm
<xIntPendClear>:
  endbr64
  cmp    $0xe,%rdi
  je     L83
  cmp    $0xf,%rdi
  je     L46
  test   $0xf0,%dil
  je     L87
  movzbl %dil,%eax
  cmp    $0x53,%dil
  ja     L87
  shr    $0x5,%rax
  add    $0x380038a0,%rax
  mov    $0x1,%edx
  mov    %edi,%ecx
  shl    %cl,%edx
  movslq %edx,%rdx
  mov    %rdx,0x0(,%rax,4)
  ret
L83:
  mov    $0xe000ed04,%edx
  mov    (%rdx),%rax
  or     $0x8000000,%rax
  mov    %rax,(%rdx)
  ret
L46:
  mov    $0xe000ed04,%edx
  mov    (%rdx),%rax
  or     $0x2000000,%rax
  mov    %rax,(%rdx)
  ret
L87:
  mov    %rdi,%rcx
  shr    $0x8,%rcx
  test   $0xf0,%cl
  je     L13
  movzbl %cl,%eax
  cmp    $0x54,%cl
  ja     L13
  shr    $0x5,%rax
  add    $0x380038a0,%rax
  mov    $0x1,%edx
  shl    %cl,%edx
  movslq %edx,%rdx
  mov    %rdx,0x0(,%rax,4)
  ret
L13:
  cmp    $0x8290000,%rdi
  je     L65
  cmp    $0x11030000,%rdi
  je     L47
  cmp    $0x9110000,%rdi
  je     L89
  cmp    $0x10210000,%rdi
  je     L73
L98:
  ret
L65:
  mov    $0xe000e280,%eax
  movq   $0x1000000,(%rax)
  movq   $0x2000000,(%rax)
  movq   $0x4000000,(%rax)
  movq   $0x8000000,(%rax)
  ret
L47:
  mov    $0xe000e280,%eax
  movq   $0x40,(%rax)
  movq   $0x80,(%rax)
  movq   $0x100,(%rax)
  movq   $0x200,(%rax)
  movq   $0x400,(%rax)
  movq   $0x800000,(%rax)
  lea    0x4(%rax),%rax
  movq   $0x100,(%rax)
  ret
L89:
  mov    $0xe000e280,%eax
  movq   $0x800,(%rax)
  movq   $0x1000,(%rax)
  movq   $0x2000,(%rax)
  movq   $0x4000,(%rax)
  movq   $0x8000,(%rax)
  movq   $0x10000,(%rax)
  movq   $0x20000,(%rax)
  ret
L73:
  mov    $0xe000e284,%eax
  movq   $0x1000000,(%rax)
  movq   $0x2000000,(%rax)
  movq   $0x4000000,(%rax)
  movq   $0x8000000,(%rax)
  movq   $0x10000000,(%rax)
  jmp    L98
```

assistant: ```c
void xIntPendClear(unsigned long ulInterrupt) {
  ;
  if (ulInterrupt == 14) {
    (*((volatile unsigned long *)(0xE000ED04))) |= 0x08000000;
  } else if (ulInterrupt == 15) {
    (*((volatile unsigned long *)(0xE000ED04))) |= 0x02000000;
  } else if (((ulInterrupt & 0xFF) >= 16) && ((ulInterrupt & 0xFF) < 84)) {
    (*((volatile unsigned long *)(0xE000E280 + ((ulInterrupt & 0xFF) / 32) * 4))) = 1 << ((ulInterrupt & 0xFF) % 32);
  } else if ((((ulInterrupt >> 8) & 0xFF) >= 16) && (((ulInterrupt >> 8) & 0xFF) <= 84)) {
    (*((volatile unsigned long *)(0xE000E280 + (((ulInterrupt >> 8) & 0xFF) / 32) * 4))) = 1 << (((ulInterrupt >> 8) & 0xFF) % 32);
  } else if (ulInterrupt == 0x08290000) {
    (*((volatile unsigned long *)(0xE000E280))) = 1 << (40 - 16);
    (*((volatile unsigned long *)(0xE000E280))) = 1 << (41 - 16);
    (*((volatile unsigned long *)(0xE000E280))) = 1 << (42 - 16);
    (*((volatile unsigned long *)(0xE000E280))) = 1 << (43 - 16);
  } else if (ulInterrupt == 0x11030000) {
    (*((volatile unsigned long *)(0xE000E280))) = 1 << (22 - 16);
    (*((volatile unsigned long *)(0xE000E280))) = 1 << (23 - 16);
    (*((volatile unsigned long *)(0xE000E280))) = 1 << (24 - 16);
    (*((volatile unsigned long *)(0xE000E280))) = 1 << (25 - 16);
    (*((volatile unsigned long *)(0xE000E280))) = 1 << (26 - 16);
    (*((volatile unsigned long *)(0xE000E280))) = 1 << (39 - 16);
    (*((volatile unsigned long *)(0xE000E284))) = 1 << (56 - 48);
  } else if (ulInterrupt == 0x09110000) {
    (*((volatile unsigned long *)(0xE000E280))) = 1 << (27 - 16);
    (*((volatile unsigned long *)(0xE000E280))) = 1 << (28 - 16);
    (*((volatile unsigned long *)(0xE000E280))) = 1 << (29 - 16);
    (*((volatile unsigned long *)(0xE000E280))) = 1 << (30 - 16);
    (*((volatile unsigned long *)(0xE000E280))) = 1 << (31 - 16);
    (*((volatile unsigned long *)(0xE000E280))) = 1 << (32 - 16);
    (*((volatile unsigned long *)(0xE000E280))) = 1 << (33 - 16);
  } else if (ulInterrupt == 0x10210000) {
    (*((volatile unsigned long *)(0xE000E284))) = 1 << (72 - 48);
    (*((volatile unsigned long *)(0xE000E284))) = 1 << (73 - 48);
    (*((volatile unsigned long *)(0xE000E284))) = 1 << (74 - 48);
    (*((volatile unsigned long *)(0xE000E284))) = 1 << (75 - 48);
    (*((volatile unsigned long *)(0xE000E284))) = 1 << (76 - 48);
  }
}
```