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

```asm
<INITIALIZE_MASS>:
  endbr64
  push   %rbx
  mov    %rdi,%rcx
  mov    %rdi,%rax
  lea    0x400(%rdi),%rdx
  movsd  D105(%rip),%xmm0
L26:
  movsd  %xmm0,(%rax)
  add    $0x8,%rax
  cmp    %rdx,%rax
  jne    L26
  test   %esi,%esi
  je     L22
  movsd  D54(%rip),%xmm2
  mov    D235(%rip),%r11
  movsd  D157(%rip),%xmm0
  movsd  D167(%rip),%xmm12
  movsd  D114(%rip),%xmm1
  movsd  D228(%rip),%xmm15
L19:
  movsd  %xmm15,0x340(%rcx)
  movsd  %xmm1,0x378(%rcx)
  movsd  %xmm12,0x318(%rcx)
  movsd  %xmm0,0x370(%rcx)
  movsd  %xmm2,0x380(%rcx)
  mov    %r11,0x398(%rcx)
  movapd %xmm12,%xmm2
  addsd  %xmm12,%xmm2
  movsd  D224(%rip),%xmm6
  movapd %xmm15,%xmm3
  mulsd  %xmm6,%xmm3
  addsd  %xmm3,%xmm2
  addsd  %xmm0,%xmm2
  addsd  %xmm1,%xmm2
  movsd  %xmm2,0x238(%rcx)
  movsd  D242(%rip),%xmm2
  movapd %xmm15,%xmm11
  mulsd  %xmm2,%xmm11
  movapd %xmm12,%xmm3
  mulsd  %xmm6,%xmm3
  addsd  %xmm11,%xmm3
  addsd  %xmm0,%xmm3
  movapd %xmm3,%xmm7
  addsd  %xmm1,%xmm7
  movsd  %xmm7,0x208(%rcx)
  movapd %xmm1,%xmm5
  addsd  %xmm1,%xmm5
  addsd  %xmm5,%xmm3
  movsd  %xmm3,0x298(%rcx)
  mulsd  %xmm12,%xmm2
  movapd %xmm15,%xmm10
  mulsd  D133(%rip),%xmm10
  movapd %xmm2,%xmm9
  addsd  %xmm10,%xmm9
  addsd  %xmm0,%xmm9
  movapd %xmm9,%xmm3
  addsd  %xmm1,%xmm3
  movsd  %xmm3,0x280(%rcx)
  movsd  D144(%rip),%xmm3
  mulsd  %xmm15,%xmm3
  movapd %xmm2,%xmm4
  movsd  %xmm3,-0x8(%rsp)
  addsd  %xmm3,%xmm4
  addsd  %xmm0,%xmm4
  addsd  %xmm1,%xmm4
  movq   %xmm4,%rdi
  movsd  %xmm4,0x2b0(%rcx)
  movsd  D132(%rip),%xmm13
  mulsd  %xmm12,%xmm13
  movapd %xmm10,%xmm4
  addsd  %xmm13,%xmm4
  addsd  %xmm0,%xmm4
  addsd  %xmm5,%xmm4
  movsd  %xmm4,0x2a0(%rcx)
  movq   %r11,%xmm3
  addsd  %xmm3,%xmm7
  movsd  %xmm7,0x218(%rcx)
  movsd  D219(%rip),%xmm7
  movapd %xmm12,%xmm4
  mulsd  %xmm7,%xmm4
  movsd  D182(%rip),%xmm8
  mulsd  %xmm15,%xmm8
  addsd  %xmm4,%xmm8
  addsd  %xmm0,%xmm8
  addsd  %xmm1,%xmm8
  movq   %xmm8,%r9
  movsd  %xmm8,0x260(%rcx)
  movsd  %xmm8,0x248(%rcx)
  movapd %xmm0,%xmm8
  addsd  %xmm0,%xmm8
  mulsd  %xmm15,%xmm7
  addsd  %xmm13,%xmm7
  addsd  %xmm8,%xmm7
  addsd  %xmm5,%xmm7
  movq   %xmm7,%rdx
  movsd  %xmm7,0x270(%rcx)
  movapd %xmm1,%xmm7
  mulsd  %xmm6,%xmm7
  addsd  %xmm13,%xmm11
  addsd  %xmm0,%xmm11
  movapd %xmm11,%xmm14
  addsd  %xmm7,%xmm14
  movsd  %xmm14,0x220(%rcx)
  movapd %xmm15,%xmm11
  mulsd  D220(%rip),%xmm11
  addsd  %xmm2,%xmm11
  addsd  %xmm8,%xmm11
  addsd  %xmm5,%xmm11
  movq   %xmm11,%rax
  movsd  %xmm11,0x288(%rcx)
  movapd %xmm15,%xmm11
  mulsd  D167(%rip),%xmm11
  movapd %xmm4,%xmm13
  addsd  %xmm11,%xmm13
  movapd %xmm8,%xmm3
  addsd  %xmm13,%xmm3
  addsd  %xmm1,%xmm3
  movsd  %xmm3,0x258(%rcx)
  addsd  %xmm9,%xmm7
  movsd  %xmm7,0x228(%rcx)
  movq   %rdi,%xmm9
  movq   %r11,%xmm3
  addsd  %xmm3,%xmm9
  movsd  %xmm9,0x268(%rcx)
  addsd  %xmm10,%xmm4
  mulsd  %xmm0,%xmm6
  addsd  %xmm6,%xmm4
  addsd  %xmm1,%xmm4
  movsd  %xmm4,0x240(%rcx)
  movsd  D144(%rip),%xmm4
  mulsd  %xmm12,%xmm4
  addsd  -0x8(%rsp),%xmm4
  addsd  %xmm0,%xmm4
  movapd %xmm4,%xmm3
  addsd  %xmm1,%xmm3
  movsd  %xmm3,0x230(%rcx)
  mulsd  D132(%rip),%xmm0
  addsd  %xmm13,%xmm0
  addsd  %xmm1,%xmm0
  movsd  %xmm0,0x290(%rcx)
  addsd  %xmm5,%xmm4
  movsd  %xmm4,0x2c8(%rcx)
  movsd  D182(%rip),%xmm0
  mulsd  %xmm12,%xmm0
  movapd %xmm15,%xmm3
  mulsd  D208(%rip),%xmm3
  addsd  %xmm3,%xmm0
  addsd  %xmm8,%xmm0
  addsd  %xmm1,%xmm0
  movsd  %xmm0,0x2b8(%rcx)
  addsd  %xmm11,%xmm2
  addsd  %xmm8,%xmm2
  addsd  %xmm5,%xmm2
  movsd  %xmm2,0x278(%rcx)
  mov    %r9,0x2c0(%rcx)
  movq   %rdx,%xmm0
  addsd  %xmm14,%xmm0
  movsd  D253(%rip),%xmm1
  mulsd  %xmm1,%xmm0
  movsd  %xmm0,0x210(%rcx)
  movq   %rax,%xmm6
  addsd  %xmm6,%xmm7
  mulsd  %xmm1,%xmm7
  movsd  %xmm7,0x2d0(%rcx)
  pop    %rbx
  ret
L22:
  movsd  D17(%rip),%xmm2
  mov    D216(%rip),%r11
  movsd  D251(%rip),%xmm0
  movsd  D168(%rip),%xmm12
  movsd  D69(%rip),%xmm1
  movsd  D222(%rip),%xmm15
  jmp    L19
```

