user: Please show me the C implementation that matches the assembly code listed below:

```asm
<main>:
  endbr64
  push   %rbp
  mov    %rsp,%rbp
  sub    $0x20,%rsp
  mov    $0x0,%eax
  call   <omp_get_num_threads@plt>
  mov    %eax,-0x8(%rbp)
  mov    $0x0,%eax
  call   <omp_get_thread_num@plt>
  mov    %eax,-0x4(%rbp)
  movl   $0xffffffff,-0x14(%rbp)
  movl   $0x0,-0x10(%rbp)
  movl   $0x0,-0xc(%rbp)
  movl   $0x0,-0x18(%rbp)
  jmp    L259
L1028:
  cmpl   $0xffffffff,-0x14(%rbp)
  jne    L1057
  movl   $0x1,-0xc(%rbp)
  addl   $0x1,-0x10(%rbp)
  jmp    L238
L1057:
  mov    -0x18(%rbp),%eax
  sub    $0x1,%eax
  cmp    %eax,-0x14(%rbp)
  jne    L1209
  addl   $0x1,-0xc(%rbp)
  jmp    L238
L1209:
  mov    -0x14(%rbp),%eax
  cmp    -0x18(%rbp),%eax
  jl     L1217
  mov    $0x0,%eax
  call   <abort@plt>
L1217:
  cmpl   $0x1,-0x8(%rbp)
  jne    L287
  mov    $0x0,%eax
  call   <abort@plt>
L287:
  cmpl   $0x5,-0xc(%rbp)
  je     L1295
  mov    $0x0,%eax
  call   <abort@plt>
L1295:
  movl   $0x1,-0xc(%rbp)
  addl   $0x1,-0x10(%rbp)
L238:
  cmpl   $0x1,-0xc(%rbp)
  jne    L183
  mov    -0x18(%rbp),%edx
  movslq %edx,%rax
  imul   $0x66666667,%rax,%rax
  shr    $0x20,%rax
  sar    %eax
  mov    %edx,%ecx
  sar    $0x1f,%ecx
  sub    %ecx,%eax
  mov    %eax,%ecx
  shl    $0x2,%ecx
  add    %eax,%ecx
  mov    %edx,%eax
  sub    %ecx,%eax
  test   %eax,%eax
  je     L752
  mov    $0x0,%eax
  call   <abort@plt>
L752:
  mov    -0x18(%rbp),%eax
  movslq %eax,%rdx
  imul   $0x66666667,%rdx,%rdx
  shr    $0x20,%rdx
  sar    %edx
  sar    $0x1f,%eax
  mov    %eax,%ecx
  mov    %edx,%eax
  sub    %ecx,%eax
  cltd
  idivl  -0x8(%rbp)
  mov    %edx,%eax
  cmp    %eax,-0x4(%rbp)
  je     L183
  mov    $0x0,%eax
  call   <abort@plt>
L183:
  mov    -0x18(%rbp),%eax
  mov    %eax,-0x14(%rbp)
  addl   $0x1,-0x18(%rbp)
L259:
  cmpl   $0x48,-0x18(%rbp)
  jle    L1028
  cmpl   $0x1,-0x8(%rbp)
  jne    L1248
  cmpl   $0x49,-0xc(%rbp)
  jne    L309
  cmpl   $0x48,-0x14(%rbp)
  jne    L309
  cmpl   $0x1,-0x10(%rbp)
  je     L1270
L309:
  mov    $0x0,%eax
  call   <abort@plt>
  jmp    L1270
L1248:
  cmpl   $0xe,-0x4(%rbp)
  jle    L473
  cmpl   $0xffffffff,-0x14(%rbp)
  jne    L1199
  cmpl   $0x0,-0x10(%rbp)
  jne    L1199
  cmpl   $0x0,-0xc(%rbp)
  je     L1270
L1199:
  mov    $0x0,%eax
  call   <abort@plt>
  jmp    L1270
L473:
  cmpl   $0xe,-0x4(%rbp)
  jne    L952
  cmpl   $0x48,-0x14(%rbp)
  jne    L1323
  cmpl   $0x1,-0x10(%rbp)
  jne    L1323
  cmpl   $0x3,-0xc(%rbp)
  je     L1270
L1323:
  mov    $0x0,%eax
  call   <abort@plt>
  jmp    L1270
L952:
  cmpl   $0x0,-0x10(%rbp)
  jne    L701
  mov    $0x0,%eax
  call   <abort@plt>
  jmp    L1270
L701:
  cmpl   $0x48,-0x14(%rbp)
  jne    L1260
  mov    $0xe,%eax
  cltd
  idivl  -0x8(%rbp)
  mov    %edx,%eax
  cmp    %eax,-0x4(%rbp)
  jne    L968
  cmpl   $0x3,-0xc(%rbp)
  je     L1270
L968:
  mov    $0x0,%eax
  call   <abort@plt>
  jmp    L1270
L1260:
  mov    -0xc(%rbp),%edx
  movslq %edx,%rax
  imul   $0x66666667,%rax,%rax
  shr    $0x20,%rax
  sar    %eax
  mov    %edx,%ecx
  sar    $0x1f,%ecx
  sub    %ecx,%eax
  mov    %eax,%ecx
  shl    $0x2,%ecx
  add    %eax,%ecx
  mov    %edx,%eax
  sub    %ecx,%eax
  test   %eax,%eax
  je     L1270
  mov    $0x0,%eax
  call   <abort@plt>
L1270:
  movl   $0xffffffff,-0x14(%rbp)
  movl   $0x0,-0x10(%rbp)
  movl   $0x0,-0xc(%rbp)
  movl   $0x0,-0x18(%rbp)
  jmp    L1000
L343:
  cmpl   $0xffffffff,-0x14(%rbp)
  jne    L1212
  movl   $0x1,-0xc(%rbp)
  addl   $0x1,-0x10(%rbp)
  jmp    L194
L1212:
  mov    -0x18(%rbp),%eax
  sub    $0x1,%eax
  cmp    %eax,-0x14(%rbp)
  jne    L99
  addl   $0x1,-0xc(%rbp)
  jmp    L194
L99:
  mov    -0x14(%rbp),%eax
  cmp    -0x18(%rbp),%eax
  jl     L35
  mov    $0x0,%eax
  call   <abort@plt>
L35:
  cmpl   $0x1,-0x8(%rbp)
  jne    L1276
  mov    $0x0,%eax
  call   <abort@plt>
L1276:
  cmpl   $0x7,-0xc(%rbp)
  je     L299
  mov    $0x0,%eax
  call   <abort@plt>
L299:
  movl   $0x1,-0xc(%rbp)
  addl   $0x1,-0x10(%rbp)
L194:
  cmpl   $0x1,-0xc(%rbp)
  jne    L167
  mov    -0x18(%rbp),%edx
  movslq %edx,%rax
  imul   $0xffffffff92492493,%rax,%rax
  shr    $0x20,%rax
  add    %edx,%eax
  sar    $0x2,%eax
  mov    %edx,%ecx
  sar    $0x1f,%ecx
  sub    %ecx,%eax
  mov    %eax,%ecx
  shl    $0x3,%ecx
  sub    %eax,%ecx
  mov    %edx,%eax
  sub    %ecx,%eax
  test   %eax,%eax
  je     L381
  mov    $0x0,%eax
  call   <abort@plt>
L381:
  mov    -0x18(%rbp),%eax
  movslq %eax,%rdx
  imul   $0xffffffff92492493,%rdx,%rdx
  shr    $0x20,%rdx
  add    %eax,%edx
  sar    $0x2,%edx
  sar    $0x1f,%eax
  mov    %eax,%ecx
  mov    %edx,%eax
  sub    %ecx,%eax
  cltd
  idivl  -0x8(%rbp)
  mov    %edx,%eax
  cmp    %eax,-0x4(%rbp)
  je     L167
  mov    $0x0,%eax
  call   <abort@plt>
L167:
  mov    -0x18(%rbp),%eax
  mov    %eax,-0x14(%rbp)
  addl   $0x1,-0x18(%rbp)
L1000:
  cmpl   $0x48,-0x18(%rbp)
  jle    L343
  cmpl   $0x1,-0x8(%rbp)
  jne    L1063
  cmpl   $0x49,-0xc(%rbp)
  jne    L845
  cmpl   $0x48,-0x14(%rbp)
  jne    L845
  cmpl   $0x1,-0x10(%rbp)
  je     L634
L845:
  mov    $0x0,%eax
  call   <abort@plt>
  jmp    L634
L1063:
  cmpl   $0xa,-0x4(%rbp)
  jle    L1139
  cmpl   $0xffffffff,-0x14(%rbp)
  jne    L487
  cmpl   $0x0,-0x10(%rbp)
  jne    L487
  cmpl   $0x0,-0xc(%rbp)
  je     L634
L487:
  mov    $0x0,%eax
  call   <abort@plt>
  jmp    L634
L1139:
  cmpl   $0xa,-0x4(%rbp)
  jne    L810
  cmpl   $0x48,-0x14(%rbp)
  jne    L177
  cmpl   $0x1,-0x10(%rbp)
  jne    L177
  cmpl   $0x3,-0xc(%rbp)
  je     L634
L177:
  mov    $0x0,%eax
  call   <abort@plt>
  jmp    L634
L810:
  cmpl   $0x0,-0x10(%rbp)
  jne    L407
  mov    $0x0,%eax
  call   <abort@plt>
  jmp    L634
L407:
  cmpl   $0x48,-0x14(%rbp)
  jne    L1068
  mov    $0xa,%eax
  cltd
  idivl  -0x8(%rbp)
  mov    %edx,%eax
  cmp    %eax,-0x4(%rbp)
  jne    L1004
  cmpl   $0x3,-0xc(%rbp)
  je     L634
L1004:
  mov    $0x0,%eax
  call   <abort@plt>
  jmp    L634
L1068:
  mov    -0xc(%rbp),%edx
  movslq %edx,%rax
  imul   $0xffffffff92492493,%rax,%rax
  shr    $0x20,%rax
  add    %edx,%eax
  sar    $0x2,%eax
  mov    %edx,%ecx
  sar    $0x1f,%ecx
  sub    %ecx,%eax
  mov    %eax,%ecx
  shl    $0x3,%ecx
  sub    %eax,%ecx
  mov    %edx,%eax
  sub    %ecx,%eax
  test   %eax,%eax
  je     L634
  mov    $0x0,%eax
  call   <abort@plt>
L634:
  movl   $0xffffffff,-0x14(%rbp)
  movl   $0x0,-0x10(%rbp)
  movl   $0x0,-0xc(%rbp)
  movl   $0x0,-0x18(%rbp)
  jmp    L690
L157:
  cmpl   $0xffffffff,-0x14(%rbp)
  jne    L72
  movl   $0x1,-0xc(%rbp)
  addl   $0x1,-0x10(%rbp)
  jmp    L151
L72:
  mov    -0x18(%rbp),%eax
  sub    $0x1,%eax
  cmp    %eax,-0x14(%rbp)
  jne    L963
  addl   $0x1,-0xc(%rbp)
  jmp    L151
L963:
  mov    $0x0,%eax
  call   <abort@plt>
L151:
  mov    -0x18(%rbp),%eax
  mov    %eax,-0x14(%rbp)
  addl   $0x1,-0x18(%rbp)
L690:
  cmpl   $0x48,-0x18(%rbp)
  jle    L157
  cmpl   $0x1,-0x10(%rbp)
  jle    L726
  mov    $0x0,%eax
  call   <abort@plt>
L726:
  movl   $0xffffffff,-0x14(%rbp)
  movl   $0x0,-0x10(%rbp)
  movl   $0x0,-0xc(%rbp)
  movl   $0x0,-0x18(%rbp)
  jmp    L599
L537:
  cmpl   $0xffffffff,-0x14(%rbp)
  jne    L689
  movl   $0x1,-0xc(%rbp)
  addl   $0x1,-0x10(%rbp)
  jmp    L446
L689:
  mov    -0x18(%rbp),%eax
  sub    $0x1,%eax
  cmp    %eax,-0x14(%rbp)
  jne    L178
  addl   $0x1,-0xc(%rbp)
  jmp    L446
L178:
  mov    $0x0,%eax
  call   <abort@plt>
L446:
  mov    -0x18(%rbp),%eax
  mov    %eax,-0x14(%rbp)
  addl   $0x1,-0x18(%rbp)
L599:
  cmpl   $0x48,-0x18(%rbp)
  jle    L537
  cmpl   $0x1,-0x10(%rbp)
  jle    L979
  mov    $0x0,%eax
  call   <abort@plt>
L979:
  movl   $0xffffffff,-0x14(%rbp)
  movl   $0x0,-0x10(%rbp)
  movl   $0x0,-0xc(%rbp)
  movl   $0x0,-0x18(%rbp)
  jmp    L561
L892:
  cmpl   $0xffffffff,-0x14(%rbp)
  jne    L139
  movl   $0x1,-0xc(%rbp)
  addl   $0x1,-0x10(%rbp)
  jmp    L1206
L139:
  mov    -0x18(%rbp),%eax
  sub    $0x1,%eax
  cmp    %eax,-0x14(%rbp)
  jne    L970
  addl   $0x1,-0xc(%rbp)
  jmp    L1206
L970:
  mov    -0x14(%rbp),%eax
  cmp    -0x18(%rbp),%eax
  jl     L342
  mov    $0x0,%eax
  call   <abort@plt>
L342:
  mov    -0xc(%rbp),%edx
  movslq %edx,%rax
  imul   $0x66666667,%rax,%rax
  shr    $0x20,%rax
  sar    %eax
  mov    %edx,%ecx
  sar    $0x1f,%ecx
  sub    %ecx,%eax
  mov    %eax,%ecx
  shl    $0x2,%ecx
  add    %eax,%ecx
  mov    %edx,%eax
  sub    %ecx,%eax
  test   %eax,%eax
  jne    L850
  cmpl   $0x0,-0xc(%rbp)
  jne    L458
L850:
  mov    $0x0,%eax
  call   <abort@plt>
L458:
  movl   $0x1,-0xc(%rbp)
  addl   $0x1,-0x10(%rbp)
L1206:
  mov    -0x18(%rbp),%eax
  mov    %eax,-0x14(%rbp)
  addl   $0x1,-0x18(%rbp)
L561:
  cmpl   $0x48,-0x18(%rbp)
  jle    L892
  cmpl   $0x48,-0x14(%rbp)
  jne    L228
  mov    -0xc(%rbp),%edx
  movslq %edx,%rax
  imul   $0x66666667,%rax,%rax
  shr    $0x20,%rax
  sar    %eax
  mov    %edx,%ecx
  sar    $0x1f,%ecx
  sub    %ecx,%eax
  mov    %eax,%ecx
  shl    $0x2,%ecx
  add    %eax,%ecx
  mov    %edx,%eax
  sub    %ecx,%eax
  cmp    $0x3,%eax
  je     L1232
  mov    $0x0,%eax
  call   <abort@plt>
  jmp    L1232
L228:
  cmpl   $0xffffffff,-0x14(%rbp)
  jne    L852
  cmpl   $0x0,-0xc(%rbp)
  jne    L325
  cmpl   $0x0,-0x10(%rbp)
  je     L1232
L325:
  mov    $0x0,%eax
  call   <abort@plt>
  jmp    L1232
L852:
  mov    -0xc(%rbp),%edx
  movslq %edx,%rax
  imul   $0x66666667,%rax,%rax
  shr    $0x20,%rax
  sar    %eax
  mov    %edx,%ecx
  sar    $0x1f,%ecx
  sub    %ecx,%eax
  mov    %eax,%ecx
  shl    $0x2,%ecx
  add    %eax,%ecx
  mov    %edx,%eax
  sub    %ecx,%eax
  test   %eax,%eax
  jne    L611
  cmpl   $0x0,-0xc(%rbp)
  jne    L1232
L611:
  mov    $0x0,%eax
  call   <abort@plt>
L1232:
  movl   $0xffffffff,-0x14(%rbp)
  movl   $0x0,-0x10(%rbp)
  movl   $0x0,-0xc(%rbp)
  movl   $0x0,-0x18(%rbp)
  jmp    L1048
L46:
  cmpl   $0xffffffff,-0x14(%rbp)
  jne    L858
  movl   $0x1,-0xc(%rbp)
  addl   $0x1,-0x10(%rbp)
  jmp    L286
L858:
  mov    -0x18(%rbp),%eax
  sub    $0x1,%eax
  cmp    %eax,-0x14(%rbp)
  jne    L534
  addl   $0x1,-0xc(%rbp)
  jmp    L286
L534:
  mov    -0x14(%rbp),%eax
  cmp    -0x18(%rbp),%eax
  jl     L288
  mov    $0x0,%eax
  call   <abort@plt>
L288:
  mov    -0xc(%rbp),%edx
  movslq %edx,%rax
  imul   $0xffffffff92492493,%rax,%rax
  shr    $0x20,%rax
  add    %edx,%eax
  sar    $0x2,%eax
  mov    %edx,%ecx
  sar    $0x1f,%ecx
  sub    %ecx,%eax
  mov    %eax,%ecx
  shl    $0x3,%ecx
  sub    %eax,%ecx
  mov    %edx,%eax
  sub    %ecx,%eax
  test   %eax,%eax
  jne    L138
  cmpl   $0x0,-0xc(%rbp)
  jne    L644
L138:
  mov    $0x0,%eax
  call   <abort@plt>
L644:
  movl   $0x1,-0xc(%rbp)
  addl   $0x1,-0x10(%rbp)
L286:
  mov    -0x18(%rbp),%eax
  mov    %eax,-0x14(%rbp)
  addl   $0x1,-0x18(%rbp)
L1048:
  cmpl   $0x48,-0x18(%rbp)
  jle    L46
  cmpl   $0x48,-0x14(%rbp)
  jne    L884
  mov    -0xc(%rbp),%eax
  movslq %eax,%rdx
  imul   $0xffffffff92492493,%rdx,%rdx
  shr    $0x20,%rdx
  add    %eax,%edx
  sar    $0x2,%edx
  mov    %eax,%ecx
  sar    $0x1f,%ecx
  sub    %ecx,%edx
  mov    %edx,%ecx
  shl    $0x3,%ecx
  sub    %edx,%ecx
  sub    %ecx,%eax
  mov    %eax,%edx
  cmp    $0x3,%edx
  je     L890
  mov    $0x0,%eax
  call   <abort@plt>
  jmp    L890
L884:
  cmpl   $0xffffffff,-0x14(%rbp)
  jne    L683
  cmpl   $0x0,-0xc(%rbp)
  jne    L330
  cmpl   $0x0,-0x10(%rbp)
  je     L890
L330:
  mov    $0x0,%eax
  call   <abort@plt>
  jmp    L890
L683:
  mov    -0xc(%rbp),%edx
  movslq %edx,%rax
  imul   $0xffffffff92492493,%rax,%rax
  shr    $0x20,%rax
  add    %edx,%eax
  sar    $0x2,%eax
  mov    %edx,%ecx
  sar    $0x1f,%ecx
  sub    %ecx,%eax
  mov    %eax,%ecx
  shl    $0x3,%ecx
  sub    %eax,%ecx
  mov    %edx,%eax
  sub    %ecx,%eax
  test   %eax,%eax
  jne    L1207
  cmpl   $0x0,-0xc(%rbp)
  jne    L890
L1207:
  mov    $0x0,%eax
  call   <abort@plt>
L890:
  movl   $0xffffffff,-0x14(%rbp)
  movl   $0x0,-0x10(%rbp)
  movl   $0x0,-0xc(%rbp)
  movl   $0x0,-0x18(%rbp)
  jmp    L730
L831:
  cmpl   $0xffffffff,-0x14(%rbp)
  jne    L496
  movl   $0x1,-0xc(%rbp)
  addl   $0x1,-0x10(%rbp)
  jmp    L168
L496:
  mov    -0x18(%rbp),%eax
  sub    $0x1,%eax
  cmp    %eax,-0x14(%rbp)
  jne    L484
  addl   $0x1,-0xc(%rbp)
  jmp    L168
L484:
  mov    -0x14(%rbp),%eax
  cmp    -0x18(%rbp),%eax
  jl     L428
  mov    $0x0,%eax
  call   <abort@plt>
L428:
  cmpl   $0x6,-0xc(%rbp)
  jg     L84
  mov    $0x0,%eax
  call   <abort@plt>
L84:
  movl   $0x1,-0xc(%rbp)
  addl   $0x1,-0x10(%rbp)
L168:
  mov    -0x18(%rbp),%eax
  mov    %eax,-0x14(%rbp)
  addl   $0x1,-0x18(%rbp)
L730:
  cmpl   $0x48,-0x18(%rbp)
  jle    L831
  movl   $0xffffffff,-0x14(%rbp)
  movl   $0x0,-0x10(%rbp)
  movl   $0x0,-0xc(%rbp)
  movl   $0x0,-0x18(%rbp)
  jmp    L594
L911:
  cmpl   $0xffffffff,-0x14(%rbp)
  jne    L512
  movl   $0x1,-0xc(%rbp)
  addl   $0x1,-0x10(%rbp)
  jmp    L575
L512:
  mov    -0x18(%rbp),%eax
  sub    $0x1,%eax
  cmp    %eax,-0x14(%rbp)
  jne    L724
  addl   $0x1,-0xc(%rbp)
  jmp    L575
L724:
  mov    -0x14(%rbp),%eax
  cmp    -0x18(%rbp),%eax
  jl     L134
  mov    $0x0,%eax
  call   <abort@plt>
L134:
  cmpl   $0x6,-0xc(%rbp)
  jg     L1210
  mov    $0x0,%eax
  call   <abort@plt>
L1210:
  movl   $0x1,-0xc(%rbp)
  addl   $0x1,-0x10(%rbp)
L575:
  mov    -0x18(%rbp),%eax
  mov    %eax,-0x14(%rbp)
  addl   $0x1,-0x18(%rbp)
L594:
  cmpl   $0x48,-0x18(%rbp)
  jle    L911
  mov    $0x0,%eax
  leave
  ret
```

