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

```asm
<test_arg_string>:
  endbr64
  push   %rbp
  mov    %rsp,%rbp
  sub    $0x50,%rsp
  mov    %edi,-0x44(%rbp)
  mov    %esi,-0x48(%rbp)
  mov    %rdx,-0x50(%rbp)
  mov    -0x50(%rbp),%rax
  mov    %rax,%rcx
  lea    D2(%rip),%rax
  mov    %rax,%rdx
  mov    $0x0,%esi
  mov    $0x0,%edi
  mov    $0x0,%eax
  call   <__builtin_snprintf@plt>
  mov    %eax,-0x34(%rbp)
  mov    -0x34(%rbp),%eax
  mov    %eax,%edi
  call   <sink@plt>
  mov    -0x50(%rbp),%rax
  mov    %rax,%rcx
  lea    D99(%rip),%rax
  mov    %rax,%rdx
  mov    $0x0,%esi
  mov    $0x0,%edi
  mov    $0x0,%eax
  call   <__builtin_snprintf@plt>
  mov    %eax,-0x30(%rbp)
  mov    -0x30(%rbp),%eax
  mov    %eax,%edi
  call   <sink@plt>
  mov    -0x50(%rbp),%rax
  mov    %rax,%rcx
  lea    D114(%rip),%rax
  mov    %rax,%rdx
  mov    $0x0,%esi
  mov    $0x0,%edi
  mov    $0x0,%eax
  call   <__builtin_snprintf@plt>
  mov    %eax,-0x2c(%rbp)
  mov    -0x2c(%rbp),%eax
  mov    %eax,%edi
  call   <sink@plt>
  mov    -0x50(%rbp),%rdx
  mov    -0x44(%rbp),%eax
  mov    %rdx,%r8
  mov    %eax,%ecx
  lea    D166(%rip),%rax
  mov    %rax,%rdx
  mov    $0x0,%esi
  mov    $0x0,%edi
  mov    $0x0,%eax
  call   <__builtin_snprintf@plt>
  mov    %eax,-0x28(%rbp)
  mov    -0x28(%rbp),%eax
  mov    %eax,%edi
  call   <sink@plt>
  mov    -0x50(%rbp),%rdx
  mov    -0x48(%rbp),%eax
  mov    %rdx,%r8
  mov    %eax,%ecx
  lea    D65(%rip),%rax
  mov    %rax,%rdx
  mov    $0x0,%esi
  mov    $0x0,%edi
  mov    $0x0,%eax
  call   <__builtin_snprintf@plt>
  mov    %eax,-0x24(%rbp)
  mov    -0x24(%rbp),%eax
  mov    %eax,%edi
  call   <sink@plt>
  mov    -0x50(%rbp),%rdx
  mov    -0x48(%rbp),%eax
  mov    %rdx,%r8
  mov    %eax,%ecx
  lea    D115(%rip),%rax
  mov    %rax,%rdx
  mov    $0x0,%esi
  mov    $0x0,%edi
  mov    $0x0,%eax
  call   <__builtin_snprintf@plt>
  mov    %eax,-0x20(%rbp)
  mov    -0x20(%rbp),%eax
  mov    %eax,%edi
  call   <sink@plt>
  mov    -0x50(%rbp),%rdx
  mov    -0x44(%rbp),%eax
  mov    %rdx,%r8
  mov    %eax,%ecx
  lea    D44(%rip),%rax
  mov    %rax,%rdx
  mov    $0x0,%esi
  mov    $0x0,%edi
  mov    $0x0,%eax
  call   <__builtin_snprintf@plt>
  mov    %eax,-0x1c(%rbp)
  mov    -0x1c(%rbp),%eax
  mov    %eax,%edi
  call   <sink@plt>
  mov    -0x50(%rbp),%rcx
  mov    -0x48(%rbp),%edx
  mov    -0x44(%rbp),%eax
  mov    %rcx,%r9
  mov    %edx,%r8d
  mov    %eax,%ecx
  lea    D162(%rip),%rax
  mov    %rax,%rdx
  mov    $0x0,%esi
  mov    $0x0,%edi
  mov    $0x0,%eax
  call   <__builtin_snprintf@plt>
  mov    %eax,-0x18(%rbp)
  mov    -0x18(%rbp),%eax
  mov    %eax,%edi
  call   <sink@plt>
  mov    -0x44(%rbp),%eax
  lea    D20(%rip),%r8
  mov    %eax,%ecx
  lea    D166(%rip),%rax
  mov    %rax,%rdx
  mov    $0x0,%esi
  mov    $0x0,%edi
  mov    $0x0,%eax
  call   <__builtin_snprintf@plt>
  mov    %eax,-0x14(%rbp)
  mov    -0x14(%rbp),%eax
  mov    %eax,%edi
  call   <sink@plt>
  mov    -0x48(%rbp),%eax
  lea    D20(%rip),%r8
  mov    %eax,%ecx
  lea    D65(%rip),%rax
  mov    %rax,%rdx
  mov    $0x0,%esi
  mov    $0x0,%edi
  mov    $0x0,%eax
  call   <__builtin_snprintf@plt>
  mov    %eax,-0x10(%rbp)
  mov    -0x10(%rbp),%eax
  mov    %eax,%edi
  call   <sink@plt>
  mov    -0x48(%rbp),%eax
  lea    D20(%rip),%r8
  mov    %eax,%ecx
  lea    D115(%rip),%rax
  mov    %rax,%rdx
  mov    $0x0,%esi
  mov    $0x0,%edi
  mov    $0x0,%eax
  call   <__builtin_snprintf@plt>
  mov    %eax,-0xc(%rbp)
  mov    -0xc(%rbp),%eax
  mov    %eax,%edi
  call   <sink@plt>
  mov    -0x44(%rbp),%eax
  lea    D20(%rip),%r8
  mov    %eax,%ecx
  lea    D44(%rip),%rax
  mov    %rax,%rdx
  mov    $0x0,%esi
  mov    $0x0,%edi
  mov    $0x0,%eax
  call   <__builtin_snprintf@plt>
  mov    %eax,-0x8(%rbp)
  mov    -0x8(%rbp),%eax
  mov    %eax,%edi
  call   <sink@plt>
  mov    -0x48(%rbp),%edx
  mov    -0x44(%rbp),%eax
  lea    D20(%rip),%r9
  mov    %edx,%r8d
  mov    %eax,%ecx
  lea    D162(%rip),%rax
  mov    %rax,%rdx
  mov    $0x0,%esi
  mov    $0x0,%edi
  mov    $0x0,%eax
  call   <__builtin_snprintf@plt>
  mov    %eax,-0x4(%rbp)
  mov    -0x4(%rbp),%eax
  mov    %eax,%edi
  call   <sink@plt>
  nop
  leave
  ret
```

