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

```asm
<main1>:
  endbr64
  push   %rbp
  mov    %rsp,%rbp
  sub    $0x260,%rsp
  mov    %fs:0x28,%rax
  mov    %rax,-0x8(%rbp)
  xor    %eax,%eax
  pxor   %xmm0,%xmm0
  movss  %xmm0,-0x1b0(%rbp)
  movss  D470(%rip),%xmm0
  movss  %xmm0,-0x1ac(%rbp)
  movss  D316(%rip),%xmm0
  movss  %xmm0,-0x1a8(%rbp)
  movss  D295(%rip),%xmm0
  movss  %xmm0,-0x1a4(%rbp)
  movss  D330(%rip),%xmm0
  movss  %xmm0,-0x1a0(%rbp)
  movss  D13(%rip),%xmm0
  movss  %xmm0,-0x19c(%rbp)
  movss  D388(%rip),%xmm0
  movss  %xmm0,-0x198(%rbp)
  movss  D469(%rip),%xmm0
  movss  %xmm0,-0x194(%rbp)
  movss  D40(%rip),%xmm0
  movss  %xmm0,-0x190(%rbp)
  movss  D254(%rip),%xmm0
  movss  %xmm0,-0x18c(%rbp)
  movss  D30(%rip),%xmm0
  movss  %xmm0,-0x188(%rbp)
  movss  D135(%rip),%xmm0
  movss  %xmm0,-0x184(%rbp)
  movss  D449(%rip),%xmm0
  movss  %xmm0,-0x180(%rbp)
  movss  D277(%rip),%xmm0
  movss  %xmm0,-0x17c(%rbp)
  movss  D102(%rip),%xmm0
  movss  %xmm0,-0x178(%rbp)
  movss  D88(%rip),%xmm0
  movss  %xmm0,-0x174(%rbp)
  pxor   %xmm0,%xmm0
  movss  %xmm0,-0x170(%rbp)
  movss  D398(%rip),%xmm0
  movss  %xmm0,-0x16c(%rbp)
  movss  D276(%rip),%xmm0
  movss  %xmm0,-0x168(%rbp)
  movss  D470(%rip),%xmm0
  movss  %xmm0,-0x164(%rbp)
  movss  D473(%rip),%xmm0
  movss  %xmm0,-0x160(%rbp)
  movss  D22(%rip),%xmm0
  movss  %xmm0,-0x15c(%rbp)
  movss  D316(%rip),%xmm0
  movss  %xmm0,-0x158(%rbp)
  movss  D400(%rip),%xmm0
  movss  %xmm0,-0x154(%rbp)
  movss  D250(%rip),%xmm0
  movss  %xmm0,-0x150(%rbp)
  movss  D295(%rip),%xmm0
  movss  %xmm0,-0x14c(%rbp)
  movss  D147(%rip),%xmm0
  movss  %xmm0,-0x148(%rbp)
  movss  D386(%rip),%xmm0
  movss  %xmm0,-0x144(%rbp)
  movss  D330(%rip),%xmm0
  movss  %xmm0,-0x140(%rbp)
  movss  D134(%rip),%xmm0
  movss  %xmm0,-0x13c(%rbp)
  movss  D278(%rip),%xmm0
  movss  %xmm0,-0x138(%rbp)
  movss  D13(%rip),%xmm0
  movss  %xmm0,-0x134(%rbp)
  pxor   %xmm0,%xmm0
  movss  %xmm0,-0x130(%rbp)
  movss  D276(%rip),%xmm0
  movss  %xmm0,-0x12c(%rbp)
  movss  D473(%rip),%xmm0
  movss  %xmm0,-0x128(%rbp)
  movss  D316(%rip),%xmm0
  movss  %xmm0,-0x124(%rbp)
  movss  D250(%rip),%xmm0
  movss  %xmm0,-0x120(%rbp)
  movss  D147(%rip),%xmm0
  movss  %xmm0,-0x11c(%rbp)
  movss  D330(%rip),%xmm0
  movss  %xmm0,-0x118(%rbp)
  movss  D278(%rip),%xmm0
  movss  %xmm0,-0x114(%rbp)
  movss  D119(%rip),%xmm0
  movss  %xmm0,-0x110(%rbp)
  movss  D388(%rip),%xmm0
  movss  %xmm0,-0x10c(%rbp)
  movss  D283(%rip),%xmm0
  movss  %xmm0,-0x108(%rbp)
  movss  D57(%rip),%xmm0
  movss  %xmm0,-0x104(%rbp)
  movss  D40(%rip),%xmm0
  movss  %xmm0,-0x100(%rbp)
  movss  D358(%rip),%xmm0
  movss  %xmm0,-0xfc(%rbp)
  movss  D2(%rip),%xmm0
  movss  %xmm0,-0xf8(%rbp)
  movss  D30(%rip),%xmm0
  movss  %xmm0,-0xf4(%rbp)
  movl   $0x0,-0xf0(%rbp)
  movl   $0x3,-0xec(%rbp)
  movl   $0x6,-0xe8(%rbp)
  movl   $0x9,-0xe4(%rbp)
  movl   $0xc,-0xe0(%rbp)
  movl   $0xf,-0xdc(%rbp)
  movl   $0x12,-0xd8(%rbp)
  movl   $0x15,-0xd4(%rbp)
  movl   $0x18,-0xd0(%rbp)
  movl   $0x1b,-0xcc(%rbp)
  movl   $0x1e,-0xc8(%rbp)
  movl   $0x21,-0xc4(%rbp)
  movl   $0x24,-0xc0(%rbp)
  movl   $0x27,-0xbc(%rbp)
  movl   $0x2a,-0xb8(%rbp)
  movl   $0x2d,-0xb4(%rbp)
  movl   $0x0,-0xb0(%rbp)
  movl   $0x3,-0xac(%rbp)
  movl   $0x6,-0xa8(%rbp)
  movl   $0x9,-0xa4(%rbp)
  movl   $0xc,-0xa0(%rbp)
  movl   $0xf,-0x9c(%rbp)
  movl   $0x12,-0x98(%rbp)
  movl   $0x15,-0x94(%rbp)
  movl   $0x18,-0x90(%rbp)
  movl   $0x1b,-0x8c(%rbp)
  movl   $0x1e,-0x88(%rbp)
  movl   $0x21,-0x84(%rbp)
  movl   $0x24,-0x80(%rbp)
  movl   $0x27,-0x7c(%rbp)
  movl   $0x2a,-0x78(%rbp)
  movl   $0x2d,-0x74(%rbp)
  movabs $0x15120f0c09060300,%rax
  movabs $0x2d2a2724211e1b18,%rdx
  mov    %rax,-0x30(%rbp)
  mov    %rdx,-0x28(%rbp)
  movl   $0x0,-0x258(%rbp)
  jmp    L267
L374:
  mov    -0x258(%rbp),%eax
  cltq
  movzbl -0x30(%rbp,%rax,1),%edx
  mov    -0x258(%rbp),%eax
  cltq
  mov    %dl,-0x20(%rbp,%rax,1)
  addl   $0x1,-0x258(%rbp)
L267:
  cmpl   $0xf,-0x258(%rbp)
  jle    L374
  movl   $0x0,-0x258(%rbp)
  jmp    L303
L104:
  mov    -0x258(%rbp),%eax
  cltq
  movzbl -0x20(%rbp,%rax,1),%edx
  mov    -0x258(%rbp),%eax
  cltq
  movzbl -0x30(%rbp,%rax,1),%eax
  cmp    %al,%dl
  je     L427
  mov    $0x0,%eax
  call   <abort@plt>
L427:
  addl   $0x1,-0x258(%rbp)
L303:
  cmpl   $0xf,-0x258(%rbp)
  jle    L104
  movl   $0x0,-0x258(%rbp)
  jmp    L384
L49:
  mov    -0x258(%rbp),%eax
  cltq
  movss  -0x1b0(%rbp,%rax,4),%xmm1
  mov    -0x258(%rbp),%eax
  cltq
  movss  -0x170(%rbp,%rax,4),%xmm0
  mulss  %xmm1,%xmm0
  mov    -0x258(%rbp),%eax
  cltq
  movss  %xmm0,-0x230(%rbp,%rax,4)
  addl   $0x1,-0x258(%rbp)
L384:
  cmpl   $0xf,-0x258(%rbp)
  jle    L49
  lea    -0x230(%rbp),%rax
  mov    %rax,%rdi
  call   <fbar_mul@plt>
  movl   $0x0,-0x258(%rbp)
  jmp    L59
L387:
  mov    -0x258(%rbp),%eax
  cltq
  movss  -0x1b0(%rbp,%rax,4),%xmm1
  mov    -0x258(%rbp),%eax
  cltq
  movss  -0x170(%rbp,%rax,4),%xmm0
  addss  %xmm0,%xmm1
  mov    -0x258(%rbp),%eax
  cltq
  movss  -0x130(%rbp,%rax,4),%xmm0
  addss  %xmm1,%xmm0
  mov    -0x258(%rbp),%eax
  cltq
  movss  %xmm0,-0x230(%rbp,%rax,4)
  mov    -0x258(%rbp),%eax
  cltq
  movss  -0x1b0(%rbp,%rax,4),%xmm1
  mov    -0x258(%rbp),%eax
  cltq
  movss  -0x170(%rbp,%rax,4),%xmm0
  addss  %xmm0,%xmm1
  mov    -0x258(%rbp),%eax
  cltq
  movss  -0x130(%rbp,%rax,4),%xmm0
  addss  %xmm1,%xmm0
  mov    -0x258(%rbp),%eax
  cltq
  movss  %xmm0,-0x1f0(%rbp,%rax,4)
  mov    -0x258(%rbp),%eax
  cltq
  mov    -0xb0(%rbp,%rax,4),%edx
  mov    -0x258(%rbp),%eax
  cltq
  mov    -0xf0(%rbp,%rax,4),%eax
  add    %eax,%edx
  mov    -0x258(%rbp),%eax
  cltq
  mov    %edx,-0x70(%rbp,%rax,4)
  addl   $0x1,-0x258(%rbp)
L59:
  cmpl   $0xf,-0x258(%rbp)
  jle    L387
  lea    -0x70(%rbp),%rax
  mov    %rax,%rdi
  call   <ibar_add@plt>
  lea    -0x230(%rbp),%rax
  mov    %rax,%rdi
  call   <fbar_add@plt>
  lea    -0x1f0(%rbp),%rax
  mov    %rax,%rdi
  call   <fbar_add@plt>
  movl   $0x0,-0x258(%rbp)
  jmp    L204
L100:
  mov    -0x258(%rbp),%eax
  add    $0x8,%eax
  cltq
  movss  -0x1b0(%rbp,%rax,4),%xmm1
  mov    -0x258(%rbp),%eax
  add    $0x8,%eax
  cltq
  movss  -0x170(%rbp,%rax,4),%xmm0
  mulss  %xmm1,%xmm0
  mov    -0x258(%rbp),%eax
  cltq
  movss  -0x1b0(%rbp,%rax,4),%xmm2
  mov    -0x258(%rbp),%eax
  cltq
  movss  -0x170(%rbp,%rax,4),%xmm1
  mulss  %xmm2,%xmm1
  subss  %xmm1,%xmm0
  mov    -0x258(%rbp),%eax
  cltq
  movss  %xmm0,-0x230(%rbp,%rax,4)
  mov    -0x258(%rbp),%eax
  cltq
  movss  -0x1b0(%rbp,%rax,4),%xmm1
  mov    -0x258(%rbp),%eax
  add    $0x8,%eax
  cltq
  movss  -0x170(%rbp,%rax,4),%xmm0
  mulss  %xmm0,%xmm1
  mov    -0x258(%rbp),%eax
  add    $0x8,%eax
  cltq
  movss  -0x1b0(%rbp,%rax,4),%xmm2
  mov    -0x258(%rbp),%eax
  cltq
  movss  -0x170(%rbp,%rax,4),%xmm0
  mulss  %xmm2,%xmm0
  mov    -0x258(%rbp),%eax
  add    $0x8,%eax
  addss  %xmm1,%xmm0
  cltq
  movss  %xmm0,-0x1f0(%rbp,%rax,4)
  addl   $0x1,-0x258(%rbp)
L204:
  cmpl   $0x7,-0x258(%rbp)
  jle    L100
  lea    -0x230(%rbp),%rax
  mov    %rax,%rdi
  call   <fbar1@plt>
  lea    -0x1f0(%rbp),%rax
  mov    %rax,%rdi
  call   <fbar2@plt>
  movl   $0x1,-0x258(%rbp)
  jmp    L235
L53:
  mov    -0x258(%rbp),%eax
  lea    -0x1(%rax),%ecx
  mov    -0x258(%rbp),%eax
  lea    0x3(%rax),%edx
  movslq %ecx,%rax
  movss  -0x1b0(%rbp,%rax,4),%xmm0
  movslq %edx,%rax
  movss  %xmm0,-0x230(%rbp,%rax,4)
  addl   $0x1,-0x258(%rbp)
L235:
  cmpl   $0xc,-0x258(%rbp)
  jle    L53
  movl   $0x1,-0x258(%rbp)
  jmp    L43
L237:
  mov    -0x258(%rbp),%eax
  add    $0x3,%eax
  cltq
  movss  -0x230(%rbp,%rax,4),%xmm0
  mov    -0x258(%rbp),%eax
  sub    $0x1,%eax
  cltq
  movss  -0x1b0(%rbp,%rax,4),%xmm1
  ucomiss %xmm1,%xmm0
  jp     L24
  ucomiss %xmm1,%xmm0
  je     L39
L24:
  mov    $0x0,%eax
  call   <abort@plt>
L39:
  addl   $0x1,-0x258(%rbp)
L43:
  cmpl   $0xc,-0x258(%rbp)
  jle    L237
  movl   $0x0,-0x258(%rbp)
  movl   $0x0,-0x254(%rbp)
  jmp    L206
L159:
  mov    -0x254(%rbp),%eax
  cltq
  movss  -0x170(%rbp,%rax,4),%xmm0
  mov    -0x254(%rbp),%eax
  cltq
  movss  %xmm0,-0x230(%rbp,%rax,4)
  addl   $0x5,-0x258(%rbp)
  addl   $0x1,-0x254(%rbp)
L206:
  cmpl   $0x4f,-0x258(%rbp)
  jle    L159
  movl   $0x0,-0x258(%rbp)
  jmp    L238
L408:
  mov    -0x258(%rbp),%eax
  cltq
  movss  -0x230(%rbp,%rax,4),%xmm0
  mov    -0x258(%rbp),%eax
  cltq
  movss  -0x170(%rbp,%rax,4),%xmm1
  ucomiss %xmm1,%xmm0
  jp     L349
  ucomiss %xmm1,%xmm0
  je     L248
L349:
  mov    $0x0,%eax
  call   <abort@plt>
L248:
  addl   $0x1,-0x258(%rbp)
L238:
  cmpl   $0xf,-0x258(%rbp)
  jle    L408
  movl   $0x10,-0x258(%rbp)
  jmp    L342
L433:
  mov    $0x10,%eax
  sub    -0x258(%rbp),%eax
  mov    $0x10,%edx
  sub    -0x258(%rbp),%edx
  cltq
  movss  -0x130(%rbp,%rax,4),%xmm0
  movslq %edx,%rax
  movss  %xmm0,-0x230(%rbp,%rax,4)
  subl   $0x1,-0x258(%rbp)
L342:
  cmpl   $0x0,-0x258(%rbp)
  jg     L433
  movl   $0x0,-0x258(%rbp)
  jmp    L229
L257:
  mov    -0x258(%rbp),%eax
  cltq
  movss  -0x230(%rbp,%rax,4),%xmm0
  mov    -0x258(%rbp),%eax
  cltq
  movss  -0x130(%rbp,%rax,4),%xmm1
  ucomiss %xmm1,%xmm0
  jp     L126
  ucomiss %xmm1,%xmm0
  je     L106
L126:
  mov    $0x0,%eax
  call   <abort@plt>
L106:
  addl   $0x1,-0x258(%rbp)
L229:
  cmpl   $0xf,-0x258(%rbp)
  jle    L257
  movl   $0x0,-0x258(%rbp)
  jmp    L191
L55:
  mov    -0x258(%rbp),%eax
  cltq
  movss  D22(%rip),%xmm0
  movss  %xmm0,-0x230(%rbp,%rax,4)
  addl   $0x1,-0x258(%rbp)
L191:
  cmpl   $0xf,-0x258(%rbp)
  jle    L55
  movl   $0x0,-0x258(%rbp)
  jmp    L60
L270:
  mov    -0x258(%rbp),%eax
  cltq
  movss  -0x230(%rbp,%rax,4),%xmm0
  ucomiss D22(%rip),%xmm0
  jp     L371
  ucomiss D22(%rip),%xmm0
  je     L282
L371:
  mov    $0x0,%eax
  call   <abort@plt>
L282:
  addl   $0x1,-0x258(%rbp)
L60:
  cmpl   $0xf,-0x258(%rbp)
  jle    L270
  movl   $0x0,-0x258(%rbp)
  jmp    L222
L230:
  mov    -0x258(%rbp),%eax
  cltq
  movw   $0x5,-0x250(%rbp,%rax,2)
  addl   $0x1,-0x258(%rbp)
L222:
  cmpl   $0xf,-0x258(%rbp)
  jle    L230
  movl   $0x0,-0x258(%rbp)
  jmp    L288
L426:
  mov    -0x258(%rbp),%eax
  cltq
  movzwl -0x250(%rbp,%rax,2),%eax
  cmp    $0x5,%ax
  je     L40
  mov    $0x0,%eax
  call   <abort@plt>
L40:
  addl   $0x1,-0x258(%rbp)
L288:
  cmpl   $0xf,-0x258(%rbp)
  jle    L426
  movl   $0x0,-0x258(%rbp)
  jmp    L188
L105:
  mov    -0x258(%rbp),%eax
  cltq
  mov    -0xb0(%rbp,%rax,4),%eax
  lea    0x5(%rax),%edx
  mov    -0x258(%rbp),%eax
  cltq
  mov    %edx,-0x70(%rbp,%rax,4)
  addl   $0x1,-0x258(%rbp)
L188:
  cmpl   $0xf,-0x258(%rbp)
  jle    L105
  movl   $0x0,-0x258(%rbp)
  jmp    L295
L454:
  mov    -0x258(%rbp),%eax
  cltq
  mov    -0x70(%rbp,%rax,4),%edx
  mov    -0x258(%rbp),%eax
  cltq
  mov    -0xb0(%rbp,%rax,4),%eax
  add    $0x5,%eax
  cmp    %eax,%edx
  je     L261
  mov    $0x0,%eax
  call   <abort@plt>
L261:
  addl   $0x1,-0x258(%rbp)
L295:
  cmpl   $0xf,-0x258(%rbp)
  jle    L454
  mov    $0x0,%eax
  mov    -0x8(%rbp),%rdx
  sub    %fs:0x28,%rdx
  je     L78
  call   <__stack_chk_fail@plt>
L78:
  leave
  ret
```

