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

```asm
<test_arg_string>:
  endbr64
  push   %r15
  mov    %rdx,%rcx
  xor    %eax,%eax
  lea    D30(%rip),%r15
  push   %r14
  lea    D114(%rip),%r14
  push   %r13
  lea    D68(%rip),%r13
  push   %r12
  mov    %edi,%r12d
  xor    %edi,%edi
  push   %rbp
  mov    %esi,%ebp
  xor    %esi,%esi
  push   %rbx
  mov    %rdx,%rbx
  lea    D126(%rip),%rdx
  sub    $0x8,%rsp
  call   <__builtin_snprintf@plt>
  mov    %eax,%edi
  call   <sink@plt>
  mov    %rbx,%rcx
  xor    %esi,%esi
  xor    %edi,%edi
  lea    D86(%rip),%rdx
  xor    %eax,%eax
  call   <__builtin_snprintf@plt>
  mov    %eax,%edi
  call   <sink@plt>
  mov    %rbx,%rcx
  xor    %esi,%esi
  xor    %edi,%edi
  lea    D69(%rip),%rdx
  xor    %eax,%eax
  call   <__builtin_snprintf@plt>
  mov    %eax,%edi
  call   <sink@plt>
  lea    D104(%rip),%r11
  xor    %esi,%esi
  xor    %edi,%edi
  mov    %r11,%rdx
  mov    %rbx,%r8
  mov    %r12d,%ecx
  xor    %eax,%eax
  call   <__builtin_snprintf@plt>
  mov    %eax,%edi
  call   <sink@plt>
  lea    D90(%rip),%r10
  mov    %ebp,%ecx
  xor    %esi,%esi
  mov    %r10,%rdx
  mov    %rbx,%r8
  xor    %edi,%edi
  xor    %eax,%eax
  call   <__builtin_snprintf@plt>
  mov    %eax,%edi
  call   <sink@plt>
  mov    %rbx,%r8
  mov    %ebp,%ecx
  mov    %r15,%rdx
  xor    %esi,%esi
  xor    %edi,%edi
  xor    %eax,%eax
  call   <__builtin_snprintf@plt>
  mov    %eax,%edi
  call   <sink@plt>
  mov    %rbx,%r8
  mov    %r12d,%ecx
  mov    %r14,%rdx
  xor    %esi,%esi
  xor    %edi,%edi
  xor    %eax,%eax
  call   <__builtin_snprintf@plt>
  mov    %eax,%edi
  call   <sink@plt>
  mov    %rbx,%r9
  mov    %ebp,%r8d
  mov    %r12d,%ecx
  mov    %r13,%rdx
  xor    %esi,%esi
  xor    %edi,%edi
  xor    %eax,%eax
  call   <__builtin_snprintf@plt>
  mov    %eax,%edi
  call   <sink@plt>
  lea    D104(%rip),%r11
  xor    %esi,%esi
  xor    %edi,%edi
  mov    %r11,%rdx
  mov    %r12d,%ecx
  lea    D145(%rip),%r8
  xor    %eax,%eax
  call   <__builtin_snprintf@plt>
  mov    %eax,%edi
  call   <sink@plt>
  lea    D90(%rip),%r10
  mov    %ebp,%ecx
  xor    %esi,%esi
  mov    %r10,%rdx
  lea    D145(%rip),%r8
  xor    %edi,%edi
  xor    %eax,%eax
  call   <__builtin_snprintf@plt>
  mov    %eax,%edi
  call   <sink@plt>
  mov    %ebp,%ecx
  mov    %r15,%rdx
  xor    %esi,%esi
  lea    D145(%rip),%r8
  xor    %edi,%edi
  xor    %eax,%eax
  call   <__builtin_snprintf@plt>
  mov    %eax,%edi
  call   <sink@plt>
  mov    %r12d,%ecx
  mov    %r14,%rdx
  xor    %esi,%esi
  lea    D145(%rip),%r8
  xor    %edi,%edi
  xor    %eax,%eax
  call   <__builtin_snprintf@plt>
  mov    %eax,%edi
  call   <sink@plt>
  mov    %ebp,%r8d
  mov    %r12d,%ecx
  mov    %r13,%rdx
  xor    %edi,%edi
  lea    D145(%rip),%r9
  xor    %esi,%esi
  xor    %eax,%eax
  call   <__builtin_snprintf@plt>
  add    $0x8,%rsp
  pop    %rbx
  mov    %eax,%edi
  pop    %rbp
  pop    %r12
  pop    %r13
  pop    %r14
  pop    %r15
  jmp    1070 <sink@plt>
```

tool_calls: name: unpack_data
arguments: tag: D30
datatype: string
name: unpack_data
arguments: tag: D114
datatype: string
name: unpack_data
arguments: tag: D68
datatype: string
name: unpack_data
arguments: tag: D126
datatype: string
name: unpack_data
arguments: tag: D86
datatype: string
name: unpack_data
arguments: tag: D69
datatype: string
name: unpack_data
arguments: tag: D104
datatype: string
name: unpack_data
arguments: tag: D90
datatype: string
name: unpack_data
arguments: tag: D145
datatype: string

tool: D30: %1.*s

tool: D114: %*.1s

tool: D68: %*.*s

tool: D126: %-s

tool: D86: %1s

tool: D69: %.1s

tool: D104: %*s

tool: D90: %.*s

tool: D145: 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);
}
```