user: Translate the below assembly code into C programming language:

```asm
<niveldificil>:
  endbr64
  mov    %rdi,%r10
  push   %r15
  mov    (%r10),%r15d
  push   %r14
  mov    $0xffffffff,%r14d
  push   %r13
  mov    %rcx,%r13
  push   %r12
  push   %rbp
  mov    %r15d,%ebp
  push   %rbx
  mov    %rsi,%rbx
  mov    0x38(%rsp),%r11
  mov    %rdx,%rsi
  mov    0x40(%rsp),%r12
  mov    0x48(%rsp),%rdi
  mov    0x50(%rsp),%rcx
  mov    (%rbx),%edx
  cmp    $0x1,%r15d
  je     L2681
L2788:
  xor    %eax,%eax
  cmp    $0xffffffff,%r15d
  je     L1915
L1249:
  cmp    $0x1,%edx
  je     L2597
L2616:
  cmp    $0xffffffff,%edx
  je     L2752
L951:
  mov    (%r8),%edx
  mov    %edx,%r15d
  cmp    $0x1,%ebp
  je     L687
  cmp    $0xffffffff,%ebp
  je     L1571
L2125:
  mov    0x0(%r13),%edx
  cmp    $0x1,%edx
  je     L218
L995:
  cmp    $0xffffffff,%edx
  je     L1221
L1809:
  cmp    $0x1,%r15d
  je     L2799
L1773:
  cmp    $0xffffffff,%r15d
  je     L744
L326:
  mov    (%r11),%ebp
  mov    (%r12),%edx
  cmp    $0x1,%ebp
  je     L1059
  cmp    $0xffffffff,%ebp
  je     L723
L2781:
  cmp    $0x1,%edx
  je     L1479
L2787:
  cmp    $0xffffffff,%edx
  je     L1756
L2190:
  mov    0x0(%r13),%ebp
  mov    (%r10),%r15d
  mov    %ebp,%edx
  cmp    $0x1,%r15d
  je     L1218
L2462:
  mov    %ebp,%edx
  cmp    $0xffffffff,%r15d
  je     L189
L422:
  cmp    $0x1,%edx
  je     L11
L707:
  cmp    $0xffffffff,%edx
  je     L389
L2533:
  mov    (%rbx),%ebp
  mov    (%r8),%edx
  cmp    $0x1,%ebp
  je     L425
L447:
  cmp    $0xffffffff,%ebp
  je     L880
L2467:
  cmp    $0x1,%edx
  je     L647
L762:
  cmp    $0xffffffff,%edx
  je     L2486
L119:
  mov    (%rsi),%ebp
  mov    (%r9),%edx
  cmp    $0x1,%ebp
  je     L697
L1357:
  cmp    $0xffffffff,%ebp
  je     L2153
L1402:
  cmp    $0x1,%edx
  je     L2048
L1020:
  cmp    $0xffffffff,%edx
  je     L535
L751:
  mov    (%r8),%edx
  mov    (%r10),%r15d
  mov    %edx,%ebp
  cmp    $0x1,%r15d
  je     L1108
  cmp    $0xffffffff,%r15d
  je     L695
L634:
  cmp    $0x1,%edx
  je     L2274
L576:
  cmp    $0xffffffff,%edx
  je     L2265
  mov    (%rsi),%edx
  cmp    $0x1,%edx
  je     L302
  cmp    $0xffffffff,%edx
  je     L1814
L646:
  cmp    $0x1,%ebp
  je     L530
L1436:
  cmp    $0xffffffff,%ebp
  je     L2370
  or     %eax,%ebp
  jne    L2794
  mov    (%rcx),%eax
  cmp    $0x1,%eax
  cmovne %r14d,%eax
  mov    %eax,(%r8)
  mov    $0x1,%eax
L1418:
  mov    %eax,%edx
  or     (%r11),%edx
  jne    L2418
  mov    (%rcx),%eax
  cmp    $0x1,%eax
  cmovne %r14d,%eax
  mov    %eax,(%r11)
  mov    $0x1,%eax
L2535:
  mov    %eax,%edx
  or     (%r12),%edx
  jne    L1637
  cmpl   $0x1,(%rcx)
  je     L2657
  mov    0x58(%rsp),%rax
  movl   $0xffffffff,(%r12)
  cmpl   $0x2,(%rax)
  je     L685
L1496:
  pop    %rbx
  pop    %rbp
  pop    %r12
  pop    %r13
  pop    %r14
  pop    %r15
  ret
  nop
L1814:
  mov    (%r11),%edx
L1401:
  cmp    $0xffffffff,%edx
  jne    L646
L2009:
  mov    %ebp,%edx
  or     %eax,%edx
  jne    L646
  mov    (%rcx),%eax
  cmp    $0x1,%eax
  je     L784
  movl   $0xffffffff,(%r8)
  mov    $0x1,%eax
L2370:
  cmpl   $0xffffffff,(%r11)
  je     L1871
L2794:
  mov    %eax,%edx
  or     (%r10),%edx
  jne    L103
L2018:
  mov    (%rcx),%eax
  cmp    $0x1,%eax
  cmovne %r14d,%eax
  mov    %eax,(%r10)
  mov    $0x1,%eax
L2418:
  mov    %eax,%edx
  or     (%rdi),%edx
  jne    L1407
  mov    (%rcx),%eax
  cmp    $0x1,%eax
  cmovne %r14d,%eax
  mov    %eax,(%rdi)
  mov    0x58(%rsp),%rax
  cmpl   $0x2,(%rax)
  je     L180
  pop    %rbx
  pop    %rbp
  pop    %r12
  pop    %r13
  pop    %r14
  pop    %r15
  ret
  nopl   (%rax)
L784:
  movl   $0x1,(%r8)
  nopw   0x0(%rax,%rax,1)
L530:
  cmpl   $0x1,(%r11)
  jne    L2794
L1871:
  mov    %eax,%edx
  or     (%rsi),%edx
  jne    L1778
  xor    %eax,%eax
  cmpl   $0x1,(%rcx)
  sete   %al
  lea    -0x1(%rax,%rax,1),%eax
  mov    %eax,(%rsi)
  mov    $0x1,%eax
L103:
  mov    %eax,%edx
  or     (%rsi),%edx
  jne    L1418
  mov    (%rcx),%eax
  cmp    $0x1,%eax
  cmovne %r14d,%eax
  mov    %eax,(%rsi)
  mov    $0x1,%eax
L1407:
  mov    %eax,%edx
  or     (%rbx),%edx
  jne    L2535
  mov    (%rcx),%eax
  cmp    $0x1,%eax
  cmovne %r14d,%eax
  mov    %eax,(%rbx)
  mov    0x58(%rsp),%rax
  cmpl   $0x2,(%rax)
  jne    L1496
L180:
  cmpl   $0x1,(%rcx)
  je     L1368
  mov    $0x1,%eax
L2058:
  movl   $0x1,(%rcx)
L2148:
  test   %eax,%eax
  jne    L1496
  mov    (%r10),%r15d
  mov    (%rbx),%edx
  mov    %r15d,%ebp
  cmp    $0x1,%r15d
  jne    L2788
L2681:
  mov    (%rsi),%eax
  cmp    $0x1,%edx
  je     L2299
L1684:
  cmp    $0x1,%eax
  je     L2611
L2807:
  xor    %eax,%eax
L1605:
  cmpl   $0x1,0x0(%r13)
  je     L1000
L2723:
  mov    (%rbx),%edx
  mov    $0x1,%ebp
  cmp    $0x1,%edx
  jne    L2616
L2597:
  cmpl   $0x1,(%rsi)
  jne    L951
L876:
  mov    %eax,%edx
  or     %ebp,%edx
  jne    L951
  mov    (%rcx),%eax
  cmp    $0x1,%eax
  je     L413
  movl   $0xffffffff,(%r10)
  mov    (%r8),%r15d
  mov    $0x1,%eax
  mov    %r15d,%edx
  cmp    $0xffffffff,%r15d
  jne    L2125
L1312:
  mov    %edx,%r15d
L1865:
  mov    0x0(%r13),%edx
  cmp    $0x1,%edx
  jne    L995
  nopl   0x0(%rax)
L218:
  mov    (%r9),%edx
  cmp    $0x1,%r15d
  jne    L712
  mov    %eax,%r15d
  or     %edx,%r15d
  jne    L2630
  cmpl   $0x1,(%rcx)
  je     L1656
L89:
  movl   $0xffffffff,(%r9)
  mov    0x0(%r13),%eax
  cmp    $0x1,%eax
  jne    L1516
  mov    (%r8),%eax
  cmp    $0x1,%eax
  je     L326
  mov    %eax,%r15d
  mov    $0x1,%eax
  jmp    L1773
  nop
L2611:
  mov    (%rbx),%eax
  test   %eax,%eax
  jne    L2807
L395:
  mov    (%rcx),%edx
  cmp    $0x1,%edx
  cmovne %r14d,%edx
  mov    %edx,(%rbx)
  mov    (%r10),%ebp
  mov    %ebp,%r15d
  cmp    $0x1,%ebp
  jne    L2805
L1224:
  mov    0x0(%r13),%eax
  cmp    $0x1,%eax
  je     L2091
  mov    $0x1,%eax
  jmp    L2723
  nopl   0x0(%rax,%rax,1)
L1108:
  cmpl   $0x1,(%rdi)
  je     L996
  cmp    $0x1,%edx
  jne    L576
  nopw   0x0(%rax,%rax,1)
L2310:
  mov    %edx,%ebp
L764:
  mov    (%rsi),%edx
  cmp    $0x1,%edx
  je     L252
L2624:
  cmp    $0xffffffff,%edx
  jne    L646
  mov    (%r11),%edx
  cmp    $0xffffffff,%ebp
  jne    L1401
  or     %eax,%edx
  jne    L2370
L1030:
  cmpl   $0x1,(%rcx)
  je     L280
  movl   $0xffffffff,(%r11)
  mov    (%rsi),%eax
  cmp    $0x1,%eax
  jne    L2308
  mov    (%r8),%ebp
  cmp    $0x1,%ebp
  je     L2794
  jmp    L1436
  xchg   %ax,%ax
L1059:
  mov    (%rdi),%ebp
  cmp    $0x1,%edx
  je     L1782
  cmp    $0x1,%ebp
  jne    L2787
  mov    %eax,%r15d
  or     %edx,%r15d
  jne    L2787
  mov    (%rcx),%eax
  cmp    $0x1,%eax
  je     L2659
L2759:
  movl   $0xffffffff,(%r12)
  mov    $0x1,%eax
L1756:
  cmpl   $0xffffffff,(%rdi)
  jne    L2190
L1947:
  mov    %eax,%edx
  or     (%r11),%edx
  jne    L2190
  mov    (%rcx),%eax
  cmp    $0x1,%eax
  je     L2693
  movl   $0xffffffff,(%r11)
  mov    0x0(%r13),%ebp
  mov    $0x1,%eax
  mov    (%r10),%r15d
  mov    %ebp,%edx
  cmp    $0x1,%r15d
  jne    L2462
  cs nopw 0x0(%rax,%rax,1)
L213:
  cmp    $0x1,%ebp
  jne    L707
  mov    (%rbx),%ebp
  mov    (%r8),%edx
  cmp    $0x1,%ebp
  jne    L447
  nopw   0x0(%rax,%rax,1)
L425:
  mov    (%r12),%ebp
  cmp    $0x1,%edx
  je     L2163
  cmp    $0x1,%ebp
  jne    L762
  mov    %eax,%r15d
  or     %edx,%r15d
  jne    L762
  mov    (%rcx),%eax
  cmp    $0x1,%eax
  je     L2758
L1473:
  movl   $0xffffffff,(%r8)
  mov    $0x1,%eax
L2486:
  cmpl   $0xffffffff,(%r12)
  jne    L119
L623:
  mov    %eax,%edx
  or     (%rbx),%edx
  jne    L119
  mov    (%rcx),%eax
  cmp    $0x1,%eax
  je     L2493
  movl   $0xffffffff,(%rbx)
  mov    (%rsi),%ebp
  mov    $0x1,%eax
  mov    (%r9),%edx
  cmp    $0x1,%ebp
  jne    L1357
  nopw   0x0(%rax,%rax,1)
L697:
  mov    (%rdi),%ebp
  cmp    $0x1,%edx
  je     L2167
  cmp    $0x1,%ebp
  jne    L1020
  mov    %eax,%r15d
  or     %edx,%r15d
  jne    L1020
  mov    (%rcx),%eax
  cmp    $0x1,%eax
  je     L182
L1820:
  movl   $0xffffffff,(%r9)
  mov    $0x1,%eax
L535:
  cmpl   $0xffffffff,(%rdi)
  jne    L751
L2545:
  mov    %eax,%edx
  or     (%rsi),%edx
  jne    L751
  mov    (%rcx),%eax
  cmp    $0x1,%eax
  je     L706
  movl   $0xffffffff,(%rsi)
  mov    $0x1,%eax
  jmp    L751
  nopl   0x0(%rax)
L2167:
  mov    %eax,%edx
  or     %ebp,%edx
  je     L1507
  cmp    $0x1,%ebp
  je     L945
  nopl   0x0(%rax,%rax,1)
L2048:
  cmpl   $0x1,(%rdi)
  jne    L751
  jmp    L2545
  nopl   0x0(%rax,%rax,1)
L687:
  cmp    $0x1,%edx
  je     L323
L2375:
  mov    0x0(%r13),%edx
  cmp    $0x1,%edx
  jne    L995
  mov    (%r9),%edx
L712:
  cmp    $0x1,%edx
  jne    L1773
  mov    %eax,%edx
  or     %r15d,%edx
  jne    L1773
  mov    (%rcx),%eax
  cmp    $0x1,%eax
  je     L2085
L2405:
  movl   $0xffffffff,(%r8)
  mov    $0x1,%eax
L744:
  cmpl   $0xffffffff,(%r9)
  jne    L326
L965:
  mov    %eax,%edx
  or     0x0(%r13),%edx
  jne    L326
  mov    (%rcx),%eax
  cmp    $0x1,%eax
  je     L509
  movl   $0xffffffff,0x0(%r13)
  mov    $0x1,%eax
  jmp    L326
  nop
L1218:
  cmpl   $0x1,(%r11)
  jne    L213
L2078:
  mov    %ebp,%r15d
  mov    %ebp,%edx
  or     %eax,%r15d
  jne    L422
  mov    (%rcx),%eax
  cmp    $0x1,%eax
  je     L0
  movl   $0xffffffff,0x0(%r13)
  mov    $0x1,%eax
L389:
  cmpl   $0xffffffff,(%r11)
  jne    L2533
L2240:
  mov    %eax,%edx
  or     (%r10),%edx
  jne    L2533
  mov    (%rcx),%eax
  cmp    $0x1,%eax
  je     L2481
  movl   $0xffffffff,(%r10)
  mov    $0x1,%eax
  jmp    L2533
  nopl   0x0(%rax)
L723:
  mov    (%rdi),%ebp
  cmp    $0xffffffff,%edx
  je     L91
L2515:
  cmp    $0xffffffff,%ebp
  jne    L2781
  mov    %edx,%r15d
  or     %eax,%r15d
  jne    L2781
  mov    (%rcx),%eax
  cmp    $0x1,%eax
  jne    L2759
L2659:
  movl   $0x1,(%r12)
  nopl   0x0(%rax,%rax,1)
L1479:
  cmpl   $0x1,(%rdi)
  jne    L2190
  jmp    L1947
  xchg   %ax,%ax
L2752:
  cmpl   $0xffffffff,(%rsi)
  jne    L951
  jmp    L876
  xchg   %ax,%ax
L1915:
  mov    (%rsi),%ebp
  cmp    $0xffffffff,%edx
  je     L740
  cmp    $0xffffffff,%ebp
  je     L1769
L1104:
  cmpl   $0xffffffff,0x0(%r13)
  je     L1000
L811:
  mov    (%rbx),%edx
  mov    $0xffffffff,%ebp
  jmp    L1249
  nopl   0x0(%rax,%rax,1)
L1221:
  mov    (%r9),%edx
  cmp    $0xffffffff,%r15d
  je     L1650
L735:
  cmp    $0xffffffff,%edx
  jne    L1809
  mov    %r15d,%edx
  or     %eax,%edx
  jne    L1809
  mov    (%rcx),%eax
  cmp    $0x1,%eax
  jne    L2405
L2085:
  movl   $0x1,(%r8)
  nopl   0x0(%rax,%rax,1)
L2799:
  cmpl   $0x1,(%r9)
  jne    L326
  jmp    L965
  nopw   0x0(%rax,%rax,1)
L695:
  cmpl   $0xffffffff,(%rdi)
  jne    L634
L996:
  mov    %eax,%r15d
  or     %edx,%r15d
  jne    L634
  mov    (%rcx),%eax
  cmp    $0x1,%eax
  je     L1006
  movl   $0xffffffff,(%r8)
  mov    $0x1,%eax
  mov    $0xffffffff,%edx
  jmp    L2310
  cs nopw 0x0(%rax,%rax,1)
L2153:
  mov    (%rdi),%ebp
  cmp    $0xffffffff,%edx
  je     L637
L1900:
  cmp    $0xffffffff,%ebp
  jne    L1402
  mov    %edx,%r15d
  or     %eax,%r15d
  jne    L1402
  mov    (%rcx),%eax
  cmp    $0x1,%eax
  jne    L1820
L182:
  movl   $0x1,(%r9)
  cmpl   $0x1,(%rdi)
  jne    L751
  jmp    L2545
L880:
  mov    (%r12),%ebp
  cmp    $0xffffffff,%edx
  je     L1672
L2293:
  cmp    $0xffffffff,%ebp
  jne    L2467
  mov    %edx,%r15d
  or     %eax,%r15d
  jne    L2467
  mov    (%rcx),%eax
  cmp    $0x1,%eax
  jne    L1473
L2758:
  movl   $0x1,(%r8)
  nopl   0x0(%rax)
L647:
  cmpl   $0x1,(%r12)
  jne    L119
  jmp    L623
  nopl   0x0(%rax,%rax,1)
L189:
  cmpl   $0xffffffff,(%r11)
  je     L2078
  cmp    $0x1,%edx
  jne    L707
L11:
  cmpl   $0x1,(%r11)
  jne    L2533
  jmp    L2240
  nopw   0x0(%rax,%rax,1)
L1571:
  cmp    $0xffffffff,%edx
  jne    L2125
L323:
  mov    %eax,%r15d
  or     (%rdi),%r15d
  jne    L1312
  mov    (%rcx),%eax
  cmp    $0x1,%eax
  je     L2793
  movl   $0xffffffff,(%rdi)
  mov    $0x1,%eax
  mov    (%r8),%r15d
  jmp    L2125
  nopl   0x0(%rax,%rax,1)
L2265:
  cmpl   $0xffffffff,(%rdi)
  jne    L2310
L2725:
  mov    %eax,%r15d
  or     (%r10),%r15d
  jne    L2310
  mov    (%rcx),%eax
  cmp    $0x1,%eax
  je     L2457
  movl   $0xffffffff,(%r10)
  mov    (%rsi),%edx
  mov    $0x1,%eax
  mov    (%r8),%ebp
  cmp    $0x1,%edx
  jne    L2624
  nopw   0x0(%rax,%rax,1)
L252:
  mov    (%r11),%edx
  cmp    $0x1,%ebp
  jne    L1261
  mov    %eax,%r15d
  or     %edx,%r15d
  je     L1030
  cmp    $0x1,%edx
  jne    L2794
  cmpl   $0x1,(%r11)
  jne    L2794
  jmp    L1871
  nopl   0x0(%rax)
L2274:
  cmpl   $0x1,(%rdi)
  jne    L2310
  jmp    L2725
  nopl   0x0(%rax,%rax,1)
L302:
  mov    (%r11),%edx
L1261:
  cmp    $0x1,%edx
  jne    L1436
  jmp    L2009
  nopl   0x0(%rax)
L2657:
  mov    0x58(%rsp),%rax
  movl   $0x1,(%r12)
  cmpl   $0x2,(%rax)
  jne    L1496
L685:
  cmpl   $0x1,(%rcx)
  je     L1368
  movl   $0x1,(%rcx)
  jmp    L1496
  xchg   %ax,%ax
L1000:
  mov    %eax,%edx
  or     (%r11),%edx
  jne    L2091
  mov    (%rcx),%eax
  cmp    $0x1,%eax
  je     L664
  movl   $0xffffffff,(%r11)
  mov    $0x1,%eax
  mov    (%r10),%ebp
  mov    (%rbx),%edx
  jmp    L1249
  nopl   0x0(%rax)
L637:
  mov    %eax,%edx
  or     %ebp,%edx
  jne    L1862
L1507:
  cmpl   $0x1,(%rcx)
  je     L2665
  movl   $0xffffffff,(%rdi)
  mov    (%rsi),%eax
  cmp    $0x1,%eax
  jne    L167
L1613:
  mov    (%r9),%edx
  jmp    L1402
  nopl   0x0(%rax)
L1368:
  movl   $0xffffffff,(%rcx)
  jmp    L1496
  nopl   0x0(%rax,%rax,1)
L2299:
  test   %eax,%eax
  jne    L1684
  cmpl   $0x1,(%rcx)
  je     L2734
L2283:
  movl   $0xffffffff,(%rsi)
  mov    (%r10),%ebp
  mov    %ebp,%r15d
  cmp    $0x1,%ebp
  je     L1224
  mov    $0x1,%eax
  cmp    $0xffffffff,%ebp
  je     L1104
  mov    (%rbx),%edx
  jmp    L1249
  nopl   0x0(%rax,%rax,1)
L2163:
  mov    %eax,%edx
  or     %ebp,%edx
  jne    L495
  cmpl   $0x1,(%rcx)
  je     L2252
L1463:
  movl   $0xffffffff,(%r12)
  mov    (%rbx),%eax
  cmp    $0x1,%eax
  jne    L107
  mov    (%r8),%eax
  cmp    $0x1,%eax
  je     L119
  mov    %eax,%edx
  mov    $0x1,%eax
  jmp    L762
  xchg   %ax,%ax
L1782:
  mov    %eax,%edx
  or     %ebp,%edx
  jne    L2623
  cmpl   $0x1,(%rcx)
  je     L1087
L2441:
  movl   $0xffffffff,(%rdi)
  mov    (%r11),%eax
  cmp    $0x1,%eax
  jne    L1649
  mov    (%r12),%eax
  cmp    $0x1,%eax
  je     L2190
  mov    %eax,%edx
  mov    $0x1,%eax
  jmp    L2787
  xchg   %ax,%ax
L2805:
  mov    $0x1,%eax
  cmp    $0xffffffff,%ebp
  jne    L1249
  cmpl   $0xffffffff,0x0(%r13)
  jne    L811
  nopl   0x0(%rax)
L2091:
  mov    (%rbx),%edx
  mov    %r15d,%ebp
  jmp    L1249
  nopw   0x0(%rax,%rax,1)
L1672:
  or     %eax,%ebp
  jne    L2486
  cmpl   $0x1,(%rcx)
  jne    L1463
L2252:
  movl   $0x1,(%r12)
  mov    (%rbx),%eax
  cmp    $0x1,%eax
  jne    L107
  mov    (%r8),%edx
  jmp    L2467
  nopl   0x0(%rax)
L1650:
  or     %eax,%edx
  jne    L744
  cmpl   $0x1,(%rcx)
  jne    L89
L1656:
  movl   $0x1,(%r9)
  mov    0x0(%r13),%eax
  cmp    $0x1,%eax
  jne    L1516
  mov    (%r8),%r15d
  jmp    L1809
  nopl   (%rax)
L91:
  or     %eax,%ebp
  jne    L1756
  cmpl   $0x1,(%rcx)
  jne    L2441
L1087:
  movl   $0x1,(%rdi)
  mov    (%r11),%eax
  cmp    $0x1,%eax
  jne    L1649
  mov    (%r12),%edx
  jmp    L2781
  nopl   0x0(%rax)
L740:
  test   %ebp,%ebp
  jne    L1104
  cmpl   $0x1,(%rcx)
  jne    L2283
L2734:
  movl   $0x1,(%rsi)
  mov    (%r10),%eax
  mov    %eax,%r15d
  cmp    $0x1,%eax
  je     L1605
  cmp    $0xffffffff,%eax
  jne    L2246
  mov    $0x1,%eax
  jmp    L1104
  nopl   0x0(%rax)
L1769:
  mov    (%rbx),%edx
  test   %edx,%edx
  je     L395
  jmp    L1104
  nop
L2623:
  cmp    $0x1,%ebp
  jne    L2190
  cmpl   $0x1,(%rdi)
  jne    L2190
  jmp    L1947
  nopw   0x0(%rax,%rax,1)
L495:
  cmp    $0x1,%ebp
  jne    L119
  cmpl   $0x1,(%r12)
  jne    L119
  jmp    L623
  nopl   0x0(%rax)
L2630:
  cmp    $0x1,%edx
  jne    L326
  cmpl   $0x1,(%r9)
  jne    L326
  jmp    L965
  nopl   0x0(%rax,%rax,1)
L1862:
  cmp    $0xffffffff,%ebp
  jne    L535
L945:
  mov    %ebp,%edx
  jmp    L1402
L280:
  movl   $0x1,(%r11)
  mov    (%rsi),%eax
  cmp    $0x1,%eax
  je     L2234
L2308:
  mov    (%r8),%ebp
  cmp    $0xffffffff,%eax
  jne    L1984
  mov    (%r11),%edx
  mov    $0x1,%eax
  cmp    $0xffffffff,%edx
  jne    L646
  jmp    L2009
  nopl   0x0(%rax)
L1649:
  mov    (%r12),%edx
  cmp    $0xffffffff,%eax
  jne    L1515
  mov    (%rdi),%ebp
  mov    $0x1,%eax
  jmp    L2515
  nopl   0x0(%rax)
L2665:
  movl   $0x1,(%rdi)
  mov    (%rsi),%eax
  cmp    $0x1,%eax
  je     L1613
L167:
  mov    (%r9),%edx
  cmp    $0xffffffff,%eax
  jne    L2550
  mov    (%rdi),%ebp
  mov    $0x1,%eax
  jmp    L1900
  nopl   0x0(%rax)
L107:
  mov    (%r8),%edx
  cmp    $0xffffffff,%eax
  jne    L143
  mov    (%r12),%ebp
  mov    $0x1,%eax
  jmp    L2293
  nopw   0x0(%rax,%rax,1)
L1516:
  mov    (%r8),%r15d
  cmp    $0xffffffff,%eax
  jne    L970
  mov    (%r9),%edx
  mov    $0x1,%eax
  jmp    L735
  nopl   0x0(%rax)
L2457:
  movl   $0x1,(%r10)
  mov    (%r8),%ebp
  jmp    L764
  nopw   0x0(%rax,%rax,1)
L2693:
  movl   $0x1,(%r11)
  mov    0x0(%r13),%edx
  jmp    L422
L2793:
  movl   $0x1,(%rdi)
  mov    (%r8),%r15d
  jmp    L2125
  xchg   %ax,%ax
L706:
  movl   $0x1,(%rsi)
  jmp    L751
  nopl   0x0(%rax,%rax,1)
L2493:
  movl   $0x1,(%rbx)
  jmp    L119
  nopl   0x0(%rax,%rax,1)
L413:
  movl   $0x1,(%r10)
  mov    (%r8),%edx
  mov    %edx,%r15d
  cmp    $0x1,%edx
  jne    L2375
  mov    %edx,%r15d
  jmp    L1865
  xchg   %ax,%ax
L664:
  movl   $0x1,(%r11)
  mov    (%r10),%ebp
  mov    (%rbx),%edx
  jmp    L1249
  nopl   0x0(%rax)
L1006:
  movl   $0x1,(%r8)
  mov    $0x1,%edx
  jmp    L2310
  nopl   0x0(%rax)
L2481:
  movl   $0x1,(%r10)
  jmp    L2533
  nopl   0x0(%rax)
L0:
  movl   $0x1,0x0(%r13)
  cmpl   $0x1,(%r11)
  jne    L2533
  jmp    L2240
  nopw   0x0(%rax,%rax,1)
L509:
  movl   $0x1,0x0(%r13)
  jmp    L326
  nopl   (%rax)
L2234:
  mov    (%r8),%ebp
  jmp    L646
L2246:
  mov    %eax,%ebp
  mov    (%rbx),%edx
  mov    $0x1,%eax
  jmp    L1249
L1778:
  mov    %eax,%edx
  or     (%r10),%edx
  je     L2018
  jmp    L1418
L1637:
  mov    0x58(%rsp),%rdx
  cmpl   $0x2,(%rdx)
  jne    L2148
  cmpl   $0x1,(%rcx)
  jne    L2058
  movl   $0xffffffff,(%rcx)
  jmp    L2148
L143:
  mov    $0x1,%eax
  jmp    L2467
L970:
  mov    $0x1,%eax
  jmp    L1809
L1515:
  mov    $0x1,%eax
  jmp    L2781
L2550:
  mov    $0x1,%eax
  jmp    L1402
L1984:
  mov    $0x1,%eax
  jmp    L646
```

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