user: What is the c source code of the assembly code below:

```asm
<main>:
  endbr64
  push   %r15
  lea    D53(%rip),%rdi
  mov    $0x1,%r15d
  push   %r14
  push   %r13
  lea    D27(%rip),%r13
  push   %r12
  push   %rbp
  lea    D59(%rip),%rbp
  push   %rbx
  xor    %ebx,%ebx
  sub    $0x18,%rsp
  mov    %fs:0x28,%rax
  mov    %rax,0x8(%rsp)
  xor    %eax,%eax
  call   <puts@plt>
  lea    D25(%rip),%rdi
  xor    %eax,%eax
  call   <printf@plt>
  xor    %eax,%eax
  call   <hitenter@plt>
  xor    %edi,%edi
  call   <time@plt>
  mov    %eax,%edi
  call   <srand@plt>
  mov    %rbp,%rsi
  mov    %r13,%rdi
  xor    %eax,%eax
  movq   $0x0,(%rsp)
  call   <printf@plt>
  jmp    L173
  xchg   %ax,%ax
L78:
  cmp    $0x2,%edx
  je     L111
  cmp    $0x3,%edx
  je     L91
  cmp    $0x1,%edx
  je     L96
L179:
  mov    (%rsp),%r14d
  mov    0x4(%rsp),%r12d
  cmp    $0x4,%r14d
  jg     L1
L50:
  cmp    $0x4,%r12d
  jg     L57
L173:
  mov    %r15d,%edx
  neg    %edx
  cmovs  %r15d,%edx
  mov    %edx,%r12d
  test   %r15d,%r15d
  jns    L78
  test   %ebx,%ebx
  lea    D80(%rip),%rsi
  mov    %r13,%rdi
  cmove  %rbp,%rsi
  xor    %eax,%eax
  call   <printf@plt>
  cmp    $0x2,%r12d
  je     L111
  cmp    $0x3,%r12d
  je     L91
  cmp    $0x1,%r12d
  je     L96
L37:
  cmp    $0xfffffff5,%r15d
  jne    L73
  movslq %ebx,%rax
  mov    $0xffffffff,%r15d
  addl   $0x1,(%rsp,%rax,4)
L73:
  mov    0x4(%rsp),%r12d
  mov    (%rsp),%r14d
  lea    D86(%rip),%rdi
  xor    %eax,%eax
  mov    %r12d,%edx
  mov    %r14d,%esi
  call   <printf@plt>
  test   %ebx,%ebx
  lea    D80(%rip),%rsi
  lea    D62(%rip),%rdi
  cmove  %rbp,%rsi
  xor    %eax,%eax
  xor    $0x1,%ebx
  call   <printf@plt>
  xor    %eax,%eax
  call   <hitenter@plt>
  cmp    $0x4,%r14d
  jle    L50
L1:
  cmp    %r12d,%r14d
  lea    D100(%rip),%rsi
  lea    D99(%rip),%rax
  cmovle %rax,%rsi
L55:
  xor    %eax,%eax
  lea    D81(%rip),%rdi
  call   <printf@plt>
  xor    %eax,%eax
  call   <hitenter@plt>
  mov    0x8(%rsp),%rax
  sub    %fs:0x28,%rax
  jne    L128
  add    $0x18,%rsp
  xor    %eax,%eax
  pop    %rbx
  pop    %rbp
  pop    %r12
  pop    %r13
  pop    %r14
  pop    %r15
  ret
  nopl   0x0(%rax,%rax,1)
L96:
  xor    %eax,%eax
  call   <passball@plt>
  mov    %eax,%r15d
L165:
  test   %r15d,%r15d
  jns    L179
  jmp    L37
  nopl   0x0(%rax,%rax,1)
L91:
  xor    %eax,%eax
  call   <kickball@plt>
  mov    %eax,%r15d
  jmp    L165
  nopl   0x0(%rax)
L111:
  xor    %eax,%eax
  call   <shotball@plt>
  mov    %eax,%r15d
  jmp    L165
L57:
  lea    D99(%rip),%rsi
  jmp    L55
L128:
  call   <__stack_chk_fail@plt>
```

tool_calls: name: disassemble_data
arguments: data_label: D53
data_type: string
name: disassemble_data
arguments: data_label: D27
data_type: string
name: disassemble_data
arguments: data_label: D59
data_type: string
name: disassemble_data
arguments: data_label: D25
data_type: string
name: disassemble_data
arguments: data_label: D80
data_type: string
name: disassemble_data
arguments: data_label: D86
data_type: string
name: disassemble_data
arguments: data_label: D62
data_type: string
name: disassemble_data
arguments: data_label: D100
data_type: string
name: disassemble_data
arguments: data_label: D99
data_type: string
name: disassemble_data
arguments: data_label: D81
data_type: string

tool: D53: 


FIVE POINT SOCCER
=================

tool: D27: 

%s Team:


tool: D59: Home

tool: D25: First team to five points wins!


(Press enter to begin)

tool: D80: Away

tool: D86: 
Score - Home: %d, Away: %d


tool: D62: (%s player, press enter)

tool: D100: HOME

tool: D99: AWAY

tool: D81: 

THE %s TEAM ARE THE CHAMPIONS!!



(Press enter to exit)

assistant: ```c
int main() {
  printf("\n\n\nFIVE POINT SOCCER\n=================\n");
  printf("First team to five points wins!\n\n\n(Press enter to begin)");
  hitenter();
  srand(time(NULL));
  int score[2] = {0, 0};
  int team = 0;
  int nextmove = 1;
  printf("\n\n%s Team:\n", (team == 0) ? "Home" : "Away");
  do {
    if (nextmove < 0) {
      printf("\n\n%s Team:\n", (team == 0) ? "Home" : "Away");
    }
    switch (abs(nextmove)) {
    case 1:
      nextmove = passball();
      break;
    case 2:
      nextmove = shotball();
      break;
    case 3:
      nextmove = kickball();
      break;
    }
    if (nextmove < 0) {
      if (nextmove == -11) {
        score[team]++;
        nextmove = -1;
      }
      printf("\nScore - Home: %d, Away: %d\n", score[0], score[1]);
      printf("(%s player, press enter)", (team == 0) ? "Home" : "Away");
      hitenter();
      team = (team + 1) % 2;
    }
  } while (score[0] < 5 && score[1] < 5);
  printf("\n\nTHE %s TEAM ARE THE CHAMPIONS!!\n\n\n\n(Press enter to exit)", (score[0] > score[1]) ? "HOME" : "AWAY");
  hitenter();
  return 0;
}
```