tool_calls: name: read_data
arguments: data_tag: D470
datatype: byte[4]
name: read_data
arguments: data_tag: D316
datatype: byte[4]
name: read_data
arguments: data_tag: D295
datatype: byte[4]
name: read_data
arguments: data_tag: D330
datatype: byte[4]
name: read_data
arguments: data_tag: D13
datatype: byte[4]
name: read_data
arguments: data_tag: D388
datatype: byte[4]
name: read_data
arguments: data_tag: D469
datatype: byte[4]
name: read_data
arguments: data_tag: D40
datatype: byte[4]
name: read_data
arguments: data_tag: D254
datatype: byte[4]
name: read_data
arguments: data_tag: D30
datatype: byte[4]
name: read_data
arguments: data_tag: D135
datatype: byte[4]
name: read_data
arguments: data_tag: D449
datatype: byte[4]
name: read_data
arguments: data_tag: D277
datatype: byte[4]
name: read_data
arguments: data_tag: D102
datatype: byte[4]
name: read_data
arguments: data_tag: D88
datatype: byte[4]
name: read_data
arguments: data_tag: D398
datatype: byte[4]
name: read_data
arguments: data_tag: D276
datatype: byte[4]
name: read_data
arguments: data_tag: D473
datatype: byte[4]
name: read_data
arguments: data_tag: D22
datatype: f32
name: read_data
arguments: data_tag: D400
datatype: byte[4]
name: read_data
arguments: data_tag: D250
datatype: byte[4]
name: read_data
arguments: data_tag: D147
datatype: byte[4]
name: read_data
arguments: data_tag: D386
datatype: byte[4]
name: read_data
arguments: data_tag: D134
datatype: byte[4]
name: read_data
arguments: data_tag: D278
datatype: byte[4]
name: read_data
arguments: data_tag: D119
datatype: byte[4]
name: read_data
arguments: data_tag: D283
datatype: byte[4]
name: read_data
arguments: data_tag: D57
datatype: byte[4]
name: read_data
arguments: data_tag: D358
datatype: byte[4]
name: read_data
arguments: data_tag: D2
datatype: byte[4]

