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

```asm
<main>:
  endbr64
  push   %rbp
  mov    $0x1a,%ecx
  sub    $0x170,%rsp
  mov    %fs:0x28,%rax
  mov    %rax,0x168(%rsp)
  lea    D79(%rip),%rax
  lea    0x90(%rsp),%rdi
  lea    0x90(%rsp),%rbp
  mov    %rbp,%rsi
  mov    %rax,(%rsp)
  lea    D51(%rip),%rax
  mov    %rax,0x8(%rsp)
  lea    D100(%rip),%rax
  mov    %rax,0x10(%rsp)
  lea    D39(%rip),%rax
  mov    %rax,0x18(%rsp)
  lea    D121(%rip),%rax
  mov    %rax,0x20(%rsp)
  lea    D155(%rip),%rax
  mov    %rax,0x28(%rsp)
  lea    D90(%rip),%rax
  mov    %rax,0x30(%rsp)
  lea    D134(%rip),%rax
  mov    %rax,0x38(%rsp)
  lea    D2(%rip),%rax
  mov    %rax,0x40(%rsp)
  lea    D113(%rip),%rax
  mov    %rax,0x48(%rsp)
  lea    D135(%rip),%rax
  mov    %rax,0x50(%rsp)
  lea    D42(%rip),%rax
  mov    %rax,0x58(%rsp)
  lea    D82(%rip),%rax
  mov    %rax,0x60(%rsp)
  lea    D125(%rip),%rax
  mov    %rax,0x68(%rsp)
  lea    D140(%rip),%rax
  mov    %rax,0x70(%rsp)
  lea    D131(%rip),%rax
  mov    %rax,0x78(%rsp)
  lea    D80(%rip),%rax
  mov    %rax,0x80(%rsp)
  xor    %eax,%eax
  rep stos %rax,%es:(%rdi)
  mov    $0xe,%ecx
L8:
  lea    -0xd(%rcx),%eax
  mov    %rsi,%rdx
  nopl   0x0(%rax,%rax,1)
L27:
  mov    %eax,(%rdx)
  add    $0x1,%eax
  add    $0x4,%rdx
  cmp    %ecx,%eax
  jne    L27
  lea    0xd(%rax),%ecx
  add    $0x34,%rsi
  cmp    $0x35,%eax
  jne    L8
  xor    %edi,%edi
  call   <time@plt>
  mov    %eax,%edi
  call   <srand@plt>
  mov    %rbp,%rdi
  call   <shuffle@plt>
  mov    %rsp,%rdx
  lea    0x20(%rsp),%rsi
  mov    %rbp,%rdi
  call   <deal@plt>
  mov    0x168(%rsp),%rax
  sub    %fs:0x28,%rax
  jne    L15
  add    $0x170,%rsp
  xor    %eax,%eax
  pop    %rbp
  ret
L15:
  call   <__stack_chk_fail@plt>
```

tool_calls: name: retrieve_data
arguments: data_tag: D79
type_guessed: string
name: retrieve_data
arguments: data_tag: D51
type_guessed: string
name: retrieve_data
arguments: data_tag: D100
type_guessed: string
name: retrieve_data
arguments: data_tag: D39
type_guessed: string
name: retrieve_data
arguments: data_tag: D121
type_guessed: string
name: retrieve_data
arguments: data_tag: D155
type_guessed: string
name: retrieve_data
arguments: data_tag: D90
type_guessed: string
name: retrieve_data
arguments: data_tag: D134
type_guessed: string
name: retrieve_data
arguments: data_tag: D2
type_guessed: string
name: retrieve_data
arguments: data_tag: D113
type_guessed: string
name: retrieve_data
arguments: data_tag: D135
type_guessed: string
name: retrieve_data
arguments: data_tag: D42
type_guessed: string
name: retrieve_data
arguments: data_tag: D82
type_guessed: string
name: retrieve_data
arguments: data_tag: D125
type_guessed: string
name: retrieve_data
arguments: data_tag: D140
type_guessed: string
name: retrieve_data
arguments: data_tag: D131
type_guessed: string
name: retrieve_data
arguments: data_tag: D80
type_guessed: string

tool: D79: Hearts

tool: D51: Diamonds

tool: D100: Clubs

tool: D39: Spades

tool: D121: Ace

tool: D155: Deuce

tool: D90: Three

tool: D134: Four

tool: D2: Five

tool: D113: Six

tool: D135: Seven

tool: D42: Eight

tool: D82: Nine

tool: D125: Ten

tool: D140: Jack

tool: D131: Queen

tool: D80: King

assistant: ```c
int main(void) {
  const char *suit[4] = {"Hearts", "Diamonds", "Clubs", "Spades"};
  const char *face[13] = {"Ace", "Deuce", "Three", "Four", "Five", "Six", "Seven", "Eight", "Nine", "Ten", "Jack", "Queen", "King"};
  int deck[4][13] = {0};
  int row, column, card = 1;
  for (row = 0; row < 4; row++) {
    for (column = 0; column < 13; column++) {
      deck[row][column] = card;
      card++;
    }
  }
  srand(time(0));
  shuffle(deck);
  deal(deck, face, suit);
  return 0;
}
```