user: 下面的汇编指令对应的C源代码是什么:

```asm
<main>:
  endbr64
  push   %rbp
  mov    %rsp,%rbp
  sub    $0x1000,%rsp
  orq    $0x0,(%rsp)
  sub    $0x1000,%rsp
  orq    $0x0,(%rsp)
  sub    $0x30,%rsp
  mov    %fs:0x28,%rax
  mov    %rax,-0x8(%rbp)
  xor    %eax,%eax
  movl   $0x0,-0x2024(%rbp)
  jmp    L18
L214:
  movl   $0x0,-0x2020(%rbp)
  jmp    L102
L33:
  mov    -0x2020(%rbp),%eax
  movslq %eax,%rdx
  mov    -0x2024(%rbp),%eax
  cltq
  shl    $0x5,%rax
  add    %rdx,%rax
  movl   $0x0,-0x2010(%rbp,%rax,4)
  mov    -0x2020(%rbp),%eax
  movslq %eax,%rdx
  mov    -0x2024(%rbp),%eax
  cltq
  shl    $0x5,%rax
  add    %rdx,%rax
  movl   $0x0,-0x1010(%rbp,%rax,4)
  addl   $0x1,-0x2020(%rbp)
L102:
  cmpl   $0x1f,-0x2020(%rbp)
  jle    L33
  addl   $0x1,-0x2024(%rbp)
L18:
  cmpl   $0x1f,-0x2024(%rbp)
  jle    L214
  movl   $0x12403,-0x201c(%rbp)
  movl   $0x1,-0x2024(%rbp)
  jmp    L62
L69:
  movl   $0x1,-0x2020(%rbp)
  jmp    L114
L212:
  mov    -0x201c(%rbp),%eax
  imul   $0x51d,%eax,%eax
  add    $0x3619,%eax
  mov    %eax,-0x201c(%rbp)
  mov    -0x201c(%rbp),%eax
  and    $0x1,%eax
  mov    %eax,%edx
  mov    -0x2020(%rbp),%eax
  movslq %eax,%rcx
  mov    -0x2024(%rbp),%eax
  cltq
  shl    $0x5,%rax
  add    %rcx,%rax
  mov    %edx,-0x2010(%rbp,%rax,4)
  mov    -0x201c(%rbp),%eax
  and    $0x1,%eax
  mov    %eax,%edx
  mov    -0x2020(%rbp),%eax
  movslq %eax,%rcx
  mov    -0x2024(%rbp),%eax
  cltq
  shl    $0x5,%rax
  add    %rcx,%rax
  mov    %edx,-0x1010(%rbp,%rax,4)
  addl   $0x1,-0x2020(%rbp)
L114:
  cmpl   $0x1e,-0x2020(%rbp)
  jle    L212
  addl   $0x1,-0x2024(%rbp)
L62:
  cmpl   $0x1e,-0x2024(%rbp)
  jle    L69
  movl   $0x0,-0x2028(%rbp)
  jmp    L44
L78:
  movl   $0x1,-0x2024(%rbp)
  jmp    L70
L120:
  movl   $0x1,-0x2020(%rbp)
  jmp    L172
L106:
  mov    -0x2024(%rbp),%eax
  lea    -0x1(%rax),%edx
  mov    -0x2020(%rbp),%eax
  sub    $0x1,%eax
  movslq %eax,%rcx
  movslq %edx,%rax
  shl    $0x5,%rax
  add    %rcx,%rax
  mov    -0x2010(%rbp,%rax,4),%ecx
  mov    -0x2024(%rbp),%eax
  lea    -0x1(%rax),%edx
  mov    -0x2020(%rbp),%eax
  movslq %eax,%rsi
  movslq %edx,%rax
  shl    $0x5,%rax
  add    %rsi,%rax
  mov    -0x2010(%rbp,%rax,4),%eax
  lea    (%rcx,%rax,1),%esi
  mov    -0x2024(%rbp),%eax
  lea    -0x1(%rax),%edx
  mov    -0x2020(%rbp),%eax
  add    $0x1,%eax
  movslq %eax,%rcx
  movslq %edx,%rax
  shl    $0x5,%rax
  add    %rcx,%rax
  mov    -0x2010(%rbp,%rax,4),%edx
  mov    -0x2020(%rbp),%eax
  sub    $0x1,%eax
  movslq %eax,%rcx
  mov    -0x2024(%rbp),%eax
  cltq
  shl    $0x5,%rax
  add    %rcx,%rax
  mov    -0x2010(%rbp,%rax,4),%eax
  add    %edx,%eax
  lea    (%rsi,%rax,1),%edi
  mov    -0x2020(%rbp),%eax
  add    $0x1,%eax
  movslq %eax,%rdx
  mov    -0x2024(%rbp),%eax
  cltq
  shl    $0x5,%rax
  add    %rdx,%rax
  mov    -0x2010(%rbp,%rax,4),%ecx
  mov    -0x2024(%rbp),%eax
  lea    0x1(%rax),%edx
  mov    -0x2020(%rbp),%eax
  sub    $0x1,%eax
  movslq %eax,%rsi
  movslq %edx,%rax
  shl    $0x5,%rax
  add    %rsi,%rax
  mov    -0x2010(%rbp,%rax,4),%eax
  lea    (%rcx,%rax,1),%r8d
  mov    -0x2024(%rbp),%eax
  lea    0x1(%rax),%edx
  mov    -0x2020(%rbp),%eax
  movslq %eax,%rcx
  movslq %edx,%rax
  shl    $0x5,%rax
  add    %rcx,%rax
  mov    -0x2010(%rbp,%rax,4),%ecx
  mov    -0x2024(%rbp),%eax
  lea    0x1(%rax),%edx
  mov    -0x2020(%rbp),%eax
  add    $0x1,%eax
  movslq %eax,%rsi
  movslq %edx,%rax
  shl    $0x5,%rax
  add    %rsi,%rax
  mov    -0x2010(%rbp,%rax,4),%eax
  add    %ecx,%eax
  add    %r8d,%eax
  add    %edi,%eax
  mov    %eax,-0x2014(%rbp)
  cmpl   $0x3,-0x2014(%rbp)
  sete   %al
  movzbl %al,%edx
  mov    -0x2020(%rbp),%eax
  movslq %eax,%rcx
  mov    -0x2024(%rbp),%eax
  cltq
  shl    $0x5,%rax
  add    %rcx,%rax
  mov    -0x2010(%rbp,%rax,4),%ecx
  cmpl   $0x2,-0x2014(%rbp)
  sete   %al
  movzbl %al,%eax
  and    %ecx,%eax
  or     %eax,%edx
  mov    -0x2020(%rbp),%eax
  movslq %eax,%rcx
  mov    -0x2024(%rbp),%eax
  cltq
  shl    $0x5,%rax
  add    %rcx,%rax
  mov    %edx,-0x1010(%rbp,%rax,4)
  addl   $0x1,-0x2020(%rbp)
L172:
  cmpl   $0x1e,-0x2020(%rbp)
  jle    L106
  addl   $0x1,-0x2024(%rbp)
L70:
  cmpl   $0x1e,-0x2024(%rbp)
  jle    L120
  movl   $0x1,-0x2024(%rbp)
  jmp    L72
L134:
  movl   $0x1,-0x2020(%rbp)
  jmp    L153
L200:
  mov    -0x2024(%rbp),%eax
  lea    -0x1(%rax),%edx
  mov    -0x2020(%rbp),%eax
  sub    $0x1,%eax
  movslq %eax,%rcx
  movslq %edx,%rax
  shl    $0x5,%rax
  add    %rcx,%rax
  mov    -0x1010(%rbp,%rax,4),%ecx
  mov    -0x2024(%rbp),%eax
  lea    -0x1(%rax),%edx
  mov    -0x2020(%rbp),%eax
  movslq %eax,%rsi
  movslq %edx,%rax
  shl    $0x5,%rax
  add    %rsi,%rax
  mov    -0x1010(%rbp,%rax,4),%eax
  lea    (%rcx,%rax,1),%esi
  mov    -0x2024(%rbp),%eax
  lea    -0x1(%rax),%edx
  mov    -0x2020(%rbp),%eax
  add    $0x1,%eax
  movslq %eax,%rcx
  movslq %edx,%rax
  shl    $0x5,%rax
  add    %rcx,%rax
  mov    -0x1010(%rbp,%rax,4),%edx
  mov    -0x2020(%rbp),%eax
  sub    $0x1,%eax
  movslq %eax,%rcx
  mov    -0x2024(%rbp),%eax
  cltq
  shl    $0x5,%rax
  add    %rcx,%rax
  mov    -0x1010(%rbp,%rax,4),%eax
  add    %edx,%eax
  lea    (%rsi,%rax,1),%edi
  mov    -0x2020(%rbp),%eax
  add    $0x1,%eax
  movslq %eax,%rdx
  mov    -0x2024(%rbp),%eax
  cltq
  shl    $0x5,%rax
  add    %rdx,%rax
  mov    -0x1010(%rbp,%rax,4),%ecx
  mov    -0x2024(%rbp),%eax
  lea    0x1(%rax),%edx
  mov    -0x2020(%rbp),%eax
  sub    $0x1,%eax
  movslq %eax,%rsi
  movslq %edx,%rax
  shl    $0x5,%rax
  add    %rsi,%rax
  mov    -0x1010(%rbp,%rax,4),%eax
  lea    (%rcx,%rax,1),%r8d
  mov    -0x2024(%rbp),%eax
  lea    0x1(%rax),%edx
  mov    -0x2020(%rbp),%eax
  movslq %eax,%rcx
  movslq %edx,%rax
  shl    $0x5,%rax
  add    %rcx,%rax
  mov    -0x1010(%rbp,%rax,4),%ecx
  mov    -0x2024(%rbp),%eax
  lea    0x1(%rax),%edx
  mov    -0x2020(%rbp),%eax
  add    $0x1,%eax
  movslq %eax,%rsi
  movslq %edx,%rax
  shl    $0x5,%rax
  add    %rsi,%rax
  mov    -0x1010(%rbp,%rax,4),%eax
  add    %ecx,%eax
  add    %r8d,%eax
  add    %edi,%eax
  mov    %eax,-0x2014(%rbp)
  cmpl   $0x3,-0x2014(%rbp)
  sete   %al
  movzbl %al,%edx
  mov    -0x2020(%rbp),%eax
  movslq %eax,%rcx
  mov    -0x2024(%rbp),%eax
  cltq
  shl    $0x5,%rax
  add    %rcx,%rax
  mov    -0x1010(%rbp,%rax,4),%ecx
  cmpl   $0x2,-0x2014(%rbp)
  sete   %al
  movzbl %al,%eax
  and    %ecx,%eax
  or     %eax,%edx
  mov    -0x2020(%rbp),%eax
  movslq %eax,%rcx
  mov    -0x2024(%rbp),%eax
  cltq
  shl    $0x5,%rax
  add    %rcx,%rax
  mov    %edx,-0x2010(%rbp,%rax,4)
  addl   $0x1,-0x2020(%rbp)
L153:
  cmpl   $0x1e,-0x2020(%rbp)
  jle    L200
  addl   $0x1,-0x2024(%rbp)
L72:
  cmpl   $0x1e,-0x2024(%rbp)
  jle    L134
  addl   $0x2,-0x2028(%rbp)
L44:
  cmpl   $0x9,-0x2028(%rbp)
  jle    L78
  movl   $0x0,-0x2018(%rbp)
  movl   $0x0,-0x2024(%rbp)
  jmp    L83
L228:
  movl   $0x0,-0x2020(%rbp)
  jmp    L246
L213:
  mov    -0x2020(%rbp),%eax
  movslq %eax,%rdx
  mov    -0x2024(%rbp),%eax
  cltq
  shl    $0x5,%rax
  add    %rdx,%rax
  mov    -0x1010(%rbp,%rax,4),%eax
  add    %eax,-0x2018(%rbp)
  addl   $0x1,-0x2020(%rbp)
L246:
  cmpl   $0x1f,-0x2020(%rbp)
  jle    L213
  addl   $0x1,-0x2024(%rbp)
L83:
  cmpl   $0x1f,-0x2024(%rbp)
  jle    L228
  cmpl   $0xc4,-0x2018(%rbp)
  jne    L68
  mov    $0xbadbeef,%eax
  jmp    L218
L68:
  mov    $0xbad,%eax
L218:
  mov    -0x8(%rbp),%rdx
  sub    %fs:0x28,%rdx
  je     L177
  call   <__stack_chk_fail@plt>
L177:
  leave
  ret
```

