user: 请将以下的汇编代码转换成C语言代码：

```asm
<init_interrupts>:
  endbr64
  push   %rbp
  mov    %rsp,%rbp
  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    D220(%rip),%rax
  mov    %rax,%rsi
  mov    $0x20,%edi
  call   <create_gate@plt>
  mov    D32(%rip),%rax
  mov    %rax,%rsi
  mov    $0x21,%edi
  call   <create_gate@plt>
  mov    D116(%rip),%rax
  mov    %rax,%rsi
  mov    $0x22,%edi
  call   <create_gate@plt>
  mov    D238(%rip),%rax
  mov    %rax,%rsi
  mov    $0x23,%edi
  call   <create_gate@plt>
  mov    D225(%rip),%rax
  mov    %rax,%rsi
  mov    $0x24,%edi
  call   <create_gate@plt>
  mov    D122(%rip),%rax
  mov    %rax,%rsi
  mov    $0x25,%edi
  call   <create_gate@plt>
  mov    D149(%rip),%rax
  mov    %rax,%rsi
  mov    $0x26,%edi
  call   <create_gate@plt>
  mov    D304(%rip),%rax
  mov    %rax,%rsi
  mov    $0x27,%edi
  call   <create_gate@plt>
  mov    D84(%rip),%rax
  mov    %rax,%rsi
  mov    $0x28,%edi
  call   <create_gate@plt>
  mov    D353(%rip),%rax
  mov    %rax,%rsi
  mov    $0x29,%edi
  call   <create_gate@plt>
  mov    D326(%rip),%rax
  mov    %rax,%rsi
  mov    $0x2a,%edi
  call   <create_gate@plt>
  mov    D314(%rip),%rax
  mov    %rax,%rsi
  mov    $0x2b,%edi
  call   <create_gate@plt>
  mov    D252(%rip),%rax
  mov    %rax,%rsi
  mov    $0x2c,%edi
  call   <create_gate@plt>
  mov    D159(%rip),%rax
  mov    %rax,%rsi
  mov    $0x2d,%edi
  call   <create_gate@plt>
  mov    D2(%rip),%rax
  mov    %rax,%rsi
  mov    $0x2e,%edi
  call   <create_gate@plt>
  mov    D152(%rip),%rax
  mov    %rax,%rsi
  mov    $0x2f,%edi
  call   <create_gate@plt>
  mov    D199(%rip),%rax
  mov    %rax,%rsi
  mov    $0x0,%edi
  call   <create_gate@plt>
  mov    D262(%rip),%rax
  mov    %rax,%rsi
  mov    $0x1,%edi
  call   <create_gate@plt>
  mov    D94(%rip),%rax
  mov    %rax,%rsi
  mov    $0x2,%edi
  call   <create_gate@plt>
  mov    D106(%rip),%rax
  mov    %rax,%rsi
  mov    $0x3,%edi
  call   <create_gate@plt>
  mov    D20(%rip),%rax
  mov    %rax,%rsi
  mov    $0x4,%edi
  call   <create_gate@plt>
  mov    D297(%rip),%rax
  mov    %rax,%rsi
  mov    $0x5,%edi
  call   <create_gate@plt>
  mov    D31(%rip),%rax
  mov    %rax,%rsi
  mov    $0x6,%edi
  call   <create_gate@plt>
  mov    D293(%rip),%rax
  mov    %rax,%rsi
  mov    $0x7,%edi
  call   <create_gate@plt>
  mov    D86(%rip),%rax
  mov    %rax,%rsi
  mov    $0x8,%edi
  call   <create_gate@plt>
  mov    D351(%rip),%rax
  mov    %rax,%rsi
  mov    $0x9,%edi
  call   <create_gate@plt>
  mov    D23(%rip),%rax
  mov    %rax,%rsi
  mov    $0xa,%edi
  call   <create_gate@plt>
  mov    D103(%rip),%rax
  mov    %rax,%rsi
  mov    $0xb,%edi
  call   <create_gate@plt>
  mov    D49(%rip),%rax
  mov    %rax,%rsi
  mov    $0xc,%edi
  call   <create_gate@plt>
  mov    D276(%rip),%rax
  mov    %rax,%rsi
  mov    $0xd,%edi
  call   <create_gate@plt>
  mov    D277(%rip),%rax
  mov    %rax,%rsi
  mov    $0xe,%edi
  call   <create_gate@plt>
  mov    D182(%rip),%rax
  mov    %rax,%rsi
  mov    $0xf,%edi
  call   <create_gate@plt>
  mov    D300(%rip),%rax
  mov    %rax,%rsi
  mov    $0x10,%edi
  call   <create_gate@plt>
  mov    D76(%rip),%rax
  mov    %rax,%rsi
  mov    $0x11,%edi
  call   <create_gate@plt>
  mov    D337(%rip),%rax
  mov    %rax,%rsi
  mov    $0x12,%edi
  call   <create_gate@plt>
  mov    D298(%rip),%rax
  mov    %rax,%rsi
  mov    $0x13,%edi
  call   <create_gate@plt>
  mov    $0x0,%eax
  call   <enable_interrupts@plt>
  nop
  pop    %rbp
  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();
}
```