tool_calls: name: unpack_data
arguments: data_tag: D105
type: f64
name: unpack_data
arguments: data_tag: D54
type: f64
name: unpack_data
arguments: data_tag: D235
type: f64
name: unpack_data
arguments: data_tag: D157
type: f64
name: unpack_data
arguments: data_tag: D167
type: f64
name: unpack_data
arguments: data_tag: D114
type: f64
name: unpack_data
arguments: data_tag: D228
type: f64
name: unpack_data
arguments: data_tag: D224
type: f32[2]
name: unpack_data
arguments: data_tag: D242
type: f32[2]
name: unpack_data
arguments: data_tag: D133
type: f32[2]
name: unpack_data
arguments: data_tag: D144
type: f32[2]
name: unpack_data
arguments: data_tag: D132
type: f32[2]
name: unpack_data
arguments: data_tag: D219
type: f32[2]
name: unpack_data
arguments: data_tag: D182
type: f32[2]
name: unpack_data
arguments: data_tag: D220
type: f32[2]
name: unpack_data
arguments: data_tag: D208
type: f32[2]
name: unpack_data
arguments: data_tag: D253
type: f32[2]
name: unpack_data
arguments: data_tag: D17
type: f64
name: unpack_data
arguments: data_tag: D216
type: f64
name: unpack_data
arguments: data_tag: D251
type: f64
name: unpack_data
arguments: data_tag: D168
type: f64
name: unpack_data
arguments: data_tag: D69
type: f64
name: unpack_data
arguments: data_tag: D222
type: f64