tool_calls: name: unpack_data
arguments: data_label: D2
datatype: string
name: unpack_data
arguments: data_label: D99
datatype: string
name: unpack_data
arguments: data_label: D114
datatype: string
name: unpack_data
arguments: data_label: D166
datatype: string
name: unpack_data
arguments: data_label: D65
datatype: string
name: unpack_data
arguments: data_label: D115
datatype: string
name: unpack_data
arguments: data_label: D44
datatype: string
name: unpack_data
arguments: data_label: D162
datatype: string
name: unpack_data
arguments: data_label: D20
datatype: string

tool: D2: %-s

tool: D99: %1s

tool: D114: %.1s

tool: D166: %*s

tool: D65: %.*s

tool: D115: %1.*s

tool: D44: %*.1s

tool: D162: %*.*s

tool: D20: 123

assistant: ```c
void test_arg_string(int width, int prec, const char *s) {
  do {
    int n89 = __builtin_snprintf(0, 0, "%-s", s);
    sink(n89);
  } while (0);
  do {
    int n90 = __builtin_snprintf(0, 0, "%1s", s);
    sink(n90);
  } while (0);
  do {
    int n91 = __builtin_snprintf(0, 0, "%.1s", s);
    sink(n91);
  } while (0);
  do {
    int n92 = __builtin_snprintf(0, 0, "%*s", width, s);
    sink(n92);
  } while (0);
  do {
    int n93 = __builtin_snprintf(0, 0, "%.*s", prec, s);
    sink(n93);
  } while (0);
  do {
    int n94 = __builtin_snprintf(0, 0, "%1.*s", prec, s);
    sink(n94);
  } while (0);
  do {
    int n95 = __builtin_snprintf(0, 0, "%*.1s", width, s);
    sink(n95);
  } while (0);
  do {
    int n96 = __builtin_snprintf(0, 0, "%*.*s", width, prec, s);
    sink(n96);
  } while (0);
  do {
    int n97 = __builtin_snprintf(0, 0, "%*s", width, "123");
    sink(n97);
  } while (0);
  do {
    int n98 = __builtin_snprintf(0, 0, "%.*s", prec, "123");
    sink(n98);
  } while (0);
  do {
    int n99 = __builtin_snprintf(0, 0, "%1.*s", prec, "123");
    sink(n99);
  } while (0);
  do {
    int n100 = __builtin_snprintf(0, 0, "%*.1s", width, "123");
    sink(n100);
  } while (0);
  do {
    int n101 = __builtin_snprintf(0, 0, "%*.*s", width, prec, "123");
    sink(n101);
  } while (0);
}
```