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

```asm
<INITIALIZE_MASS>:
  endbr64
  movapd D134(%rip),%xmm0
  mov    %rdi,%rcx
  mov    %rdi,%rax
  lea    0x400(%rdi),%rdx
  nopl   0x0(%rax)
L2:
  movups %xmm0,(%rax)
  add    $0x10,%rax
  cmp    %rdx,%rax
  jne    L2
  test   %esi,%esi
  je     L23
  movapd D323(%rip),%xmm15
  movapd D261(%rip),%xmm2
  movapd D169(%rip),%xmm3
  movapd D184(%rip),%xmm4
  movapd D432(%rip),%xmm5
  mov    D86(%rip),%r10
  mov    D453(%rip),%r9
  mov    D376(%rip),%r8
  mov    D466(%rip),%rdi
  movsd  D238(%rip),%xmm1
  movsd  D76(%rip),%xmm6
  mov    D225(%rip),%rax
  movsd  D391(%rip),%xmm7
  mov    D120(%rip),%rdx
  movsd  D439(%rip),%xmm8
  mov    D344(%rip),%rsi
  movsd  D458(%rip),%xmm9
  movsd  D192(%rip),%xmm10
  movsd  D221(%rip),%xmm11
  movsd  D228(%rip),%xmm0
  movsd  D122(%rip),%xmm12
  movsd  D431(%rip),%xmm13
  movsd  D423(%rip),%xmm14
L22:
  mov    %r10,0x340(%rcx)
  mov    %r9,0x318(%rcx)
  mov    %r8,0x380(%rcx)
  mov    %rdi,0x398(%rcx)
  mov    %rsi,0x298(%rcx)
  mov    %rdx,0x280(%rcx)
  mov    %rax,0x2b0(%rcx)
  movups %xmm15,0x370(%rcx)
  movsd  %xmm14,0x2a0(%rcx)
  movsd  %xmm0,0x260(%rcx)
  movsd  %xmm0,0x248(%rcx)
  movsd  %xmm13,0x270(%rcx)
  movsd  %xmm12,0x288(%rcx)
  movsd  %xmm11,0x258(%rcx)
  movsd  %xmm10,0x268(%rcx)
  movsd  %xmm9,0x290(%rcx)
  movsd  %xmm8,0x2c8(%rcx)
  movsd  %xmm7,0x2b8(%rcx)
  movsd  %xmm6,0x278(%rcx)
  movsd  %xmm0,0x2c0(%rcx)
  movups %xmm5,0x208(%rcx)
  movups %xmm4,0x218(%rcx)
  movups %xmm3,0x228(%rcx)
  movups %xmm2,0x238(%rcx)
  movsd  %xmm1,0x2d0(%rcx)
  ret
L23:
  movapd D190(%rip),%xmm15
  movapd D131(%rip),%xmm2
  movapd D284(%rip),%xmm3
  movapd D136(%rip),%xmm4
  movapd D295(%rip),%xmm5
  mov    D328(%rip),%r10
  mov    D251(%rip),%r9
  mov    D43(%rip),%r8
  mov    D191(%rip),%rdi
  movsd  D199(%rip),%xmm1
  movsd  D22(%rip),%xmm6
  mov    D358(%rip),%rax
  movsd  D112(%rip),%xmm7
  mov    D443(%rip),%rdx
  movsd  D203(%rip),%xmm8
  mov    D469(%rip),%rsi
  movsd  D80(%rip),%xmm9
  movsd  D343(%rip),%xmm10
  movsd  D51(%rip),%xmm11
  movsd  D130(%rip),%xmm0
  movsd  D468(%rip),%xmm12
  movsd  D212(%rip),%xmm13
  movsd  D416(%rip),%xmm14
  jmp    L22
```

