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

```asm
<bot1>:
  endbr64
  push   %r12
  push   %rbp
  push   %rbx
  mov    %rdi,%rbx
  mov    $0x6c,%edi
  call   <putchar@plt>
  mov    (%rbx),%edi
  test   %edi,%edi
  jne    L780
  mov    $0x1,%eax
L259:
  cmpl   $0x0,(%rbx,%rax,4)
  jne    L780
  cmp    $0x5,%eax
  jg     L780
  add    $0x1,%rax
  cmp    $0x7,%rax
  jne    L259
  mov    %rbx,%r8
  lea    0xa8(%rbx),%r11
  mov    %rbx,%r10
  jmp    L597
L780:
  mov    $0x0,%eax
  call   <rand@plt>
  movslq %eax,%rdx
  imul   $0xffffffff92492493,%rdx,%rdx
  shr    $0x20,%rdx
  add    %eax,%edx
  sar    $0x2,%edx
  mov    %eax,%ecx
  sar    $0x1f,%ecx
  sub    %ecx,%edx
  lea    0x0(,%rdx,8),%ecx
  sub    %edx,%ecx
  sub    %ecx,%eax
  mov    %eax,%edx
L450:
  mov    %edx,%eax
  pop    %rbx
  pop    %rbp
  pop    %r12
  ret
L382:
  cmp    $0x6,%ecx
  jg     L530
L86:
  add    $0x1,%rax
  add    $0x1,%ecx
L315:
  mov    %eax,%r9d
  cmpl   $0x1,(%rsi,%rax,4)
  jne    L382
  cmp    $0x5,%eax
  jg     L382
  movslq %ecx,%rdx
  cmpl   $0x1,(%rsi,%rdx,4)
  jne    L86
  cmp    $0x4,%eax
  jg     L86
  mov    %eax,%ebp
  lea    0x2(%rax),%edx
  movslq %edx,%rdx
  cmpl   $0x1,(%rsi,%rdx,4)
  jne    L86
  cmp    $0x3,%eax
  jg     L135
  lea    0x3(%rax),%edx
  movslq %edx,%r12
  cmpl   $0x0,(%rsi,%r12,4)
  je     L450
L135:
  cmp    $0x1,%r9d
  jle    L86
  lea    -0x1(%rbp),%edx
  movslq %edx,%r9
  cmpl   $0x0,(%rsi,%r9,4)
  jne    L86
  jmp    L450
L530:
  add    $0x1c,%r10
  cmp    %r11,%r10
  je     L190
L597:
  mov    %r10,%rsi
  mov    $0x1,%ecx
  mov    $0x0,%eax
  jmp    L315
L190:
  mov    %rbx,%r10
  jmp    L203
L263:
  cmp    $0x6,%ecx
  jg     L769
L45:
  add    $0x1,%rax
  add    $0x1,%ecx
L266:
  mov    %eax,%r9d
  cmpl   $0xffffffff,(%rsi,%rax,4)
  jne    L263
  cmp    $0x5,%eax
  jg     L263
  movslq %ecx,%rdx
  cmpl   $0xffffffff,(%rsi,%rdx,4)
  jne    L45
  cmp    $0x4,%eax
  jg     L45
  mov    %eax,%ebp
  lea    0x2(%rax),%edx
  movslq %edx,%rdx
  cmpl   $0xffffffff,(%rsi,%rdx,4)
  jne    L45
  cmp    $0x3,%eax
  jg     L618
  lea    0x3(%rax),%edx
  movslq %edx,%r12
  cmpl   $0x0,(%rsi,%r12,4)
  je     L450
L618:
  cmp    $0x1,%r9d
  jle    L45
  lea    -0x1(%rbp),%edx
  movslq %edx,%r9
  cmpl   $0x0,(%rsi,%r9,4)
  jne    L45
  jmp    L450
L769:
  add    $0x1c,%r10
  cmp    %r11,%r10
  je     L674
L203:
  mov    %r10,%rsi
  mov    $0x1,%ecx
  mov    $0x0,%eax
  jmp    L266
L781:
  add    $0x1,%rax
  cmp    $0x7,%rax
  je     L111
L300:
  mov    %eax,%edx
  cmpl   $0x1,(%rcx,%rax,4)
  jne    L781
  cmp    $0x2,%esi
  jg     L781
  cmpl   $0x1,(%r11,%rax,4)
  jne    L781
  cmp    $0x1,%esi
  jg     L781
  cmpl   $0x1,0x0(%rbp,%rax,4)
  jne    L781
  test   %esi,%esi
  jg     L781
  cmpl   $0x0,(%r12,%rax,4)
  jne    L781
  jmp    L450
L111:
  add    $0x1,%esi
  cmp    $0x6,%esi
  je     L5
L634:
  lea    -0x1c(%r10),%rcx
  mov    %r10,%r11
  add    $0x1c,%r10
  mov    %r10,%rbp
  lea    0x38(%r11),%r12
  mov    $0x0,%eax
  jmp    L300
L5:
  mov    %edi,%esi
  jmp    L239
L674:
  lea    0x1c(%rbx),%r9
  mov    %r9,%r10
  mov    %edi,%esi
  jmp    L634
L377:
  add    $0x1,%rax
  cmp    $0x7,%rax
  je     L305
L479:
  mov    %eax,%edx
  cmpl   $0xffffffff,(%rcx,%rax,4)
  jne    L377
  cmp    $0x2,%esi
  jg     L377
  cmpl   $0xffffffff,(%r10,%rax,4)
  jne    L377
  cmp    $0x1,%esi
  jg     L377
  cmpl   $0xffffffff,(%r11,%rax,4)
  jne    L377
  test   %esi,%esi
  jg     L377
  cmpl   $0x0,0x0(%rbp,%rax,4)
  jne    L377
  jmp    L450
L305:
  add    $0x1,%esi
  cmp    $0x6,%esi
  je     L814
L239:
  lea    -0x1c(%r9),%rcx
  mov    %r9,%r10
  add    $0x1c,%r9
  mov    %r9,%r11
  lea    0x38(%r10),%rbp
  mov    $0x0,%eax
  jmp    L479
L82:
  cmp    $0x6,%ecx
  jg     L730
L410:
  add    $0x1,%rax
  add    $0x1,%ecx
L811:
  mov    %eax,%edx
  cmpl   $0x1,(%rsi,%rax,4)
  jne    L82
  cmp    $0x2,%r9d
  jg     L82
  cmp    $0x5,%eax
  jg     L82
  cmpl   $0x1,0x4(%r11,%rax,4)
  jne    L410
  cmp    $0x1,%r9d
  jg     L410
  cmp    $0x4,%eax
  jg     L410
  cmpl   $0x1,0x8(%rbp,%rax,4)
  jne    L410
  test   %r9d,%r9d
  jg     L410
  cmp    $0x3,%eax
  jg     L410
  cmpl   $0x0,0xc(%r12,%rax,4)
  jne    L410
  jmp    L450
L730:
  add    $0x1,%r9d
  cmp    $0x6,%r9d
  je     L251
L819:
  mov    %rbx,%rsi
  add    $0x1c,%rbx
  mov    %rbx,%r11
  lea    0x38(%rsi),%rbp
  lea    0x54(%rsi),%r12
  mov    $0x1,%ecx
  mov    $0x0,%eax
  jmp    L811
L814:
  mov    %edi,%r9d
  jmp    L819
L847:
  cmp    $0x6,%ecx
  jg     L163
L152:
  add    $0x1,%rax
  add    $0x1,%ecx
L383:
  mov    %eax,%edx
  cmpl   $0xffffffff,(%rsi,%rax,4)
  jne    L847
  cmp    $0x2,%edi
  jg     L847
  cmp    $0x5,%eax
  jg     L847
  cmpl   $0xffffffff,0x4(%r10,%rax,4)
  jne    L152
  cmp    $0x1,%edi
  jg     L152
  cmp    $0x4,%eax
  jg     L152
  cmpl   $0xffffffff,0x8(%r11,%rax,4)
  jne    L152
  test   %edi,%edi
  jg     L152
  cmp    $0x3,%eax
  jg     L152
  cmpl   $0x0,0xc(%rbx,%rax,4)
  jne    L152
  jmp    L450
L163:
  add    $0x1,%edi
  cmp    $0x6,%edi
  je     L450
L251:
  mov    %r8,%rsi
  add    $0x1c,%r8
  mov    %r8,%r10
  lea    0x38(%rsi),%r11
  lea    0x54(%rsi),%rbx
  mov    $0x1,%ecx
  mov    $0x0,%eax
  jmp    L383
```