assistant: ```c
int main() {
  int it, i, j, sum;
  int seed, checksum;
  int data1[32][32], data2[32][32];
  for (i = 0; i < 32; i++) {
    for (j = 0; j < 32; j++) {
      data1[i][j] = 0;
      data2[i][j] = 0;
    }
  }
  seed = 74755;
  for (i = 1; i < 32 - 1; i++) {
    for (j = 1; j < 32 - 1; j++) {
      seed = (seed * 1309 + 13849);
      data1[i][j] = seed & 1;
      data2[i][j] = seed & 1;
    }
  }
  it = 0;
  while (it < 10) {
    for (i = 1; i < 32 - 1; i++) {
      for (j = 1; j < 32 - 1; j++) {
        sum = ((data1[i - 1][j - 1] + data1[i - 1][j]) + (data1[i - 1][j + 1] + data1[i][j - 1])) + ((data1[i][j + 1] + data1[i + 1][j - 1]) + (data1[i + 1][j] + data1[i + 1][j + 1]));
        data2[i][j] = (sum == 3) | (data1[i][j] & (sum == 2));
      }
    }
    for (i = 1; i < 32 - 1; i++) {
      for (j = 1; j < 32 - 1; j++) {
        sum = ((data2[i - 1][j - 1] + data2[i - 1][j]) + (data2[i - 1][j + 1] + data2[i][j - 1])) + ((data2[i][j + 1] + data2[i + 1][j - 1]) + (data2[i + 1][j] + data2[i + 1][j + 1]));
        data1[i][j] = (sum == 3) | (data2[i][j] & (sum == 2));
      }
    }
    it += 2;
  }
  checksum = 0;
  for (i = 0; i < 32; i++)
    for (j = 0; j < 32; j++)
      checksum += data2[i][j];
  if (checksum == 196) {
    return 0xbadbeef;
  } else {
    return 0xbad;
  }
}
```