user: 请将以下的汇编代码转换成C语言代码:

```asm
<pic>:
  endbr64
  push   %r12
  push   %rbp
  push   %rbx
  movslq %edi,%rbx
  imul   $0x51eb851f,%rbx,%rbx
  sar    $0x25,%rbx
  mov    %edi,%eax
  sar    $0x1f,%eax
  sub    %eax,%ebx
  imul   $0x64,%ebx,%eax
  sub    %eax,%edi
  cmp    $0xd,%edi
  ja     L39
  mov    %edi,%ebx
  mov    %edi,%eax
  lea    D87(%rip),%rdx
  movslq (%rdx,%rax,4),%rax
  add    %rdx,%rax
  notrack jmp *%rax
  lea    D155(%rip),%rbx
  mov    %rbx,%rdi
  call   <puts@plt>
  lea    D144(%rip),%rbp
  mov    %rbp,%rdi
  call   <puts@plt>
  lea    D107(%rip),%rdi
  call   <puts@plt>
  mov    %rbp,%rdi
  call   <puts@plt>
  mov    %rbx,%rdi
  call   <puts@plt>
L39:
  pop    %rbx
  pop    %rbp
  pop    %r12
  ret
  lea    D155(%rip),%rbp
  mov    %rbp,%rdi
  call   <puts@plt>
  lea    D144(%rip),%r12
  mov    %r12,%rdi
  call   <puts@plt>
  mov    %ebx,%esi
  lea    D37(%rip),%rdi
  mov    $0x0,%eax
  call   <printf@plt>
  mov    %r12,%rdi
  call   <puts@plt>
  mov    %rbp,%rdi
  call   <puts@plt>
  jmp    L39
  lea    D155(%rip),%rbx
  mov    %rbx,%rdi
  call   <puts@plt>
  lea    D144(%rip),%rbp
  mov    %rbp,%rdi
  call   <puts@plt>
  lea    D154(%rip),%rdi
  call   <puts@plt>
  mov    %rbp,%rdi
  call   <puts@plt>
  mov    %rbx,%rdi
  call   <puts@plt>
  jmp    L39
  lea    D155(%rip),%rbx
  mov    %rbx,%rdi
  call   <puts@plt>
  lea    D144(%rip),%rbp
  mov    %rbp,%rdi
  call   <puts@plt>
  lea    D32(%rip),%rdi
  call   <puts@plt>
  mov    %rbp,%rdi
  call   <puts@plt>
  mov    %rbx,%rdi
  call   <puts@plt>
  jmp    L39
  lea    D155(%rip),%rbx
  mov    %rbx,%rdi
  call   <puts@plt>
  lea    D144(%rip),%rbp
  mov    %rbp,%rdi
  call   <puts@plt>
  lea    D24(%rip),%rdi
  call   <puts@plt>
  mov    %rbp,%rdi
  call   <puts@plt>
  mov    %rbx,%rdi
  call   <puts@plt>
  jmp    L39
```

tool_calls: name: parse_data
arguments: label: D155
type_guessed: string
name: parse_data
arguments: label: D144
type_guessed: string
name: parse_data
arguments: label: D107
type_guessed: string
name: parse_data
arguments: label: D37
type_guessed: string
name: parse_data
arguments: label: D154
type_guessed: string
name: parse_data
arguments: label: D32
type_guessed: string
name: parse_data
arguments: label: D24
type_guessed: string

tool: D155: ******

tool: D144: *    *

tool: D107: *  A *

tool: D37: * %2d *


tool: D154: *  J *

tool: D32: *  Q *

tool: D24: *  K *

assistant: ```c
void pic(int num) {
  int cardNum;
  cardNum = num % 100;
  switch (cardNum) {
  case 1: {
    printf("******\n");
    printf("*    *\n");
    printf("*  A *\n");
    printf("*    *\n");
    printf("******\n");
    break;
  }
  case 2:
  case 3:
  case 4:
  case 5:
  case 6:
  case 7:
  case 8:
  case 9:
  case 10: {
    printf("******\n");
    printf("*    *\n");
    printf("* %2d *\n", cardNum);
    printf("*    *\n");
    printf("******\n");
    break;
  }
  case 11: {
    printf("******\n");
    printf("*    *\n");
    printf("*  J *\n");
    printf("*    *\n");
    printf("******\n");
    break;
  }
  case 12: {
    printf("******\n");
    printf("*    *\n");
    printf("*  Q *\n");
    printf("*    *\n");
    printf("******\n");
    break;
  }
  case 13: {
    printf("******\n");
    printf("*    *\n");
    printf("*  K *\n");
    printf("*    *\n");
    printf("******\n");
    break;
  }
  }
}
```