user: Translate the below assembly code into C programming language:

```asm
<xIntPendClear>:
  endbr64
  cmp    $0xe,%rdi
  je     L43
  cmp    $0xf,%rdi
  je     L78
  test   $0xf0,%dil
  je     L34
  movzbl %dil,%eax
  cmp    $0x53,%dil
  ja     L34
  mov    $0x1,%edx
  mov    %edi,%ecx
  shr    $0x5,%rax
  shl    %cl,%edx
  add    $0x380038a0,%rax
  movslq %edx,%rdx
  mov    %rdx,0x0(,%rax,4)
  ret
  nopl   0x0(%rax,%rax,1)
L78:
  mov    $0xe000ed04,%edx
  mov    (%rdx),%rax
  or     $0x2000000,%rax
  mov    %rax,(%rdx)
  ret
  nopw   0x0(%rax,%rax,1)
L34:
  mov    %rdi,%rcx
  shr    $0x8,%rcx
  test   $0xf0,%cl
  je     L31
  movzbl %cl,%eax
  cmp    $0x54,%cl
  ja     L31
  mov    $0x1,%edx
  shr    $0x5,%rax
  shl    %cl,%edx
  add    $0x380038a0,%rax
  movslq %edx,%rdx
  mov    %rdx,0x0(,%rax,4)
  ret
  nopl   0x0(%rax)
L31:
  cmp    $0x8290000,%rdi
  je     L67
  cmp    $0x11030000,%rdi
  je     L87
  cmp    $0x9110000,%rdi
  je     L68
  cmp    $0x10210000,%rdi
  je     L47
  ret
  nopl   (%rax)
L43:
  mov    $0xe000ed04,%edx
  mov    (%rdx),%rax
  or     $0x8000000,%rax
  mov    %rax,(%rdx)
  ret
  nopw   0x0(%rax,%rax,1)
L67:
  mov    $0xe000e280,%eax
  movq   $0x1000000,(%rax)
  movq   $0x2000000,(%rax)
  movq   $0x4000000,(%rax)
  movq   $0x8000000,(%rax)
  ret
  nopw   0x0(%rax,%rax,1)
L87:
  mov    $0xe000e280,%eax
  movq   $0x40,(%rax)
  movq   $0x80,(%rax)
  movq   $0x100,(%rax)
  movq   $0x200,(%rax)
  movq   $0x400,(%rax)
  movq   $0x800000,(%rax)
  movq   $0x100,0x4(%rax)
  ret
L47:
  mov    $0xe000e284,%eax
  movq   $0x1000000,(%rax)
  movq   $0x2000000,(%rax)
  movq   $0x4000000,(%rax)
  movq   $0x8000000,(%rax)
  movq   $0x10000000,(%rax)
  ret
  nopl   0x0(%rax)
L68:
  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
```

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