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

```asm
<foo>:
  endbr64
  push   %rbp
  mov    %rsp,%rbp
  sub    $0x20,%rsp
  mov    %esi,%eax
  mov    %rdx,-0x90(%rbp)
  mov    %rcx,-0x98(%rbp)
  mov    %r8w,-0x86(%rbp)
  mov    %r9w,-0x82(%rbp)
  mov    %edi,%edx
  mov    %dl,-0x84(%rbp)
  mov    %al,-0x88(%rbp)
  movzbl -0x86(%rbp),%eax
  mov    %al,-0x78(%rbp)
  movzbl -0x85(%rbp),%eax
  mov    %al,-0x77(%rbp)
  movzbl -0x82(%rbp),%eax
  mov    %al,-0x76(%rbp)
  movzbl -0x81(%rbp),%eax
  mov    %al,-0x75(%rbp)
  mov    0x10(%rbp),%rax
  mov    %rax,-0x40(%rbp)
  mov    0x18(%rbp),%rax
  mov    %rax,-0x38(%rbp)
  mov    0x20(%rbp),%rax
  mov    %rax,-0x30(%rbp)
  mov    0x28(%rbp),%rax
  mov    %rax,-0x28(%rbp)
  movzbl -0x78(%rbp),%eax
  mov    %al,-0x7a(%rbp)
  movzbl -0x76(%rbp),%eax
  mov    %al,-0x7a(%rbp)
  mov    -0x40(%rbp),%rax
  mov    %al,-0x7a(%rbp)
  mov    -0x30(%rbp),%rax
  mov    %al,-0x7a(%rbp)
  movzbl -0x78(%rbp),%eax
  mov    %al,-0x79(%rbp)
  movzbl -0x76(%rbp),%eax
  mov    %al,-0x79(%rbp)
  mov    -0x40(%rbp),%rax
  mov    %al,-0x79(%rbp)
  mov    -0x30(%rbp),%rax
  mov    %al,-0x79(%rbp)
  movzbl -0x78(%rbp),%eax
  movsbq %al,%rax
  mov    %rax,-0x50(%rbp)
  movzbl -0x76(%rbp),%eax
  movzbl %al,%eax
  mov    %rax,-0x50(%rbp)
  mov    -0x40(%rbp),%rax
  mov    %rax,-0x50(%rbp)
  mov    -0x30(%rbp),%rax
  mov    %rax,-0x50(%rbp)
  movzbl -0x78(%rbp),%eax
  movsbq %al,%rax
  mov    %rax,-0x48(%rbp)
  movzbl -0x76(%rbp),%eax
  movzbl %al,%eax
  mov    %rax,-0x48(%rbp)
  mov    -0x40(%rbp),%rax
  mov    %rax,-0x48(%rbp)
  mov    -0x30(%rbp),%rax
  mov    %rax,-0x48(%rbp)
  movzbl -0x84(%rbp),%eax
  mov    %al,-0x74(%rbp)
  movb   $0x0,-0x73(%rbp)
  movzbl -0x88(%rbp),%eax
  mov    %al,-0x7e(%rbp)
  movzbl -0x7e(%rbp),%eax
  mov    %al,-0x74(%rbp)
  movb   $0x0,-0x73(%rbp)
  mov    -0x90(%rbp),%rax
  mov    %al,-0x7e(%rbp)
  movzbl -0x7e(%rbp),%eax
  mov    %al,-0x74(%rbp)
  movb   $0x0,-0x73(%rbp)
  mov    -0x98(%rbp),%rax
  mov    %al,-0x7e(%rbp)
  movzbl -0x7e(%rbp),%eax
  mov    %al,-0x74(%rbp)
  movb   $0x0,-0x73(%rbp)
  movzbl -0x84(%rbp),%eax
  mov    %al,-0x7d(%rbp)
  movzbl -0x7d(%rbp),%eax
  mov    %al,-0x72(%rbp)
  movb   $0x0,-0x71(%rbp)
  movzbl -0x88(%rbp),%eax
  mov    %al,-0x72(%rbp)
  movb   $0x0,-0x71(%rbp)
  mov    -0x90(%rbp),%rax
  mov    %al,-0x7d(%rbp)
  movzbl -0x7d(%rbp),%eax
  mov    %al,-0x72(%rbp)
  movb   $0x0,-0x71(%rbp)
  mov    -0x98(%rbp),%rax
  mov    %al,-0x7d(%rbp)
  movzbl -0x7d(%rbp),%eax
  mov    %al,-0x72(%rbp)
  movb   $0x0,-0x71(%rbp)
  movsbq -0x84(%rbp),%rax
  mov    %rax,-0x70(%rbp)
  mov    -0x70(%rbp),%rax
  mov    %rax,-0x20(%rbp)
  movq   $0x0,-0x18(%rbp)
  movzbl -0x88(%rbp),%eax
  mov    %rax,-0x70(%rbp)
  mov    -0x70(%rbp),%rax
  mov    %rax,-0x20(%rbp)
  movq   $0x0,-0x18(%rbp)
  mov    -0x90(%rbp),%rax
  mov    %rax,-0x20(%rbp)
  movq   $0x0,-0x18(%rbp)
  mov    -0x98(%rbp),%rax
  mov    %rax,-0x70(%rbp)
  mov    -0x70(%rbp),%rax
  mov    %rax,-0x20(%rbp)
  movq   $0x0,-0x18(%rbp)
  movsbq -0x84(%rbp),%rax
  mov    %rax,-0x68(%rbp)
  mov    -0x68(%rbp),%rax
  mov    %rax,-0x10(%rbp)
  movq   $0x0,-0x8(%rbp)
  movzbl -0x88(%rbp),%eax
  mov    %rax,-0x68(%rbp)
  mov    -0x68(%rbp),%rax
  mov    %rax,-0x10(%rbp)
  movq   $0x0,-0x8(%rbp)
  mov    -0x90(%rbp),%rax
  mov    %rax,-0x68(%rbp)
  mov    -0x68(%rbp),%rax
  mov    %rax,-0x10(%rbp)
  movq   $0x0,-0x8(%rbp)
  mov    -0x98(%rbp),%rax
  mov    %rax,-0x10(%rbp)
  movq   $0x0,-0x8(%rbp)
  movsbl -0x84(%rbp),%ecx
  movzbl -0x78(%rbp),%eax
  movsbl %al,%edx
  movzbl -0x77(%rbp),%eax
  movsbl %al,%eax
  add    %ecx,%edx
  mov    %dl,-0x7e(%rbp)
  mov    %al,-0x7c(%rbp)
  movzbl -0x7c(%rbp),%eax
  movzbl -0x7e(%rbp),%edx
  mov    %dl,-0x74(%rbp)
  mov    %al,-0x73(%rbp)
  movsbl -0x84(%rbp),%ecx
  movzbl -0x76(%rbp),%eax
  movzbl %al,%edx
  movzbl -0x75(%rbp),%eax
  movzbl %al,%eax
  add    %ecx,%edx
  mov    %dl,-0x7d(%rbp)
  mov    %al,-0x7b(%rbp)
  movzbl -0x7b(%rbp),%eax
  movzbl -0x7d(%rbp),%edx
  mov    %dl,-0x72(%rbp)
  mov    %al,-0x71(%rbp)
  movsbq -0x84(%rbp),%rdx
  mov    -0x40(%rbp),%rax
  add    %rdx,%rax
  mov    %rax,-0x70(%rbp)
  mov    -0x38(%rbp),%rax
  mov    -0x70(%rbp),%rdx
  mov    %rdx,-0x20(%rbp)
  mov    %rax,-0x18(%rbp)
  movsbq -0x84(%rbp),%rdx
  mov    -0x30(%rbp),%rax
  add    %rdx,%rax
  mov    %rax,-0x68(%rbp)
  mov    -0x28(%rbp),%rax
  mov    -0x68(%rbp),%rdx
  mov    %rdx,-0x10(%rbp)
  mov    %rax,-0x8(%rbp)
  movzbl -0x88(%rbp),%ecx
  movzbl -0x78(%rbp),%eax
  movsbl %al,%edx
  movzbl -0x77(%rbp),%eax
  movsbl %al,%eax
  add    %ecx,%edx
  mov    %dl,-0x7e(%rbp)
  mov    %al,-0x7c(%rbp)
  movzbl -0x7c(%rbp),%eax
  movzbl -0x7e(%rbp),%edx
  mov    %dl,-0x74(%rbp)
  mov    %al,-0x73(%rbp)
  movzbl -0x88(%rbp),%ecx
  movzbl -0x76(%rbp),%eax
  movzbl %al,%edx
  movzbl -0x75(%rbp),%eax
  movzbl %al,%eax
  add    %ecx,%edx
  mov    %dl,-0x7d(%rbp)
  mov    %al,-0x7b(%rbp)
  movzbl -0x7b(%rbp),%eax
  movzbl -0x7d(%rbp),%edx
  mov    %dl,-0x72(%rbp)
  mov    %al,-0x71(%rbp)
  movzbl -0x88(%rbp),%edx
  mov    -0x40(%rbp),%rax
  add    %rdx,%rax
  mov    %rax,-0x70(%rbp)
  mov    -0x38(%rbp),%rax
  mov    -0x70(%rbp),%rdx
  mov    %rdx,-0x20(%rbp)
  mov    %rax,-0x18(%rbp)
  movzbl -0x88(%rbp),%edx
  mov    -0x30(%rbp),%rax
  add    %rdx,%rax
  mov    %rax,-0x68(%rbp)
  mov    -0x28(%rbp),%rax
  mov    -0x68(%rbp),%rdx
  mov    %rdx,-0x10(%rbp)
  mov    %rax,-0x8(%rbp)
  movzbl -0x78(%rbp),%eax
  movsbq %al,%rdx
  movzbl -0x77(%rbp),%eax
  movsbq %al,%rax
  mov    %rax,-0x60(%rbp)
  mov    -0x90(%rbp),%rax
  add    %rdx,%rax
  mov    %rax,-0x70(%rbp)
  mov    -0x60(%rbp),%rax
  mov    -0x70(%rbp),%rdx
  mov    %rdx,-0x20(%rbp)
  mov    %rax,-0x18(%rbp)
  movzbl -0x76(%rbp),%eax
  movzbl %al,%edx
  movzbl -0x75(%rbp),%eax
  movzbl %al,%eax
  mov    %rax,-0x60(%rbp)
  mov    -0x90(%rbp),%rax
  add    %rdx,%rax
  mov    %rax,-0x70(%rbp)
  mov    -0x60(%rbp),%rax
  mov    -0x70(%rbp),%rdx
  mov    %rdx,-0x20(%rbp)
  mov    %rax,-0x18(%rbp)
  mov    -0x90(%rbp),%rdx
  mov    -0x40(%rbp),%rax
  add    %rdx,%rax
  mov    %rax,-0x70(%rbp)
  mov    -0x38(%rbp),%rax
  mov    -0x70(%rbp),%rdx
  mov    %rdx,-0x20(%rbp)
  mov    %rax,-0x18(%rbp)
  mov    -0x90(%rbp),%rdx
  mov    -0x30(%rbp),%rax
  add    %rdx,%rax
  mov    %rax,-0x70(%rbp)
  mov    -0x28(%rbp),%rax
  mov    %rax,-0x60(%rbp)
  mov    -0x60(%rbp),%rax
  mov    -0x70(%rbp),%rdx
  mov    %rdx,-0x20(%rbp)
  mov    %rax,-0x18(%rbp)
  movzbl -0x78(%rbp),%eax
  movsbq %al,%rcx
  movzbl -0x77(%rbp),%eax
  movsbq %al,%rax
  mov    -0x98(%rbp),%rdx
  add    %rcx,%rdx
  mov    %rdx,-0x70(%rbp)
  mov    %rax,-0x60(%rbp)
  mov    -0x60(%rbp),%rax
  mov    -0x70(%rbp),%rdx
  mov    %rdx,-0x20(%rbp)
  mov    %rax,-0x18(%rbp)
  movzbl -0x76(%rbp),%eax
  movzbl %al,%edx
  movzbl -0x75(%rbp),%eax
  movzbl %al,%eax
  mov    %rax,-0x58(%rbp)
  mov    -0x98(%rbp),%rax
  add    %rdx,%rax
  mov    %rax,-0x68(%rbp)
  mov    -0x58(%rbp),%rax
  mov    -0x68(%rbp),%rdx
  mov    %rdx,-0x10(%rbp)
  mov    %rax,-0x8(%rbp)
  mov    -0x40(%rbp),%rax
  mov    %rax,%rcx
  mov    -0x38(%rbp),%rax
  mov    %rax,%rdx
  mov    -0x98(%rbp),%rax
  add    %rcx,%rax
  mov    %rax,-0x70(%rbp)
  mov    %rdx,-0x60(%rbp)
  mov    -0x60(%rbp),%rax
  mov    -0x70(%rbp),%rdx
  mov    %rdx,-0x20(%rbp)
  mov    %rax,-0x18(%rbp)
  mov    -0x98(%rbp),%rdx
  mov    -0x30(%rbp),%rax
  add    %rdx,%rax
  mov    %rax,-0x68(%rbp)
  mov    -0x28(%rbp),%rax
  mov    -0x68(%rbp),%rdx
  mov    %rdx,-0x10(%rbp)
  mov    %rax,-0x8(%rbp)
  movzbl -0x78(%rbp),%eax
  movsbl %al,%ecx
  movzbl -0x77(%rbp),%eax
  movsbl %al,%eax
  movsbl -0x84(%rbp),%edx
  add    %ecx,%edx
  mov    %dl,-0x7e(%rbp)
  mov    %al,-0x7c(%rbp)
  movzbl -0x7c(%rbp),%eax
  movzbl -0x7e(%rbp),%edx
  mov    %dl,-0x74(%rbp)
  mov    %al,-0x73(%rbp)
  movzbl -0x78(%rbp),%eax
  movsbl %al,%ecx
  movzbl -0x77(%rbp),%eax
  movsbl %al,%eax
  movzbl -0x88(%rbp),%edx
  add    %ecx,%edx
  mov    %dl,-0x7e(%rbp)
  mov    %al,-0x7c(%rbp)
  movzbl -0x7c(%rbp),%eax
  movzbl -0x7e(%rbp),%edx
  mov    %dl,-0x74(%rbp)
  mov    %al,-0x73(%rbp)
  movzbl -0x78(%rbp),%eax
  movsbq %al,%rdx
  movzbl -0x77(%rbp),%eax
  movsbq %al,%rax
  mov    %rax,-0x60(%rbp)
  mov    -0x90(%rbp),%rax
  add    %rdx,%rax
  mov    %rax,-0x70(%rbp)
  mov    -0x60(%rbp),%rax
  mov    -0x70(%rbp),%rdx
  mov    %rdx,-0x20(%rbp)
  mov    %rax,-0x18(%rbp)
  movzbl -0x78(%rbp),%eax
  movsbq %al,%rcx
  movzbl -0x77(%rbp),%eax
  movsbq %al,%rax
  mov    -0x98(%rbp),%rdx
  add    %rcx,%rdx
  mov    %rdx,-0x70(%rbp)
  mov    %rax,-0x60(%rbp)
  mov    -0x60(%rbp),%rax
  mov    -0x70(%rbp),%rdx
  mov    %rdx,-0x20(%rbp)
  mov    %rax,-0x18(%rbp)
  movzbl -0x76(%rbp),%eax
  movzbl %al,%ecx
  movzbl -0x75(%rbp),%eax
  movzbl %al,%eax
  movsbl -0x84(%rbp),%edx
  add    %ecx,%edx
  mov    %dl,-0x7e(%rbp)
  mov    %al,-0x7c(%rbp)
  movzbl -0x7c(%rbp),%eax
  movzbl -0x7e(%rbp),%edx
  mov    %dl,-0x74(%rbp)
  mov    %al,-0x73(%rbp)
  movzbl -0x76(%rbp),%eax
  movzbl %al,%ecx
  movzbl -0x75(%rbp),%eax
  movzbl %al,%eax
  movzbl -0x88(%rbp),%edx
  add    %ecx,%edx
  mov    %dl,-0x7d(%rbp)
  mov    %al,-0x7b(%rbp)
  movzbl -0x7b(%rbp),%eax
  movzbl -0x7d(%rbp),%edx
  mov    %dl,-0x72(%rbp)
  mov    %al,-0x71(%rbp)
  movzbl -0x76(%rbp),%eax
  movzbl %al,%edx
  movzbl -0x75(%rbp),%eax
  movzbl %al,%eax
  mov    %rax,-0x60(%rbp)
  mov    -0x90(%rbp),%rax
  add    %rdx,%rax
  mov    %rax,-0x70(%rbp)
  mov    -0x60(%rbp),%rax
  mov    -0x70(%rbp),%rdx
  mov    %rdx,-0x20(%rbp)
  mov    %rax,-0x18(%rbp)
  movzbl -0x76(%rbp),%eax
  movzbl %al,%edx
  movzbl -0x75(%rbp),%eax
  movzbl %al,%eax
  mov    %rax,-0x58(%rbp)
  mov    -0x98(%rbp),%rax
  add    %rdx,%rax
  mov    %rax,-0x68(%rbp)
  mov    -0x58(%rbp),%rax
  mov    -0x68(%rbp),%rdx
  mov    %rdx,-0x10(%rbp)
  mov    %rax,-0x8(%rbp)
  movsbq -0x84(%rbp),%rdx
  mov    -0x40(%rbp),%rax
  add    %rdx,%rax
  mov    %rax,-0x70(%rbp)
  mov    -0x38(%rbp),%rax
  mov    -0x70(%rbp),%rdx
  mov    %rdx,-0x20(%rbp)
  mov    %rax,-0x18(%rbp)
  movzbl -0x88(%rbp),%edx
  mov    -0x40(%rbp),%rax
  add    %rdx,%rax
  mov    %rax,-0x70(%rbp)
  mov    -0x38(%rbp),%rax
  mov    -0x70(%rbp),%rdx
  mov    %rdx,-0x20(%rbp)
  mov    %rax,-0x18(%rbp)
  mov    -0x90(%rbp),%rdx
  mov    -0x40(%rbp),%rax
  add    %rdx,%rax
  mov    %rax,-0x70(%rbp)
  mov    -0x38(%rbp),%rax
  mov    -0x70(%rbp),%rdx
  mov    %rdx,-0x20(%rbp)
  mov    %rax,-0x18(%rbp)
  mov    -0x40(%rbp),%rax
  mov    %rax,%rcx
  mov    -0x38(%rbp),%rax
  mov    %rax,%rdx
  mov    -0x98(%rbp),%rax
  add    %rcx,%rax
  mov    %rax,-0x70(%rbp)
  mov    %rdx,-0x60(%rbp)
  mov    -0x60(%rbp),%rax
  mov    -0x70(%rbp),%rdx
  mov    %rdx,-0x20(%rbp)
  mov    %rax,-0x18(%rbp)
  movsbq -0x84(%rbp),%rdx
  mov    -0x30(%rbp),%rax
  add    %rdx,%rax
  mov    %rax,-0x70(%rbp)
  mov    -0x28(%rbp),%rax
  mov    %rax,-0x60(%rbp)
  mov    -0x60(%rbp),%rax
  mov    -0x70(%rbp),%rdx
  mov    %rdx,-0x20(%rbp)
  mov    %rax,-0x18(%rbp)
  movzbl -0x88(%rbp),%edx
  mov    -0x30(%rbp),%rax
  add    %rdx,%rax
  mov    %rax,-0x68(%rbp)
  mov    -0x28(%rbp),%rax
  mov    -0x68(%rbp),%rdx
  mov    %rdx,-0x10(%rbp)
  mov    %rax,-0x8(%rbp)
  mov    -0x90(%rbp),%rdx
  mov    -0x30(%rbp),%rax
  add    %rdx,%rax
  mov    %rax,-0x70(%rbp)
  mov    -0x28(%rbp),%rax
  mov    %rax,-0x60(%rbp)
  mov    -0x60(%rbp),%rax
  mov    -0x70(%rbp),%rdx
  mov    %rdx,-0x20(%rbp)
  mov    %rax,-0x18(%rbp)
  mov    -0x98(%rbp),%rdx
  mov    -0x30(%rbp),%rax
  add    %rdx,%rax
  mov    %rax,-0x68(%rbp)
  mov    -0x28(%rbp),%rax
  mov    -0x68(%rbp),%rdx
  mov    %rdx,-0x10(%rbp)
  mov    %rax,-0x8(%rbp)
  nop
  leave
  ret
```

