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

```asm
<ccode2>:
  endbr64
  sub    $0xc8,%rsp
  mov    %fs:0x28,%rax
  mov    %rax,0xb8(%rsp)
  xor    %eax,%eax
  movl   $0x0,(%rsp)
  movl   $0x1,0x4(%rsp)
  movl   $0x2,0x8(%rsp)
  movl   $0x3,0xc(%rsp)
  movl   $0x4,0x10(%rsp)
  movl   $0x5,0x14(%rsp)
  movl   $0x6,0x18(%rsp)
  movl   $0x7,0x1c(%rsp)
  movl   $0x8,0x20(%rsp)
  movl   $0x0,0x24(%rsp)
  movl   $0x1,0x28(%rsp)
  movl   $0x2,0x2c(%rsp)
  movl   $0x3,0x30(%rsp)
  movl   $0x4,0x34(%rsp)
  movl   $0x5,0x38(%rsp)
  movl   $0x6,0x3c(%rsp)
  movl   $0x7,0x40(%rsp)
  movl   $0x0,0x44(%rsp)
  movl   $0x1,0x48(%rsp)
  movl   $0x2,0x4c(%rsp)
  movl   $0x3,0x50(%rsp)
  movl   $0x4,0x54(%rsp)
  movl   $0x5,0x58(%rsp)
  movl   $0x6,0x5c(%rsp)
  movl   $0x0,0x60(%rsp)
  movl   $0x1,0x64(%rsp)
  movl   $0x2,0x68(%rsp)
  movl   $0x3,0x6c(%rsp)
  movl   $0x4,0x70(%rsp)
  movl   $0x5,0x74(%rsp)
  movl   $0x0,0x78(%rsp)
  movl   $0x1,0x7c(%rsp)
  movl   $0x2,0x80(%rsp)
  movl   $0x3,0x84(%rsp)
  movl   $0x4,0x88(%rsp)
  movl   $0x0,0x8c(%rsp)
  movl   $0x1,0x90(%rsp)
  movl   $0x2,0x94(%rsp)
  movl   $0x3,0x98(%rsp)
  movl   $0x0,0x9c(%rsp)
  movl   $0x1,0xa0(%rsp)
  movl   $0x2,0xa4(%rsp)
  movl   $0x0,0xa8(%rsp)
  movl   $0x1,0xac(%rsp)
  movl   $0x0,0xb0(%rsp)
  call   <rand@plt>
  movslq %eax,%rdx
  imul   $0xffffffffb60b60b7,%rdx,%rdx
  shr    $0x20,%rdx
  add    %eax,%edx
  sar    $0x5,%edx
  mov    %eax,%ecx
  sar    $0x1f,%ecx
  sub    %ecx,%edx
  imul   $0x2d,%edx,%edx
  sub    %edx,%eax
  cltq
  cmpl   $0x8,(%rsp,%rax,4)
  ja     L94
  mov    (%rsp,%rax,4),%eax
  lea    D49(%rip),%rdx
  movslq (%rdx,%rax,4),%rax
  add    %rdx,%rax
  notrack jmp *%rax
  lea    D69(%rip),%rax
L94:
  mov    0xb8(%rsp),%rdx
  sub    %fs:0x28,%rdx
  jne    L30
  add    $0xc8,%rsp
  ret
  lea    D4(%rip),%rax
  jmp    L94
  lea    D92(%rip),%rax
  jmp    L94
  lea    D22(%rip),%rax
  jmp    L94
  lea    D21(%rip),%rax
  jmp    L94
  lea    D94(%rip),%rax
  jmp    L94
  lea    D0(%rip),%rax
  jmp    L94
  lea    D5(%rip),%rax
  jmp    L94
  lea    D41(%rip),%rax
  jmp    L94
L30:
  call   <__stack_chk_fail@plt>
```

tool_calls: name: retrieve_data
arguments: data_label: D69
datatype: string
name: retrieve_data
arguments: data_label: D4
datatype: string
name: retrieve_data
arguments: data_label: D92
datatype: string
name: retrieve_data
arguments: data_label: D22
datatype: string
name: retrieve_data
arguments: data_label: D21
datatype: string
name: retrieve_data
arguments: data_label: D94
datatype: string
name: retrieve_data
arguments: data_label: D0
datatype: string
name: retrieve_data
arguments: data_label: D5
datatype: string
name: retrieve_data
arguments: data_label: D41
datatype: string

tool: D69: (2)cn(0)

tool: D4: (2)tw(0)

tool: D92: (2)bg(0)

tool: D22: (2)uk(0)

tool: D21: (2)in(0)

tool: D94: (2)mx(0)

tool: D0: (2)de(0)

tool: D5: (2)ru(0)

tool: D41: (2)ca(0)

assistant: ```c
char *ccode2(void) {
  int cca[] = {0, 1, 2, 3, 4, 5, 6, 7, 8, 0, 1, 2, 3, 4, 5, 6, 7, 0, 1, 2, 3, 4, 5, 6, 0, 1, 2, 3, 4, 5, 0, 1, 2, 3, 4, 0, 1, 2, 3, 0, 1, 2, 0, 1, 0};
  switch (cca[rand() % 45]) {
  case 0:
    return "(2)ru(0)";
    break;
  case 1:
    return "(2)cn(0)";
    break;
  case 2:
    return "(2)ca(0)";
    break;
  case 3:
    return "(2)tw(0)";
    break;
  case 4:
    return "(2)bg(0)";
    break;
  case 5:
    return "(2)uk(0)";
    break;
  case 6:
    return "(2)in(0)";
    break;
  case 7:
    return "(2)mx(0)";
    break;
  case 8:
    return "(2)de(0)";
    break;
  }
}
```