tool: D105: 999999.9

tool: D54: 30.973762

tool: D235: 31.9720707

tool: D157: 14.003074

tool: D167: 12

tool: D114: 15.99491463

tool: D228: 1.0078250352

tool: {"D224": [0.0,2.125]}

tool: {"D242": [0.0,2.3125]}

tool: {"D133": [0.0,2.4375]}

tool: {"D144": [0.0,2.53125]}

tool: {"D132": [0.0,2.25]}

tool: {"D219": [0.0,2.375]}

tool: {"D182": [0.0,2.59375]}

tool: {"D220": [0.0,2.5]}

tool: {"D208": [0.0,2.5625]}

tool: {"D253": [0.0,1.75]}

tool: D17: 30.973761

tool: D216: 32.065

tool: D251: 14.0067

tool: D168: 12.0107

tool: D69: 15.9994

tool: D222: 1.00794

assistant: ```c
void INITIALIZE_MASS(double *pdAAMass, int bMassType) {
  double H = 0.0, O = 0.0, C = 0.0, N = 0.0, P = 0.0, S = 0.0;
  int i;
  for (i = 0; i < 128; i++)
    pdAAMass[i] = 999999.9;
  if (bMassType) {
    H = pdAAMass['h'] = 1.0078250352;
    O = pdAAMass['o'] = 15.99491463;
    C = pdAAMass['c'] = 12.0000000;
    N = pdAAMass['n'] = 14.003074;
    P = pdAAMass['p'] = 30.973762;
    S = pdAAMass['s'] = 31.9720707;
  } else {
    H = pdAAMass['h'] = 1.00794;
    O = pdAAMass['o'] = 15.9994;
    C = pdAAMass['c'] = 12.0107;
    N = pdAAMass['n'] = 14.0067;
    P = pdAAMass['p'] = 30.973761;
    S = pdAAMass['s'] = 32.065;
  }
  pdAAMass['G'] = C * 2 + H * 3 + N + O;
  pdAAMass['A'] = C * 3 + H * 5 + N + O;
  pdAAMass['S'] = C * 3 + H * 5 + N + O * 2;
  pdAAMass['P'] = C * 5 + H * 7 + N + O;
  pdAAMass['V'] = C * 5 + H * 9 + N + O;
  pdAAMass['T'] = C * 4 + H * 7 + N + O * 2;
  pdAAMass['C'] = C * 3 + H * 5 + N + O + S;
  pdAAMass['L'] = C * 6 + H * 11 + N + O;
  pdAAMass['I'] = C * 6 + H * 11 + N + O;
  pdAAMass['N'] = C * 4 + H * 6 + N * 2 + O * 2;
  pdAAMass['D'] = C * 4 + H * 5 + N + O * 3;
  pdAAMass['Q'] = C * 5 + H * 8 + N * 2 + O * 2;
  pdAAMass['K'] = C * 6 + H * 12 + N * 2 + O;
  pdAAMass['E'] = C * 5 + H * 7 + N + O * 3;
  pdAAMass['M'] = C * 5 + H * 9 + N + O + S;
  pdAAMass['H'] = C * 6 + H * 7 + N * 3 + O;
  pdAAMass['F'] = C * 9 + H * 9 + N + O;
  pdAAMass['R'] = C * 6 + H * 12 + N * 4 + O;
  pdAAMass['Y'] = C * 9 + H * 9 + N + O * 2;
  pdAAMass['W'] = C * 11 + H * 10 + N * 2 + O;
  pdAAMass['O'] = C * 5 + H * 12 + N * 2 + O * 2;
  pdAAMass['X'] = pdAAMass['L'];
  pdAAMass['B'] = (pdAAMass['N'] + pdAAMass['D']) / 2.0;
  pdAAMass['Z'] = (pdAAMass['Q'] + pdAAMass['E']) / 2.0;
}
```