user: What would the C source look like for the assembly code provided here?

```asm
<SwitchStateToString1F>:
  endbr64
  push   %r14
  mov    %edi,%r14d
  push   %r13
  and    $0x40,%r14d
  push   %r12
  mov    %edi,%r12d
  and    $0x80,%edi
  push   %rbp
  mov    %rsi,%rbp
  push   %rbx
  je     L89
  lea    D194(%rip),%r13
  mov    %rbp,%rdi
  lea    D180(%rip),%rdx
  mov    %r13,%rsi
  call   <sprintf@plt>
  movslq %eax,%rdi
  mov    %rax,%rbx
  add    %rbp,%rdi
  test   %r14d,%r14d
  je     L10
  lea    D71(%rip),%rdx
  mov    %r13,%rsi
  call   <sprintf@plt>
  add    %eax,%ebx
  movslq %ebx,%rdi
  add    %rbp,%rdi
  test   $0x20,%r12b
  jne    L72
L81:
  lea    D19(%rip),%rdx
  mov    %r13,%rsi
  call   <sprintf@plt>
  add    %eax,%ebx
  movslq %ebx,%rdi
  add    %rbp,%rdi
  test   $0x10,%r12b
  jne    L8
L123:
  lea    D163(%rip),%rdx
  mov    %r13,%rsi
  call   <sprintf@plt>
  add    %eax,%ebx
  movslq %ebx,%rdi
  add    %rbp,%rdi
  test   $0x8,%r12b
  jne    L88
L119:
  lea    D167(%rip),%rdx
  mov    %r13,%rsi
  call   <sprintf@plt>
  add    %eax,%ebx
  movslq %ebx,%rdi
  add    %rbp,%rdi
  test   $0x4,%r12b
  jne    L98
L43:
  lea    D78(%rip),%rdx
  mov    %r13,%rsi
  call   <sprintf@plt>
  add    %eax,%ebx
  movslq %ebx,%rdi
  add    %rbp,%rdi
  test   $0x2,%r12b
  jne    L103
L142:
  lea    D13(%rip),%rdx
  mov    %r13,%rsi
  call   <sprintf@plt>
  add    %eax,%ebx
  and    $0x1,%r12d
  movslq %ebx,%rax
  lea    0x0(%rbp,%rax,1),%rdi
  jne    L14
L48:
  mov    %r13,%rsi
  lea    D174(%rip),%rdx
  call   <sprintf@plt>
  add    %ebx,%eax
  pop    %rbx
  pop    %rbp
  pop    %r12
  pop    %r13
  pop    %r14
  ret
  nopw   0x0(%rax,%rax,1)
L89:
  lea    D194(%rip),%r13
  mov    %rbp,%rdi
  lea    D72(%rip),%rdx
  mov    %r13,%rsi
  call   <sprintf@plt>
  movslq %eax,%rdi
  mov    %rax,%rbx
  add    %rbp,%rdi
  test   %r14d,%r14d
  jne    L145
  lea    D26(%rip),%rdx
  mov    %r13,%rsi
  call   <sprintf@plt>
  add    %eax,%ebx
L60:
  movslq %ebx,%rdi
  add    %rbp,%rdi
  test   $0x20,%r12b
  je     L81
L72:
  lea    D108(%rip),%rdx
  mov    %r13,%rsi
  call   <sprintf@plt>
  add    %eax,%ebx
  movslq %ebx,%rdi
  add    %rbp,%rdi
  test   $0x10,%r12b
  je     L123
L8:
  lea    D69(%rip),%rdx
  mov    %r13,%rsi
  call   <sprintf@plt>
  add    %eax,%ebx
  movslq %ebx,%rdi
  add    %rbp,%rdi
  test   $0x8,%r12b
  je     L119
L88:
  lea    D126(%rip),%rdx
  mov    %r13,%rsi
  call   <sprintf@plt>
  add    %eax,%ebx
  movslq %ebx,%rdi
  add    %rbp,%rdi
  test   $0x4,%r12b
  je     L43
L98:
  lea    D40(%rip),%rdx
  mov    %r13,%rsi
  call   <sprintf@plt>
  add    %eax,%ebx
  movslq %ebx,%rdi
  add    %rbp,%rdi
  test   $0x2,%r12b
  je     L142
L103:
  lea    D100(%rip),%rdx
  mov    %r13,%rsi
  call   <sprintf@plt>
  add    %eax,%ebx
  and    $0x1,%r12d
  movslq %ebx,%rax
  lea    0x0(%rbp,%rax,1),%rdi
  je     L48
L14:
  mov    %r13,%rsi
  lea    D38(%rip),%rdx
  call   <sprintf@plt>
  add    %ebx,%eax
  pop    %rbx
  pop    %rbp
  pop    %r12
  pop    %r13
  pop    %r14
  ret
  nopl   (%rax)
L145:
  lea    D112(%rip),%rdx
  mov    %r13,%rsi
  call   <sprintf@plt>
  add    %eax,%ebx
  jmp    L60
  xchg   %ax,%ax
L10:
  lea    D173(%rip),%rdx
  mov    %r13,%rsi
  call   <sprintf@plt>
  add    %eax,%ebx
  jmp    L60
```

