user: 请将以下的汇编代码转换成C语言代码:

```asm
<trivial_zero_9j>:
  endbr64
  push   %r12
  push   %rbp
  push   %rbx
  mov    %edx,%r10d
  mov    %ecx,%edx
  mov    0x20(%rsp),%ecx
  mov    0x28(%rsp),%r11d
  mov    0x30(%rsp),%ebx
  mov    %r11d,%eax
  or     %ebx,%eax
  or     %ecx,%eax
  or     %r9d,%eax
  lea    (%r11,%rbx,1),%ebp
  sub    %ecx,%ebp
  or     %ebp,%eax
  mov    %r11d,%r12d
  sub    %ebx,%r12d
  mov    %ecx,%ebp
  sub    %r12d,%ebp
  or     %ebp,%eax
  mov    %ebx,%r12d
  sub    %r11d,%r12d
  mov    %ecx,%ebp
  sub    %r12d,%ebp
  or     %ebp,%eax
  or     %r8d,%eax
  or     %edx,%eax
  or     %r10d,%eax
  lea    (%r8,%r9,1),%ebp
  sub    %edx,%ebp
  or     %ebp,%eax
  mov    %r8d,%r12d
  sub    %r9d,%r12d
  mov    %edx,%ebp
  sub    %r12d,%ebp
  or     %ebp,%eax
  mov    %r9d,%r12d
  sub    %r8d,%r12d
  mov    %edx,%ebp
  sub    %r12d,%ebp
  or     %ebp,%eax
  or     %esi,%eax
  lea    (%r9,%rbx,1),%ebp
  sub    %r10d,%ebp
  or     %ebp,%eax
  mov    %r9d,%r12d
  sub    %ebx,%r12d
  mov    %r10d,%ebp
  sub    %r12d,%ebp
  or     %ebp,%eax
  mov    %ebx,%r12d
  sub    %r9d,%r12d
  mov    %r10d,%ebp
  sub    %r12d,%ebp
  or     %ebp,%eax
  or     %edi,%eax
  lea    (%r8,%r11,1),%ebp
  sub    %esi,%ebp
  or     %ebp,%eax
  mov    %r8d,%r12d
  sub    %r11d,%r12d
  mov    %esi,%ebp
  sub    %r12d,%ebp
  or     %ebp,%eax
  mov    %r11d,%r12d
  sub    %r8d,%r12d
  mov    %esi,%ebp
  sub    %r12d,%ebp
  or     %ebp,%eax
  lea    (%rsi,%r10,1),%ebp
  sub    %edi,%ebp
  or     %ebp,%eax
  mov    %esi,%r12d
  sub    %r10d,%r12d
  mov    %edi,%ebp
  sub    %r12d,%ebp
  or     %ebp,%eax
  mov    %r10d,%r12d
  sub    %esi,%r12d
  mov    %edi,%ebp
  sub    %r12d,%ebp
  or     %ebp,%eax
  lea    (%rdx,%rcx,1),%ebp
  sub    %edi,%ebp
  or     %ebp,%eax
  mov    %edx,%r12d
  sub    %ecx,%r12d
  mov    %edi,%ebp
  sub    %r12d,%ebp
  or     %ebp,%eax
  mov    %ecx,%r12d
  sub    %edx,%r12d
  mov    %edi,%ebp
  sub    %r12d,%ebp
  or     %ebp,%eax
  and    $0x80000000,%eax
  lea    (%rdx,%r8,1),%ebp
  add    %r9d,%ebp
  lea    (%rcx,%r11,1),%r12d
  add    %ebx,%r12d
  or     %r12d,%ebp
  add    %r10d,%r9d
  add    %ebx,%r9d
  or     %ebp,%r9d
  add    %esi,%r8d
  add    %r11d,%r8d
  or     %r9d,%r8d
  add    %edi,%esi
  add    %r10d,%esi
  or     %r8d,%esi
  add    %edx,%edi
  add    %ecx,%edi
  or     %esi,%edi
  and    $0x1,%edi
  or     %edi,%eax
  pop    %rbx
  pop    %rbp
  pop    %r12
  ret
```

assistant: ```c
int trivial_zero_9j(int two_j1, int two_j2, int two_j3, int two_j4, int two_j5, int two_j6, int two_j7, int two_j8, int two_j9) {
  int collect_sign = 0;
  int collect_odd = 0;
  do {
    collect_sign |= (two_j1) | (two_j2) | (two_j3);
  } while (0);
  do {
    collect_sign |= (two_j4) | (two_j5) | (two_j6);
  } while (0);
  do {
    collect_sign |= (two_j7) | (two_j8) | (two_j9);
  } while (0);
  do {
    collect_odd |= (two_j1) + (two_j2) + (two_j3);
    collect_sign |= (((two_j2) + (two_j3)) - (two_j1));
    collect_sign |= ((two_j1) - ((two_j2) - (two_j3)));
    collect_sign |= ((two_j1) - ((two_j3) - (two_j2)));
  } while (0);
  do {
    collect_odd |= (two_j4) + (two_j5) + (two_j6);
    collect_sign |= (((two_j5) + (two_j6)) - (two_j4));
    collect_sign |= ((two_j4) - ((two_j5) - (two_j6)));
    collect_sign |= ((two_j4) - ((two_j6) - (two_j5)));
  } while (0);
  do {
    collect_odd |= (two_j7) + (two_j8) + (two_j9);
    collect_sign |= (((two_j8) + (two_j9)) - (two_j7));
    collect_sign |= ((two_j7) - ((two_j8) - (two_j9)));
    collect_sign |= ((two_j7) - ((two_j9) - (two_j8)));
  } while (0);
  do {
    collect_odd |= (two_j1) + (two_j4) + (two_j7);
    collect_sign |= (((two_j4) + (two_j7)) - (two_j1));
    collect_sign |= ((two_j1) - ((two_j4) - (two_j7)));
    collect_sign |= ((two_j1) - ((two_j7) - (two_j4)));
  } while (0);
  do {
    collect_odd |= (two_j2) + (two_j5) + (two_j8);
    collect_sign |= (((two_j5) + (two_j8)) - (two_j2));
    collect_sign |= ((two_j2) - ((two_j5) - (two_j8)));
    collect_sign |= ((two_j2) - ((two_j8) - (two_j5)));
  } while (0);
  do {
    collect_odd |= (two_j3) + (two_j6) + (two_j9);
    collect_sign |= (((two_j6) + (two_j9)) - (two_j3));
    collect_sign |= ((two_j3) - ((two_j6) - (two_j9)));
    collect_sign |= ((two_j3) - ((two_j9) - (two_j6)));
  } while (0);
  return ((collect_sign & (1 << (sizeof(int) * 8 - 1))) | (collect_odd & 1));
}
```