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

```asm
<main>:
  endbr64
  mov    $0x2,%edx
  xor    %eax,%eax
  nopl   0x0(%rax,%rax,1)
L57:
  test   $0x7,%al
  lea    (%rdx,%rdx,1),%ecx
  cmove  %ecx,%edx
  add    $0x1,%eax
  cmp    $0x80,%eax
  jne    L57
  cmp    $0x20000,%edx
  jne    L106
  mov    $0x7b,%edx
  xor    %eax,%eax
  nopl   (%rax)
L12:
  cmp    %eax,%edx
  cmovl  %eax,%edx
  add    $0x1,%eax
  cmp    $0xf4240,%eax
  jne    L12
  cmp    $0xf423f,%edx
  jne    L66
  or     $0xffffffff,%eax
  mov    $0x8235,%edx
  nopl   0x0(%rax,%rax,1)
L64:
  lea    -0x1(%rax),%ecx
  cmp    %edx,%eax
  cmovle %ecx,%edx
  add    $0x1,%eax
  cmp    $0xf423f,%eax
  jne    L64
  cmp    $0xfffffffe,%edx
  jne    L25
  mov    $0x15,%eax
  mov    $0x75bcd15,%edx
  nopl   0x0(%rax)
L28:
  and    %eax,%edx
  add    $0x20,%eax
  cmp    $0x1e84815,%eax
  jne    L28
  cmp    $0x15,%edx
  jne    L93
  mov    $0x104240,%edx
  xor    %eax,%eax
L94:
  or     %eax,%edx
  add    $0x1,%eax
  cmp    $0xf4240,%eax
  jne    L94
  cmp    $0x1fffff,%edx
  jne    L34
  mov    $0x1e240,%edx
  xor    %eax,%eax
  nopl   0x0(%rax,%rax,1)
L18:
  add    $0x1,%eax
  xor    %eax,%edx
  cmp    $0xf4240,%eax
  jne    L18
  xor    %eax,%eax
  cmp    $0xea000,%edx
  mov    $0x7,%edx
  cmovne %edx,%eax
  ret
L106:
  mov    $0x2,%eax
  ret
L25:
  mov    $0x4,%eax
  ret
L66:
  mov    $0x3,%eax
  ret
L93:
  mov    $0x5,%eax
  ret
L34:
  mov    $0x6,%eax
  ret
```

assistant: ```c
int main() {
  int i;
  int int_red;
  int_red = 100;
#pragma acc parallel
#pragma acc loop reduction(+ : int_red)
  for (i = 0; i < 1000000; i++) {
    int_red += 1;
  }
  if (int_red != 1000100) {
    return 1;
  }
  int_red = 2;
#pragma acc parallel
#pragma acc loop reduction(* : int_red)
  for (i = 0; i < 128; i++) {
    if (i % 8 == 0) {
      int_red *= 2;
    } else {
      int_red *= 1;
    }
  }
  if (int_red != 131072) {
    return 2;
  }
  int_red = 123;
#pragma acc parallel
#pragma acc loop reduction(max : int_red)
  for (i = 0; i < 1000000; i++) {
    if (int_red < i) {
      int_red = i;
    }
  }
  if (int_red != 999999) {
    return 3;
  }
  int_red = 33333;
#pragma acc parallel
#pragma acc loop reduction(min : int_red)
  for (i = 0; i < 1000000; i++) {
    if (int_red > i - 2) {
      int_red = i - 2;
    }
  }
  if (int_red != -2) {
    return 4;
  }
  int_red = 123456789;
#pragma acc parallel
#pragma acc loop reduction(& : int_red)
  for (i = 0; i < 1000000; i++) {
    int_red &= ((i << 5) + 21);
  }
  if (int_red != 21) {
    return 5;
  }
  int_red = 1065536;
#pragma acc parallel
#pragma acc loop reduction(| : int_red)
  for (i = 0; i < 1000000; i++) {
    int_red |= i;
  }
  if (int_red != 2097151) {
    return 6;
  }
  int_red = 123456;
#pragma acc parallel
#pragma acc loop reduction(^ : int_red)
  for (i = 0; i < 1000000; i++) {
    int_red ^= i + 1;
  }
  if (int_red != 958464) {
    return 7;
  }
  int_red = 0;
#pragma acc parallel
#pragma acc loop reduction(&& : int_red)
  for (i = 0; i < 1000000; i++) {
    int_red = int_red && 1;
  }
  if (int_red) {
    return 8;
  }
  int_red = 1;
#pragma acc parallel
#pragma acc loop reduction(|| : int_red)
  for (i = 0; i < 1000000; i++) {
    int_red = int_red || 0;
  }
  if (!int_red) {
    return 9;
  }
  return 0;
}
```