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

```asm
<min>:
  endbr64
  push   %r15
  movsbl %dl,%r15d
  push   %r14
  movsbl %sil,%r14d
  push   %r13
  mov    %r14d,%esi
  mov    %ecx,%r13d
  push   %r12
  mov    %edx,%r12d
  mov    %r15d,%edx
  push   %rbp
  mov    %rdi,%rbp
  push   %rbx
  mov    %r8d,%ebx
  sub    $0x8,%rsp
  call   <score@plt>
  cmp    $0x5,%eax
  jne    L58
  mov    0x0(%rbp),%rax
  cmpb   $0x2d,(%rax)
  je     L26
L251:
  cmpb   $0x2d,0x1(%rax)
  je     L54
L44:
  cmpb   $0x2d,0x2(%rax)
  je     L101
L220:
  mov    0x8(%rbp),%rax
  cmpb   $0x2d,(%rax)
  je     L34
L174:
  cmpb   $0x2d,0x1(%rax)
  je     L136
L43:
  cmpb   $0x2d,0x2(%rax)
  je     L154
L234:
  mov    0x10(%rbp),%rax
  cmpb   $0x2d,(%rax)
  je     L68
L13:
  cmpb   $0x2d,0x1(%rax)
  je     L1
L193:
  cmpb   $0x2d,0x2(%rax)
  je     L57
L4:
  mov    %ebx,%eax
L58:
  add    $0x8,%rsp
  pop    %rbx
  pop    %rbp
  pop    %r12
  pop    %r13
  pop    %r14
  pop    %r15
  ret
  nopw   0x0(%rax,%rax,1)
L26:
  mov    %r12b,(%rax)
  mov    %ebx,%r8d
  mov    %r13d,%ecx
  mov    %r15d,%edx
  mov    %r14d,%esi
  mov    %rbp,%rdi
  call   <max@plt>
  cmp    %eax,%ebx
  cmovg  %eax,%ebx
  mov    0x0(%rbp),%rax
  movb   $0x2d,(%rax)
  cmp    %r13d,%ebx
  jle    L4
  mov    0x0(%rbp),%rax
  jmp    L251
  nopl   0x0(%rax)
L57:
  mov    %r12b,0x2(%rax)
  mov    %ebx,%r8d
  mov    %r13d,%ecx
  mov    %r15d,%edx
  mov    %r14d,%esi
  mov    %rbp,%rdi
  call   <max@plt>
  cmp    %eax,%ebx
  cmovg  %eax,%ebx
  mov    0x10(%rbp),%rax
  movb   $0x2d,0x2(%rax)
  mov    %ebx,%eax
  jmp    L58
  nopl   0x0(%rax)
L54:
  mov    %r12b,0x1(%rax)
  mov    %ebx,%r8d
  mov    %r13d,%ecx
  mov    %r15d,%edx
  mov    %r14d,%esi
  mov    %rbp,%rdi
  call   <max@plt>
  cmp    %eax,%ebx
  cmovg  %eax,%ebx
  mov    0x0(%rbp),%rax
  movb   $0x2d,0x1(%rax)
  cmp    %ebx,%r13d
  jge    L4
  mov    0x0(%rbp),%rax
  jmp    L44
  nopw   0x0(%rax,%rax,1)
L101:
  mov    %r12b,0x2(%rax)
  mov    %ebx,%r8d
  mov    %r13d,%ecx
  mov    %r15d,%edx
  mov    %r14d,%esi
  mov    %rbp,%rdi
  call   <max@plt>
  cmp    %eax,%ebx
  cmovg  %eax,%ebx
  mov    0x0(%rbp),%rax
  movb   $0x2d,0x2(%rax)
  cmp    %ebx,%r13d
  jl     L220
  mov    %ebx,%eax
  jmp    L58
  nopl   (%rax)
L34:
  mov    %r12b,(%rax)
  mov    %ebx,%r8d
  mov    %r13d,%ecx
  mov    %r15d,%edx
  mov    %r14d,%esi
  mov    %rbp,%rdi
  call   <max@plt>
  cmp    %eax,%ebx
  cmovg  %eax,%ebx
  mov    0x8(%rbp),%rax
  movb   $0x2d,(%rax)
  cmp    %ebx,%r13d
  jge    L4
  mov    0x8(%rbp),%rax
  jmp    L174
  nopl   (%rax)
L136:
  mov    %r12b,0x1(%rax)
  mov    %ebx,%r8d
  mov    %r13d,%ecx
  mov    %r15d,%edx
  mov    %r14d,%esi
  mov    %rbp,%rdi
  call   <max@plt>
  cmp    %eax,%ebx
  cmovg  %eax,%ebx
  mov    0x8(%rbp),%rax
  movb   $0x2d,0x1(%rax)
  cmp    %ebx,%r13d
  jge    L4
  mov    0x8(%rbp),%rax
  jmp    L43
  nopw   0x0(%rax,%rax,1)
L154:
  mov    %r12b,0x2(%rax)
  mov    %ebx,%r8d
  mov    %r13d,%ecx
  mov    %r15d,%edx
  mov    %r14d,%esi
  mov    %rbp,%rdi
  call   <max@plt>
  cmp    %eax,%ebx
  cmovg  %eax,%ebx
  mov    0x8(%rbp),%rax
  movb   $0x2d,0x2(%rax)
  cmp    %ebx,%r13d
  jl     L234
  mov    %ebx,%eax
  jmp    L58
  nopl   (%rax)
L68:
  mov    %r12b,(%rax)
  mov    %ebx,%r8d
  mov    %r13d,%ecx
  mov    %r15d,%edx
  mov    %r14d,%esi
  mov    %rbp,%rdi
  call   <max@plt>
  cmp    %eax,%ebx
  cmovg  %eax,%ebx
  mov    0x10(%rbp),%rax
  movb   $0x2d,(%rax)
  cmp    %ebx,%r13d
  jge    L4
  mov    0x10(%rbp),%rax
  jmp    L13
  nopl   (%rax)
L1:
  mov    %r12b,0x1(%rax)
  mov    %ebx,%r8d
  mov    %r13d,%ecx
  mov    %r15d,%edx
  mov    %r14d,%esi
  mov    %rbp,%rdi
  call   <max@plt>
  cmp    %eax,%ebx
  cmovg  %eax,%ebx
  mov    0x10(%rbp),%rax
  movb   $0x2d,0x1(%rax)
  cmp    %ebx,%r13d
  jge    L4
  mov    0x10(%rbp),%rax
  jmp    L193
```

assistant: ```c
int min(char **board, char piece1, char piece2, int alpha, int beta) {
  int util = score(board, piece1, piece2);
  if (util != 5)
    return util;
  int i, j;
  for (i = 0; i < 3; i++)
    for (j = 0; j < 3; j++)
      if (board[i][j] == '-') {
        board[i][j] = piece2;
        int score = max(board, piece1, piece2, alpha, beta);
        if (score < beta)
          beta = score;
        board[i][j] = '-';
        if (beta <= alpha)
          return beta;
      }
  return beta;
}
```