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

```asm
<main>:
  endbr64
  sub    $0x178,%rsp
  lea    D157(%rip),%rcx
  lea    D112(%rip),%rdx
  mov    %fs:0x28,%rax
  mov    %rax,0x168(%rsp)
  lea    D0(%rip),%rax
  movq   %rcx,%xmm0
  lea    D32(%rip),%rsi
  lea    D63(%rip),%rcx
  lea    0x90(%rsp),%rdi
  movq   %rax,%xmm1
  lea    D11(%rip),%rax
  punpcklqdq %xmm1,%xmm0
  movq   %rax,%xmm2
  lea    D123(%rip),%rax
  movaps %xmm0,(%rsp)
  movq   %rdx,%xmm0
  movq   %rax,%xmm3
  lea    D71(%rip),%rax
  punpcklqdq %xmm2,%xmm0
  movq   %rax,%xmm4
  lea    D79(%rip),%rdx
  movaps %xmm0,0x10(%rsp)
  movq   %rsi,%xmm0
  lea    D6(%rip),%rax
  lea    D153(%rip),%rsi
  punpcklqdq %xmm3,%xmm0
  movq   %rax,%xmm5
  lea    D21(%rip),%rax
  movaps %xmm0,0x20(%rsp)
  movq   %rcx,%xmm0
  movq   %rax,%xmm6
  lea    D76(%rip),%rcx
  punpcklqdq %xmm4,%xmm0
  lea    D94(%rip),%rax
  movaps %xmm0,0x30(%rsp)
  movq   %rdx,%xmm0
  movq   %rax,%xmm7
  lea    D36(%rip),%rax
  punpcklqdq %xmm5,%xmm0
  lea    D80(%rip),%rdx
  movq   %rax,%xmm1
  movaps %xmm0,0x40(%rsp)
  movq   %rsi,%xmm0
  lea    D168(%rip),%rax
  punpcklqdq %xmm6,%xmm0
  mov    %rax,0x80(%rsp)
  xor    %eax,%eax
  movaps %xmm0,0x50(%rsp)
  movq   %rcx,%xmm0
  mov    $0x1a,%ecx
  rep stos %rax,%es:(%rdi)
  punpcklqdq %xmm7,%xmm0
  xor    %edi,%edi
  movaps %xmm0,0x60(%rsp)
  movq   %rdx,%xmm0
  punpcklqdq %xmm1,%xmm0
  movaps %xmm0,0x70(%rsp)
  call   <time@plt>
  mov    %eax,%edi
  call   <srand@plt>
  mov    %rsp,%rdx
  lea    0x20(%rsp),%rsi
  lea    0x90(%rsp),%rdi
  call   <shuffleAndDeal@plt>
  mov    0x168(%rsp),%rax
  sub    %fs:0x28,%rax
  jne    L6
  xor    %eax,%eax
  add    $0x178,%rsp
  ret
L6:
  call   <__stack_chk_fail@plt>
```

tool_calls: name: parse_data
arguments: data_tag: D157
type_infered: string
name: parse_data
arguments: data_tag: D112
type_infered: string
name: parse_data
arguments: data_tag: D0
type_infered: string
name: parse_data
arguments: data_tag: D32
type_infered: string
name: parse_data
arguments: data_tag: D63
type_infered: string
name: parse_data
arguments: data_tag: D11
type_infered: string
name: parse_data
arguments: data_tag: D123
type_infered: string
name: parse_data
arguments: data_tag: D71
type_infered: string
name: parse_data
arguments: data_tag: D79
type_infered: string
name: parse_data
arguments: data_tag: D6
type_infered: string
name: parse_data
arguments: data_tag: D153
type_infered: string
name: parse_data
arguments: data_tag: D21
type_infered: string
name: parse_data
arguments: data_tag: D76
type_infered: string
name: parse_data
arguments: data_tag: D94
type_infered: string
name: parse_data
arguments: data_tag: D36
type_infered: string
name: parse_data
arguments: data_tag: D80
type_infered: string
name: parse_data
arguments: data_tag: D168
type_infered: string

tool: D157: Hearts

tool: D112: Clubs

tool: D0: Diamonds

tool: D32: Ace

tool: D63: Three

tool: D11: Spades

tool: D123: Deuce

tool: D71: Four

tool: D79: Five

tool: D6: Six

tool: D153: Seven

tool: D21: Eight

tool: D76: Nine

tool: D94: Ten

tool: D36: Queen

tool: D80: Jack

tool: D168: 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};
  srand(time(0));
  shuffleAndDeal(deck, face, suit);
  return 0;
}
```