user: 请显示与下面列出的汇编代码相匹配的C语言实现：

```asm
<niveldificil>:
  endbr64
  push   %rbp
  mov    %rsp,%rbp
  mov    %rdi,-0x18(%rbp)
  mov    %rsi,-0x20(%rbp)
  mov    %rdx,-0x28(%rbp)
  mov    %rcx,-0x30(%rbp)
  mov    %r8,-0x38(%rbp)
  mov    %r9,-0x40(%rbp)
  movl   $0x0,-0x4(%rbp)
  jmp    L2255
L2056:
  mov    -0x18(%rbp),%rax
  mov    (%rax),%eax
  cmp    $0x1,%eax
  jne    L344
  mov    -0x20(%rbp),%rax
  mov    (%rax),%eax
  cmp    $0x1,%eax
  jne    L344
  mov    -0x28(%rbp),%rax
  mov    (%rax),%eax
  test   %eax,%eax
  jne    L344
  cmpl   $0x0,-0x4(%rbp)
  je     L2494
L344:
  mov    -0x18(%rbp),%rax
  mov    (%rax),%eax
  cmp    $0xffffffff,%eax
  jne    L456
  mov    -0x20(%rbp),%rax
  mov    (%rax),%eax
  cmp    $0xffffffff,%eax
  jne    L456
  mov    -0x28(%rbp),%rax
  mov    (%rax),%eax
  test   %eax,%eax
  jne    L456
  cmpl   $0x0,-0x4(%rbp)
  jne    L456
L2494:
  mov    0x28(%rbp),%rax
  mov    (%rax),%eax
  cmp    $0x1,%eax
  jne    L1134
  mov    -0x28(%rbp),%rax
  movl   $0x1,(%rax)
  jmp    L440
L1134:
  mov    -0x28(%rbp),%rax
  movl   $0xffffffff,(%rax)
L440:
  addl   $0x1,-0x4(%rbp)
L456:
  mov    -0x18(%rbp),%rax
  mov    (%rax),%eax
  cmp    $0x1,%eax
  jne    L993
  mov    -0x28(%rbp),%rax
  mov    (%rax),%eax
  cmp    $0x1,%eax
  jne    L993
  mov    -0x20(%rbp),%rax
  mov    (%rax),%eax
  test   %eax,%eax
  jne    L993
  cmpl   $0x0,-0x4(%rbp)
  je     L2502
L993:
  mov    -0x18(%rbp),%rax
  mov    (%rax),%eax
  cmp    $0xffffffff,%eax
  jne    L1909
  mov    -0x28(%rbp),%rax
  mov    (%rax),%eax
  cmp    $0xffffffff,%eax
  jne    L1909
  mov    -0x20(%rbp),%rax
  mov    (%rax),%eax
  test   %eax,%eax
  jne    L1909
  cmpl   $0x0,-0x4(%rbp)
  jne    L1909
L2502:
  mov    0x28(%rbp),%rax
  mov    (%rax),%eax
  cmp    $0x1,%eax
  jne    L771
  mov    -0x20(%rbp),%rax
  movl   $0x1,(%rax)
  jmp    L2224
L771:
  mov    -0x20(%rbp),%rax
  movl   $0xffffffff,(%rax)
L2224:
  addl   $0x1,-0x4(%rbp)
L1909:
  mov    -0x18(%rbp),%rax
  mov    (%rax),%eax
  cmp    $0x1,%eax
  jne    L985
  mov    -0x30(%rbp),%rax
  mov    (%rax),%eax
  cmp    $0x1,%eax
  jne    L985
  mov    0x10(%rbp),%rax
  mov    (%rax),%eax
  test   %eax,%eax
  jne    L985
  cmpl   $0x0,-0x4(%rbp)
  je     L1403
L985:
  mov    -0x18(%rbp),%rax
  mov    (%rax),%eax
  cmp    $0xffffffff,%eax
  jne    L570
  mov    -0x30(%rbp),%rax
  mov    (%rax),%eax
  cmp    $0xffffffff,%eax
  jne    L570
  mov    0x10(%rbp),%rax
  mov    (%rax),%eax
  test   %eax,%eax
  jne    L570
  cmpl   $0x0,-0x4(%rbp)
  jne    L570
L1403:
  mov    0x28(%rbp),%rax
  mov    (%rax),%eax
  cmp    $0x1,%eax
  jne    L949
  mov    0x10(%rbp),%rax
  movl   $0x1,(%rax)
  jmp    L840
L949:
  mov    0x10(%rbp),%rax
  movl   $0xffffffff,(%rax)
L840:
  addl   $0x1,-0x4(%rbp)
L570:
  mov    -0x20(%rbp),%rax
  mov    (%rax),%eax
  cmp    $0x1,%eax
  jne    L269
  mov    -0x28(%rbp),%rax
  mov    (%rax),%eax
  cmp    $0x1,%eax
  jne    L269
  mov    -0x18(%rbp),%rax
  mov    (%rax),%eax
  test   %eax,%eax
  jne    L269
  cmpl   $0x0,-0x4(%rbp)
  je     L357
L269:
  mov    -0x20(%rbp),%rax
  mov    (%rax),%eax
  cmp    $0xffffffff,%eax
  jne    L1352
  mov    -0x28(%rbp),%rax
  mov    (%rax),%eax
  cmp    $0xffffffff,%eax
  jne    L1352
  mov    -0x18(%rbp),%rax
  mov    (%rax),%eax
  test   %eax,%eax
  jne    L1352
  cmpl   $0x0,-0x4(%rbp)
  jne    L1352
L357:
  mov    0x28(%rbp),%rax
  mov    (%rax),%eax
  cmp    $0x1,%eax
  jne    L2075
  mov    -0x18(%rbp),%rax
  movl   $0x1,(%rax)
  jmp    L351
L2075:
  mov    -0x18(%rbp),%rax
  movl   $0xffffffff,(%rax)
L351:
  addl   $0x1,-0x4(%rbp)
L1352:
  mov    -0x18(%rbp),%rax
  mov    (%rax),%eax
  cmp    $0x1,%eax
  jne    L1726
  mov    -0x38(%rbp),%rax
  mov    (%rax),%eax
  cmp    $0x1,%eax
  jne    L1726
  mov    0x20(%rbp),%rax
  mov    (%rax),%eax
  test   %eax,%eax
  jne    L1726
  cmpl   $0x0,-0x4(%rbp)
  je     L2022
L1726:
  mov    -0x18(%rbp),%rax
  mov    (%rax),%eax
  cmp    $0xffffffff,%eax
  jne    L2451
  mov    -0x38(%rbp),%rax
  mov    (%rax),%eax
  cmp    $0xffffffff,%eax
  jne    L2451
  mov    0x20(%rbp),%rax
  mov    (%rax),%eax
  test   %eax,%eax
  jne    L2451
  cmpl   $0x0,-0x4(%rbp)
  jne    L2451
L2022:
  mov    0x28(%rbp),%rax
  mov    (%rax),%eax
  cmp    $0x1,%eax
  jne    L462
  mov    0x20(%rbp),%rax
  movl   $0x1,(%rax)
  jmp    L1856
L462:
  mov    0x20(%rbp),%rax
  movl   $0xffffffff,(%rax)
L1856:
  addl   $0x1,-0x4(%rbp)
L2451:
  mov    -0x30(%rbp),%rax
  mov    (%rax),%eax
  cmp    $0x1,%eax
  jne    L2550
  mov    -0x38(%rbp),%rax
  mov    (%rax),%eax
  cmp    $0x1,%eax
  jne    L2550
  mov    -0x40(%rbp),%rax
  mov    (%rax),%eax
  test   %eax,%eax
  jne    L2550
  cmpl   $0x0,-0x4(%rbp)
  je     L1480
L2550:
  mov    -0x30(%rbp),%rax
  mov    (%rax),%eax
  cmp    $0xffffffff,%eax
  jne    L1409
  mov    -0x38(%rbp),%rax
  mov    (%rax),%eax
  cmp    $0xffffffff,%eax
  jne    L1409
  mov    -0x40(%rbp),%rax
  mov    (%rax),%eax
  test   %eax,%eax
  jne    L1409
  cmpl   $0x0,-0x4(%rbp)
  jne    L1409
L1480:
  mov    0x28(%rbp),%rax
  mov    (%rax),%eax
  cmp    $0x1,%eax
  jne    L902
  mov    -0x40(%rbp),%rax
  movl   $0x1,(%rax)
  jmp    L675
L902:
  mov    -0x40(%rbp),%rax
  movl   $0xffffffff,(%rax)
L675:
  addl   $0x1,-0x4(%rbp)
L1409:
  mov    -0x30(%rbp),%rax
  mov    (%rax),%eax
  cmp    $0x1,%eax
  jne    L761
  mov    -0x40(%rbp),%rax
  mov    (%rax),%eax
  cmp    $0x1,%eax
  jne    L761
  mov    -0x38(%rbp),%rax
  mov    (%rax),%eax
  test   %eax,%eax
  jne    L761
  cmpl   $0x0,-0x4(%rbp)
  je     L11
L761:
  mov    -0x30(%rbp),%rax
  mov    (%rax),%eax
  cmp    $0xffffffff,%eax
  jne    L2422
  mov    -0x40(%rbp),%rax
  mov    (%rax),%eax
  cmp    $0xffffffff,%eax
  jne    L2422
  mov    -0x38(%rbp),%rax
  mov    (%rax),%eax
  test   %eax,%eax
  jne    L2422
  cmpl   $0x0,-0x4(%rbp)
  jne    L2422
L11:
  mov    0x28(%rbp),%rax
  mov    (%rax),%eax
  cmp    $0x1,%eax
  jne    L2150
  mov    -0x38(%rbp),%rax
  movl   $0x1,(%rax)
  jmp    L2516
L2150:
  mov    -0x38(%rbp),%rax
  movl   $0xffffffff,(%rax)
L2516:
  addl   $0x1,-0x4(%rbp)
L2422:
  mov    -0x38(%rbp),%rax
  mov    (%rax),%eax
  cmp    $0x1,%eax
  jne    L703
  mov    -0x40(%rbp),%rax
  mov    (%rax),%eax
  cmp    $0x1,%eax
  jne    L703
  mov    -0x30(%rbp),%rax
  mov    (%rax),%eax
  test   %eax,%eax
  jne    L703
  cmpl   $0x0,-0x4(%rbp)
  je     L1157
L703:
  mov    -0x38(%rbp),%rax
  mov    (%rax),%eax
  cmp    $0xffffffff,%eax
  jne    L151
  mov    -0x40(%rbp),%rax
  mov    (%rax),%eax
  cmp    $0xffffffff,%eax
  jne    L151
  mov    -0x30(%rbp),%rax
  mov    (%rax),%eax
  test   %eax,%eax
  jne    L151
  cmpl   $0x0,-0x4(%rbp)
  jne    L151
L1157:
  mov    0x28(%rbp),%rax
  mov    (%rax),%eax
  cmp    $0x1,%eax
  jne    L2665
  mov    -0x30(%rbp),%rax
  movl   $0x1,(%rax)
  jmp    L1120
L2665:
  mov    -0x30(%rbp),%rax
  movl   $0xffffffff,(%rax)
L1120:
  addl   $0x1,-0x4(%rbp)
L151:
  mov    0x10(%rbp),%rax
  mov    (%rax),%eax
  cmp    $0x1,%eax
  jne    L1770
  mov    0x18(%rbp),%rax
  mov    (%rax),%eax
  cmp    $0x1,%eax
  jne    L1770
  mov    0x20(%rbp),%rax
  mov    (%rax),%eax
  test   %eax,%eax
  jne    L1770
  cmpl   $0x0,-0x4(%rbp)
  je     L2670
L1770:
  mov    0x10(%rbp),%rax
  mov    (%rax),%eax
  cmp    $0xffffffff,%eax
  jne    L2595
  mov    0x18(%rbp),%rax
  mov    (%rax),%eax
  cmp    $0xffffffff,%eax
  jne    L2595
  mov    0x20(%rbp),%rax
  mov    (%rax),%eax
  test   %eax,%eax
  jne    L2595
  cmpl   $0x0,-0x4(%rbp)
  jne    L2595
L2670:
  mov    0x28(%rbp),%rax
  mov    (%rax),%eax
  cmp    $0x1,%eax
  jne    L2195
  mov    0x20(%rbp),%rax
  movl   $0x1,(%rax)
  jmp    L799
L2195:
  mov    0x20(%rbp),%rax
  movl   $0xffffffff,(%rax)
L799:
  addl   $0x1,-0x4(%rbp)
L2595:
  mov    0x10(%rbp),%rax
  mov    (%rax),%eax
  cmp    $0x1,%eax
  jne    L745
  mov    0x20(%rbp),%rax
  mov    (%rax),%eax
  cmp    $0x1,%eax
  jne    L745
  mov    0x18(%rbp),%rax
  mov    (%rax),%eax
  test   %eax,%eax
  jne    L745
  cmpl   $0x0,-0x4(%rbp)
  je     L2448
L745:
  mov    0x10(%rbp),%rax
  mov    (%rax),%eax
  cmp    $0xffffffff,%eax
  jne    L1738
  mov    0x20(%rbp),%rax
  mov    (%rax),%eax
  cmp    $0xffffffff,%eax
  jne    L1738
  mov    0x18(%rbp),%rax
  mov    (%rax),%eax
  test   %eax,%eax
  jne    L1738
  cmpl   $0x0,-0x4(%rbp)
  jne    L1738
L2448:
  mov    0x28(%rbp),%rax
  mov    (%rax),%eax
  cmp    $0x1,%eax
  jne    L290
  mov    0x18(%rbp),%rax
  movl   $0x1,(%rax)
  jmp    L2175
L290:
  mov    0x18(%rbp),%rax
  movl   $0xffffffff,(%rax)
L2175:
  addl   $0x1,-0x4(%rbp)
L1738:
  mov    0x18(%rbp),%rax
  mov    (%rax),%eax
  cmp    $0x1,%eax
  jne    L240
  mov    0x20(%rbp),%rax
  mov    (%rax),%eax
  cmp    $0x1,%eax
  jne    L240
  mov    0x10(%rbp),%rax
  mov    (%rax),%eax
  test   %eax,%eax
  jne    L240
  cmpl   $0x0,-0x4(%rbp)
  je     L1280
L240:
  mov    0x18(%rbp),%rax
  mov    (%rax),%eax
  cmp    $0xffffffff,%eax
  jne    L1141
  mov    0x20(%rbp),%rax
  mov    (%rax),%eax
  cmp    $0xffffffff,%eax
  jne    L1141
  mov    0x10(%rbp),%rax
  mov    (%rax),%eax
  test   %eax,%eax
  jne    L1141
  cmpl   $0x0,-0x4(%rbp)
  jne    L1141
L1280:
  mov    0x28(%rbp),%rax
  mov    (%rax),%eax
  cmp    $0x1,%eax
  jne    L1885
  mov    0x10(%rbp),%rax
  movl   $0x1,(%rax)
  jmp    L278
L1885:
  mov    0x10(%rbp),%rax
  movl   $0xffffffff,(%rax)
L278:
  addl   $0x1,-0x4(%rbp)
L1141:
  mov    -0x18(%rbp),%rax
  mov    (%rax),%eax
  cmp    $0x1,%eax
  jne    L1241
  mov    0x10(%rbp),%rax
  mov    (%rax),%eax
  cmp    $0x1,%eax
  jne    L1241
  mov    -0x30(%rbp),%rax
  mov    (%rax),%eax
  test   %eax,%eax
  jne    L1241
  cmpl   $0x0,-0x4(%rbp)
  je     L397
L1241:
  mov    -0x18(%rbp),%rax
  mov    (%rax),%eax
  cmp    $0xffffffff,%eax
  jne    L641
  mov    0x10(%rbp),%rax
  mov    (%rax),%eax
  cmp    $0xffffffff,%eax
  jne    L641
  mov    -0x30(%rbp),%rax
  mov    (%rax),%eax
  test   %eax,%eax
  jne    L641
  cmpl   $0x0,-0x4(%rbp)
  jne    L641
L397:
  mov    0x28(%rbp),%rax
  mov    (%rax),%eax
  cmp    $0x1,%eax
  jne    L1364
  mov    -0x30(%rbp),%rax
  movl   $0x1,(%rax)
  jmp    L576
L1364:
  mov    -0x30(%rbp),%rax
  movl   $0xffffffff,(%rax)
L576:
  addl   $0x1,-0x4(%rbp)
L641:
  mov    -0x30(%rbp),%rax
  mov    (%rax),%eax
  cmp    $0x1,%eax
  jne    L1665
  mov    0x10(%rbp),%rax
  mov    (%rax),%eax
  cmp    $0x1,%eax
  jne    L1665
  mov    -0x18(%rbp),%rax
  mov    (%rax),%eax
  test   %eax,%eax
  jne    L1665
  cmpl   $0x0,-0x4(%rbp)
  je     L274
L1665:
  mov    -0x30(%rbp),%rax
  mov    (%rax),%eax
  cmp    $0xffffffff,%eax
  jne    L1135
  mov    0x10(%rbp),%rax
  mov    (%rax),%eax
  cmp    $0xffffffff,%eax
  jne    L1135
  mov    -0x18(%rbp),%rax
  mov    (%rax),%eax
  test   %eax,%eax
  jne    L1135
  cmpl   $0x0,-0x4(%rbp)
  jne    L1135
L274:
  mov    0x28(%rbp),%rax
  mov    (%rax),%eax
  cmp    $0x1,%eax
  jne    L1387
  mov    -0x18(%rbp),%rax
  movl   $0x1,(%rax)
  jmp    L805
L1387:
  mov    -0x18(%rbp),%rax
  movl   $0xffffffff,(%rax)
L805:
  addl   $0x1,-0x4(%rbp)
L1135:
  mov    -0x20(%rbp),%rax
  mov    (%rax),%eax
  cmp    $0x1,%eax
  jne    L485
  mov    -0x38(%rbp),%rax
  mov    (%rax),%eax
  cmp    $0x1,%eax
  jne    L485
  mov    0x18(%rbp),%rax
  mov    (%rax),%eax
  test   %eax,%eax
  jne    L485
  cmpl   $0x0,-0x4(%rbp)
  je     L2214
L485:
  mov    -0x20(%rbp),%rax
  mov    (%rax),%eax
  cmp    $0xffffffff,%eax
  jne    L183
  mov    -0x38(%rbp),%rax
  mov    (%rax),%eax
  cmp    $0xffffffff,%eax
  jne    L183
  mov    0x18(%rbp),%rax
  mov    (%rax),%eax
  test   %eax,%eax
  jne    L183
  cmpl   $0x0,-0x4(%rbp)
  jne    L183
L2214:
  mov    0x28(%rbp),%rax
  mov    (%rax),%eax
  cmp    $0x1,%eax
  jne    L622
  mov    0x18(%rbp),%rax
  movl   $0x1,(%rax)
  jmp    L753
L622:
  mov    0x18(%rbp),%rax
  movl   $0xffffffff,(%rax)
L753:
  addl   $0x1,-0x4(%rbp)
L183:
  mov    -0x20(%rbp),%rax
  mov    (%rax),%eax
  cmp    $0x1,%eax
  jne    L601
  mov    0x18(%rbp),%rax
  mov    (%rax),%eax
  cmp    $0x1,%eax
  jne    L601
  mov    -0x38(%rbp),%rax
  mov    (%rax),%eax
  test   %eax,%eax
  jne    L601
  cmpl   $0x0,-0x4(%rbp)
  je     L363
L601:
  mov    -0x20(%rbp),%rax
  mov    (%rax),%eax
  cmp    $0xffffffff,%eax
  jne    L1855
  mov    0x18(%rbp),%rax
  mov    (%rax),%eax
  cmp    $0xffffffff,%eax
  jne    L1855
  mov    -0x38(%rbp),%rax
  mov    (%rax),%eax
  test   %eax,%eax
  jne    L1855
  cmpl   $0x0,-0x4(%rbp)
  jne    L1855
L363:
  mov    0x28(%rbp),%rax
  mov    (%rax),%eax
  cmp    $0x1,%eax
  jne    L2666
  mov    -0x38(%rbp),%rax
  movl   $0x1,(%rax)
  jmp    L1797
L2666:
  mov    -0x38(%rbp),%rax
  movl   $0xffffffff,(%rax)
L1797:
  addl   $0x1,-0x4(%rbp)
L1855:
  mov    -0x38(%rbp),%rax
  mov    (%rax),%eax
  cmp    $0x1,%eax
  jne    L281
  mov    0x18(%rbp),%rax
  mov    (%rax),%eax
  cmp    $0x1,%eax
  jne    L281
  mov    -0x20(%rbp),%rax
  mov    (%rax),%eax
  test   %eax,%eax
  jne    L281
  cmpl   $0x0,-0x4(%rbp)
  je     L554
L281:
  mov    -0x38(%rbp),%rax
  mov    (%rax),%eax
  cmp    $0xffffffff,%eax
  jne    L857
  mov    0x18(%rbp),%rax
  mov    (%rax),%eax
  cmp    $0xffffffff,%eax
  jne    L857
  mov    -0x20(%rbp),%rax
  mov    (%rax),%eax
  test   %eax,%eax
  jne    L857
  cmpl   $0x0,-0x4(%rbp)
  jne    L857
L554:
  mov    0x28(%rbp),%rax
  mov    (%rax),%eax
  cmp    $0x1,%eax
  jne    L538
  mov    -0x20(%rbp),%rax
  movl   $0x1,(%rax)
  jmp    L1980
L538:
  mov    -0x20(%rbp),%rax
  movl   $0xffffffff,(%rax)
L1980:
  addl   $0x1,-0x4(%rbp)
L857:
  mov    -0x28(%rbp),%rax
  mov    (%rax),%eax
  cmp    $0x1,%eax
  jne    L1327
  mov    -0x40(%rbp),%rax
  mov    (%rax),%eax
  cmp    $0x1,%eax
  jne    L1327
  mov    0x20(%rbp),%rax
  mov    (%rax),%eax
  test   %eax,%eax
  jne    L1327
  cmpl   $0x0,-0x4(%rbp)
  je     L1065
L1327:
  mov    -0x28(%rbp),%rax
  mov    (%rax),%eax
  cmp    $0xffffffff,%eax
  jne    L1326
  mov    -0x40(%rbp),%rax
  mov    (%rax),%eax
  cmp    $0xffffffff,%eax
  jne    L1326
  mov    0x20(%rbp),%rax
  mov    (%rax),%eax
  test   %eax,%eax
  jne    L1326
  cmpl   $0x0,-0x4(%rbp)
  jne    L1326
L1065:
  mov    0x28(%rbp),%rax
  mov    (%rax),%eax
  cmp    $0x1,%eax
  jne    L1421
  mov    0x20(%rbp),%rax
  movl   $0x1,(%rax)
  jmp    L2039
L1421:
  mov    0x20(%rbp),%rax
  movl   $0xffffffff,(%rax)
L2039:
  addl   $0x1,-0x4(%rbp)
L1326:
  mov    -0x28(%rbp),%rax
  mov    (%rax),%eax
  cmp    $0x1,%eax
  jne    L301
  mov    0x20(%rbp),%rax
  mov    (%rax),%eax
  cmp    $0x1,%eax
  jne    L301
  mov    -0x40(%rbp),%rax
  mov    (%rax),%eax
  test   %eax,%eax
  jne    L301
  cmpl   $0x0,-0x4(%rbp)
  je     L1567
L301:
  mov    -0x28(%rbp),%rax
  mov    (%rax),%eax
  cmp    $0xffffffff,%eax
  jne    L578
  mov    0x20(%rbp),%rax
  mov    (%rax),%eax
  cmp    $0xffffffff,%eax
  jne    L578
  mov    -0x40(%rbp),%rax
  mov    (%rax),%eax
  test   %eax,%eax
  jne    L578
  cmpl   $0x0,-0x4(%rbp)
  jne    L578
L1567:
  mov    0x28(%rbp),%rax
  mov    (%rax),%eax
  cmp    $0x1,%eax
  jne    L416
  mov    -0x40(%rbp),%rax
  movl   $0x1,(%rax)
  jmp    L2517
L416:
  mov    -0x40(%rbp),%rax
  movl   $0xffffffff,(%rax)
L2517:
  addl   $0x1,-0x4(%rbp)
L578:
  mov    -0x40(%rbp),%rax
  mov    (%rax),%eax
  cmp    $0x1,%eax
  jne    L1217
  mov    0x20(%rbp),%rax
  mov    (%rax),%eax
  cmp    $0x1,%eax
  jne    L1217
  mov    -0x28(%rbp),%rax
  mov    (%rax),%eax
  test   %eax,%eax
  jne    L1217
  cmpl   $0x0,-0x4(%rbp)
  je     L1047
L1217:
  mov    -0x40(%rbp),%rax
  mov    (%rax),%eax
  cmp    $0xffffffff,%eax
  jne    L426
  mov    0x20(%rbp),%rax
  mov    (%rax),%eax
  cmp    $0xffffffff,%eax
  jne    L426
  mov    -0x28(%rbp),%rax
  mov    (%rax),%eax
  test   %eax,%eax
  jne    L426
  cmpl   $0x0,-0x4(%rbp)
  jne    L426
L1047:
  mov    0x28(%rbp),%rax
  mov    (%rax),%eax
  cmp    $0x1,%eax
  jne    L2477
  mov    -0x28(%rbp),%rax
  movl   $0x1,(%rax)
  jmp    L677
L2477:
  mov    -0x28(%rbp),%rax
  movl   $0xffffffff,(%rax)
L677:
  addl   $0x1,-0x4(%rbp)
L426:
  mov    -0x18(%rbp),%rax
  mov    (%rax),%eax
  cmp    $0x1,%eax
  jne    L537
  mov    0x20(%rbp),%rax
  mov    (%rax),%eax
  cmp    $0x1,%eax
  jne    L537
  mov    -0x38(%rbp),%rax
  mov    (%rax),%eax
  test   %eax,%eax
  jne    L537
  cmpl   $0x0,-0x4(%rbp)
  je     L2462
L537:
  mov    -0x18(%rbp),%rax
  mov    (%rax),%eax
  cmp    $0xffffffff,%eax
  jne    L2437
  mov    0x20(%rbp),%rax
  mov    (%rax),%eax
  cmp    $0xffffffff,%eax
  jne    L2437
  mov    -0x38(%rbp),%rax
  mov    (%rax),%eax
  test   %eax,%eax
  jne    L2437
  cmpl   $0x0,-0x4(%rbp)
  jne    L2437
L2462:
  mov    0x28(%rbp),%rax
  mov    (%rax),%eax
  cmp    $0x1,%eax
  jne    L1974
  mov    -0x38(%rbp),%rax
  movl   $0x1,(%rax)
  jmp    L2719
L1974:
  mov    -0x38(%rbp),%rax
  movl   $0xffffffff,(%rax)
L2719:
  addl   $0x1,-0x4(%rbp)
L2437:
  mov    -0x38(%rbp),%rax
  mov    (%rax),%eax
  cmp    $0x1,%eax
  jne    L1658
  mov    0x20(%rbp),%rax
  mov    (%rax),%eax
  cmp    $0x1,%eax
  jne    L1658
  mov    -0x18(%rbp),%rax
  mov    (%rax),%eax
  test   %eax,%eax
  jne    L1658
  cmpl   $0x0,-0x4(%rbp)
  je     L2557
L1658:
  mov    -0x38(%rbp),%rax
  mov    (%rax),%eax
  cmp    $0xffffffff,%eax
  jne    L264
  mov    0x20(%rbp),%rax
  mov    (%rax),%eax
  cmp    $0xffffffff,%eax
  jne    L264
  mov    -0x18(%rbp),%rax
  mov    (%rax),%eax
  test   %eax,%eax
  jne    L264
  cmpl   $0x0,-0x4(%rbp)
  jne    L264
L2557:
  mov    0x28(%rbp),%rax
  mov    (%rax),%eax
  cmp    $0x1,%eax
  jne    L1398
  mov    -0x18(%rbp),%rax
  movl   $0x1,(%rax)
  jmp    L1848
L1398:
  mov    -0x18(%rbp),%rax
  movl   $0xffffffff,(%rax)
L1848:
  addl   $0x1,-0x4(%rbp)
L264:
  mov    -0x28(%rbp),%rax
  mov    (%rax),%eax
  cmp    $0x1,%eax
  jne    L910
  mov    -0x38(%rbp),%rax
  mov    (%rax),%eax
  cmp    $0x1,%eax
  jne    L910
  mov    0x10(%rbp),%rax
  mov    (%rax),%eax
  test   %eax,%eax
  jne    L910
  cmpl   $0x0,-0x4(%rbp)
  je     L1178
L910:
  mov    -0x28(%rbp),%rax
  mov    (%rax),%eax
  cmp    $0xffffffff,%eax
  jne    L2137
  mov    -0x38(%rbp),%rax
  mov    (%rax),%eax
  cmp    $0xffffffff,%eax
  jne    L2137
  mov    0x10(%rbp),%rax
  mov    (%rax),%eax
  test   %eax,%eax
  jne    L2137
  cmpl   $0x0,-0x4(%rbp)
  jne    L2137
L1178:
  mov    0x28(%rbp),%rax
  mov    (%rax),%eax
  cmp    $0x1,%eax
  jne    L1216
  mov    0x10(%rbp),%rax
  movl   $0x1,(%rax)
  jmp    L620
L1216:
  mov    0x10(%rbp),%rax
  movl   $0xffffffff,(%rax)
L620:
  addl   $0x1,-0x4(%rbp)
L2137:
  mov    -0x28(%rbp),%rax
  mov    (%rax),%eax
  cmp    $0x1,%eax
  jne    L2233
  mov    0x10(%rbp),%rax
  mov    (%rax),%eax
  cmp    $0x1,%eax
  jne    L2233
  mov    -0x38(%rbp),%rax
  mov    (%rax),%eax
  test   %eax,%eax
  jne    L2233
  cmpl   $0x0,-0x4(%rbp)
  je     L685
L2233:
  mov    -0x28(%rbp),%rax
  mov    (%rax),%eax
  cmp    $0xffffffff,%eax
  jne    L1882
  mov    0x10(%rbp),%rax
  mov    (%rax),%eax
  cmp    $0xffffffff,%eax
  jne    L1882
  mov    -0x38(%rbp),%rax
  mov    (%rax),%eax
  test   %eax,%eax
  jne    L1882
  cmpl   $0x0,-0x4(%rbp)
  jne    L1882
L685:
  mov    0x28(%rbp),%rax
  mov    (%rax),%eax
  cmp    $0x1,%eax
  jne    L608
  mov    -0x38(%rbp),%rax
  movl   $0x1,(%rax)
  jmp    L1410
L608:
  mov    -0x38(%rbp),%rax
  movl   $0xffffffff,(%rax)
L1410:
  addl   $0x1,-0x4(%rbp)
L1882:
  mov    -0x38(%rbp),%rax
  mov    (%rax),%eax
  cmp    $0x1,%eax
  jne    L1858
  mov    0x10(%rbp),%rax
  mov    (%rax),%eax
  cmp    $0x1,%eax
  jne    L1858
  mov    -0x28(%rbp),%rax
  mov    (%rax),%eax
  test   %eax,%eax
  jne    L1858
  cmpl   $0x0,-0x4(%rbp)
  je     L506
L1858:
  mov    -0x38(%rbp),%rax
  mov    (%rax),%eax
  cmp    $0xffffffff,%eax
  jne    L1064
  mov    0x10(%rbp),%rax
  mov    (%rax),%eax
  cmp    $0xffffffff,%eax
  jne    L1064
  mov    -0x28(%rbp),%rax
  mov    (%rax),%eax
  test   %eax,%eax
  jne    L1064
  cmpl   $0x0,-0x4(%rbp)
  jne    L1064
L506:
  mov    0x28(%rbp),%rax
  mov    (%rax),%eax
  cmp    $0x1,%eax
  jne    L2168
  mov    -0x28(%rbp),%rax
  movl   $0x1,(%rax)
  jmp    L1842
L2168:
  mov    -0x28(%rbp),%rax
  movl   $0xffffffff,(%rax)
L1842:
  addl   $0x1,-0x4(%rbp)
L1064:
  mov    -0x38(%rbp),%rax
  mov    (%rax),%eax
  test   %eax,%eax
  jne    L1694
  cmpl   $0x0,-0x4(%rbp)
  jne    L1694
  mov    0x28(%rbp),%rax
  mov    (%rax),%eax
  cmp    $0x1,%eax
  jne    L930
  mov    -0x38(%rbp),%rax
  movl   $0x1,(%rax)
  jmp    L2718
L930:
  mov    -0x38(%rbp),%rax
  movl   $0xffffffff,(%rax)
L2718:
  movl   $0x1,-0x4(%rbp)
L1694:
  mov    -0x18(%rbp),%rax
  mov    (%rax),%eax
  test   %eax,%eax
  jne    L1954
  cmpl   $0x0,-0x4(%rbp)
  jne    L1954
  mov    0x28(%rbp),%rax
  mov    (%rax),%eax
  cmp    $0x1,%eax
  jne    L1030
  mov    -0x18(%rbp),%rax
  movl   $0x1,(%rax)
  jmp    L283
L1030:
  mov    -0x18(%rbp),%rax
  movl   $0xffffffff,(%rax)
L283:
  movl   $0x1,-0x4(%rbp)
L1954:
  mov    -0x28(%rbp),%rax
  mov    (%rax),%eax
  test   %eax,%eax
  jne    L2074
  cmpl   $0x0,-0x4(%rbp)
  jne    L2074
  mov    0x28(%rbp),%rax
  mov    (%rax),%eax
  cmp    $0x1,%eax
  jne    L1934
  mov    -0x28(%rbp),%rax
  movl   $0x1,(%rax)
  jmp    L2353
L1934:
  mov    -0x28(%rbp),%rax
  movl   $0xffffffff,(%rax)
L2353:
  movl   $0x1,-0x4(%rbp)
L2074:
  mov    0x10(%rbp),%rax
  mov    (%rax),%eax
  test   %eax,%eax
  jne    L545
  cmpl   $0x0,-0x4(%rbp)
  jne    L545
  mov    0x28(%rbp),%rax
  mov    (%rax),%eax
  cmp    $0x1,%eax
  jne    L988
  mov    0x10(%rbp),%rax
  movl   $0x1,(%rax)
  jmp    L691
L988:
  mov    0x10(%rbp),%rax
  movl   $0xffffffff,(%rax)
L691:
  movl   $0x1,-0x4(%rbp)
L545:
  mov    0x20(%rbp),%rax
  mov    (%rax),%eax
  test   %eax,%eax
  jne    L1577
  cmpl   $0x0,-0x4(%rbp)
  jne    L1577
  mov    0x28(%rbp),%rax
  mov    (%rax),%eax
  cmp    $0x1,%eax
  jne    L1083
  mov    0x20(%rbp),%rax
  movl   $0x1,(%rax)
  jmp    L565
L1083:
  mov    0x20(%rbp),%rax
  movl   $0xffffffff,(%rax)
L565:
  movl   $0x1,-0x4(%rbp)
L1577:
  mov    -0x20(%rbp),%rax
  mov    (%rax),%eax
  test   %eax,%eax
  jne    L2145
  cmpl   $0x0,-0x4(%rbp)
  jne    L2145
  mov    0x28(%rbp),%rax
  mov    (%rax),%eax
  cmp    $0x1,%eax
  jne    L1725
  mov    -0x20(%rbp),%rax
  movl   $0x1,(%rax)
  jmp    L1927
L1725:
  mov    -0x20(%rbp),%rax
  movl   $0xffffffff,(%rax)
L1927:
  movl   $0x1,-0x4(%rbp)
L2145:
  mov    0x18(%rbp),%rax
  mov    (%rax),%eax
  test   %eax,%eax
  jne    L1198
  cmpl   $0x0,-0x4(%rbp)
  jne    L1198
  mov    0x28(%rbp),%rax
  mov    (%rax),%eax
  cmp    $0x1,%eax
  jne    L2194
  mov    0x18(%rbp),%rax
  movl   $0x1,(%rax)
  jmp    L2628
L2194:
  mov    0x18(%rbp),%rax
  movl   $0xffffffff,(%rax)
L2628:
  movl   $0x1,-0x4(%rbp)
L1198:
  mov    0x30(%rbp),%rax
  mov    (%rax),%eax
  cmp    $0x2,%eax
  jne    L2255
  mov    0x28(%rbp),%rax
  mov    (%rax),%eax
  cmp    $0x1,%eax
  jne    L2377
  mov    0x28(%rbp),%rax
  movl   $0xffffffff,(%rax)
  jmp    L2255
L2377:
  mov    0x28(%rbp),%rax
  movl   $0x1,(%rax)
L2255:
  cmpl   $0x0,-0x4(%rbp)
  je     L2056
  nop
  nop
  pop    %rbp
  ret
```

