user: 请将这段汇编代码片段转换成等效的C代码：

```asm
<print_args>:
  endbr64
  push   %rbp
  mov    %rsp,%rbp
  sub    $0x20,%rsp
  mov    %edi,-0x14(%rbp)
  mov    %rsi,-0x20(%rbp)
  movl   $0x0,-0x4(%rbp)
  jmp    L47
L50:
  cmpl   $0x0,-0x4(%rbp)
  je     L38
  lea    D118(%rip),%rax
  mov    %rax,%rdi
  call   <printf@plt>
L38:
  mov    -0x4(%rbp),%eax
  cltq
  lea    0x0(,%rax,4),%rdx
  mov    -0x20(%rbp),%rax
  add    %rdx,%rax
  mov    (%rax),%eax
  sub    $0x8,%eax
  cmp    $0x24,%eax
  ja     L133
  mov    %eax,%eax
  lea    0x0(,%rax,4),%rdx
  lea    D53(%rip),%rax
  mov    (%rdx,%rax,1),%eax
  cltq
  lea    D53(%rip),%rdx
  add    %rdx,%rax
  notrack jmp *%rax
  lea    D48(%rip),%rax
  mov    %rax,%rdi
  call   <printf@plt>
  jmp    L59
  lea    D69(%rip),%rax
  mov    %rax,%rdi
  call   <printf@plt>
  jmp    L59
  lea    D39(%rip),%rax
  mov    %rax,%rdi
  call   <printf@plt>
  jmp    L59
  lea    D44(%rip),%rax
  mov    %rax,%rdi
  call   <printf@plt>
  jmp    L59
  lea    D139(%rip),%rax
  mov    %rax,%rdi
  call   <printf@plt>
  jmp    L59
  lea    D90(%rip),%rax
  mov    %rax,%rdi
  call   <printf@plt>
  jmp    L59
  lea    D28(%rip),%rax
  mov    %rax,%rdi
  call   <printf@plt>
  jmp    L59
  lea    D55(%rip),%rax
  mov    %rax,%rdi
  call   <printf@plt>
  jmp    L59
  lea    D12(%rip),%rax
  mov    %rax,%rdi
  call   <printf@plt>
  jmp    L59
  lea    D88(%rip),%rax
  mov    %rax,%rdi
  call   <printf@plt>
  jmp    L59
L133:
  lea    D130(%rip),%rax
  mov    %rax,%rdi
  call   <printf@plt>
  nop
L59:
  addl   $0x1,-0x4(%rbp)
L47:
  mov    -0x4(%rbp),%eax
  cmp    -0x14(%rbp),%eax
  jl     L50
  nop
  nop
  leave
  ret
```

tool_calls: name: retrieve_data
arguments: data_label: D118
datatype: string
name: retrieve_data
arguments: data_label: D48
datatype: string
name: retrieve_data
arguments: data_label: D69
datatype: string
name: retrieve_data
arguments: data_label: D39
datatype: string
name: retrieve_data
arguments: data_label: D44
datatype: string
name: retrieve_data
arguments: data_label: D139
datatype: string
name: retrieve_data
arguments: data_label: D90
datatype: string
name: retrieve_data
arguments: data_label: D28
datatype: string
name: retrieve_data
arguments: data_label: D55
datatype: string
name: retrieve_data
arguments: data_label: D12
datatype: string
name: retrieve_data
arguments: data_label: D88
datatype: string
name: retrieve_data
arguments: data_label: D130
datatype: string

tool: D118: , 

tool: D48: byte

tool: D69: int16

tool: D39: int

tool: D44: byte[]

tool: D139: int[]

tool: D90: asciiz

tool: D28: f100

tool: D55: fixed

tool: D12: bool

tool: D88: fixed[]

tool: D130: unknown

assistant: ```c
void print_args(int nargs, uint8_t *arg) {
  int i;
  for (i = 0; i < nargs; i++) {
    if (i)
      printf(", ");
    switch (arg[i]) {
    case 8:
      printf("byte");
      break;
    case 16:
      printf("int16");
      break;
    case 32:
      printf("int");
      break;
    case 37:
      printf("byte[]");
      break;
    case 38:
      printf("int[]");
      break;
    case 39:
      printf("asciiz");
      break;
    case 41:
      printf("f100");
      break;
    case 42:
      printf("fixed");
      break;
    case 43:
      printf("bool");
      break;
    case 44:
      printf("fixed[]");
      break;
    default:
      printf("unknown");
      break;
    }
  }
}
```