user: Converte this assembly snippet into its equivalent C code:

```asm
<niveldificil>:
  endbr64
  push   %r15
  mov    (%rdi),%r15d
  mov    %rsi,%r11
  mov    %rdx,%rsi
  push   %r14
  mov    $0xffffffff,%r14d
  push   %r13
  mov    %rcx,%r13
  push   %r12
  push   %rbp
  mov    %r15d,%ebp
  push   %rbx
  mov    (%r11),%ebx
  mov    0x38(%rsp),%r10
  mov    0x40(%rsp),%r12
  mov    0x48(%rsp),%rcx
  mov    0x50(%rsp),%rdx
  cmp    $0x1,%r15d
  je     L2807
L2371:
  xor    %eax,%eax
  cmp    $0xffffffff,%r15d
  je     L456
L1259:
  cmp    $0x1,%ebx
  je     L585
L1543:
  cmp    $0xffffffff,%ebx
  je     L229
L1651:
  mov    (%r8),%r15d
  mov    %r15d,%ebx
  cmp    $0x1,%ebp
  je     L887
  cmp    $0xffffffff,%ebp
  je     L113
L1125:
  mov    0x0(%r13),%ebp
  cmp    $0x1,%ebp
  je     L2731
L1747:
  cmp    $0xffffffff,%ebp
  je     L295
L1141:
  cmp    $0x1,%ebx
  je     L1113
L2052:
  cmp    $0xffffffff,%ebx
  je     L937
L2050:
  mov    (%r10),%ebp
  mov    (%r12),%ebx
  cmp    $0x1,%ebp
  je     L2794
  cmp    $0xffffffff,%ebp
  je     L1670
L2679:
  cmp    $0x1,%ebx
  je     L1800
L690:
  cmp    $0xffffffff,%ebx
  je     L1774
L2830:
  mov    0x0(%r13),%ebp
  mov    (%rdi),%r15d
  mov    %ebp,%ebx
  cmp    $0x1,%r15d
  je     L1457
L1499:
  mov    %ebp,%ebx
  cmp    $0xffffffff,%r15d
  je     L2077
L1946:
  cmp    $0x1,%ebx
  je     L1602
L2089:
  cmp    $0xffffffff,%ebx
  je     L1412
L1556:
  mov    (%r11),%ebp
  mov    (%r8),%ebx
  cmp    $0x1,%ebp
  je     L592
L138:
  cmp    $0xffffffff,%ebp
  je     L385
L2762:
  cmp    $0x1,%ebx
  je     L1757
L516:
  cmp    $0xffffffff,%ebx
  je     L276
L1875:
  mov    (%rsi),%ebp
  mov    (%r9),%ebx
  cmp    $0x1,%ebp
  je     L114
L1650:
  cmp    $0xffffffff,%ebp
  je     L1930
L710:
  cmp    $0x1,%ebx
  je     L1769
L31:
  cmp    $0xffffffff,%ebx
  je     L250
L1032:
  mov    (%rdi),%ebp
  mov    (%r8),%ebx
  cmp    $0x1,%ebp
  je     L2526
L1564:
  cmp    $0xffffffff,%ebp
  je     L1548
L2554:
  cmp    $0x1,%ebx
  je     L579
  cmp    $0xffffffff,%ebx
  je     L510
L2255:
  mov    (%rsi),%ebp
  cmp    $0x1,%ebp
  je     L1569
L814:
  cmp    $0xffffffff,%ebp
  je     L1603
L2571:
  cmp    $0x1,%ebx
  je     L787
L2664:
  cmp    $0xffffffff,%ebx
  je     L1522
  or     %eax,%ebx
  jne    L924
  mov    (%rdx),%eax
  cmp    $0x1,%eax
  cmovne %r14d,%eax
  mov    %eax,(%r8)
  mov    $0x1,%eax
L1069:
  mov    %eax,%ebx
  or     (%r10),%ebx
  jne    L663
  mov    (%rdx),%eax
  cmp    $0x1,%eax
  cmovne %r14d,%eax
  mov    %eax,(%r10)
  mov    $0x1,%eax
L1648:
  mov    %eax,%ebx
  or     (%r12),%ebx
  jne    L1689
  cmpl   $0x1,(%rdx)
  je     L2778
  mov    0x58(%rsp),%rax
  movl   $0xffffffff,(%r12)
  cmpl   $0x2,(%rax)
  je     L2375
L1456:
  pop    %rbx
  pop    %rbp
  pop    %r12
  pop    %r13
  pop    %r14
  pop    %r15
  ret
  nopl   0x0(%rax,%rax,1)
L1569:
  cmpl   $0x1,(%r10)
  jne    L1553
L829:
  mov    %ebx,%r15d
  or     %eax,%r15d
  jne    L2571
  mov    (%rdx),%eax
  cmp    $0x1,%eax
  je     L2535
  movl   $0xffffffff,(%r8)
  mov    $0x1,%eax
L1522:
  cmpl   $0xffffffff,(%r10)
  je     L2151
L924:
  mov    %eax,%ebx
  or     (%rdi),%ebx
  jne    L334
L141:
  mov    (%rdx),%eax
  cmp    $0x1,%eax
  cmovne %r14d,%eax
  mov    %eax,(%rdi)
  mov    $0x1,%eax
L663:
  mov    %eax,%ebx
  or     (%rcx),%ebx
  jne    L1126
  mov    (%rdx),%eax
  cmp    $0x1,%eax
  cmovne %r14d,%eax
  mov    %eax,(%rcx)
  mov    0x58(%rsp),%rax
  cmpl   $0x2,(%rax)
  je     L429
  pop    %rbx
  pop    %rbp
  pop    %r12
  pop    %r13
  pop    %r14
  pop    %r15
  ret
  nop
L2175:
  movl   $0x1,(%r8)
  nopw   0x0(%rax,%rax,1)
L579:
  mov    (%rcx),%ebx
  cmp    $0x1,%ebx
  je     L780
  mov    (%rsi),%ebx
  cmp    $0x1,%ebx
  je     L720
  cmp    $0xffffffff,%ebx
  je     L993
L787:
  cmpl   $0x1,(%r10)
  jne    L924
L2151:
  mov    %eax,%ebx
  or     (%rsi),%ebx
  jne    L1132
  xor    %eax,%eax
  cmpl   $0x1,(%rdx)
  sete   %al
  lea    -0x1(%rax,%rax,1),%eax
  mov    %eax,(%rsi)
  mov    $0x1,%eax
L334:
  mov    %eax,%ebx
  or     (%rsi),%ebx
  jne    L1069
  mov    (%rdx),%eax
  cmp    $0x1,%eax
  cmovne %r14d,%eax
  mov    %eax,(%rsi)
  mov    $0x1,%eax
L1126:
  mov    %eax,%ebx
  or     (%r11),%ebx
  jne    L1648
  mov    (%rdx),%eax
  cmp    $0x1,%eax
  cmovne %r14d,%eax
  mov    %eax,(%r11)
  mov    0x58(%rsp),%rax
  cmpl   $0x2,(%rax)
  jne    L1456
L429:
  cmpl   $0x1,(%rdx)
  je     L965
  mov    $0x1,%eax
L1784:
  movl   $0x1,(%rdx)
L1762:
  test   %eax,%eax
  jne    L1456
  mov    (%rdi),%r15d
  mov    (%r11),%ebx
  mov    %r15d,%ebp
  cmp    $0x1,%r15d
  jne    L2371
L2807:
  mov    (%rsi),%eax
  cmp    $0x1,%ebx
  je     L2318
L2533:
  cmp    $0x1,%eax
  je     L774
L1148:
  xor    %eax,%eax
L824:
  cmpl   $0x1,0x0(%r13)
  je     L2476
L1993:
  mov    (%r11),%ebx
  mov    $0x1,%ebp
  cmp    $0x1,%ebx
  jne    L1543
L585:
  cmpl   $0x1,(%rsi)
  jne    L1651
L1623:
  mov    %eax,%ebx
  or     %ebp,%ebx
  jne    L1651
  mov    (%rdx),%eax
  cmp    $0x1,%eax
  je     L1663
  movl   $0xffffffff,(%rdi)
  mov    (%r8),%r15d
  mov    $0x1,%eax
L113:
  mov    %r15d,%ebx
  cmp    $0xffffffff,%r15d
  jne    L1125
L428:
  mov    %eax,%r15d
  or     (%rcx),%r15d
  jne    L1125
  mov    (%rdx),%eax
  cmp    $0x1,%eax
  je     L2441
  movl   $0xffffffff,(%rcx)
  mov    0x0(%r13),%ebp
  mov    $0x1,%eax
  mov    (%r8),%ebx
  cmp    $0x1,%ebp
  jne    L1747
  nopl   0x0(%rax)
L2731:
  mov    (%r9),%ebp
  cmp    $0x1,%ebx
  jne    L1310
  mov    %eax,%ebx
  or     %ebp,%ebx
  jne    L1779
  mov    (%rdx),%eax
  cmp    $0x1,%eax
  je     L1447
L1111:
  movl   $0xffffffff,(%r9)
  mov    0x0(%r13),%eax
  cmp    $0x1,%eax
  jne    L2182
  mov    (%r8),%eax
  cmp    $0x1,%eax
  je     L2050
  mov    %eax,%ebx
  mov    $0x1,%eax
  jmp    L2052
  nopl   (%rax)
L774:
  mov    (%r11),%eax
  test   %eax,%eax
  jne    L1148
L1154:
  mov    (%rdx),%ebx
  cmp    $0x1,%ebx
  cmovne %r14d,%ebx
  mov    %ebx,(%r11)
  mov    (%rdi),%ebp
  mov    %ebp,%r15d
  cmp    $0x1,%ebp
  jne    L1749
L1375:
  mov    0x0(%r13),%eax
  cmp    $0x1,%eax
  je     L1512
  mov    $0x1,%eax
  jmp    L1993
  nopl   0x0(%rax)
L2794:
  mov    (%rcx),%ebp
  cmp    $0x1,%ebx
  je     L2330
  cmp    $0x1,%ebp
  jne    L690
  mov    %eax,%r15d
  or     %ebx,%r15d
  jne    L690
  mov    (%rdx),%eax
  cmp    $0x1,%eax
  je     L1628
L2137:
  movl   $0xffffffff,(%r12)
  mov    $0x1,%eax
L1774:
  cmpl   $0xffffffff,(%rcx)
  jne    L2830
L186:
  mov    %eax,%ebx
  or     (%r10),%ebx
  jne    L2830
  mov    (%rdx),%eax
  cmp    $0x1,%eax
  je     L1238
  movl   $0xffffffff,(%r10)
  mov    0x0(%r13),%ebp
  mov    $0x1,%eax
  mov    (%rdi),%r15d
  mov    %ebp,%ebx
  cmp    $0x1,%r15d
  jne    L1499
  xchg   %ax,%ax
L345:
  cmp    $0x1,%ebp
  jne    L2089
  mov    (%r11),%ebp
  mov    (%r8),%ebx
  cmp    $0x1,%ebp
  jne    L138
  nopl   0x0(%rax,%rax,1)
L592:
  mov    (%r12),%ebp
  cmp    $0x1,%ebx
  je     L167
  cmp    $0x1,%ebp
  jne    L516
  mov    %ebx,%r15d
  or     %eax,%r15d
  jne    L516
  mov    (%rdx),%eax
  cmp    $0x1,%eax
  je     L1814
L1044:
  movl   $0xffffffff,(%r8)
  mov    $0x1,%eax
L276:
  cmpl   $0xffffffff,(%r12)
  jne    L1875
L777:
  mov    %eax,%ebx
  or     (%r11),%ebx
  jne    L1875
  mov    (%rdx),%eax
  cmp    $0x1,%eax
  je     L1371
  movl   $0xffffffff,(%r11)
  mov    (%rsi),%ebp
  mov    $0x1,%eax
  mov    (%r9),%ebx
  cmp    $0x1,%ebp
  jne    L1650
  nopl   0x0(%rax)
L114:
  mov    (%rcx),%ebp
  cmp    $0x1,%ebx
  je     L896
  cmp    $0x1,%ebp
  jne    L31
  mov    %ebx,%r15d
  or     %eax,%r15d
  jne    L31
  mov    (%rdx),%eax
  cmp    $0x1,%eax
  je     L1840
L2448:
  movl   $0xffffffff,(%r9)
  mov    $0x1,%eax
L250:
  cmpl   $0xffffffff,(%rcx)
  jne    L1032
L248:
  mov    %eax,%ebx
  or     (%rsi),%ebx
  jne    L1032
  mov    (%rdx),%eax
  cmp    $0x1,%eax
  je     L410
  movl   $0xffffffff,(%rsi)
  mov    (%rdi),%ebp
  mov    $0x1,%eax
  mov    (%r8),%ebx
  cmp    $0x1,%ebp
  jne    L1564
  cs nopw 0x0(%rax,%rax,1)
L2526:
  cmpl   $0x1,(%rcx)
  jne    L2554
L2291:
  mov    %ebx,%r15d
  or     %eax,%r15d
  jne    L2554
  mov    (%rdx),%eax
  cmp    $0x1,%eax
  je     L2175
  movl   $0xffffffff,(%r8)
  mov    $0x1,%eax
L510:
  mov    (%rcx),%ebx
  cmp    $0xffffffff,%ebx
  je     L780
  mov    $0xffffffff,%ebx
  jmp    L2255
  nopl   0x0(%rax)
L1663:
  movl   $0x1,(%rdi)
  mov    (%r8),%r15d
  nopl   0x0(%rax)
L887:
  mov    %r15d,%ebx
  cmp    $0x1,%r15d
  je     L428
  mov    0x0(%r13),%ebp
  cmp    $0x1,%ebp
  jne    L1747
  mov    (%r9),%ebp
L1310:
  cmp    $0x1,%ebp
  jne    L2052
  mov    %eax,%r15d
  or     %ebx,%r15d
  jne    L2052
  mov    (%rdx),%eax
  cmp    $0x1,%eax
  je     L488
L2838:
  movl   $0xffffffff,(%r8)
  mov    $0x1,%eax
L937:
  cmpl   $0xffffffff,(%r9)
  jne    L2050
L2396:
  mov    %eax,%ebx
  or     0x0(%r13),%ebx
  jne    L2050
  mov    (%rdx),%eax
  cmp    $0x1,%eax
  je     L1936
  movl   $0xffffffff,0x0(%r13)
  mov    $0x1,%eax
  jmp    L2050
  nopl   0x0(%rax)
L896:
  mov    %ebp,%ebx
  or     %eax,%ebx
  je     L338
  cmp    $0x1,%ebp
  je     L1308
  nopl   0x0(%rax,%rax,1)
L1769:
  cmpl   $0x1,(%rcx)
  jne    L1032
  jmp    L248
  xchg   %ax,%ax
L1457:
  cmpl   $0x1,(%r10)
  jne    L345
L893:
  mov    %ebp,%r15d
  mov    %ebp,%ebx
  or     %eax,%r15d
  jne    L1946
  mov    (%rdx),%eax
  cmp    $0x1,%eax
  je     L1109
  movl   $0xffffffff,0x0(%r13)
  mov    $0x1,%eax
L1412:
  cmpl   $0xffffffff,(%r10)
  jne    L1556
L505:
  mov    %eax,%ebx
  or     (%rdi),%ebx
  jne    L1556
  mov    (%rdx),%eax
  cmp    $0x1,%eax
  je     L1901
  movl   $0xffffffff,(%rdi)
  mov    $0x1,%eax
  jmp    L1556
  nop
L1930:
  mov    (%rcx),%ebp
  cmp    $0xffffffff,%ebx
  je     L1367
  cmp    $0xffffffff,%ebp
  jne    L710
  mov    %ebx,%r15d
  or     %eax,%r15d
  jne    L710
  mov    (%rdx),%eax
  cmp    $0x1,%eax
  jne    L2448
L1840:
  movl   $0x1,(%r9)
  cmpl   $0x1,(%rcx)
  jne    L1032
  jmp    L248
L1670:
  mov    (%rcx),%ebp
  cmp    $0xffffffff,%ebx
  je     L2281
  cmp    $0xffffffff,%ebp
  jne    L2679
  mov    %eax,%r15d
  or     %ebx,%r15d
  jne    L2679
  mov    (%rdx),%eax
  cmp    $0x1,%eax
  jne    L2137
L1628:
  movl   $0x1,(%r12)
  nopl   0x0(%rax,%rax,1)
L1800:
  cmpl   $0x1,(%rcx)
  jne    L2830
  jmp    L186
  cs nopw 0x0(%rax,%rax,1)
L295:
  mov    (%r9),%ebp
  cmp    $0xffffffff,%ebx
  je     L793
  cmp    $0xffffffff,%ebp
  jne    L1141
  mov    %eax,%r15d
  or     %ebx,%r15d
  jne    L1141
  mov    (%rdx),%eax
  cmp    $0x1,%eax
  jne    L2838
L488:
  movl   $0x1,(%r8)
  nopl   0x0(%rax,%rax,1)
L1113:
  cmpl   $0x1,(%r9)
  jne    L2050
  jmp    L2396
  nopw   0x0(%rax,%rax,1)
L385:
  mov    (%r12),%ebp
  cmp    $0xffffffff,%ebx
  je     L744
  cmp    $0xffffffff,%ebp
  jne    L2762
  mov    %ebx,%r15d
  or     %eax,%r15d
  jne    L2762
  mov    (%rdx),%eax
  cmp    $0x1,%eax
  jne    L1044
L1814:
  movl   $0x1,(%r8)
  nopl   0x0(%rax)
L1757:
  cmpl   $0x1,(%r12)
  jne    L1875
  jmp    L777
  nopl   0x0(%rax,%rax,1)
L1548:
  cmpl   $0xffffffff,(%rcx)
  jne    L2554
  jmp    L2291
  xchg   %ax,%ax
L456:
  mov    (%rsi),%ebp
  cmp    $0xffffffff,%ebx
  je     L2653
  cmp    $0xffffffff,%ebp
  je     L2660
L1176:
  cmpl   $0xffffffff,0x0(%r13)
  je     L2476
L698:
  mov    (%r11),%ebx
  mov    $0xffffffff,%ebp
  jmp    L1259
  nopl   0x0(%rax)
L229:
  cmpl   $0xffffffff,(%rsi)
  jne    L1651
  jmp    L1623
  xchg   %ax,%ax
L2077:
  cmpl   $0xffffffff,(%r10)
  je     L893
  cmp    $0x1,%ebx
  jne    L2089
L1602:
  cmpl   $0x1,(%r10)
  jne    L1556
  jmp    L505
  nopw   0x0(%rax,%rax,1)
L1603:
  mov    (%r10),%ebp
  cmp    $0xffffffff,%ebx
  je     L100
L1038:
  cmp    $0xffffffff,%ebp
  jne    L2571
  jmp    L829
  nopw   0x0(%rax,%rax,1)
L780:
  mov    %eax,%r15d
  or     (%rdi),%r15d
  jne    L1215
  mov    (%rdx),%eax
  cmp    $0x1,%eax
  je     L2789
  movl   $0xffffffff,(%rdi)
  mov    (%r8),%ebx
  mov    $0x1,%eax
L1215:
  mov    (%rsi),%ebp
  cmp    $0x1,%ebp
  jne    L814
  mov    (%r10),%ebp
  cmp    $0x1,%ebx
  jne    L1604
  mov    %eax,%ebx
  or     %ebp,%ebx
  jne    L1640
  nopw   0x0(%rax,%rax,1)
L172:
  mov    (%rdx),%eax
  cmp    $0x1,%eax
  je     L1292
  movl   $0xffffffff,(%r10)
  mov    (%rsi),%eax
  mov    (%r8),%ebx
  cmp    $0x1,%eax
  jne    L1039
L1553:
  cmp    $0x1,%ebx
  jne    L2664
  jmp    L924
  xchg   %ax,%ax
L2778:
  mov    0x58(%rsp),%rax
  movl   $0x1,(%r12)
  cmpl   $0x2,(%rax)
  jne    L1456
L2375:
  cmpl   $0x1,(%rdx)
  je     L965
  movl   $0x1,(%rdx)
  jmp    L1456
  cs nopw 0x0(%rax,%rax,1)
L2476:
  mov    %eax,%ebx
  or     (%r10),%ebx
  jne    L1512
  mov    (%rdx),%eax
  cmp    $0x1,%eax
  je     L1775
  movl   $0xffffffff,(%r10)
  mov    (%rdi),%ebp
  mov    $0x1,%eax
L174:
  mov    (%r11),%ebx
  jmp    L1259
  nopl   0x0(%rax)
L2318:
  test   %eax,%eax
  jne    L2533
  cmpl   $0x1,(%rdx)
  je     L1155
L1787:
  movl   $0xffffffff,(%rsi)
  mov    (%rdi),%ebp
  mov    %ebp,%r15d
  cmp    $0x1,%ebp
  je     L1375
  mov    $0x1,%eax
  cmp    $0xffffffff,%ebp
  je     L1176
  jmp    L174
  nopl   (%rax)
L965:
  movl   $0xffffffff,(%rdx)
  jmp    L1456
  nopl   0x0(%rax,%rax,1)
L1367:
  mov    %ebp,%ebx
  or     %eax,%ebx
  jne    L367
L338:
  mov    (%rdx),%eax
  cmp    $0x1,%eax
  je     L724
  movl   $0xffffffff,(%rcx)
  mov    (%rsi),%eax
  mov    (%r9),%ebx
  cmp    $0x1,%eax
  je     L710
L458:
  mov    $0x1,%eax
  jmp    L710
  nopl   0x0(%rax,%rax,1)
L167:
  mov    %ebp,%ebx
  or     %eax,%ebx
  jne    L490
  mov    (%rdx),%eax
  cmp    $0x1,%eax
  je     L357
L198:
  movl   $0xffffffff,(%r12)
  mov    (%r11),%eax
  cmp    $0x1,%eax
  jne    L1586
  mov    (%r8),%eax
  cmp    $0x1,%eax
  je     L1875
  mov    %eax,%ebx
  mov    $0x1,%eax
  jmp    L516
  nopl   0x0(%rax)
L2330:
  mov    %eax,%ebx
  or     %ebp,%ebx
  jne    L127
  mov    (%rdx),%eax
  cmp    $0x1,%eax
  je     L466
L1106:
  movl   $0xffffffff,(%rcx)
  mov    (%r10),%eax
  cmp    $0x1,%eax
  jne    L860
  mov    (%r12),%eax
  cmp    $0x1,%eax
  je     L2830
  mov    %eax,%ebx
  mov    $0x1,%eax
  jmp    L690
  nopl   0x0(%rax,%rax,1)
L1749:
  mov    $0x1,%eax
  cmp    $0xffffffff,%ebp
  jne    L1259
  cmpl   $0xffffffff,0x0(%r13)
  jne    L698
  nopl   0x0(%rax)
L1512:
  mov    (%r11),%ebx
  mov    %r15d,%ebp
  jmp    L1259
  nopl   0x0(%rax,%rax,1)
L744:
  or     %eax,%ebp
  jne    L276
  mov    (%rdx),%eax
  cmp    $0x1,%eax
  jne    L198
L357:
  movl   $0x1,(%r12)
  cmpl   $0x1,(%r11)
  mov    (%r8),%ebx
  je     L2669
  cmp    $0x1,%ebx
  jne    L516
  jmp    L777
  cs nopw 0x0(%rax,%rax,1)
L793:
  or     %eax,%ebp
  jne    L937
  mov    (%rdx),%eax
  cmp    $0x1,%eax
  jne    L1111
L1447:
  movl   $0x1,(%r9)
  cmpl   $0x1,0x0(%r13)
  mov    (%r8),%ebx
  je     L557
  cmp    $0x1,%ebx
  jne    L2052
  jmp    L2396
  cs nopw 0x0(%rax,%rax,1)
L2281:
  or     %eax,%ebp
  jne    L1774
  mov    (%rdx),%eax
  cmp    $0x1,%eax
  jne    L1106
L466:
  movl   $0x1,(%rcx)
  cmpl   $0x1,(%r10)
  mov    (%r12),%ebx
  je     L1260
  cmp    $0x1,%ebx
  jne    L690
  jmp    L186
  nopl   (%rax)
L100:
  or     %eax,%ebp
  je     L172
  cmpl   $0xffffffff,(%r10)
  jne    L924
  jmp    L2151
  nop
L1292:
  movl   $0x1,(%r10)
  cmpl   $0x1,(%rsi)
  mov    (%r8),%ebx
  je     L330
  cmp    $0x1,%ebx
  jne    L2664
  jmp    L2151
  nopl   0x0(%rax)
L2653:
  test   %ebp,%ebp
  jne    L1176
  cmpl   $0x1,(%rdx)
  jne    L1787
L1155:
  movl   $0x1,(%rsi)
  mov    (%rdi),%eax
  mov    %eax,%r15d
  cmp    $0x1,%eax
  je     L824
  cmp    $0xffffffff,%eax
  jne    L1400
  mov    $0x1,%eax
  jmp    L1176
L720:
  mov    (%r10),%ebp
  mov    %eax,%ebx
  or     %ebp,%ebx
  je     L172
  jmp    L1640
  nop
L2660:
  mov    (%r11),%ebx
  test   %ebx,%ebx
  je     L1154
  jmp    L1176
L993:
  mov    (%r10),%ebp
  mov    $0x1,%ebx
  jmp    L1038
  nopl   (%rax)
L127:
  cmp    $0x1,%ebp
  jne    L2830
  cmpl   $0x1,(%rcx)
  jne    L2830
  jmp    L186
  nopw   0x0(%rax,%rax,1)
L490:
  cmp    $0x1,%ebp
  jne    L1875
  cmpl   $0x1,(%r12)
  jne    L1875
  jmp    L777
  nopl   0x0(%rax)
L1640:
  cmp    $0x1,%ebp
  jne    L924
  jmp    L787
  xchg   %ax,%ax
L1779:
  cmp    $0x1,%ebp
  jne    L2050
  cmpl   $0x1,(%r9)
  jne    L2050
  jmp    L2396
  nopl   0x0(%rax,%rax,1)
L367:
  cmp    $0xffffffff,%ebp
  jne    L250
L1308:
  mov    %ebp,%ebx
  jmp    L710
L1604:
  cmp    $0x1,%ebp
  jne    L2664
  jmp    L829
  xchg   %ax,%ax
L1586:
  mov    (%r8),%ebx
  cmp    $0xffffffff,%eax
  jne    L643
L2669:
  mov    $0x1,%eax
  jmp    L2762
  cs nopw 0x0(%rax,%rax,1)
L2182:
  mov    (%r8),%ebx
  cmp    $0xffffffff,%eax
  jne    L111
L557:
  mov    $0x1,%eax
  jmp    L1141
  cs nopw 0x0(%rax,%rax,1)
L860:
  mov    (%r12),%ebx
  cmp    $0xffffffff,%eax
  jne    L2602
L1260:
  mov    $0x1,%eax
  jmp    L2679
  nopw   0x0(%rax,%rax,1)
L1039:
  cmp    $0xffffffff,%eax
  jne    L1746
L330:
  mov    $0x1,%eax
  jmp    L2571
  nopl   0x0(%rax,%rax,1)
L724:
  movl   $0x1,(%rcx)
  cmpl   $0x1,(%rsi)
  mov    (%r9),%ebx
  je     L458
  cmp    $0x1,%ebx
  jne    L31
  jmp    L248
  nopl   0x0(%rax,%rax,1)
L2789:
  movl   $0x1,(%rdi)
  mov    (%r8),%ebx
  jmp    L1215
  xchg   %ax,%ax
L2535:
  movl   $0x1,(%r8)
  jmp    L787
  nopl   0x0(%rax)
L1775:
  movl   $0x1,(%r10)
  mov    (%rdi),%ebp
  mov    (%r11),%ebx
  jmp    L1259
  nopl   0x0(%rax)
L1901:
  movl   $0x1,(%rdi)
  jmp    L1556
  nopl   0x0(%rax,%rax,1)
L1109:
  movl   $0x1,0x0(%r13)
  cmpl   $0x1,(%r10)
  jne    L1556
  jmp    L505
  nop
L2441:
  movl   $0x1,(%rcx)
  mov    (%r8),%ebx
  jmp    L1125
  xchg   %ax,%ax
L410:
  movl   $0x1,(%rsi)
  jmp    L1032
  nopl   0x0(%rax,%rax,1)
L1371:
  movl   $0x1,(%r11)
  jmp    L1875
  nopl   0x0(%rax)
L1936:
  movl   $0x1,0x0(%r13)
  jmp    L2050
  nopl   (%rax)
L1238:
  movl   $0x1,(%r10)
  mov    0x0(%r13),%ebx
  jmp    L1946
L1400:
  mov    %eax,%ebp
  mov    (%r11),%ebx
  mov    $0x1,%eax
  jmp    L1259
L111:
  mov    $0x1,%eax
  cmp    $0x1,%ebx
  jne    L2052
  jmp    L2050
L2602:
  mov    $0x1,%eax
  cmp    $0x1,%ebx
  jne    L690
  jmp    L2830
L643:
  mov    $0x1,%eax
  cmp    $0x1,%ebx
  jne    L516
  jmp    L1875
L1746:
  mov    $0x1,%eax
  jmp    L1553
L1689:
  mov    0x58(%rsp),%rbx
  cmpl   $0x2,(%rbx)
  jne    L1762
  cmpl   $0x1,(%rdx)
  jne    L1784
  movl   $0xffffffff,(%rdx)
  jmp    L1762
L1132:
  mov    %eax,%ebx
  or     (%rdi),%ebx
  je     L141
  jmp    L1069
```

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;
    }
  }
}
```