user: Demonstrate the C code that generates the assembly output below:

```asm
<check_response>:
  endbr64
  push   %r12
  push   %rbp
  push   %rbx
  mov    %rdi,%rbx
  mov    %rsi,%r12
  mov    %rcx,%rbp
  lea    D147(%rip),%rsi
  call   <strstr@plt>
  test   %rax,%rax
  je     L160
  mov    %r12,%rsi
  lea    D144(%rip),%rdi
  mov    $0x0,%eax
  call   <printf@plt>
L58:
  pop    %rbx
  pop    %rbp
  pop    %r12
  ret
L160:
  lea    D153(%rip),%rsi
  mov    %rbx,%rdi
  call   <strstr@plt>
  test   %rax,%rax
  je     L40
  mov    %r12,%rsi
  lea    D188(%rip),%rdi
  mov    $0x0,%eax
  call   <printf@plt>
  jmp    L58
L40:
  lea    D3(%rip),%rsi
  mov    %rbx,%rdi
  call   <strstr@plt>
  test   %rax,%rax
  je     L105
  mov    %r12,%rsi
  lea    D145(%rip),%rdi
  mov    $0x0,%eax
  call   <printf@plt>
  jmp    L58
L105:
  lea    D112(%rip),%rsi
  mov    %rbx,%rdi
  call   <strstr@plt>
  test   %rax,%rax
  je     L129
  mov    %r12,%rsi
  lea    D167(%rip),%rdi
  mov    $0x0,%eax
  call   <printf@plt>
  jmp    L58
L129:
  lea    D166(%rip),%rsi
  mov    %rbx,%rdi
  call   <strstr@plt>
  test   %rax,%rax
  je     L168
  mov    %r12,%rsi
  lea    D122(%rip),%rdi
  mov    $0x0,%eax
  call   <printf@plt>
  jmp    L58
L168:
  lea    D103(%rip),%rsi
  mov    %rbx,%rdi
  call   <strstr@plt>
  test   %rax,%rax
  je     L6
  mov    %r12,%rsi
  lea    D71(%rip),%rdi
  mov    $0x0,%eax
  call   <printf@plt>
  jmp    L58
L6:
  lea    D84(%rip),%rsi
  mov    %rbx,%rdi
  call   <strstr@plt>
  test   %rax,%rax
  je     L157
  mov    %r12,%rsi
  lea    D9(%rip),%rdi
  mov    $0x0,%eax
  call   <printf@plt>
  jmp    L58
L157:
  lea    D49(%rip),%rsi
  mov    %rbx,%rdi
  call   <strstr@plt>
  test   %rax,%rax
  je     L101
  mov    %r12,%rsi
  lea    D79(%rip),%rdi
  mov    $0x0,%eax
  call   <printf@plt>
  jmp    L58
L101:
  lea    D8(%rip),%rsi
  mov    %rbx,%rdi
  call   <strstr@plt>
  test   %rax,%rax
  je     L128
  mov    %r12,%rsi
  lea    D123(%rip),%rdi
  mov    $0x0,%eax
  call   <printf@plt>
  jmp    L58
L128:
  mov    %r12,%rdx
  mov    %rbx,%rsi
  lea    D32(%rip),%rdi
  mov    $0x0,%eax
  call   <printf@plt>
  mov    %rbp,%rdx
  mov    %r12,%rsi
  mov    %rbx,%rdi
  call   <send_mail@plt>
  jmp    L58
```

tool_calls: name: read_data
arguments: label: D147
datatype: string
name: read_data
arguments: label: D144
datatype: string
name: read_data
arguments: label: D153
datatype: string
name: read_data
arguments: label: D188
datatype: string
name: read_data
arguments: label: D3
datatype: string
name: read_data
arguments: label: D145
datatype: string
name: read_data
arguments: label: D112
datatype: string
name: read_data
arguments: label: D167
datatype: string
name: read_data
arguments: label: D166
datatype: string
name: read_data
arguments: label: D122
datatype: string
name: read_data
arguments: label: D103
datatype: string
name: read_data
arguments: label: D71
datatype: string
name: read_data
arguments: label: D84
datatype: string
name: read_data
arguments: label: D9
datatype: string
name: read_data
arguments: label: D49
datatype: string
name: read_data
arguments: label: D79
datatype: string
name: read_data
arguments: label: D8
datatype: string
name: read_data
arguments: label: D123
datatype: string
name: read_data
arguments: label: D32
datatype: string

tool: D147: good

tool: D144: Update of %s succeeded


tool: D153: nochg

tool: D188: Host %s not changed


tool: D3: notfqdn

tool: D145: Host %s is not a Fully-Qualified Domain Name


tool: D112: nohost

tool: D167: Host %s does not exist


tool: D166: !yours

tool: D122: Host %s does not belong to you


tool: D103: abuse

tool: D71: Host %s blocked due to abuse


tool: D84: numhost

tool: D9: Too many or too few hosts found


tool: D49: dnserr

tool: D79: DNS error encountered


tool: D8: Authorization Required

tool: D123: Invalid user credentials supplied


tool: D32: Unknown error: Got response %s on host %s


assistant: ```c
void check_response(char *response, char *host_id, char *mailresp, char *mailreq) {
  if (strstr(response, "good"))
    printf("Update of %s succeeded\n", host_id);
  else if (strstr(response, "nochg"))
    printf("Host %s not changed\n", host_id);
  else if (strstr(response, "notfqdn"))
    printf("Host %s is not a Fully-Qualified Domain Name\n", host_id);
  else if (strstr(response, "nohost"))
    printf("Host %s does not exist\n", host_id);
  else if (strstr(response, "!yours"))
    printf("Host %s does not belong to you\n", host_id);
  else if (strstr(response, "abuse"))
    printf("Host %s blocked due to abuse\n", host_id);
  else if (strstr(response, "numhost"))
    printf("Too many or too few hosts found\n", host_id);
  else if (strstr(response, "dnserr"))
    printf("DNS error encountered\n", host_id);
  else if (strstr(response, "Authorization Required"))
    printf("Invalid user credentials supplied\n", host_id);
  else {
    printf("Unknown error: Got response %s on host %s\n", response, host_id);
    send_mail(response, host_id, mailreq);
  }
}
```