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

```asm
<main>:
  endbr64
  push   %rbp
  mov    %rsp,%rbp
  sub    $0x130,%rsp
  mov    %edi,-0x124(%rbp)
  mov    %rsi,-0x130(%rbp)
  mov    %fs:0x28,%rax
  mov    %rax,-0x8(%rbp)
  xor    %eax,%eax
  movl   $0xf0,-0x11c(%rbp)
  movl   $0x80,-0x118(%rbp)
  movl   $0x0,-0x114(%rbp)
  mov    -0x114(%rbp),%edx
  mov    -0x118(%rbp),%ecx
  mov    -0x11c(%rbp),%eax
  mov    %ecx,%esi
  mov    %eax,%edi
  call   <LCD_screen_init@plt>
  mov    $0x0,%edi
  call   <LCD_mode@plt>
  mov    $0xc,%edi
  call   <LCD_display_mode@plt>
  mov    $0x0,%eax
  call   <LCD_getBaseText@plt>
  mov    %eax,%edi
  call   <LCD_set_address_pointer@plt>
  movl   $0x0,-0x120(%rbp)
  jmp    L42
L38:
  mov    $0x0,%edi
  call   <LCD_data_write_up@plt>
  addl   $0x1,-0x120(%rbp)
L42:
  mov    $0x0,%eax
  call   <LCD_getTextScreenSize@plt>
  cmp    %eax,-0x120(%rbp)
  jl     L38
  mov    $0x0,%eax
  call   <LCD_getBaseGraphic@plt>
  mov    %eax,%edi
  call   <LCD_set_address_pointer@plt>
  mov    $0x0,%eax
  call   <LCD_auto_write_start@plt>
  movl   $0x0,-0x120(%rbp)
  jmp    L12
L31:
  mov    $0x0,%edi
  call   <LCD_auto_write@plt>
  addl   $0x1,-0x120(%rbp)
L12:
  mov    $0x0,%eax
  call   <LCD_getGraphicScreenSize@plt>
  cmp    %eax,-0x120(%rbp)
  jl     L31
  mov    $0x0,%eax
  call   <LCD_auto_write_stop@plt>
  mov    $0x0,%eax
  call   <LCD_getBaseText@plt>
  mov    %eax,%edi
  call   <LCD_set_address_pointer@plt>
  lea    D20(%rip),%rax
  mov    %rax,%rdi
  call   <lprintln@plt>
  lea    D45(%rip),%rax
  mov    %rax,%rdi
  call   <lprintln@plt>
  lea    D20(%rip),%rax
  mov    %rax,%rdi
  call   <lprintln@plt>
  lea    D20(%rip),%rax
  mov    %rax,%rdi
  call   <lprintln@plt>
  mov    $0x0,%eax
  call   <LCD_getCols@plt>
  mov    %eax,%edx
  lea    -0x110(%rbp),%rax
  lea    D19(%rip),%rcx
  mov    %rcx,%rsi
  mov    %rax,%rdi
  call   <sprintf@plt>
  lea    -0x110(%rbp),%rax
  mov    %rax,%rdi
  call   <lprintln@plt>
  mov    $0x0,%eax
  call   <LCD_getRows@plt>
  mov    %eax,%edx
  lea    -0x110(%rbp),%rax
  lea    D74(%rip),%rcx
  mov    %rcx,%rsi
  mov    %rax,%rdi
  call   <sprintf@plt>
  lea    -0x110(%rbp),%rax
  mov    %rax,%rdi
  call   <lprintln@plt>
  mov    $0x0,%eax
  call   <LCD_getTextScreenSize@plt>
  mov    %eax,%edx
  lea    -0x110(%rbp),%rax
  lea    D70(%rip),%rcx
  mov    %rcx,%rsi
  mov    %rax,%rdi
  call   <sprintf@plt>
  lea    -0x110(%rbp),%rax
  mov    %rax,%rdi
  call   <lprintln@plt>
  mov    $0x0,%eax
  call   <LCD_getGraphicScreenSize@plt>
  mov    %eax,%edx
  lea    -0x110(%rbp),%rax
  lea    D77(%rip),%rcx
  mov    %rcx,%rsi
  mov    %rax,%rdi
  call   <sprintf@plt>
  lea    -0x110(%rbp),%rax
  mov    %rax,%rdi
  call   <lprintln@plt>
  mov    $0x14,%edx
  mov    $0x64,%esi
  mov    $0x32,%edi
  call   <LCD_Circle@plt>
  mov    $0x12,%ecx
  mov    $0xd2,%edx
  mov    $0x3,%esi
  mov    $0xa,%edi
  call   <LCD_Rectangle@plt>
  mov    $0x50,%ecx
  mov    $0xd2,%edx
  mov    $0x64,%esi
  mov    $0x64,%edi
  call   <LCD_Line@plt>
  mov    $0x0,%eax
  mov    -0x8(%rbp),%rdx
  sub    %fs:0x28,%rdx
  je     L34
  call   <__stack_chk_fail@plt>
L34:
  leave
  ret
```

tool_calls: name: unpack_data
arguments: tag: D20
type: string
name: unpack_data
arguments: tag: D45
type: string
name: unpack_data
arguments: tag: D19
type: string
name: unpack_data
arguments: tag: D74
type: string
name: unpack_data
arguments: tag: D70
type: string
name: unpack_data
arguments: tag: D77
type: string

tool: 

tool: D45:   Welcome on this DG-24128

tool: D19: cols=0x%X

tool: D74: rows=0x%X

tool: D70: getTextScreenSize=0x%X

tool: D77: getGraphicScreenSize=0x%X

assistant: ```c
int main(int argc, char **argv) {
  int pixelX = 240;
  int pixelY = 128;
  int fontSize = 0;
  LCD_screen_init(pixelX, pixelY, fontSize);
  LCD_mode(0x00);
  LCD_display_mode(0x04 + 0x08);
  int i;
  LCD_set_address_pointer(LCD_getBaseText());
  for (i = 0; i < LCD_getTextScreenSize(); i++) {
    LCD_data_write_up(0x00);
  }
  LCD_set_address_pointer(LCD_getBaseGraphic());
  LCD_auto_write_start();
  for (i = 0; i < LCD_getGraphicScreenSize(); i++) {
    LCD_auto_write(0x00);
  }
  LCD_auto_write_stop();
  LCD_set_address_pointer(LCD_getBaseText());
  lprintln("");
  lprintln("  Welcome on this DG-24128");
  lprintln("");
  lprintln("");
  char buffer[256];
  sprintf(buffer, "cols=0x%X", (unsigned int)LCD_getCols());
  lprintln(buffer);
  sprintf(buffer, "rows=0x%X", (unsigned int)LCD_getRows());
  lprintln(buffer);
  sprintf(buffer, "getTextScreenSize=0x%X", LCD_getTextScreenSize());
  lprintln(buffer);
  sprintf(buffer, "getGraphicScreenSize=0x%X", LCD_getGraphicScreenSize());
  lprintln(buffer);
  LCD_Circle(50, 100, 20);
  LCD_Rectangle(10, 3, 210, 18);
  LCD_Line(100, 100, 210, 80);
  return 0;
}
```