tool_calls: name: read_data
arguments: label: D134
type_guessed: f64[2]
name: read_data
arguments: label: D323
type_guessed: f64[2]
name: read_data
arguments: label: D261
type_guessed: byte[16]
name: read_data
arguments: label: D169
type_guessed: byte[16]
name: read_data
arguments: label: D184
type_guessed: byte[16]
name: read_data
arguments: label: D432
type_guessed: byte[16]
name: read_data
arguments: label: D86
type_guessed: f64
name: read_data
arguments: label: D453
type_guessed: f64
name: read_data
arguments: label: D376
type_guessed: f64
name: read_data
arguments: label: D466
type_guessed: f64
name: read_data
arguments: label: D238
type_guessed: byte[8]
name: read_data
arguments: label: D76
type_guessed: byte[8]
name: read_data
arguments: label: D225
type_guessed: byte[8]
name: read_data
arguments: label: D391
type_guessed: byte[8]
name: read_data
arguments: label: D120
type_guessed: byte[8]
name: read_data
arguments: label: D439
type_guessed: byte[8]
name: read_data
arguments: label: D344
type_guessed: byte[8]
name: read_data
arguments: label: D458
type_guessed: byte[8]
name: read_data
arguments: label: D192
type_guessed: byte[8]
name: read_data
arguments: label: D221
type_guessed: byte[8]
name: read_data
arguments: label: D228
type_guessed: byte[8]
name: read_data
arguments: label: D122
type_guessed: byte[8]
name: read_data
arguments: label: D431
type_guessed: byte[8]
name: read_data
arguments: label: D423
type_guessed: byte[8]
name: read_data
arguments: label: D190
type_guessed: f64[2]
name: read_data
arguments: label: D131
type_guessed: byte[16]
name: read_data
arguments: label: D284
type_guessed: byte[16]
name: read_data
arguments: label: D136
type_guessed: byte[16]
name: read_data
arguments: label: D295
type_guessed: byte[16]
name: read_data
arguments: label: D328
type_guessed: f64
name: read_data
arguments: label: D251
type_guessed: f64
name: read_data
arguments: label: D43
type_guessed: f64
name: read_data
arguments: label: D191
type_guessed: f64
name: read_data
arguments: label: D199
type_guessed: byte[8]
name: read_data
arguments: label: D22
type_guessed: byte[8]
name: read_data
arguments: label: D358
type_guessed: byte[8]
name: read_data
arguments: label: D112
type_guessed: byte[8]
name: read_data
arguments: label: D443
type_guessed: byte[8]
name: read_data
arguments: label: D203
type_guessed: byte[8]
name: read_data
arguments: label: D469
type_guessed: byte[8]
name: read_data
arguments: label: D80
type_guessed: byte[8]
name: read_data
arguments: label: D343
type_guessed: byte[8]
name: read_data
arguments: label: D51
type_guessed: byte[8]
name: read_data
arguments: label: D130
type_guessed: byte[8]
name: read_data
arguments: label: D468
type_guessed: byte[8]
name: read_data
arguments: label: D212
type_guessed: byte[8]
name: read_data
arguments: label: D416
type_guessed: byte[8]

tool: {"D134": [999999.9,999999.9]}

tool: {"D323": [14.003074,15.99491463]}

tool: {"D261": [0xda,0x39,0xdd,0x52,0xbf,0x82,0x4c,0x40,0x7d,0xcf,0x28,0x9b,0xe2,0x21,0x61,0x40]}

tool: {"D169": [0xe8,0xfb,0x47,0xec,0x5c,0x21,0x60,0x40,0x15,0x03,0x72,0x72,0x30,0x62,0x62,0x40]}

tool: {"D184": [0x98,0x39,0x9c,0x7a,0x96,0xc0,0x59,0x40,0xbc,0xd4,0x68,0x6f,0xb9,0xc1,0x5c,0x40]}

tool: {"D432": [0x01,0xc0,0x95,0x12,0x60,0xc2,0x51,0x40,0x4b,0x07,0x23,0x61,0x3c,0xa2,0x5c,0x40]}

tool: D86: 1.0078250352

tool: D453: 12

tool: D376: 30.973762

tool: D466: 31.9720707

tool: {"D238": [0x30,0x15,0x25,0x65,0x9e,0x11,0x60,0x40]}

tool: {"D76": [0x8b,0x51,0x29,0x47,0xe0,0x82,0x60,0x40]}

