user: Translate the below assembly code into C programming language:

```asm
<show_title_screen>:
  endbr64
  sub    $0x8,%rsp
  mov    $0x1,%r8d
  mov    $0x28,%ecx
  mov    $0x37,%edx
  mov    $0xa,%esi
  mov    $0x32,%edi
  call   <m4_draw_rect_fill@plt>
  mov    $0x1,%r8d
  mov    $0xf,%ecx
  mov    $0x46,%edx
  mov    $0xa,%esi
  mov    $0x37,%edi
  call   <m4_draw_rect_fill@plt>
  mov    $0x1,%r8d
  mov    $0x19,%ecx
  mov    $0x4b,%edx
  mov    $0xa,%esi
  mov    $0x46,%edi
  call   <m4_draw_rect_fill@plt>
  mov    $0x1,%r8d
  mov    $0x19,%ecx
  mov    $0x46,%edx
  mov    $0x14,%esi
  mov    $0x37,%edi
  call   <m4_draw_rect_fill@plt>
  mov    $0x1,%r8d
  mov    $0x19,%ecx
  mov    $0x55,%edx
  mov    $0xa,%esi
  mov    $0x50,%edi
  call   <m4_draw_rect_fill@plt>
  mov    $0x1,%r8d
  mov    $0x19,%ecx
  mov    $0x69,%edx
  mov    $0xa,%esi
  mov    $0x64,%edi
  call   <m4_draw_rect_fill@plt>
  mov    $0x1,%r8d
  mov    $0xf,%ecx
  mov    $0x69,%edx
  mov    $0xa,%esi
  mov    $0x50,%edi
  call   <m4_draw_rect_fill@plt>
  mov    $0x1,%r8d
  mov    $0x19,%ecx
  mov    $0x69,%edx
  mov    $0x14,%esi
  mov    $0x50,%edi
  call   <m4_draw_rect_fill@plt>
  mov    $0x1,%r8d
  mov    $0x19,%ecx
  mov    $0x73,%edx
  mov    $0xa,%esi
  mov    $0x6e,%edi
  call   <m4_draw_rect_fill@plt>
  mov    $0x1,%r8d
  mov    $0x19,%ecx
  mov    $0x87,%edx
  mov    $0xa,%esi
  mov    $0x82,%edi
  call   <m4_draw_rect_fill@plt>
  mov    $0x1,%r8d
  mov    $0xf,%ecx
  mov    $0x87,%edx
  mov    $0xa,%esi
  mov    $0x6e,%edi
  call   <m4_draw_rect_fill@plt>
  mov    $0x1,%r8d
  mov    $0x19,%ecx
  mov    $0x91,%edx
  mov    $0xa,%esi
  mov    $0x8c,%edi
  call   <m4_draw_rect_fill@plt>
  mov    $0x1,%r8d
  mov    $0xf,%ecx
  mov    $0xa0,%edx
  mov    $0xa,%esi
  mov    $0x91,%edi
  call   <m4_draw_rect_fill@plt>
  mov    $0x1,%r8d
  mov    $0x28,%ecx
  mov    $0xa5,%edx
  mov    $0xa,%esi
  mov    $0xa0,%edi
  call   <m4_draw_rect_fill@plt>
  mov    $0x1,%r8d
  mov    $0x19,%ecx
  mov    $0xa0,%edx
  mov    $0x14,%esi
  mov    $0x91,%edi
  call   <m4_draw_rect_fill@plt>
  mov    $0x1,%r8d
  mov    $0x28,%ecx
  mov    $0xa0,%edx
  mov    $0x23,%esi
  mov    $0x8c,%edi
  call   <m4_draw_rect_fill@plt>
  mov    $0x1,%edx
  mov    $0x32,%esi
  lea    D79(%rip),%rcx
  mov    $0x5,%edi
  call   <gba_printf@plt>
  mov    $0x1,%edx
  mov    $0x3c,%esi
  lea    D8(%rip),%rcx
  mov    $0x5,%edi
  call   <gba_printf@plt>
  mov    $0x1,%edx
  mov    $0x46,%esi
  lea    D2(%rip),%rcx
  mov    $0x5,%edi
  call   <gba_printf@plt>
  mov    $0x1,%edx
  mov    $0x50,%esi
  lea    D61(%rip),%rcx
  mov    $0x5,%edi
  call   <gba_printf@plt>
  mov    $0x1,%edx
  mov    $0x5a,%esi
  lea    D55(%rip),%rcx
  mov    $0x5,%edi
  call   <gba_printf@plt>
  mov    $0x1,%edx
  mov    $0x64,%esi
  lea    D12(%rip),%rcx
  mov    $0x5,%edi
  call   <gba_printf@plt>
  mov    $0x1,%edx
  mov    $0x6e,%esi
  lea    D33(%rip),%rcx
  mov    $0x5,%edi
  call   <gba_printf@plt>
  mov    $0x2,%edx
  mov    $0x8c,%esi
  lea    D3(%rip),%rcx
  mov    $0xa,%edi
  call   <gba_printf@plt>
L8:
  xor    %eax,%eax
  call   <poll_key@plt>
  mov    $0x8,%edi
  call   <is_key_down@plt>
  test   %eax,%eax
  je     L8
  add    $0x8,%rsp
  ret
```

