user: 这段汇编代码用C语言表示是什么样的:

```asm
<check_the_check>:
  endbr64
  push   %r15
  push   %r14
  push   %r13
  push   %r12
  push   %rbp
  push   %rbx
  sub    $0x28,%rsp
  mov    %rdi,%rbx
  mov    %esi,0x14(%rsp)
  mov    %edx,%r12d
  movslq %esi,%rax
  lea    (%rax,%rax,2),%rbp
  shl    $0x2,%rbp
  lea    (%rdi,%rbp,1),%rax
  mov    %rax,0x8(%rsp)
  movslq %edx,%rax
  mov    0x8(%rsp),%rcx
  movsbl (%rcx,%rax,1),%edi
  call   <islower@plt>
  mov    %eax,%edx
  cmp    $0x1,%eax
  sbb    %r9d,%r9d
  and    $0x20,%r9d
  add    $0x42,%r9d
  cmp    $0x1,%eax
  sbb    %r8d,%r8d
  and    $0x20,%r8d
  add    $0x52,%r8d
  cmp    $0x1,%eax
  sbb    %eax,%eax
  and    $0x20,%eax
  add    $0x4e,%eax
  cmp    $0x1,%edx
  sbb    %edi,%edi
  and    $0x20,%edi
  add    $0x51,%edi
  cmp    $0x1,%edx
  sbb    %esi,%esi
  and    $0x20,%esi
  add    $0x50,%esi
  lea    -0x18(%rbx,%rbp,1),%r15
  lea    -0x1(%r12),%r10d
  movslq %r10d,%r11
  movl   $0x1,0x10(%rsp)
  cmp    %al,(%r15,%r11,1)
  je     L73
  lea    -0xc(%rbx,%rbp,1),%r13
  lea    -0x2(%r12),%r11d
  movslq %r11d,%r14
  cmp    %al,0x0(%r13,%r14,1)
  je     L73
  lea    0x18(%rbx,%rbp,1),%r14
  mov    %r14,%rcx
  movslq %r10d,%r14
  cmp    %al,(%rcx,%r14,1)
  je     L73
  lea    0xc(%rbx,%rbp,1),%r14
  movslq %r11d,%r11
  mov    %r14,0x18(%rsp)
  cmp    %al,(%r14,%r11,1)
  je     L73
  lea    0x1(%r12),%r11d
  movslq %r11d,%r14
  cmp    %al,(%r15,%r14,1)
  je     L73
  lea    0x2(%r12),%r14d
  movslq %r14d,%r15
  cmp    %al,0x0(%r13,%r15,1)
  je     L73
  movslq %r11d,%r15
  cmp    %al,(%rcx,%r15,1)
  je     L73
  movslq %r14d,%r14
  mov    0x18(%rsp),%rcx
  cmp    %al,(%rcx,%r14,1)
  je     L73
  test   %edx,%edx
  je     L229
  movslq %r10d,%rax
  cmp    %sil,(%rcx,%rax,1)
  je     L73
  cmp    %sil,(%rcx,%r15,1)
  je     L73
L381:
  mov    %r10d,%eax
  cmp    $0x2,%r10d
  jle    L139
  movslq %r12d,%rax
  mov    0x8(%rsp),%rcx
  lea    -0x1(%rcx,%rax,1),%rdx
  mov    %r10d,%eax
  mov    %rcx,%r13
L485:
  cmpb   $0x2e,(%rdx)
  jne    L453
  sub    $0x1,%eax
  sub    $0x1,%rdx
  cmp    $0x2,%eax
  jne    L485
  mov    %r13,0x8(%rsp)
  jmp    L139
L229:
  movslq %r10d,%rax
  movl   $0x1,0x10(%rsp)
  cmp    %sil,0x0(%r13,%rax,1)
  je     L73
  movslq %r11d,%rax
  cmp    %sil,0x0(%r13,%rax,1)
  jne    L381
  jmp    L73
L453:
  mov    %r13,0x8(%rsp)
L139:
  cltq
  mov    0x8(%rsp),%rcx
  movzbl (%rcx,%rax,1),%eax
  cmp    %dil,%al
  je     L311
  cmp    %r8b,%al
  je     L311
  cmp    $0x8,%r11d
  jg     L714
  movslq %r12d,%rax
  lea    0x1(%rcx,%rax,1),%rdx
  mov    %r11d,%eax
  mov    %rcx,%r13
L417:
  cmpb   $0x2e,(%rdx)
  jne    L7
  add    $0x1,%eax
  add    $0x1,%rdx
  cmp    $0x9,%eax
  jne    L417
  mov    %r13,0x8(%rsp)
  jmp    L657
L714:
  mov    %r11d,%eax
  jmp    L657
L7:
  mov    %r13,0x8(%rsp)
L657:
  cltq
  mov    0x8(%rsp),%rcx
  movzbl (%rcx,%rax,1),%eax
  cmp    %dil,%al
  je     L528
  cmp    %r8b,%al
  je     L528
  mov    0x14(%rsp),%eax
  lea    -0x1(%rax),%ecx
  cmp    $0x2,%ecx
  jle    L168
  movslq %r12d,%rax
  add    %rbp,%rax
  add    %rbx,%rax
  mov    %ecx,%edx
L504:
  cmpb   $0x2e,-0xc(%rax)
  jne    L484
  sub    $0x1,%edx
  sub    $0xc,%rax
  cmp    $0x2,%edx
  jne    L504
L484:
  movslq %edx,%rdx
  lea    (%rdx,%rdx,2),%rax
  lea    (%rbx,%rax,4),%rdx
  movslq %r12d,%rax
  movzbl (%rdx,%rax,1),%eax
  cmp    %dil,%al
  je     L405
  cmp    %r8b,%al
  je     L405
  mov    0x14(%rsp),%edx
  add    $0x1,%edx
  cmp    $0x8,%edx
  jg     L232
  movslq %r12d,%rax
  add    %rbp,%rax
  add    %rbx,%rax
  mov    %edx,%esi
L173:
  cmpb   $0x2e,0xc(%rax)
  jne    L20
  add    $0x1,%esi
  add    $0xc,%rax
  cmp    $0x9,%esi
  jne    L173
L20:
  movslq %esi,%rsi
  lea    (%rsi,%rsi,2),%rax
  lea    (%rbx,%rax,4),%rsi
  movslq %r12d,%rax
  movzbl (%rsi,%rax,1),%eax
  cmp    %dil,%al
  je     L463
  cmp    %r8b,%al
  je     L463
  cmp    $0x2,%ecx
  setg   %r8b
  cmp    $0x2,%r10d
  setg   %r13b
  test   %r8b,%r8b
  je     L54
  test   %r13b,%r13b
  je     L54
  movslq %r12d,%rax
  add    %rbp,%rax
  add    %rbx,%rax
  mov    %r10d,%r14d
  mov    %ecx,%esi
L100:
  cmpb   $0x2e,-0xd(%rax)
  jne    L607
  sub    $0x1,%esi
  sub    $0x1,%r14d
  sub    $0xd,%rax
  cmp    $0x2,%esi
  jle    L607
  cmp    $0x2,%r14d
  jg     L100
L607:
  movslq %esi,%rsi
  lea    (%rsi,%rsi,2),%rax
  lea    (%rbx,%rax,4),%rax
  movslq %r14d,%r14
  movzbl (%rax,%r14,1),%eax
  cmp    %dil,%al
  je     L41
  cmp    %r9b,%al
  je     L41
  cmp    $0x8,%r11d
  setle  %sil
  jg     L70
  test   %r8b,%r8b
  je     L70
  movslq %r12d,%rax
  add    %rbp,%rax
  add    %rbx,%rax
  mov    %r11d,%r8d
L551:
  cmpb   $0x2e,-0xb(%rax)
  jne    L303
  sub    $0x1,%ecx
  add    $0x1,%r8d
  sub    $0xb,%rax
  cmp    $0x2,%ecx
  jle    L303
  cmp    $0x8,%r8d
  jle    L551
L303:
  movslq %ecx,%rcx
  lea    (%rcx,%rcx,2),%rax
  lea    (%rbx,%rax,4),%rax
  movslq %r8d,%r8
  movzbl (%rax,%r8,1),%eax
  cmp    %dil,%al
  je     L133
  cmp    %r9b,%al
  je     L133
  cmp    $0x8,%edx
  setle  %cl
  jg     L254
  test   %r13b,%r13b
  je     L254
  movslq %r12d,%rax
  add    %rbp,%rax
  add    %rbx,%rax
  mov    %edx,%r8d
L275:
  cmpb   $0x2e,0xb(%rax)
  jne    L187
  add    $0x1,%r8d
  sub    $0x1,%r10d
  add    $0xb,%rax
  cmp    $0x8,%r8d
  jg     L187
  cmp    $0x2,%r10d
  jg     L275
L187:
  movslq %r8d,%r8
  lea    (%r8,%r8,2),%rax
  lea    (%rbx,%rax,4),%rax
  movslq %r10d,%r10
  movzbl (%rax,%r10,1),%eax
  cmp    %dil,%al
  je     L255
  cmp    %r9b,%al
  je     L255
  test   %cl,%cl
  je     L160
  test   %sil,%sil
  je     L160
  movslq %r12d,%rax
  add    %rbp,%rax
  add    %rbx,%rax
L277:
  cmpb   $0x2e,0xd(%rax)
  jne    L160
  add    $0x1,%edx
  add    $0x1,%r11d
  add    $0xd,%rax
  cmp    $0x8,%edx
  jg     L160
  cmp    $0x8,%r11d
  jle    L277
L160:
  movslq %edx,%rdx
  lea    (%rdx,%rdx,2),%rax
  lea    (%rbx,%rax,4),%rax
  movslq %r11d,%r11
  movzbl (%rax,%r11,1),%eax
  cmp    %dil,%al
  sete   %cl
  cmp    %r9b,%al
  sete   %al
  or     %eax,%ecx
  movzbl %cl,%eax
  mov    %eax,0x10(%rsp)
  jmp    L73
L168:
  mov    %ecx,%edx
  jmp    L484
L232:
  mov    %edx,%esi
  jmp    L20
L54:
  mov    %r10d,%r14d
  mov    %ecx,%esi
  jmp    L607
L70:
  mov    %r11d,%r8d
  jmp    L303
L254:
  mov    %edx,%r8d
  jmp    L187
L311:
  movl   $0x1,0x10(%rsp)
L73:
  mov    0x10(%rsp),%eax
  add    $0x28,%rsp
  pop    %rbx
  pop    %rbp
  pop    %r12
  pop    %r13
  pop    %r14
  pop    %r15
  ret
L528:
  movl   $0x1,0x10(%rsp)
  jmp    L73
L405:
  movl   $0x1,0x10(%rsp)
  jmp    L73
L463:
  movl   $0x1,0x10(%rsp)
  jmp    L73
L41:
  movl   $0x1,0x10(%rsp)
  jmp    L73
L133:
  movl   $0x1,0x10(%rsp)
  jmp    L73
L255:
  movl   $0x1,0x10(%rsp)
  jmp    L73
```