assistant: ```c
int bot1(int grid[6][7], int move) {
  int count, i, j, r;
  printf("l");
  for (j = 0; j < 7; j++) {
    if (grid[0][j] == 0 && j < 6) {
      continue;
    }
    r = rand() % 7;
    return r;
  }
  for (i = 0; i < 6; i++) {
    for (j = 0; j < 7; j++) {
      if (grid[i][j] == 1) {
        count++;
        if ((j + 1) < 7 && grid[i][j + 1] == 1) {
          count++;
          if ((j + 2) < 7 && grid[i][j + 2] == 1) {
            count++;
            if ((j + 3) < 7 && grid[i][j + 3] == 0)
              return j + 3;
            if ((j - 1) > 0 && grid[i][j - 1] == 0)
              return j - 1;
          }
        }
      }
    }
  }
  for (i = 0; i < 6; i++) {
    for (j = 0; j < 7; j++) {
      if (grid[i][j] == -1) {
        count++;
        if ((j + 1) < 7 && grid[i][j + 1] == -1) {
          count++;
          if ((j + 2) < 7 && grid[i][j + 2] == -1) {
            count++;
            if ((j + 3) < 7 && grid[i][j + 3] == 0)
              return j + 3;
            if ((j - 1) > 0 && grid[i][j - 1] == 0)
              return j - 1;
          }
        }
      }
    }
  }
  for (i = 0; i < 6; i++) {
    for (j = 0; j < 7; j++) {
      if (grid[i][j] == 1) {
        count++;
        if ((i + 1) < 4 && grid[i + 1][j] == 1) {
          count++;
          if ((i + 2) < 4 && grid[i + 2][j] == 1) {
            count++;
            if ((i + 3) < 4 && grid[i + 3][j] == 0)
              return j;
          }
        }
      }
    }
  }
  for (i = 0; i < 6; i++) {
    for (j = 0; j < 7; j++) {
      if (grid[i][j] == -1) {
        count++;
        if ((i + 1) < 4 && grid[i + 1][j] == -1) {
          count++;
          if ((i + 2) < 4 && grid[i + 2][j] == -1) {
            count++;
            if ((i + 3) < 4 && grid[i + 3][j] == 0)
              return j;
          }
        }
      }
    }
  }
  for (i = 0; i < 6; i++) {
    for (j = 0; j < 7; j++) {
      if (grid[i][j] == 1) {
        count++;
        if ((i + 1) < 4 && (j + 1) < 7 && grid[i + 1][j + 1] == 1) {
          count++;
          if ((i + 2) < 4 && (j + 2) < 7 && grid[i + 2][j + 2] == 1) {
            count++;
            if ((i + 3) < 4 && (j + 3) < 7 && grid[i + 3][j + 3] == 0)
              return j;
          }
        }
      }
    }
  }
  for (i = 0; i < 6; i++) {
    for (j = 0; j < 7; j++) {
      if (grid[i][j] == -1) {
        count++;
        if ((i + 1) < 4 && (j + 1) < 7 && grid[i + 1][j + 1] == -1) {
          count++;
          if ((i + 2) < 4 && (j + 2) < 7 && grid[i + 2][j + 2] == -1) {
            count++;
            if ((i + 3) < 4 && (j + 3) < 7 && grid[i + 3][j + 3] == 0)
              return j;
          }
        }
      }
    }
  }
}
```