tool_calls: name: retrieve_data
arguments: data_label: D79
data_type: string
name: retrieve_data
arguments: data_label: D8
data_type: string
name: retrieve_data
arguments: data_label: D2
data_type: string
name: retrieve_data
arguments: data_label: D61
data_type: string
name: retrieve_data
arguments: data_label: D55
data_type: string
name: retrieve_data
arguments: data_label: D12
data_type: string
name: retrieve_data
arguments: data_label: D33
data_type: string
name: retrieve_data
arguments: data_label: D3
data_type: string

tool: D79: You are the player on the left with

tool: D8: the blue paddle. The computer is on

tool: D2: the right with the red paddle. Your

tool: D61: goal is to bounce the ball past the

tool: D55: computer's paddle, scoring a point.

tool: D12: Beware! The computer will also try to

tool: D33: bounce the ball past your paddle!

tool: D3: Press the Start button to begin.

assistant: ```c
void show_title_screen() {
  m4_draw_rect_fill(50, 10, 55, 40, 1);
  m4_draw_rect_fill(55, 10, 70, 15, 1);
  m4_draw_rect_fill(70, 10, 75, 25, 1);
  m4_draw_rect_fill(55, 20, 70, 25, 1);
  m4_draw_rect_fill(80, 10, 85, 25, 1);
  m4_draw_rect_fill(100, 10, 105, 25, 1);
  m4_draw_rect_fill(80, 10, 105, 15, 1);
  m4_draw_rect_fill(80, 20, 105, 25, 1);
  m4_draw_rect_fill(110, 10, 115, 25, 1);
  m4_draw_rect_fill(130, 10, 135, 25, 1);
  m4_draw_rect_fill(110, 10, 135, 15, 1);
  m4_draw_rect_fill(140, 10, 145, 25, 1);
  m4_draw_rect_fill(145, 10, 160, 15, 1);
  m4_draw_rect_fill(160, 10, 165, 40, 1);
  m4_draw_rect_fill(145, 20, 160, 25, 1);
  m4_draw_rect_fill(140, 35, 160, 40, 1);
  gba_printf(5, 50, 1, "You are the player on the left with");
  gba_printf(5, 60, 1, "the blue paddle. The computer is on");
  gba_printf(5, 70, 1, "the right with the red paddle. Your");
  gba_printf(5, 80, 1, "goal is to bounce the ball past the");
  gba_printf(5, 90, 1, "computer's paddle, scoring a point.");
  gba_printf(5, 100, 1, "Beware! The computer will also try to");
  gba_printf(5, 110, 1, "bounce the ball past your paddle!");
  gba_printf(10, 140, 2, "Press the Start button to begin.");
  do {
    poll_key();
  } while (!is_key_down(0x8));
}
```