tool: {"D470": [0x00,0x00,0x40,0x40]}

tool: {"D316": [0x00,0x00,0xc0,0x40]}

tool: {"D295": [0x00,0x00,0x10,0x41]}

tool: {"D330": [0x00,0x00,0x40,0x41]}

tool: {"D13": [0x00,0x00,0x70,0x41]}

tool: {"D388": [0x00,0x00,0x90,0x41]}

tool: {"D469": [0x00,0x00,0xa8,0x41]}

tool: {"D40": [0x00,0x00,0xc0,0x41]}

tool: {"D254": [0x00,0x00,0xd8,0x41]}

tool: {"D30": [0x00,0x00,0xf0,0x41]}

tool: {"D135": [0x00,0x00,0x04,0x42]}

tool: {"D449": [0x00,0x00,0x10,0x42]}

tool: {"D277": [0x00,0x00,0x1c,0x42]}

tool: {"D102": [0x00,0x00,0x28,0x42]}

tool: {"D88": [0x00,0x00,0x34,0x42]}

tool: {"D398": [0x00,0x00,0x80,0x3f]}

tool: {"D276": [0x00,0x00,0x00,0x40]}

tool: {"D473": [0x00,0x00,0x80,0x40]}

tool: D22: 5

tool: {"D400": [0x00,0x00,0xe0,0x40]}