assistant: ```c
int main() {
  int i;
#pragma omp parallel
  {
    int cnt = omp_get_num_threads();
    int thr = omp_get_thread_num();
    int l = -1;
    int c = 0;
    int n = 0;
#pragma omp for nowait schedule(static, 5)
    for (i = 0; i < 73; i++) {
      if (l == -1) {
        n = 1;
        c++;
      } else if (l == i - 1)
        n++;
      else {
        if (l >= i)
          abort();
        if (cnt == 1)
          abort();
        if (n != 5)
          abort();
        n = 1;
        c++;
      }
      if (n == 1) {
        if ((i % 5) != 0)
          abort();
        if ((i / 5) % cnt != thr)
          abort();
      }
      l = i;
    }
    if (cnt == 1) {
      if (n != 73 || l != 73 - 1 || c != 1)
        abort();
    } else if (thr > 73 / 5) {
      if (l != -1 || c != 0 || n != 0)
        abort();
    } else if (thr == 73 / 5) {
      if (l != 73 - 1 || c != 1 || n != 73 % 5)
        abort();
    } else if (c == 0)
      abort();
    else if (l == 73 - 1) {
      if (thr != (73 / 5) % cnt || n != 73 % 5)
        abort();
    } else if ((n % 5) != 0)
      abort();
    l = -1;
    c = 0;
    n = 0;
#pragma omp for schedule(monotonic : static, 7) nowait
    for (i = 0; i < 73; i++) {
      if (l == -1) {
        n = 1;
        c++;
      } else if (l == i - 1)
        n++;
      else {
        if (l >= i)
          abort();
        if (cnt == 1)
          abort();
        if (n != 7)
          abort();
        n = 1;
        c++;
      }
      if (n == 1) {
        if ((i % 7) != 0)
          abort();
        if ((i / 7) % cnt != thr)
          abort();
      }
      l = i;
    }
    if (cnt == 1) {
      if (n != 73 || l != 73 - 1 || c != 1)
        abort();
    } else if (thr > 73 / 7) {
      if (l != -1 || c != 0 || n != 0)
        abort();
    } else if (thr == 73 / 7) {
      if (l != 73 - 1 || c != 1 || n != 73 % 7)
        abort();
    } else if (c == 0)
      abort();
    else if (l == 73 - 1) {
      if (thr != (73 / 7) % cnt || n != 73 % 7)
        abort();
    } else if ((n % 7) != 0)
      abort();
    l = -1;
    c = 0;
    n = 0;
#pragma omp for nowait schedule(static)
    for (i = 0; i < 73; i++) {
      if (l == -1) {
        n = 1;
        c++;
      } else if (l == i - 1)
        n++;
      else
        abort();
      l = i;
    }
    if (c > 1)
      abort();
    l = -1;
    c = 0;
    n = 0;
#pragma omp for nowait schedule(monotonic, simd : static)
    for (i = 0; i < 73; i++) {
      if (l == -1) {
        n = 1;
        c++;
      } else if (l == i - 1)
        n++;
      else
        abort();
      l = i;
    }
    if (c > 1)
      abort();
    l = -1;
    c = 0;
    n = 0;
#pragma omp for schedule(monotonic : dynamic, 5) nowait
    for (i = 0; i < 73; i++) {
      if (l == -1) {
        n = 1;
        c++;
      } else if (l == i - 1)
        n++;
      else {
        if (l >= i)
          abort();
        if ((n % 5) != 0 || n == 0)
          abort();
        n = 1;
        c++;
      }
      l = i;
    }
    if (l == 73 - 1) {
      if (n % 5 != 73 % 5)
        abort();
    } else if (l == -1) {
      if (n != 0 || c != 0)
        abort();
    } else if ((n % 5) != 0 || n == 0)
      abort();
    l = -1;
    c = 0;
    n = 0;
#pragma omp for nowait schedule(dynamic, 7) ordered(1)
    for (i = 0; i < 73; i++) {
      if (l == -1) {
        n = 1;
        c++;
      } else if (l == i - 1)
        n++;
      else {
        if (l >= i)
          abort();
        if ((n % 7) != 0 || n == 0)
          abort();
        n = 1;
        c++;
      }
#pragma omp ordered depend(source)
      if (-1 > 0) {
#pragma omp ordered depend(sink : i)
      } else {
#pragma omp ordered depend(sink : i - 1)
      }
      l = i;
    }
    if (l == 73 - 1) {
      if (n % 7 != 73 % 7)
        abort();
    } else if (l == -1) {
      if (n != 0 || c != 0)
        abort();
    } else if ((n % 7) != 0 || n == 0)
      abort();
    l = -1;
    c = 0;
    n = 0;
#pragma omp for schedule(monotonic : guided, 7) nowait
    for (i = 0; i < 73; i++) {
      if (l == -1) {
        n = 1;
        c++;
      } else if (l == i - 1)
        n++;
      else {
        if (l >= i)
          abort();
        if (n < 7)
          abort();
        n = 1;
        c++;
      }
      l = i;
    }
    l = -1;
    c = 0;
    n = 0;
#pragma omp for nowait schedule(guided, 7) ordered
    for (i = 0; i < 73; i++) {
      if (l == -1) {
        n = 1;
        c++;
      } else if (l == i - 1)
        n++;
      else {
        if (l >= i)
          abort();
        if (n < 7)
          abort();
        n = 1;
        c++;
      }
#pragma omp ordered
      l = i;
    }
  }
  return 0;
}
```