user: Converte this assembly snippet into its equivalent C code:

```asm
<init_interrupts>:
  endbr64
  sub    $0x8,%rsp
  xor    %eax,%eax
  call   <disable_interrupts@plt>
  xor    %esi,%esi
  mov    $0x21,%edi
  call   <outb@plt>
  xor    %esi,%esi
  mov    $0xa1,%edi
  call   <outb@plt>
  mov    D87(%rip),%rsi
  mov    $0x20,%edi
  call   <create_gate@plt>
  mov    D174(%rip),%rsi
  mov    $0x21,%edi
  call   <create_gate@plt>
  mov    D344(%rip),%rsi
  mov    $0x22,%edi
  call   <create_gate@plt>
  mov    D116(%rip),%rsi
  mov    $0x23,%edi
  call   <create_gate@plt>
  mov    D210(%rip),%rsi
  mov    $0x24,%edi
  call   <create_gate@plt>
  mov    D6(%rip),%rsi
  mov    $0x25,%edi
  call   <create_gate@plt>
  mov    D308(%rip),%rsi
  mov    $0x26,%edi
  call   <create_gate@plt>
  mov    D241(%rip),%rsi
  mov    $0x27,%edi
  call   <create_gate@plt>
  mov    D181(%rip),%rsi
  mov    $0x28,%edi
  call   <create_gate@plt>
  mov    D159(%rip),%rsi
  mov    $0x29,%edi
  call   <create_gate@plt>
  mov    D2(%rip),%rsi
  mov    $0x2a,%edi
  call   <create_gate@plt>
  mov    D309(%rip),%rsi
  mov    $0x2b,%edi
  call   <create_gate@plt>
  mov    D53(%rip),%rsi
  mov    $0x2c,%edi
  call   <create_gate@plt>
  mov    D79(%rip),%rsi
  mov    $0x2d,%edi
  call   <create_gate@plt>
  mov    D322(%rip),%rsi
  mov    $0x2e,%edi
  call   <create_gate@plt>
  mov    D296(%rip),%rsi
  mov    $0x2f,%edi
  call   <create_gate@plt>
  mov    D245(%rip),%rsi
  xor    %edi,%edi
  call   <create_gate@plt>
  mov    D156(%rip),%rsi
  mov    $0x1,%edi
  call   <create_gate@plt>
  mov    D263(%rip),%rsi
  mov    $0x2,%edi
  call   <create_gate@plt>
  mov    D96(%rip),%rsi
  mov    $0x3,%edi
  call   <create_gate@plt>
  mov    D279(%rip),%rsi
  mov    $0x4,%edi
  call   <create_gate@plt>
  mov    D355(%rip),%rsi
  mov    $0x5,%edi
  call   <create_gate@plt>
  mov    D347(%rip),%rsi
  mov    $0x6,%edi
  call   <create_gate@plt>
  mov    D270(%rip),%rsi
  mov    $0x7,%edi
  call   <create_gate@plt>
  mov    D260(%rip),%rsi
  mov    $0x8,%edi
  call   <create_gate@plt>
  mov    D267(%rip),%rsi
  mov    $0x9,%edi
  call   <create_gate@plt>
  mov    D13(%rip),%rsi
  mov    $0xa,%edi
  call   <create_gate@plt>
  mov    D36(%rip),%rsi
  mov    $0xb,%edi
  call   <create_gate@plt>
  mov    D57(%rip),%rsi
  mov    $0xc,%edi
  call   <create_gate@plt>
  mov    D55(%rip),%rsi
  mov    $0xd,%edi
  call   <create_gate@plt>
  mov    D239(%rip),%rsi
  mov    $0xe,%edi
  call   <create_gate@plt>
  mov    D33(%rip),%rsi
  mov    $0xf,%edi
  call   <create_gate@plt>
  mov    D206(%rip),%rsi
  mov    $0x10,%edi
  call   <create_gate@plt>
  mov    D23(%rip),%rsi
  mov    $0x11,%edi
  call   <create_gate@plt>
  mov    D331(%rip),%rsi
  mov    $0x12,%edi
  call   <create_gate@plt>
  mov    D9(%rip),%rsi
  mov    $0x13,%edi
  call   <create_gate@plt>
  xor    %eax,%eax
  add    $0x8,%rsp
  jmp    10b0 <enable_interrupts@plt>
```

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