assistant: ```c
int check_the_check(char chess_board[12][12], int i, int j) {
  int is_black_king;
  char king;
  char opp_king, opp_queen, opp_knight, opp_rook, opp_bishop, opp_pawn;
  int next_i, next_j;
  is_black_king = islower(chess_board[i][j]);
  opp_king = is_black_king ? 'K' : 'k';
  opp_queen = is_black_king ? 'Q' : 'q';
  opp_knight = is_black_king ? 'N' : 'n';
  opp_rook = is_black_king ? 'R' : 'r';
  opp_bishop = is_black_king ? 'B' : 'b';
  opp_pawn = is_black_king ? 'P' : 'p';
  if (chess_board[i - 2][j - 1] == opp_knight || chess_board[i - 1][j - 2] == opp_knight || chess_board[i + 2][j - 1] == opp_knight || chess_board[i + 1][j - 2] == opp_knight || chess_board[i - 2][j + 1] == opp_knight || chess_board[i - 1][j + 2] == opp_knight || chess_board[i + 2][j + 1] == opp_knight || chess_board[i + 1][j + 2] == opp_knight) {
    return 1;
  }
  if (is_black_king) {
    if (chess_board[i + 1][j - 1] == opp_pawn || chess_board[i + 1][j + 1] == opp_pawn)
      return 1;
  } else {
    if (chess_board[i - 1][j - 1] == opp_pawn || chess_board[i - 1][j + 1] == opp_pawn)
      return 1;
  }
  for (next_i = i, next_j = j - 1; next_j > 2; --next_j) {
    if (chess_board[next_i][next_j] != '.')
      break;
  }
  if (chess_board[next_i][next_j] == opp_rook || chess_board[next_i][next_j] == opp_queen) {
    return 1;
  };
  for (next_i = i, next_j = j + 1; next_j < 9; ++next_j) {
    if (chess_board[next_i][next_j] != '.')
      break;
  }
  if (chess_board[next_i][next_j] == opp_rook || chess_board[next_i][next_j] == opp_queen) {
    return 1;
  };
  for (next_i = i - 1, next_j = j; next_i > 2; --next_i) {
    if (chess_board[next_i][next_j] != '.')
      break;
  }
  if (chess_board[next_i][next_j] == opp_rook || chess_board[next_i][next_j] == opp_queen) {
    return 1;
  };
  for (next_i = i + 1, next_j = j; next_i < 9; ++next_i) {
    if (chess_board[next_i][next_j] != '.')
      break;
  }
  if (chess_board[next_i][next_j] == opp_rook || chess_board[next_i][next_j] == opp_queen) {
    return 1;
  };
  for (next_i = i - 1, next_j = j - 1; next_i > 2 && next_j > 2; --next_i, --next_j) {
    if (chess_board[next_i][next_j] != '.')
      break;
  }
  if (chess_board[next_i][next_j] == opp_bishop || chess_board[next_i][next_j] == opp_queen) {
    return 1;
  };
  for (next_i = i - 1, next_j = j + 1; next_i > 2 && next_j < 9; --next_i, ++next_j) {
    if (chess_board[next_i][next_j] != '.')
      break;
  }
  if (chess_board[next_i][next_j] == opp_bishop || chess_board[next_i][next_j] == opp_queen) {
    return 1;
  };
  for (next_i = i + 1, next_j = j - 1; next_i < 9 && next_j > 2; ++next_i, --next_j) {
    if (chess_board[next_i][next_j] != '.')
      break;
  }
  if (chess_board[next_i][next_j] == opp_bishop || chess_board[next_i][next_j] == opp_queen) {
    return 1;
  };
  for (next_i = i + 1, next_j = j + 1; next_i < 9 && next_j < 9; ++next_i, ++next_j) {
    if (chess_board[next_i][next_j] != '.')
      break;
  }
  if (chess_board[next_i][next_j] == opp_bishop || chess_board[next_i][next_j] == opp_queen) {
    return 1;
  };
  return 0;
}
```