user: Converte this assembly snippet into its equivalent C code:

```asm
<init_default_ranks>:
  endbr64
  push   %rbp
  mov    %rsp,%rbp
  push   %rbx
  sub    $0x18,%rsp
  mov    %rdi,-0x18(%rbp)
  lea    D2(%rip),%rax
  mov    %rax,%rdi
  call   <strdup@plt>
  mov    %rax,%rdx
  mov    -0x18(%rbp),%rax
  mov    %rdx,(%rax)
  mov    -0x18(%rbp),%rax
  lea    0x8(%rax),%rbx
  lea    D67(%rip),%rax
  mov    %rax,%rdi
  call   <strdup@plt>
  mov    %rax,(%rbx)
  mov    -0x18(%rbp),%rax
  lea    0x10(%rax),%rbx
  lea    D21(%rip),%rax
  mov    %rax,%rdi
  call   <strdup@plt>
  mov    %rax,(%rbx)
  mov    -0x18(%rbp),%rax
  lea    0x18(%rax),%rbx
  lea    D71(%rip),%rax
  mov    %rax,%rdi
  call   <strdup@plt>
  mov    %rax,(%rbx)
  mov    -0x18(%rbp),%rax
  lea    0x20(%rax),%rbx
  lea    D127(%rip),%rax
  mov    %rax,%rdi
  call   <strdup@plt>
  mov    %rax,(%rbx)
  mov    -0x18(%rbp),%rax
  lea    0x28(%rax),%rbx
  lea    D84(%rip),%rax
  mov    %rax,%rdi
  call   <strdup@plt>
  mov    %rax,(%rbx)
  mov    -0x18(%rbp),%rax
  lea    0x30(%rax),%rbx
  lea    D103(%rip),%rax
  mov    %rax,%rdi
  call   <strdup@plt>
  mov    %rax,(%rbx)
  mov    -0x18(%rbp),%rax
  lea    0x38(%rax),%rbx
  lea    D90(%rip),%rax
  mov    %rax,%rdi
  call   <strdup@plt>
  mov    %rax,(%rbx)
  mov    -0x18(%rbp),%rax
  lea    0x40(%rax),%rbx
  lea    D14(%rip),%rax
  mov    %rax,%rdi
  call   <strdup@plt>
  mov    %rax,(%rbx)
  mov    -0x18(%rbp),%rax
  lea    0x48(%rax),%rbx
  lea    D92(%rip),%rax
  mov    %rax,%rdi
  call   <strdup@plt>
  mov    %rax,(%rbx)
  mov    -0x18(%rbp),%rax
  lea    0x50(%rax),%rbx
  lea    D0(%rip),%rax
  mov    %rax,%rdi
  call   <strdup@plt>
  mov    %rax,(%rbx)
  mov    -0x18(%rbp),%rax
  lea    0x58(%rax),%rbx
  lea    D52(%rip),%rax
  mov    %rax,%rdi
  call   <strdup@plt>
  mov    %rax,(%rbx)
  mov    -0x18(%rbp),%rax
  lea    0x60(%rax),%rbx
  lea    D125(%rip),%rax
  mov    %rax,%rdi
  call   <strdup@plt>
  mov    %rax,(%rbx)
  nop
  mov    -0x8(%rbp),%rbx
  leave
  ret
```

tool_calls: name: unpack_data
arguments: data_label: D2
type: string
name: unpack_data
arguments: data_label: D67
type: string
name: unpack_data
arguments: data_label: D21
type: string
name: unpack_data
arguments: data_label: D71
type: string
name: unpack_data
arguments: data_label: D127
type: string
name: unpack_data
arguments: data_label: D84
type: string
name: unpack_data
arguments: data_label: D103
type: string
name: unpack_data
arguments: data_label: D90
type: string
name: unpack_data
arguments: data_label: D14
type: string
name: unpack_data
arguments: data_label: D92
type: string
name: unpack_data
arguments: data_label: D0
type: string
name: unpack_data
arguments: data_label: D52
type: string
name: unpack_data
arguments: data_label: D125
type: string

tool: D2: A

tool: D67: 2

tool: D21: 3

tool: D71: 4

tool: D127: 5

tool: D84: 6

tool: D103: 7

tool: D90: 8

tool: D14: 9

tool: D92: 10

tool: D0: J

tool: D52: Q

tool: D125: K

assistant: ```c
void init_default_ranks(char **ranks) {
  ranks[0] = strdup("A");
  ranks[1] = strdup("2");
  ranks[2] = strdup("3");
  ranks[3] = strdup("4");
  ranks[4] = strdup("5");
  ranks[5] = strdup("6");
  ranks[6] = strdup("7");
  ranks[7] = strdup("8");
  ranks[8] = strdup("9");
  ranks[9] = strdup("10");
  ranks[10] = strdup("J");
  ranks[11] = strdup("Q");
  ranks[12] = strdup("K");
}
```