tool: {"D225": [0x29,0x06,0xe4,0xe4,0x60,0xc4,0x58,0x40]}

tool: {"D391": [0xd3,0xfa,0x60,0xbb,0x89,0x42,0x67,0x40]}

tool: {"D120": [0x15,0xe3,0xbc,0x7b,0x60,0x43,0x58,0x40]}

tool: {"D439": [0x43,0xc8,0xa6,0xc9,0x06,0x62,0x64,0x40]}

tool: {"D344": [0x5e,0x4a,0xff,0xc0,0x0c,0xc2,0x55,0x40]}

tool: {"D458": [0x4f,0xea,0x3e,0x4d,0x3c,0x83,0x63,0x40]}

tool: {"D192": [0xe0,0x3f,0x75,0xa6,0x4b,0x61,0x60,0x40]}

tool: {"D221": [0x5d,0x8c,0xf4,0xef,0x09,0x03,0x60,0x40]}

tool: {"D228": [0x3d,0x29,0x0b,0x4e,0x61,0x45,0x5c,0x40]}

tool: {"D122": [0x77,0x2e,0x02,0xde,0xdf,0x01,0x60,0x40]}

tool: {"D431": [0xda,0x39,0xdd,0x52,0xbf,0x82,0x5c,0x40]}

tool: {"D423": [0x72,0x6d,0x26,0x2a,0x0d,0x43,0x59,0x40]}

tool: {"D190": [14.0067,15.9994]}

tool: {"D131": [0xbc,0xd0,0x5c,0xa7,0x91,0x86,0x4c,0x40,0x95,0x9f,0x54,0xfb,0x74,0x24,0x61,0x40]}

tool: {"D284": [0xbd,0x8c,0x62,0xb9,0xa5,0x23,0x60,0x40,0xa5,0xc2,0xd8,0x42,0x90,0x65,0x62,0x40]}

tool: {"D136": [0x4c,0xa6,0x0a,0x46,0x25,0xc9,0x59,0x40,0xe7,0x6a,0x2b,0xf6,0x97,0xc5,0x5c,0x40]}

tool: {"D295": [0xf0,0x16,0x48,0x50,0xfc,0xc4,0x51,0x40,0xd2,0x1d,0xc4,0xce,0x14,0xa6,0x5c,0x40]}

tool: D328: 1.00794

tool: D251: 12.0107

tool: D43: 30.973761

tool: D191: 32.065

tool: {"D199": [0x32,0xe6,0xae,0x25,0xe4,0x13,0x60,0x40]}

tool: {"D22": [0xec,0x69,0x87,0xbf,0x26,0x85,0x60,0x40]}

tool: {"D358": [0x14,0x74,0x7b,0x49,0x63,0xc8,0x58,0x40]}

tool: {"D112": [0xc6,0x6d,0x34,0x80,0xb7,0x46,0x67,0x40]}

tool: {"D443": [0xcf,0x49,0xef,0x1b,0x5f,0x47,0x58,0x40]}

tool: {"D203": [0x8f,0x36,0x8e,0x58,0x8b,0x65,0x64,0x40]}

tool: {"D469": [0xc5,0xfe,0xb2,0x7b,0xf2,0xc4,0x55,0x40]}

tool: {"D80": [0xaf,0xf0,0x2e,0x17,0xf1,0x85,0x63,0x40]}

tool: {"D343": [0xb8,0x01,0x9f,0x1f,0x46,0x66,0x60,0x40]}

tool: {"D51": [0x28,0xb8,0x58,0x51,0x83,0x05,0x60,0x40]}

tool: {"D130": [0xa6,0x22,0x15,0xc6,0x16,0x4a,0x5c,0x40]}

tool: {"D468": [0xa7,0x3f,0xfb,0x91,0x22,0x04,0x60,0x40]}

tool: {"D212": [0xbc,0xd0,0x5c,0xa7,0x91,0x86,0x5c,0x40]}

tool: {"D416": [0x58,0xad,0x4c,0xf8,0xa5,0x46,0x59,0x40]}

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;
}
```