user: What is the c source code of the assembly code below:

```asm
<ProcessLine>:
  endbr64
  push   %rbp
  push   %rbx
  sub    $0x8,%rsp
  mov    %rsi,%rbx
  mov    %edx,%ebp
  mov    %edx,%esi
  mov    %rbx,%rdi
  call   <GPSChecksumOK@plt>
  test   %rax,%rax
  je     L138
  movzbl 0x1(%rbx),%esi
  cmp    $0x47,%sil
  je     L142
L2:
  movzbl 0x3(%rbx),%ecx
  movzbl 0x2(%rbx),%edx
  movzbl %sil,%esi
  movzbl 0x5(%rbx),%r9d
  movzbl 0x4(%rbx),%r8d
  lea    D11(%rip),%rdi
  mov    $0x0,%eax
  call   <printf@plt>
L93:
  add    $0x8,%rsp
  pop    %rbx
  pop    %rbp
  ret
L142:
  cmpb   $0x50,0x2(%rbx)
  jne    L2
  cmpb   $0x52,0x3(%rbx)
  je     L133
L112:
  cmpb   $0x47,0x3(%rbx)
  je     L232
L62:
  cmpb   $0x47,0x3(%rbx)
  je     L29
L68:
  cmpb   $0x47,0x3(%rbx)
  je     L136
L23:
  cmpb   $0x47,0x3(%rbx)
  je     L216
L113:
  cmpb   $0x56,0x3(%rbx)
  jne    L2
  cmpb   $0x54,0x4(%rbx)
  jne    L2
  cmpb   $0x47,0x5(%rbx)
  jne    L2
  jmp    L93
L133:
  cmpb   $0x4d,0x4(%rbx)
  jne    L112
  cmpb   $0x43,0x5(%rbx)
  jne    L112
  mov    %ebp,%esi
  mov    %rbx,%rdi
  call   <ProcessGPRMCCommand@plt>
  mov    %rbx,%rsi
  lea    D12(%rip),%rdi
  mov    $0x0,%eax
  call   <printf@plt>
  jmp    L93
L232:
  cmpb   $0x47,0x4(%rbx)
  jne    L62
  cmpb   $0x41,0x5(%rbx)
  jne    L62
  mov    %ebp,%esi
  mov    %rbx,%rdi
  call   <ProcessGPGGACommand@plt>
  mov    %rbx,%rsi
  lea    D12(%rip),%rdi
  mov    $0x0,%eax
  call   <printf@plt>
  jmp    L93
L29:
  cmpb   $0x53,0x4(%rbx)
  jne    L68
  cmpb   $0x56,0x5(%rbx)
  jne    L68
  jmp    L93
L136:
  cmpb   $0x4c,0x4(%rbx)
  jne    L23
  cmpb   $0x4c,0x5(%rbx)
  jne    L23
  jmp    L93
L216:
  cmpb   $0x53,0x4(%rbx)
  jne    L113
  cmpb   $0x41,0x5(%rbx)
  jne    L113
  jmp    L93
L138:
  lea    D36(%rip),%rdi
  call   <puts@plt>
  jmp    L93
```

tool_calls: name: retrieve_data
arguments: tag: D11
type_guessed: string
name: retrieve_data
arguments: tag: D12
type_guessed: string
name: retrieve_data
arguments: tag: D36
type_guessed: string

tool: D11: Unknown NMEA sentence %c%c%c%c%c


tool: D12: %s

tool: D36: Bad checksum

assistant: ```c
void ProcessLine(int fd, unsigned char *Buffer, int Count) {
  if (GPSChecksumOK(Buffer, Count)) {
    if ((Buffer[1] == 'G') && (Buffer[2] == 'P') && (Buffer[3] == 'R') && (Buffer[4] == 'M') && (Buffer[5] == 'C')) {
      ProcessGPRMCCommand(Buffer, Count);
      printf("%s", Buffer);
    } else if ((Buffer[1] == 'G') && (Buffer[2] == 'P') && (Buffer[3] == 'G') && (Buffer[4] == 'G') && (Buffer[5] == 'A')) {
      ProcessGPGGACommand(Buffer, Count);
      printf("%s", Buffer);
    } else if ((Buffer[1] == 'G') && (Buffer[2] == 'P') && (Buffer[3] == 'G') && (Buffer[4] == 'S') && (Buffer[5] == 'V')) {
    } else if ((Buffer[1] == 'G') && (Buffer[2] == 'P') && (Buffer[3] == 'G') && (Buffer[4] == 'L') && (Buffer[5] == 'L')) {
    } else if ((Buffer[1] == 'G') && (Buffer[2] == 'P') && (Buffer[3] == 'G') && (Buffer[4] == 'S') && (Buffer[5] == 'A')) {
    } else if ((Buffer[1] == 'G') && (Buffer[2] == 'P') && (Buffer[3] == 'V') && (Buffer[4] == 'T') && (Buffer[5] == 'G')) {
    } else {
      printf("Unknown NMEA sentence %c%c%c%c%c\r\n", Buffer[1], Buffer[2], Buffer[3], Buffer[4], Buffer[5]);
    }
  } else {
    printf("Bad checksum\r\n");
  }
}
```