assistant: ```c
void foo(signed char sc, unsigned char uc, signed long long sll, unsigned long long ull, _Complex signed char csc, _Complex unsigned char cuc, _Complex signed long long csll, _Complex unsigned long long cull) {
  signed char sc1;
  unsigned char uc1;
  signed long long sll1;
  unsigned long long ull1;
  _Complex signed char csc1;
  _Complex unsigned char cuc1;
  _Complex signed long long csll1;
  _Complex unsigned long long cull1;
  sc1 = csc;
  sc1 = cuc;
  sc1 = csll;
  sc1 = cull;
  uc1 = csc;
  uc1 = cuc;
  uc1 = csll;
  uc1 = cull;
  sll1 = csc;
  sll1 = cuc;
  sll1 = csll;
  sll1 = cull;
  ull1 = csc;
  ull1 = cuc;
  ull1 = csll;
  ull1 = cull;
  csc1 = sc;
  csc1 = uc;
  csc1 = sll;
  csc1 = ull;
  cuc1 = sc;
  cuc1 = uc;
  cuc1 = sll;
  cuc1 = ull;
  csll1 = sc;
  csll1 = uc;
  csll1 = sll;
  csll1 = ull;
  cull1 = sc;
  cull1 = uc;
  cull1 = sll;
  cull1 = ull;
  csc1 = sc + csc;
  cuc1 = sc + cuc;
  csll1 = sc + csll;
  cull1 = sc + cull;
  csc1 = uc + csc;
  cuc1 = uc + cuc;
  csll1 = uc + csll;
  cull1 = uc + cull;
  csll1 = sll + csc;
  csll1 = sll + cuc;
  csll1 = sll + csll;
  csll1 = sll + cull;
  csll1 = ull + csc;
  cull1 = ull + cuc;
  csll1 = ull + csll;
  cull1 = ull + cull;
  csc1 = csc + sc;
  csc1 = csc + uc;
  csll1 = csc + sll;
  csll1 = csc + ull;
  csc1 = cuc + sc;
  cuc1 = cuc + uc;
  csll1 = cuc + sll;
  cull1 = cuc + ull;
  csll1 = csll + sc;
  csll1 = csll + uc;
  csll1 = csll + sll;
  csll1 = csll + ull;
  csll1 = cull + sc;
  cull1 = cull + uc;
  csll1 = cull + sll;
  cull1 = cull + ull;
}
```