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

```asm
<init_mem_writer>:
  endbr64
  push   %rbp
  push   %rbx
  sub    $0x8,%rsp
  mov    $0x0,%eax
  call   <monitor_clear@plt>
  lea    D39(%rip),%rbx
  mov    %rbx,%rdi
  mov    $0x0,%eax
  call   <monitor_write@plt>
  lea    D16(%rip),%rbp
  mov    %rbp,%rdi
  mov    $0x0,%eax
  call   <monitor_write@plt>
  lea    D24(%rip),%rdi
  mov    $0x0,%eax
  call   <monitor_write@plt>
  mov    $0xf,%edx
  mov    $0x4,%esi
  lea    D26(%rip),%rdi
  mov    $0x0,%eax
  call   <monitor_write_color@plt>
  lea    D58(%rip),%rdi
  mov    $0x0,%eax
  call   <monitor_write@plt>
  mov    %rbp,%rdi
  mov    $0x0,%eax
  call   <monitor_write@plt>
  lea    D20(%rip),%rdi
  mov    $0x0,%eax
  call   <monitor_write@plt>
  lea    D21(%rip),%rdi
  mov    $0x0,%eax
  call   <monitor_write@plt>
  mov    %rbx,%rdi
  mov    $0x0,%eax
  call   <monitor_write@plt>
  lea    D65(%rip),%rdi
  mov    $0x0,%eax
  call   <monitor_write@plt>
  mov    $0x0,%eax
  call   <init_descriptor_tables@plt>
  lea    D30(%rip),%rdi
  mov    $0x0,%eax
  call   <monitor_write@plt>
  mov    $0x0,%eax
  call   <initialise_paging@plt>
  lea    D52(%rip),%rdi
  mov    $0x0,%eax
  call   <monitor_write@plt>
  sti
  mov    $0x0,%eax
  call   <init_keyboard@plt>
  lea    D90(%rip),%rdi
  mov    $0x0,%eax
  call   <monitor_write@plt>
  mov    $0x0,%eax
  call   <init_console@plt>
  lea    D57(%rip),%rdi
  mov    $0x0,%eax
  call   <monitor_write@plt>
  mov    $0x0,%eax
  call   <init_pci@plt>
  add    $0x8,%rsp
  pop    %rbx
  pop    %rbp
  ret
```

tool_calls: name: disassemble_data
arguments: tag: D39
type_guessed: string
name: disassemble_data
arguments: tag: D16
type_guessed: string
name: disassemble_data
arguments: tag: D24
type_guessed: string
name: disassemble_data
arguments: tag: D26
type_guessed: string
name: disassemble_data
arguments: tag: D58
type_guessed: string
name: disassemble_data
arguments: tag: D20
type_guessed: string
name: disassemble_data
arguments: tag: D21
type_guessed: string
name: disassemble_data
arguments: tag: D65
type_guessed: string
name: disassemble_data
arguments: tag: D30
type_guessed: string
name: disassemble_data
arguments: tag: D52
type_guessed: string
name: disassemble_data
arguments: tag: D90
type_guessed: string
name: disassemble_data
arguments: tag: D57
type_guessed: string

tool: D39: ###########################################


tool: D16: #                                         #


tool: D24: #       

tool: D26:    Cold-Boot Kernel CBK    

tool: D58:        #


tool: D20: # Version 0.1b                         ll #


tool: D21: # 2016                              CASED #


tool: D65: 
- initialize descriptor_tables


tool: D30: - initialize paging and setup pagetable (takes a second)


tool: D52: - initialize keyboard


tool: D90: - initialize console


tool: D57: - initialize pci


assistant: ```c
void init_mem_writer() {
  monitor_clear();
  monitor_write("###########################################\n");
  monitor_write("#                                         #\n");
  monitor_write("#       ");
  monitor_write_color("   Cold-Boot Kernel CBK    ", 4, 15);
  monitor_write("       #\n");
  monitor_write("#                                         #\n");
  monitor_write("# Version 0.1b                         ll #\n");
  monitor_write("# 2016                              CASED #\n");
  monitor_write("###########################################\n");
  monitor_write("\n- initialize descriptor_tables\n");
  init_descriptor_tables();
  monitor_write("- initialize paging and setup pagetable (takes a second)\n");
  initialise_paging();
  monitor_write("- initialize keyboard\n");
  asm volatile("sti");
  init_keyboard();
  monitor_write("- initialize console\n");
  init_console();
  monitor_write("- initialize pci\n");
  init_pci();
}
```