tool_calls: name: read_data
arguments: data_label: D194
data_type: string
name: read_data
arguments: data_label: D180
data_type: string
name: read_data
arguments: data_label: D71
data_type: string
name: read_data
arguments: data_label: D19
data_type: string
name: read_data
arguments: data_label: D163
data_type: string
name: read_data
arguments: data_label: D167
data_type: string
name: read_data
arguments: data_label: D78
data_type: string
name: read_data
arguments: data_label: D13
data_type: string
name: read_data
arguments: data_label: D174
data_type: string
name: read_data
arguments: data_label: D72
data_type: string
name: read_data
arguments: data_label: D26
data_type: string
name: read_data
arguments: data_label: D108
data_type: string
name: read_data
arguments: data_label: D69
data_type: string
name: read_data
arguments: data_label: D126
data_type: string
name: read_data
arguments: data_label: D40
data_type: string
name: read_data
arguments: data_label: D100
data_type: string
name: read_data
arguments: data_label: D38
data_type: string
name: read_data
arguments: data_label: D112
data_type: string
name: read_data
arguments: data_label: D173
data_type: string

tool: D194: %s

tool: D180: Manual mode


tool: D71: Output transistor on


tool: D19: No event on Main


tool: D163: No event on Aux.


tool: D167: Voltage Low on Aux. output


tool: D78: Active status of Aux. output


tool: D13: Voltage Low on Main output


tool: D174: Active status on Main output


tool: D72: Auto-control mode


tool: D26: Output association with Main


tool: D108: Negative edge sensed since inactive on Main


tool: D69: Negative edge sensed since inactive on Aux.


tool: D126: Voltage High on Aux. output


tool: D40: Inactive status of Aux. output


tool: D100: Voltage High on Main output


tool: D38: Inactive status on Main output


tool: D112: Output association with Auxillary


tool: D173: Output transistor off


assistant: ```c
int SwitchStateToString1F(int infobyte, char *outstr) {
  int cnt = 0;
  if (infobyte & 0x80) {
    cnt += sprintf(outstr + cnt, "%s", "Manual mode\n");
    if (infobyte & 0x40)
      cnt += sprintf(outstr + cnt, "%s", "Output transistor on\n");
    else
      cnt += sprintf(outstr + cnt, "%s", "Output transistor off\n");
  } else {
    cnt += sprintf(outstr + cnt, "%s", "Auto-control mode\n");
    if (infobyte & 0x40)
      cnt += sprintf(outstr + cnt, "%s", "Output association with Auxillary\n");
    else
      cnt += sprintf(outstr + cnt, "%s", "Output association with Main\n");
  }
  if (infobyte & 0x20)
    cnt += sprintf(outstr + cnt, "%s", "Negative edge sensed since inactive on Main\n");
  else
    cnt += sprintf(outstr + cnt, "%s", "No event on Main\n");
  if (infobyte & 0x10)
    cnt += sprintf(outstr + cnt, "%s", "Negative edge sensed since inactive on Aux.\n");
  else
    cnt += sprintf(outstr + cnt, "%s", "No event on Aux.\n");
  if (infobyte & 0x08)
    cnt += sprintf(outstr + cnt, "%s", "Voltage High on Aux. output\n");
  else
    cnt += sprintf(outstr + cnt, "%s", "Voltage Low on Aux. output\n");
  if (infobyte & 0x04)
    cnt += sprintf(outstr + cnt, "%s", "Inactive status of Aux. output\n");
  else
    cnt += sprintf(outstr + cnt, "%s", "Active status of Aux. output\n");
  if (infobyte & 0x02)
    cnt += sprintf(outstr + cnt, "%s", "Voltage High on Main output\n");
  else
    cnt += sprintf(outstr + cnt, "%s", "Voltage Low on Main output\n");
  if (infobyte & 0x01)
    cnt += sprintf(outstr + cnt, "%s", "Inactive status on Main output\n");
  else
    cnt += sprintf(outstr + cnt, "%s", "Active status on Main output\n");
  return cnt;
}
```