user: 请从给定的汇编指令推导出C源代码:

```asm
<main>:
  endbr64
  push   %rbp
  mov    %rsp,%rbp
  movl   $0x64,-0x4(%rbp)
  movl   $0x0,-0x8(%rbp)
  jmp    L200
L49:
  addl   $0x1,-0x4(%rbp)
  addl   $0x1,-0x8(%rbp)
L200:
  cmpl   $0xf423f,-0x8(%rbp)
  jle    L49
  cmpl   $0xf42a4,-0x4(%rbp)
  je     L228
  mov    $0x1,%eax
  jmp    L300
L228:
  movl   $0x2,-0x4(%rbp)
  movl   $0x0,-0x8(%rbp)
  jmp    L11
L135:
  mov    -0x8(%rbp),%eax
  and    $0x7,%eax
  test   %eax,%eax
  jne    L359
  shll   -0x4(%rbp)
L359:
  addl   $0x1,-0x8(%rbp)
L11:
  cmpl   $0x7f,-0x8(%rbp)
  jle    L135
  cmpl   $0x20000,-0x4(%rbp)
  je     L141
  mov    $0x2,%eax
  jmp    L300
L141:
  movl   $0x7b,-0x4(%rbp)
  movl   $0x0,-0x8(%rbp)
  jmp    L160
L257:
  mov    -0x4(%rbp),%eax
  cmp    -0x8(%rbp),%eax
  jge    L156
  mov    -0x8(%rbp),%eax
  mov    %eax,-0x4(%rbp)
L156:
  addl   $0x1,-0x8(%rbp)
L160:
  cmpl   $0xf423f,-0x8(%rbp)
  jle    L257
  cmpl   $0xf423f,-0x4(%rbp)
  je     L314
  mov    $0x3,%eax
  jmp    L300
L314:
  movl   $0x8235,-0x4(%rbp)
  movl   $0x0,-0x8(%rbp)
  jmp    L38
L317:
  mov    -0x8(%rbp),%eax
  sub    $0x1,%eax
  cmp    %eax,-0x4(%rbp)
  jl     L196
  mov    -0x8(%rbp),%eax
  sub    $0x2,%eax
  mov    %eax,-0x4(%rbp)
L196:
  addl   $0x1,-0x8(%rbp)
L38:
  cmpl   $0xf423f,-0x8(%rbp)
  jle    L317
  cmpl   $0xfffffffe,-0x4(%rbp)
  je     L370
  mov    $0x4,%eax
  jmp    L300
L370:
  movl   $0x75bcd15,-0x4(%rbp)
  movl   $0x0,-0x8(%rbp)
  jmp    L320
L52:
  mov    -0x8(%rbp),%eax
  shl    $0x5,%eax
  add    $0x15,%eax
  and    %eax,-0x4(%rbp)
  addl   $0x1,-0x8(%rbp)
L320:
  cmpl   $0xf423f,-0x8(%rbp)
  jle    L52
  cmpl   $0x15,-0x4(%rbp)
  je     L27
  mov    $0x5,%eax
  jmp    L300
L27:
  movl   $0x104240,-0x4(%rbp)
  movl   $0x0,-0x8(%rbp)
  jmp    L371
L93:
  mov    -0x8(%rbp),%eax
  or     %eax,-0x4(%rbp)
  addl   $0x1,-0x8(%rbp)
L371:
  cmpl   $0xf423f,-0x8(%rbp)
  jle    L93
  cmpl   $0x1fffff,-0x4(%rbp)
  je     L154
  mov    $0x6,%eax
  jmp    L300
L154:
  movl   $0x1e240,-0x4(%rbp)
  movl   $0x0,-0x8(%rbp)
  jmp    L220
L97:
  mov    -0x8(%rbp),%eax
  add    $0x1,%eax
  xor    %eax,-0x4(%rbp)
  addl   $0x1,-0x8(%rbp)
L220:
  cmpl   $0xf423f,-0x8(%rbp)
  jle    L97
  cmpl   $0xea000,-0x4(%rbp)
  je     L170
  mov    $0x7,%eax
  jmp    L300
L170:
  movl   $0x0,-0x4(%rbp)
  movl   $0x0,-0x8(%rbp)
  jmp    L333
L8:
  cmpl   $0x0,-0x4(%rbp)
  setne  %al
  movzbl %al,%eax
  mov    %eax,-0x4(%rbp)
  addl   $0x1,-0x8(%rbp)
L333:
  cmpl   $0xf423f,-0x8(%rbp)
  jle    L8
  cmpl   $0x0,-0x4(%rbp)
  je     L360
  mov    $0x8,%eax
  jmp    L300
L360:
  movl   $0x1,-0x4(%rbp)
  movl   $0x0,-0x8(%rbp)
  jmp    L94
L102:
  cmpl   $0x0,-0x4(%rbp)
  setne  %al
  movzbl %al,%eax
  mov    %eax,-0x4(%rbp)
  addl   $0x1,-0x8(%rbp)
L94:
  cmpl   $0xf423f,-0x8(%rbp)
  jle    L102
  cmpl   $0x0,-0x4(%rbp)
  jne    L264
  mov    $0x9,%eax
  jmp    L300
L264:
  mov    $0x0,%eax
L300:
  pop    %rbp
  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;
}
```