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

```asm
<init_interrupts>:
  endbr64
  sub    $0x8,%rsp
  mov    $0x0,%eax
  call   <disable_interrupts@plt>
  mov    $0x0,%esi
  mov    $0x21,%edi
  call   <outb@plt>
  mov    $0x0,%esi
  mov    $0xa1,%edi
  call   <outb@plt>
  mov    D292(%rip),%rsi
  mov    $0x20,%edi
  call   <create_gate@plt>
  mov    D71(%rip),%rsi
  mov    $0x21,%edi
  call   <create_gate@plt>
  mov    D86(%rip),%rsi
  mov    $0x22,%edi
  call   <create_gate@plt>
  mov    D355(%rip),%rsi
  mov    $0x23,%edi
  call   <create_gate@plt>
  mov    D147(%rip),%rsi
  mov    $0x24,%edi
  call   <create_gate@plt>
  mov    D342(%rip),%rsi
  mov    $0x25,%edi
  call   <create_gate@plt>
  mov    D68(%rip),%rsi
  mov    $0x26,%edi
  call   <create_gate@plt>
  mov    D283(%rip),%rsi
  mov    $0x27,%edi
  call   <create_gate@plt>
  mov    D183(%rip),%rsi
  mov    $0x28,%edi
  call   <create_gate@plt>
  mov    D296(%rip),%rsi
  mov    $0x29,%edi
  call   <create_gate@plt>
  mov    D177(%rip),%rsi
  mov    $0x2a,%edi
  call   <create_gate@plt>
  mov    D273(%rip),%rsi
  mov    $0x2b,%edi
  call   <create_gate@plt>
  mov    D8(%rip),%rsi
  mov    $0x2c,%edi
  call   <create_gate@plt>
  mov    D352(%rip),%rsi
  mov    $0x2d,%edi
  call   <create_gate@plt>
  mov    D106(%rip),%rsi
  mov    $0x2e,%edi
  call   <create_gate@plt>
  mov    D12(%rip),%rsi
  mov    $0x2f,%edi
  call   <create_gate@plt>
  mov    D159(%rip),%rsi
  mov    $0x0,%edi
  call   <create_gate@plt>
  mov    D11(%rip),%rsi
  mov    $0x1,%edi
  call   <create_gate@plt>
  mov    D134(%rip),%rsi
  mov    $0x2,%edi
  call   <create_gate@plt>
  mov    D18(%rip),%rsi
  mov    $0x3,%edi
  call   <create_gate@plt>
  mov    D196(%rip),%rsi
  mov    $0x4,%edi
  call   <create_gate@plt>
  mov    D100(%rip),%rsi
  mov    $0x5,%edi
  call   <create_gate@plt>
  mov    D26(%rip),%rsi
  mov    $0x6,%edi
  call   <create_gate@plt>
  mov    D127(%rip),%rsi
  mov    $0x7,%edi
  call   <create_gate@plt>
  mov    D344(%rip),%rsi
  mov    $0x8,%edi
  call   <create_gate@plt>
  mov    D302(%rip),%rsi
  mov    $0x9,%edi
  call   <create_gate@plt>
  mov    D245(%rip),%rsi
  mov    $0xa,%edi
  call   <create_gate@plt>
  mov    D95(%rip),%rsi
  mov    $0xb,%edi
  call   <create_gate@plt>
  mov    D186(%rip),%rsi
  mov    $0xc,%edi
  call   <create_gate@plt>
  mov    D42(%rip),%rsi
  mov    $0xd,%edi
  call   <create_gate@plt>
  mov    D128(%rip),%rsi
  mov    $0xe,%edi
  call   <create_gate@plt>
  mov    D44(%rip),%rsi
  mov    $0xf,%edi
  call   <create_gate@plt>
  mov    D41(%rip),%rsi
  mov    $0x10,%edi
  call   <create_gate@plt>
  mov    D253(%rip),%rsi
  mov    $0x11,%edi
  call   <create_gate@plt>
  mov    D259(%rip),%rsi
  mov    $0x12,%edi
  call   <create_gate@plt>
  mov    D131(%rip),%rsi
  mov    $0x13,%edi
  call   <create_gate@plt>
  mov    $0x0,%eax
  call   <enable_interrupts@plt>
  add    $0x8,%rsp
  ret
```

assistant: ```c
void init_interrupts() {
  disable_interrupts();
  outb(0x21, 0);
  outb(0xa1, 0);
  extern void irq0();
  create_gate(32, irq0);
  ;
  extern void irq1();
  create_gate(33, irq1);
  ;
  extern void irq2();
  create_gate(34, irq2);
  ;
  extern void irq3();
  create_gate(35, irq3);
  ;
  extern void irq4();
  create_gate(36, irq4);
  ;
  extern void irq5();
  create_gate(37, irq5);
  ;
  extern void irq6();
  create_gate(38, irq6);
  ;
  extern void irq7();
  create_gate(39, irq7);
  ;
  extern void irq8();
  create_gate(40, irq8);
  ;
  extern void irq9();
  create_gate(41, irq9);
  ;
  extern void irq10();
  create_gate(42, irq10);
  ;
  extern void irq11();
  create_gate(43, irq11);
  ;
  extern void irq12();
  create_gate(44, irq12);
  ;
  extern void irq13();
  create_gate(45, irq13);
  ;
  extern void irq14();
  create_gate(46, irq14);
  ;
  extern void irq15();
  create_gate(47, irq15);
  ;
  extern void isr0();
  create_gate(0, isr0);
  ;
  extern void isr1();
  create_gate(1, isr1);
  ;
  extern void isr2();
  create_gate(2, isr2);
  ;
  extern void isr3();
  create_gate(3, isr3);
  ;
  extern void isr4();
  create_gate(4, isr4);
  ;
  extern void isr5();
  create_gate(5, isr5);
  ;
  extern void isr6();
  create_gate(6, isr6);
  ;
  extern void isr7();
  create_gate(7, isr7);
  ;
  extern void isr8();
  create_gate(8, isr8);
  ;
  extern void isr9();
  create_gate(9, isr9);
  ;
  extern void isr10();
  create_gate(10, isr10);
  ;
  extern void isr11();
  create_gate(11, isr11);
  ;
  extern void isr12();
  create_gate(12, isr12);
  ;
  extern void isr13();
  create_gate(13, isr13);
  ;
  extern void isr14();
  create_gate(14, isr14);
  ;
  extern void isr15();
  create_gate(15, isr15);
  ;
  extern void isr16();
  create_gate(16, isr16);
  ;
  extern void isr17();
  create_gate(17, isr17);
  ;
  extern void isr18();
  create_gate(18, isr18);
  ;
  extern void isr19();
  create_gate(19, isr19);
  ;
  enable_interrupts();
}
```