assistant: ```c
void niveldificil(int *tabuleiro0, int *tabuleiro1, int *tabuleiro2, int *tabuleiro3, int *tabuleiro4, int *tabuleiro5, int *tabuleiro6, int *tabuleiro7, int *tabuleiro8, int *turnomaquina, int *mododejogo) {
  int marquei = 0;
  while (marquei == 0) {
    if ((*tabuleiro0 == 1 && *tabuleiro1 == 1 && *tabuleiro2 == 0 && marquei == 0) || (*tabuleiro0 == -1 && *tabuleiro1 == -1 && *tabuleiro2 == 0 && marquei == 0)) {
      if (*turnomaquina == 1)
        *tabuleiro2 = 1;
      else
        *tabuleiro2 = -1;
      marquei = marquei + 1;
    }
    if ((*tabuleiro0 == 1 && *tabuleiro2 == 1 && *tabuleiro1 == 0 && marquei == 0) || (*tabuleiro0 == -1 && *tabuleiro2 == -1 && *tabuleiro1 == 0 && marquei == 0)) {
      if (*turnomaquina == 1)
        *tabuleiro1 = 1;
      else
        *tabuleiro1 = -1;
      marquei = marquei + 1;
    }
    if ((*tabuleiro0 == 1 && *tabuleiro3 == 1 && *tabuleiro6 == 0 && marquei == 0) || (*tabuleiro0 == -1 && *tabuleiro3 == -1 && *tabuleiro6 == 0 && marquei == 0)) {
      if (*turnomaquina == 1)
        *tabuleiro6 = 1;
      else
        *tabuleiro6 = -1;
      marquei = marquei + 1;
    }
    if ((*tabuleiro1 == 1 && *tabuleiro2 == 1 && *tabuleiro0 == 0 && marquei == 0) || (*tabuleiro1 == -1 && *tabuleiro2 == -1 && *tabuleiro0 == 0 && marquei == 0)) {
      if (*turnomaquina == 1)
        *tabuleiro0 = 1;
      else
        *tabuleiro0 = -1;
      marquei = marquei + 1;
    }
    if ((*tabuleiro0 == 1 && *tabuleiro4 == 1 && *tabuleiro8 == 0 && marquei == 0) || (*tabuleiro0 == -1 && *tabuleiro4 == -1 && *tabuleiro8 == 0 && marquei == 0)) {
      if (*turnomaquina == 1)
        *tabuleiro8 = 1;
      else
        *tabuleiro8 = -1;
      marquei = marquei + 1;
    }
    if ((*tabuleiro3 == 1 && *tabuleiro4 == 1 && *tabuleiro5 == 0 && marquei == 0) || (*tabuleiro3 == -1 && *tabuleiro4 == -1 && *tabuleiro5 == 0 && marquei == 0)) {
      if (*turnomaquina == 1)
        *tabuleiro5 = 1;
      else
        *tabuleiro5 = -1;
      marquei = marquei + 1;
    }
    if ((*tabuleiro3 == 1 && *tabuleiro5 == 1 && *tabuleiro4 == 0 && marquei == 0) || (*tabuleiro3 == -1 && *tabuleiro5 == -1 && *tabuleiro4 == 0 && marquei == 0)) {
      if (*turnomaquina == 1)
        *tabuleiro4 = 1;
      else
        *tabuleiro4 = -1;
      marquei = marquei + 1;
    }
    if ((*tabuleiro4 == 1 && *tabuleiro5 == 1 && *tabuleiro3 == 0 && marquei == 0) || (*tabuleiro4 == -1 && *tabuleiro5 == -1 && *tabuleiro3 == 0 && marquei == 0)) {
      if (*turnomaquina == 1)
        *tabuleiro3 = 1;
      else
        *tabuleiro3 = -1;
      marquei = marquei + 1;
    }
    if ((*tabuleiro6 == 1 && *tabuleiro7 == 1 && *tabuleiro8 == 0 && marquei == 0) || (*tabuleiro6 == -1 && *tabuleiro7 == -1 && *tabuleiro8 == 0 && marquei == 0)) {
      if (*turnomaquina == 1)
        *tabuleiro8 = 1;
      else
        *tabuleiro8 = -1;
      marquei = marquei + 1;
    }
    if ((*tabuleiro6 == 1 && *tabuleiro8 == 1 && *tabuleiro7 == 0 && marquei == 0) || (*tabuleiro6 == -1 && *tabuleiro8 == -1 && *tabuleiro7 == 0 && marquei == 0)) {
      if (*turnomaquina == 1)
        *tabuleiro7 = 1;
      else
        *tabuleiro7 = -1;
      marquei = marquei + 1;
    }
    if ((*tabuleiro7 == 1 && *tabuleiro8 == 1 && *tabuleiro6 == 0 && marquei == 0) || (*tabuleiro7 == -1 && *tabuleiro8 == -1 && *tabuleiro6 == 0 && marquei == 0)) {
      if (*turnomaquina == 1)
        *tabuleiro6 = 1;
      else
        *tabuleiro6 = -1;
      marquei = marquei + 1;
    }
    if ((*tabuleiro0 == 1 && *tabuleiro6 == 1 && *tabuleiro3 == 0 && marquei == 0) || (*tabuleiro0 == -1 && *tabuleiro6 == -1 && *tabuleiro3 == 0 && marquei == 0)) {
      if (*turnomaquina == 1)
        *tabuleiro3 = 1;
      else
        *tabuleiro3 = -1;
      marquei = marquei + 1;
    }
    if ((*tabuleiro3 == 1 && *tabuleiro6 == 1 && *tabuleiro0 == 0 && marquei == 0) || (*tabuleiro3 == -1 && *tabuleiro6 == -1 && *tabuleiro0 == 0 && marquei == 0)) {
      if (*turnomaquina == 1)
        *tabuleiro0 = 1;
      else
        *tabuleiro0 = -1;
      marquei = marquei + 1;
    }
    if ((*tabuleiro1 == 1 && *tabuleiro4 == 1 && *tabuleiro7 == 0 && marquei == 0) || (*tabuleiro1 == -1 && *tabuleiro4 == -1 && *tabuleiro7 == 0 && marquei == 0)) {
      if (*turnomaquina == 1)
        *tabuleiro7 = 1;
      else
        *tabuleiro7 = -1;
      marquei = marquei + 1;
    }
    if ((*tabuleiro1 == 1 && *tabuleiro7 == 1 && *tabuleiro4 == 0 && marquei == 0) || (*tabuleiro1 == -1 && *tabuleiro7 == -1 && *tabuleiro4 == 0 && marquei == 0)) {
      if (*turnomaquina == 1)
        *tabuleiro4 = 1;
      else
        *tabuleiro4 = -1;
      marquei = marquei + 1;
    }
    if ((*tabuleiro4 == 1 && *tabuleiro7 == 1 && *tabuleiro1 == 0 && marquei == 0) || (*tabuleiro4 == -1 && *tabuleiro7 == -1 && *tabuleiro1 == 0 && marquei == 0)) {
      if (*turnomaquina == 1)
        *tabuleiro1 = 1;
      else
        *tabuleiro1 = -1;
      marquei = marquei + 1;
    }
    if ((*tabuleiro2 == 1 && *tabuleiro5 == 1 && *tabuleiro8 == 0 && marquei == 0) || (*tabuleiro2 == -1 && *tabuleiro5 == -1 && *tabuleiro8 == 0 && marquei == 0)) {
      if (*turnomaquina == 1)
        *tabuleiro8 = 1;
      else
        *tabuleiro8 = -1;
      marquei = marquei + 1;
    }
    if ((*tabuleiro2 == 1 && *tabuleiro8 == 1 && *tabuleiro5 == 0 && marquei == 0) || (*tabuleiro2 == -1 && *tabuleiro8 == -1 && *tabuleiro5 == 0 && marquei == 0)) {
      if (*turnomaquina == 1)
        *tabuleiro5 = 1;
      else
        *tabuleiro5 = -1;
      marquei = marquei + 1;
    }
    if ((*tabuleiro5 == 1 && *tabuleiro8 == 1 && *tabuleiro2 == 0 && marquei == 0) || (*tabuleiro5 == -1 && *tabuleiro8 == -1 && *tabuleiro2 == 0 && marquei == 0)) {
      if (*turnomaquina == 1)
        *tabuleiro2 = 1;
      else
        *tabuleiro2 = -1;
      marquei = marquei + 1;
    }
    if ((*tabuleiro0 == 1 && *tabuleiro8 == 1 && *tabuleiro4 == 0 && marquei == 0) || (*tabuleiro0 == -1 && *tabuleiro8 == -1 && *tabuleiro4 == 0 && marquei == 0)) {
      if (*turnomaquina == 1)
        *tabuleiro4 = 1;
      else
        *tabuleiro4 = -1;
      marquei = marquei + 1;
    }
    if ((*tabuleiro4 == 1 && *tabuleiro8 == 1 && *tabuleiro0 == 0 && marquei == 0) || (*tabuleiro4 == -1 && *tabuleiro8 == -1 && *tabuleiro0 == 0 && marquei == 0)) {
      if (*turnomaquina == 1)
        *tabuleiro0 = 1;
      else
        *tabuleiro0 = -1;
      marquei = marquei + 1;
    }
    if ((*tabuleiro2 == 1 && *tabuleiro4 == 1 && *tabuleiro6 == 0 && marquei == 0) || (*tabuleiro2 == -1 && *tabuleiro4 == -1 && *tabuleiro6 == 0 && marquei == 0)) {
      if (*turnomaquina == 1)
        *tabuleiro6 = 1;
      else
        *tabuleiro6 = -1;
      marquei = marquei + 1;
    }
    if ((*tabuleiro2 == 1 && *tabuleiro6 == 1 && *tabuleiro4 == 0 && marquei == 0) || (*tabuleiro2 == -1 && *tabuleiro6 == -1 && *tabuleiro4 == 0 && marquei == 0)) {
      if (*turnomaquina == 1)
        *tabuleiro4 = 1;
      else
        *tabuleiro4 = -1;
      marquei = marquei + 1;
    }
    if ((*tabuleiro4 == 1 && *tabuleiro6 == 1 && *tabuleiro2 == 0 && marquei == 0) || (*tabuleiro4 == -1 && *tabuleiro6 == -1 && *tabuleiro2 == 0 && marquei == 0)) {
      if (*turnomaquina == 1)
        *tabuleiro2 = 1;
      else
        *tabuleiro2 = -1;
      marquei = marquei + 1;
    }
    if (*tabuleiro4 == 0 && marquei == 0) {
      if (*turnomaquina == 1)
        *tabuleiro4 = 1;
      else
        *tabuleiro4 = -1;
      marquei = 1;
    }
    if (*tabuleiro0 == 0 && marquei == 0) {
      if (*turnomaquina == 1)
        *tabuleiro0 = 1;
      else
        *tabuleiro0 = -1;
      marquei = 1;
    }
    if (*tabuleiro2 == 0 && marquei == 0) {
      if (*turnomaquina == 1)
        *tabuleiro2 = 1;
      else
        *tabuleiro2 = -1;
      marquei = 1;
    }
    if (*tabuleiro6 == 0 && marquei == 0) {
      if (*turnomaquina == 1)
        *tabuleiro6 = 1;
      else
        *tabuleiro6 = -1;
      marquei = 1;
    }
    if (*tabuleiro8 == 0 && marquei == 0) {
      if (*turnomaquina == 1)
        *tabuleiro8 = 1;
      else
        *tabuleiro8 = -1;
      marquei = 1;
    }
    if (*tabuleiro1 == 0 && marquei == 0) {
      if (*turnomaquina == 1)
        *tabuleiro1 = 1;
      else
        *tabuleiro1 = -1;
      marquei = 1;
    }
    if (*tabuleiro7 == 0 && marquei == 0) {
      if (*turnomaquina == 1)
        *tabuleiro7 = 1;
      else
        *tabuleiro7 = -1;
      marquei = 1;
    }
    if (*mododejogo == 2) {
      if (*turnomaquina == 1)
        *turnomaquina = -1;
      else
        *turnomaquina = 1;
    }
  }
}
```