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

```asm
<tetranacci>:
  endbr64
  push   %r15
  push   %r14
  push   %r13
  push   %r12
  push   %rbp
  push   %rbx
  sub    $0x38,%rsp
  cmp    $0x2,%edi
  jbe    L71
  cmp    $0x3,%edi
  je     L195
  lea    -0x3(%rdi),%eax
  movl   $0x0,0x2c(%rsp)
  mov    %eax,0x24(%rsp)
L1003:
  mov    0x24(%rsp),%edx
  lea    0x2(%rdx),%eax
  test   %edx,%edx
  je     L1201
  cmp    $0x3,%eax
  je     L689
  mov    %edx,%eax
  movl   $0x0,0x20(%rsp)
  sub    $0x1,%eax
  mov    %eax,0x14(%rsp)
L319:
  mov    0x14(%rsp),%eax
  lea    0x2(%rax),%ecx
  mov    %ecx,0xc(%rsp)
  test   %eax,%eax
  je     L609
  cmp    $0x3,%ecx
  je     L1156
  mov    %eax,0x18(%rsp)
  lea    -0x1(%rax),%r12d
  movl   $0x0,0x10(%rsp)
L136:
  mov    0xc(%rsp),%eax
  lea    -0x1(%rax),%edi
  call   <tetranacci>
  mov    %eax,%r13d
  mov    0x18(%rsp),%eax
  mov    %eax,%r14d
  cmp    $0x2,%eax
  jbe    L1203
  cmp    $0x3,%eax
  je     L104
  xor    %ebp,%ebp
  xchg   %ax,%ax
L162:
  lea    -0x1(%r14),%edi
  call   <tetranacci>
  lea    -0x2(%r14),%edi
  mov    %eax,%ebx
  call   <tetranacci>
  lea    -0x3(%r14),%edi
  sub    $0x4,%r14d
  add    %eax,%ebx
  call   <tetranacci>
  add    %eax,%ebx
  add    %ebx,%ebp
  cmp    $0x2,%r14d
  jbe    L791
  cmp    $0x3,%r14d
  jne    L162
  lea    0x1(%rbp,%r13,1),%r13d
L1203:
  mov    %r12d,%r14d
  cmp    $0x2,%r12d
  jbe    L47
  cmp    $0x3,%r12d
  je     L544
  xor    %r15d,%r15d
L1352:
  lea    -0x1(%r14),%edi
  call   <tetranacci>
  lea    -0x2(%r14),%edi
  mov    %eax,%ebx
  call   <tetranacci>
  lea    -0x3(%r14),%edi
  sub    $0x4,%r14d
  add    %eax,%ebx
  call   <tetranacci>
  add    %eax,%ebx
  add    %ebx,%r15d
  cmp    $0x2,%r14d
  jbe    L628
  cmp    $0x3,%r14d
  jne    L1352
  lea    0x1(%r15,%r13,1),%r13d
L47:
  subl   $0x4,0xc(%rsp)
  mov    0xc(%rsp),%eax
  add    %r13d,0x10(%rsp)
  cmp    $0x2,%eax
  jbe    L105
  subl   $0x4,0x18(%rsp)
  sub    $0x4,%r12d
  cmpl   $0x3,0xc(%rsp)
  jne    L136
  addl   $0x1,0x10(%rsp)
L105:
  mov    0x14(%rsp),%eax
  lea    0x1(%rax),%r12d
  cmp    $0x2,%r12d
  jbe    L346
  cmp    $0x3,%r12d
  je     L1226
  xor    %r13d,%r13d
L343:
  lea    -0x1(%r12),%edi
  call   <tetranacci>
  lea    -0x2(%r12),%edi
  mov    %eax,%ebx
  call   <tetranacci>
  lea    -0x3(%r12),%edi
  sub    $0x4,%r12d
  add    %eax,%ebx
  call   <tetranacci>
  add    %eax,%ebx
  add    %ebx,%r13d
  cmp    $0x2,%r12d
  jbe    L244
  cmp    $0x3,%r12d
  jne    L343
  mov    0x10(%rsp),%eax
  lea    0x1(%r13,%rax,1),%eax
  mov    %eax,0x10(%rsp)
L285:
  mov    0x14(%rsp),%eax
  mov    %eax,%r12d
  cmp    $0x2,%eax
  jbe    L346
  cmp    $0x3,%eax
  je     L591
  xor    %r13d,%r13d
L535:
  lea    -0x1(%r12),%edi
  call   <tetranacci>
  lea    -0x2(%r12),%edi
  mov    %eax,%ebx
  call   <tetranacci>
  lea    -0x3(%r12),%edi
  sub    $0x4,%r12d
  add    %eax,%ebx
  call   <tetranacci>
  add    %eax,%ebx
  add    %ebx,%r13d
  cmp    $0x2,%r12d
  jbe    L790
  cmp    $0x3,%r12d
  jne    L535
  mov    0x10(%rsp),%eax
  lea    0x1(%r13,%rax,1),%eax
  mov    %eax,0x10(%rsp)
L346:
  mov    0x14(%rsp),%eax
  mov    0x10(%rsp),%edx
  add    %edx,0x20(%rsp)
  sub    $0x1,%eax
  cmp    $0x2,%eax
  jbe    L107
  subl   $0x4,0x14(%rsp)
  cmp    $0x3,%eax
  jne    L319
  addl   $0x1,0x20(%rsp)
L107:
  mov    0x24(%rsp),%ecx
  lea    0x1(%rcx),%eax
  cmp    $0x2,%eax
  jbe    L238
  cmp    $0x3,%eax
  je     L571
  mov    %ecx,0x14(%rsp)
  movl   $0x0,0x28(%rsp)
L11:
  mov    0x14(%rsp),%eax
  mov    %eax,%r12d
  cmp    $0x2,%eax
  je     L1083
  cmp    $0x3,%eax
  je     L217
  movl   $0x0,0x10(%rsp)
L322:
  lea    -0x1(%r12),%edi
  call   <tetranacci>
  lea    -0x2(%r12),%edi
  mov    %eax,%ebx
  call   <tetranacci>
  lea    -0x3(%r12),%edi
  sub    $0x4,%r12d
  add    %eax,%ebx
  call   <tetranacci>
  add    %eax,%ebx
  add    %ebx,0x10(%rsp)
  cmp    $0x2,%r12d
  jbe    L60
  cmp    $0x3,%r12d
  jne    L322
  addl   $0x1,0x10(%rsp)
L60:
  mov    0x14(%rsp),%eax
  sub    $0x1,%eax
  mov    %eax,0xc(%rsp)
  cmp    $0x2,%eax
  jbe    L914
  cmp    $0x3,%eax
  je     L550
  mov    0x14(%rsp),%eax
  movl   $0x0,0x18(%rsp)
  lea    -0x3(%rax),%esi
  lea    -0x4(%rax),%r12d
  mov    %esi,0x1c(%rsp)
L762:
  mov    0xc(%rsp),%eax
  lea    -0x1(%rax),%edi
  call   <tetranacci>
  mov    %eax,%r14d
  mov    0x1c(%rsp),%eax
  mov    %eax,%r13d
  cmp    $0x2,%eax
  jbe    L611
  cmp    $0x3,%eax
  je     L818
  xor    %ebp,%ebp
  cs nopw 0x0(%rax,%rax,1)
L350:
  lea    -0x1(%r13),%edi
  call   <tetranacci>
  lea    -0x2(%r13),%edi
  mov    %eax,%ebx
  call   <tetranacci>
  lea    -0x3(%r13),%edi
  sub    $0x4,%r13d
  add    %eax,%ebx
  call   <tetranacci>
  add    %eax,%ebx
  add    %ebx,%ebp
  cmp    $0x2,%r13d
  jbe    L1340
  cmp    $0x3,%r13d
  jne    L350
  lea    0x1(%rbp,%r14,1),%r14d
L611:
  mov    %r12d,%r15d
  cmp    $0x2,%r12d
  jbe    L685
  cmp    $0x3,%r12d
  je     L868
  xor    %r13d,%r13d
L859:
  lea    -0x1(%r15),%edi
  call   <tetranacci>
  lea    -0x2(%r15),%edi
  mov    %eax,%ebx
  call   <tetranacci>
  lea    -0x3(%r15),%edi
  sub    $0x4,%r15d
  add    %eax,%ebx
  call   <tetranacci>
  add    %eax,%ebx
  add    %ebx,%r13d
  cmp    $0x2,%r15d
  jbe    L678
  cmp    $0x3,%r15d
  jne    L859
  lea    0x1(%r13,%r14,1),%r14d
L685:
  subl   $0x4,0xc(%rsp)
  mov    0xc(%rsp),%eax
  add    %r14d,0x18(%rsp)
  cmp    $0x2,%eax
  jbe    L864
  subl   $0x4,0x1c(%rsp)
  sub    $0x4,%r12d
  cmpl   $0x3,0xc(%rsp)
  jne    L762
  mov    0x10(%rsp),%ecx
  mov    0x18(%rsp),%eax
  lea    0x1(%rax,%rcx,1),%eax
  mov    %eax,0x10(%rsp)
L914:
  mov    0x14(%rsp),%eax
  lea    -0x2(%rax),%r12d
  cmp    $0x2,%r12d
  jbe    L810
  cmp    $0x3,%r12d
  je     L192
  lea    -0x4(%rax),%edx
  movl   $0x0,0xc(%rsp)
  lea    -0x5(%rax),%r15d
  mov    %edx,0x18(%rsp)
L854:
  lea    -0x1(%r12),%edi
  call   <tetranacci>
  mov    %eax,%r13d
  mov    0x18(%rsp),%eax
  mov    %eax,%r14d
  cmp    $0x2,%eax
  jbe    L707
  cmp    $0x3,%eax
  je     L339
  xor    %ebp,%ebp
  nopl   (%rax)
L1050:
  lea    -0x1(%r14),%edi
  call   <tetranacci>
  lea    -0x2(%r14),%edi
  mov    %eax,%ebx
  call   <tetranacci>
  lea    -0x3(%r14),%edi
  sub    $0x4,%r14d
  add    %eax,%ebx
  call   <tetranacci>
  add    %eax,%ebx
  add    %ebx,%ebp
  cmp    $0x2,%r14d
  jbe    L848
  cmp    $0x3,%r14d
  jne    L1050
  lea    0x1(%rbp,%r13,1),%r13d
L707:
  mov    %r15d,%edi
  sub    $0x4,%r12d
  call   <tetranacci>
  add    %r13d,%eax
  add    %eax,0xc(%rsp)
  cmp    $0x2,%r12d
  jbe    L655
  subl   $0x4,0x18(%rsp)
  sub    $0x4,%r15d
  cmp    $0x3,%r12d
  jne    L854
  mov    0x10(%rsp),%esi
  mov    0xc(%rsp),%eax
  lea    0x1(%rax,%rsi,1),%eax
  mov    %eax,0x10(%rsp)
L810:
  mov    0x14(%rsp),%eax
  mov    0x10(%rsp),%esi
  add    %esi,0x28(%rsp)
  sub    $0x3,%eax
  cmp    $0x2,%eax
  jbe    L584
  subl   $0x4,0x14(%rsp)
  cmp    $0x3,%eax
  jne    L11
  mov    0x20(%rsp),%esi
  mov    0x28(%rsp),%eax
  lea    0x1(%rax,%rsi,1),%eax
  mov    %eax,0x20(%rsp)
L1416:
  mov    0x24(%rsp),%eax
  cmp    $0x2,%eax
  jbe    L238
  cmp    $0x3,%eax
  je     L3
  sub    $0x4,%eax
  movl   $0x0,0x28(%rsp)
  mov    %eax,0x14(%rsp)
  lea    0x3(%rax),%r12d
  cmp    $0xffffffff,%eax
  je     L804
L822:
  cmp    $0x3,%r12d
  je     L359
  mov    %eax,%r13d
  lea    0x1(%rax),%eax
  movl   $0x0,0x10(%rsp)
  mov    %eax,0xc(%rsp)
L531:
  lea    -0x1(%r12),%edi
  call   <tetranacci>
  mov    %eax,%r14d
  mov    0xc(%rsp),%eax
  mov    %eax,%r15d
  cmp    $0x2,%eax
  jbe    L713
  cmp    $0x3,%eax
  je     L380
  xor    %ebp,%ebp
  nopl   0x0(%rax)
L1108:
  lea    -0x1(%r15),%edi
  call   <tetranacci>
  lea    -0x2(%r15),%edi
  mov    %eax,%ebx
  call   <tetranacci>
  lea    -0x3(%r15),%edi
  sub    $0x4,%r15d
  add    %eax,%ebx
  call   <tetranacci>
  add    %eax,%ebx
  add    %ebx,%ebp
  cmp    $0x2,%r15d
  jbe    L888
  cmp    $0x3,%r15d
  jne    L1108
  lea    0x1(%rbp,%r14,1),%eax
  mov    %eax,%r14d
L713:
  mov    %r13d,%edi
  sub    $0x4,%r12d
  call   <tetranacci>
  add    %r14d,%eax
  add    %eax,0x10(%rsp)
  cmp    $0x2,%r12d
  jbe    L1204
  subl   $0x4,0xc(%rsp)
  sub    $0x4,%r13d
  cmp    $0x3,%r12d
  jne    L531
  addl   $0x1,0x10(%rsp)
L1204:
  mov    0x14(%rsp),%eax
  add    $0x2,%eax
  mov    %eax,0xc(%rsp)
  cmp    $0x2,%eax
  jbe    L448
  cmp    $0x3,%eax
  je     L881
  mov    0x14(%rsp),%eax
  movl   $0x0,0x18(%rsp)
  mov    %eax,0x1c(%rsp)
  lea    -0x1(%rax),%r12d
L1061:
  mov    0xc(%rsp),%eax
  lea    -0x1(%rax),%edi
  call   <tetranacci>
  mov    %eax,%r13d
  mov    0x1c(%rsp),%eax
  mov    %eax,%r14d
  cmp    $0x2,%eax
  jbe    L484
  cmp    $0x3,%eax
  je     L954
  xor    %ebp,%ebp
  nop
L384:
  lea    -0x1(%r14),%edi
  call   <tetranacci>
  lea    -0x2(%r14),%edi
  mov    %eax,%ebx
  call   <tetranacci>
  lea    -0x3(%r14),%edi
  sub    $0x4,%r14d
  add    %eax,%ebx
  call   <tetranacci>
  add    %eax,%ebx
  add    %ebx,%ebp
  cmp    $0x2,%r14d
  jbe    L855
  cmp    $0x3,%r14d
  jne    L384
  lea    0x1(%rbp,%r13,1),%r13d
L484:
  mov    %r12d,%r14d
  cmp    $0x2,%r12d
  jbe    L259
  cmp    $0x3,%r12d
  je     L1104
  xor    %r15d,%r15d
L1321:
  lea    -0x1(%r14),%edi
  call   <tetranacci>
  lea    -0x2(%r14),%edi
  mov    %eax,%ebx
  call   <tetranacci>
  lea    -0x3(%r14),%edi
  sub    $0x4,%r14d
  add    %eax,%ebx
  call   <tetranacci>
  add    %eax,%ebx
  add    %ebx,%r15d
  cmp    $0x2,%r14d
  jbe    L839
  cmp    $0x3,%r14d
  jne    L1321
  lea    0x1(%r15,%r13,1),%r13d
L259:
  subl   $0x4,0xc(%rsp)
  mov    0xc(%rsp),%eax
  add    %r13d,0x18(%rsp)
  cmp    $0x2,%eax
  jbe    L1364
  subl   $0x4,0x1c(%rsp)
  sub    $0x4,%r12d
  cmpl   $0x3,0xc(%rsp)
  jne    L1061
  mov    0x10(%rsp),%ecx
  mov    0x18(%rsp),%eax
  lea    0x1(%rax,%rcx,1),%eax
  mov    %eax,0x10(%rsp)
L448:
  mov    0x14(%rsp),%r12d
  lea    0x1(%r12),%eax
  cmp    $0x2,%eax
  jbe    L930
  cmp    $0x3,%eax
  je     L916
  xor    %r14d,%r14d
L66:
  mov    %r12d,%r13d
  cmp    $0x2,%r12d
  je     L758
  cmp    $0x3,%r12d
  je     L1063
  xor    %ebp,%ebp
L662:
  lea    -0x1(%r13),%edi
  call   <tetranacci>
  lea    -0x2(%r13),%edi
  mov    %eax,%ebx
  call   <tetranacci>
  lea    -0x3(%r13),%edi
  sub    $0x4,%r13d
  add    %eax,%ebx
  call   <tetranacci>
  add    %eax,%ebx
  add    %ebx,%ebp
  cmp    $0x2,%r13d
  jbe    L1316
  cmp    $0x3,%r13d
  jne    L662
  add    $0x1,%ebp
L1316:
  lea    -0x1(%r12),%r15d
  cmp    $0x2,%r15d
  jbe    L32
  cmp    $0x3,%r15d
  je     L1174
  xor    %r13d,%r13d
L266:
  lea    -0x1(%r15),%edi
  call   <tetranacci>
  lea    -0x2(%r15),%edi
  mov    %eax,%ebx
  call   <tetranacci>
  lea    -0x3(%r15),%edi
  sub    $0x4,%r15d
  add    %eax,%ebx
  call   <tetranacci>
  add    %eax,%ebx
  add    %ebx,%r13d
  cmp    $0x2,%r15d
  jbe    L880
  cmp    $0x3,%r15d
  jne    L266
  lea    0x1(%r13,%rbp,1),%ebp
L32:
  lea    -0x2(%r12),%r15d
  cmp    $0x2,%r15d
  jbe    L249
  cmp    $0x3,%r15d
  je     L748
  xor    %r13d,%r13d
L116:
  lea    -0x1(%r15),%edi
  call   <tetranacci>
  lea    -0x2(%r15),%edi
  mov    %eax,%ebx
  call   <tetranacci>
  lea    -0x3(%r15),%edi
  sub    $0x4,%r15d
  add    %eax,%ebx
  call   <tetranacci>
  add    %eax,%ebx
  add    %ebx,%r13d
  cmp    $0x2,%r15d
  jbe    L1128
  cmp    $0x3,%r15d
  jne    L116
  lea    0x1(%r13,%rbp,1),%ebp
L249:
  lea    -0x3(%r12),%eax
  add    %ebp,%r14d
  cmp    $0x2,%eax
  jbe    L733
  sub    $0x4,%r12d
  cmp    $0x3,%eax
  jne    L66
  mov    0x10(%rsp),%eax
  lea    0x1(%r14,%rax,1),%eax
  mov    %eax,0x10(%rsp)
L930:
  mov    0x10(%rsp),%edx
  add    %edx,0x28(%rsp)
  cmpl   $0x2,0x14(%rsp)
  jbe    L777
  mov    0x14(%rsp),%ecx
  lea    -0x4(%rcx),%eax
  cmp    $0x3,%ecx
  je     L474
  mov    %eax,0x14(%rsp)
  lea    0x3(%rax),%r12d
  cmp    $0xffffffff,%eax
  jne    L822
L804:
  movl   $0x0,0x10(%rsp)
  jmp    L1204
  xchg   %ax,%ax
L855:
  add    %ebp,%r13d
  jmp    L484
  nopl   0x0(%rax,%rax,1)
L888:
  mov    %r14d,%eax
  add    %ebp,%eax
  mov    %eax,%r14d
  jmp    L713
  nopl   (%rax)
L848:
  add    %ebp,%r13d
  jmp    L707
  nopl   0x0(%rax,%rax,1)
L1340:
  add    %ebp,%r14d
  jmp    L611
  nopl   0x0(%rax,%rax,1)
L791:
  add    %ebp,%r13d
  jmp    L1203
  nopl   0x0(%rax,%rax,1)
L839:
  add    %r15d,%r13d
  jmp    L259
  nopl   0x0(%rax,%rax,1)
L678:
  add    %r13d,%r14d
  jmp    L685
  nopl   0x0(%rax,%rax,1)
L1128:
  add    %r13d,%ebp
  jmp    L249
  nopl   0x0(%rax,%rax,1)
L880:
  add    %r13d,%ebp
  jmp    L32
  nopl   0x0(%rax,%rax,1)
L628:
  add    %r15d,%r13d
  jmp    L47
  nopl   0x0(%rax,%rax,1)
L244:
  add    %r13d,0x10(%rsp)
  jmp    L285
  nopw   0x0(%rax,%rax,1)
L790:
  add    %r13d,0x10(%rsp)
  jmp    L346
  nopw   0x0(%rax,%rax,1)
L758:
  xor    %ebp,%ebp
  jmp    L1316
  nopw   0x0(%rax,%rax,1)
L655:
  mov    0xc(%rsp),%esi
  add    %esi,0x10(%rsp)
  jmp    L810
  nopl   (%rax)
L544:
  mov    0x10(%rsp),%eax
  lea    0x1(%r13,%rax,1),%eax
  mov    %eax,0x10(%rsp)
  jmp    L105
  nopw   0x0(%rax,%rax,1)
L1104:
  mov    0x18(%rsp),%eax
  lea    0x1(%rax,%r13,1),%eax
  add    %eax,0x10(%rsp)
  jmp    L448
  nopw   0x0(%rax,%rax,1)
L868:
  mov    0x18(%rsp),%eax
  lea    0x1(%rax,%r14,1),%eax
  add    %eax,0x10(%rsp)
  jmp    L914
  nopw   0x0(%rax,%rax,1)
L1063:
  mov    $0x1,%ebp
  jmp    L249
  nopw   0x0(%rax,%rax,1)
L748:
  lea    0x1(%r14,%rbp,1),%eax
  add    %eax,0x10(%rsp)
  jmp    L930
  cs nopw 0x0(%rax,%rax,1)
L1174:
  lea    0x1(%r14,%rbp,1),%r14d
L733:
  add    %r14d,0x10(%rsp)
  jmp    L930
L474:
  mov    0x20(%rsp),%esi
  mov    0x28(%rsp),%eax
  lea    0x1(%rax,%rsi,1),%eax
  mov    %eax,0x20(%rsp)
L238:
  mov    0x24(%rsp),%eax
  mov    0x20(%rsp),%edx
  add    %edx,0x2c(%rsp)
  sub    $0x1,%eax
  cmp    $0x2,%eax
  jbe    L499
  subl   $0x4,0x24(%rsp)
  cmp    $0x3,%eax
  jne    L1003
  addl   $0x1,0x2c(%rsp)
L499:
  mov    0x2c(%rsp),%eax
  add    $0x38,%rsp
  pop    %rbx
  pop    %rbp
  pop    %r12
  pop    %r13
  pop    %r14
  pop    %r15
  ret
L1083:
  movl   $0x0,0x10(%rsp)
  jmp    L60
L609:
  movl   $0x0,0x10(%rsp)
  jmp    L105
L192:
  mov    0x28(%rsp),%eax
  mov    0x10(%rsp),%edx
  lea    0x1(%rax,%rdx,1),%eax
  add    %eax,0x20(%rsp)
  jmp    L1416
L1156:
  movl   $0x1,0x10(%rsp)
  jmp    L346
L881:
  mov    0x28(%rsp),%eax
  mov    0x10(%rsp),%esi
  lea    0x1(%rax,%rsi,1),%eax
  mov    %eax,0x28(%rsp)
L777:
  mov    0x28(%rsp),%ecx
  add    %ecx,0x20(%rsp)
  jmp    L238
L359:
  movl   $0x1,0x10(%rsp)
  jmp    L930
L591:
  mov    0x20(%rsp),%edx
  mov    0x10(%rsp),%eax
  lea    0x1(%rax,%rdx,1),%eax
  mov    %eax,0x20(%rsp)
  jmp    L107
L916:
  mov    0x28(%rsp),%eax
  mov    0x10(%rsp),%edx
  lea    0x1(%rax,%rdx,1),%eax
  add    %eax,0x20(%rsp)
  jmp    L238
L550:
  mov    0x28(%rsp),%eax
  mov    0x10(%rsp),%esi
  lea    0x1(%rax,%rsi,1),%eax
  mov    %eax,0x28(%rsp)
L584:
  mov    0x28(%rsp),%edx
  add    %edx,0x20(%rsp)
  jmp    L1416
L1226:
  mov    0x20(%rsp),%ecx
  mov    0x10(%rsp),%eax
  lea    0x1(%rax,%rcx,1),%eax
  mov    %eax,0x20(%rsp)
  jmp    L107
L217:
  movl   $0x1,0x10(%rsp)
  jmp    L810
L864:
  mov    0x18(%rsp),%esi
  add    %esi,0x10(%rsp)
  jmp    L914
L1364:
  mov    0x18(%rsp),%edx
  add    %edx,0x10(%rsp)
  jmp    L448
L1201:
  movl   $0x0,0x20(%rsp)
  jmp    L107
L3:
  mov    0x2c(%rsp),%edx
  mov    0x20(%rsp),%eax
  lea    0x1(%rax,%rdx,1),%eax
  mov    %eax,0x2c(%rsp)
  jmp    L499
L571:
  mov    0x2c(%rsp),%ecx
  mov    0x20(%rsp),%eax
  lea    0x1(%rax,%rcx,1),%eax
  mov    %eax,0x2c(%rsp)
  jmp    L499
L689:
  movl   $0x1,0x20(%rsp)
  jmp    L238
L71:
  movl   $0x0,0x2c(%rsp)
  jmp    L499
L195:
  movl   $0x1,0x2c(%rsp)
  jmp    L499
L104:
  add    $0x1,%r13d
  jmp    L47
L339:
  lea    -0x3(%r12),%edi
  call   <tetranacci>
  lea    0x1(%r13,%rax,1),%eax
  add    0xc(%rsp),%eax
  add    %eax,0x10(%rsp)
  jmp    L810
L954:
  add    $0x1,%r13d
  jmp    L259
L818:
  add    $0x1,%r14d
  jmp    L685
L380:
  lea    -0x3(%r12),%edi
  call   <tetranacci>
  lea    0x1(%r14,%rax,1),%eax
  add    %eax,0x10(%rsp)
  jmp    L1204
```

assistant: ```c
int tetranacci(int n) {
  if (n == 0 || n == 1 || n == 2)
    return 0;
  if (n == 3)
    return 1;
  return tetranacci(n - 1) + tetranacci(n - 2) + tetranacci(n - 3) + tetranacci(n - 4);
}
```