tool: {"D250": [0x00,0x00,0x00,0x41]}

tool: {"D147": [0x00,0x00,0x20,0x41]}

tool: {"D386": [0x00,0x00,0x30,0x41]}

tool: {"D134": [0x00,0x00,0x50,0x41]}

tool: {"D278": [0x00,0x00,0x60,0x41]}

tool: {"D119": [0x00,0x00,0x80,0x41]}

tool: {"D283": [0x00,0x00,0xa0,0x41]}

tool: {"D57": [0x00,0x00,0xb0,0x41]}

tool: {"D358": [0x00,0x00,0xd0,0x41]}

tool: {"D2": [0x00,0x00,0xe0,0x41]}

assistant: ```c
int main1() {
  int i, j;
  float a[16];
  float e[16];
  float b[16] = {0, 3, 6, 9, 12, 15, 18, 21, 24, 27, 30, 33, 36, 39, 42, 45};
  float c[16] = {0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15};
  float d[16] = {0, 2, 4, 6, 8, 10, 12, 14, 16, 18, 20, 22, 24, 26, 28, 30};
  int ic[16] = {0, 3, 6, 9, 12, 15, 18, 21, 24, 27, 30, 33, 36, 39, 42, 45};
  int ib[16] = {0, 3, 6, 9, 12, 15, 18, 21, 24, 27, 30, 33, 36, 39, 42, 45};
  int ia[16];
  char cb[16] = {0, 3, 6, 9, 12, 15, 18, 21, 24, 27, 30, 33, 36, 39, 42, 45};
  char ca[16];
  short sa[16];
  for (i = 0; i < 16; i++) {
    ca[i] = cb[i];
  }
  for (i = 0; i < 16; i++) {
    if (ca[i] != cb[i])
      abort();
  }
  for (i = 0; i < 16; i++) {
    a[i] = b[i] * c[i];
  }
  fbar_mul(a);
  for (i = 0; i < 16; i++) {
    a[i] = b[i] + c[i] + d[i];
    e[i] = b[i] + c[i] + d[i];
    ia[i] = ib[i] + ic[i];
  }
  ibar_add(ia);
  fbar_add(a);
  fbar_add(e);
  for (i = 0; i < 16 / 2; i++) {
    a[i] = b[i + 16 / 2] * c[i + 16 / 2] - b[i] * c[i];
    e[i + 16 / 2] = b[i] * c[i + 16 / 2] + b[i + 16 / 2] * c[i];
  }
  fbar1(a);
  fbar2(e);
  for (i = 1; i <= 16 - 4; i++) {
    a[i + 3] = b[i - 1];
  }
  for (i = 1; i <= 16 - 4; i++) {
    if (a[i + 3] != b[i - 1])
      abort();
  }
  i = 0;
  j = 0;
  while (i < 5 * 16) {
    a[j] = c[j];
    i += 5;
    j++;
  }
  for (i = 0; i < 16; i++) {
    if (a[i] != c[i])
      abort();
  }
  for (i = 16; i > 0; i--) {
    a[16 - i] = d[16 - i];
  }
  for (i = 0; i < 16; i++) {
    if (a[i] != d[i])
      abort();
  }
  for (i = 0; i < 16; i++) {
    a[i] = 5.0;
  }
  for (i = 0; i < 16; i++) {
    if (a[i] != 5.0)
      abort();
  }
  for (i = 0; i < 16; i++) {
    sa[i] = 5;
  }
  for (i = 0; i < 16; i++) {
    if (sa[i] != 5)
      abort();
  }
  for (i = 0; i < 16; i++) {
    ia[i] = ib[i] + 5;
  }
  for (i = 0; i < 16; i++) {
    if (ia[i] != ib[i] + 5)
      abort();
  }
  return 0;
}
```