#define NULL ((void *)0)
typedef unsigned long size_t; // Customize by platform.
typedef long intptr_t;
typedef unsigned long uintptr_t;
typedef long scalar_t__; // Either arithmetic or pointer type.
/* By default, we understand bool (as a convenience). */
typedef int bool;
#define false 0
#define true 1

/* Forward declarations */

/* Type definitions */

/* Variables and functions */
scalar_t__ malloc(int);
double *initAminoAcidMass(void) {
  double *M;
  if ((M = (double *)malloc(26 * sizeof(double))) == NULL) {
    return (NULL);
  }
  M[0] = 71.037110;
  M[1] = 114.534940;
  M[2] = 160.030649;
  M[3] = 115.026940;
  M[4] = 129.042590;
  M[5] = 147.068410;
  M[6] = 57.021460;
  M[7] = 137.058910;
  M[8] = 113.084060;
  M[9] = 0.000000;
  M[10] = 128.094960;
  M[11] = 113.084060;
  M[12] = 131.040480;
  M[13] = 114.042930;
  M[14] = 0.000000;
  M[15] = 97.052760;
  M[16] = 128.058580;
  M[17] = 156.101110;
  M[18] = 87.032030;
  M[19] = 101.047680;
  M[20] = 150.953630;
  M[21] = 99.068410;
  M[22] = 186.079310;
  M[23] = 111.000000;
  M[24] = 163.063330;
  M[25] = 128.550590;
  return (M);
}


x86 assembly (clang, -O0):
<initAminoAcidMass>:
push   %rbp
mov    %rsp,%rbp
sub    $0x10,%rsp
mov    $0xd0,%edi
call   1030 <malloc@plt>
mov    %rax,-0x10(%rbp)
cmp    $0x0,%rax
jne    113d <initAminoAcidMass+0x2d>
movq   $0x0,-0x8(%rbp)
jmp    1312 <initAminoAcidMass+0x202>
mov    -0x10(%rbp),%rax
movsd  0xf67(%rip),%xmm0
movsd  %xmm0,(%rax)
mov    -0x10(%rbp),%rax
movsd  0xf4f(%rip),%xmm0
movsd  %xmm0,0x8(%rax)
mov    -0x10(%rbp),%rax
movsd  0xf36(%rip),%xmm0
movsd  %xmm0,0x10(%rax)
mov    -0x10(%rbp),%rax
movsd  0xf1d(%rip),%xmm0
movsd  %xmm0,0x18(%rax)
mov    -0x10(%rbp),%rax
movsd  0xf04(%rip),%xmm0
movsd  %xmm0,0x20(%rax)
mov    -0x10(%rbp),%rax
movsd  0xeeb(%rip),%xmm0
movsd  %xmm0,0x28(%rax)
mov    -0x10(%rbp),%rax
movsd  0xed2(%rip),%xmm0
movsd  %xmm0,0x30(%rax)
mov    -0x10(%rbp),%rax
movsd  0xeb9(%rip),%xmm0
movsd  %xmm0,0x38(%rax)
mov    -0x10(%rbp),%rax
movsd  0xe98(%rip),%xmm0
movsd  %xmm0,0x40(%rax)
mov    -0x10(%rbp),%rax
xorps  %xmm0,%xmm0
movsd  %xmm0,0x48(%rax)
mov    -0x10(%rbp),%rax
movsd  0xe83(%rip),%xmm0
movsd  %xmm0,0x50(%rax)
mov    -0x10(%rbp),%rax
movsd  0xe6a(%rip),%xmm0
movsd  %xmm0,0x58(%rax)
mov    -0x10(%rbp),%rax
movsd  0xe51(%rip),%xmm0
movsd  %xmm0,0x60(%rax)
mov    -0x10(%rbp),%rax
movsd  0xe38(%rip),%xmm0
movsd  %xmm0,0x68(%rax)
mov    -0x10(%rbp),%rax
xorps  %xmm0,%xmm0
movsd  %xmm0,0x70(%rax)
mov    -0x10(%rbp),%rax
movsd  0xe13(%rip),%xmm0
movsd  %xmm0,0x78(%rax)
mov    -0x10(%rbp),%rax
movsd  0xdfa(%rip),%xmm0
movsd  %xmm0,0x80(%rax)
mov    -0x10(%rbp),%rax
movsd  0xdde(%rip),%xmm0
movsd  %xmm0,0x88(%rax)
mov    -0x10(%rbp),%rax
movsd  0xdc2(%rip),%xmm0
movsd  %xmm0,0x90(%rax)
mov    -0x10(%rbp),%rax
movsd  0xda6(%rip),%xmm0
movsd  %xmm0,0x98(%rax)
mov    -0x10(%rbp),%rax
movsd  0xd8a(%rip),%xmm0
movsd  %xmm0,0xa0(%rax)
mov    -0x10(%rbp),%rax
movsd  0xd6e(%rip),%xmm0
movsd  %xmm0,0xa8(%rax)
mov    -0x10(%rbp),%rax
movsd  0xd52(%rip),%xmm0
movsd  %xmm0,0xb0(%rax)
mov    -0x10(%rbp),%rax
movsd  0xd36(%rip),%xmm0
movsd  %xmm0,0xb8(%rax)
mov    -0x10(%rbp),%rax
movsd  0xd1a(%rip),%xmm0
movsd  %xmm0,0xc0(%rax)
mov    -0x10(%rbp),%rax
movsd  0xcfe(%rip),%xmm0
movsd  %xmm0,0xc8(%rax)
mov    -0x10(%rbp),%rax
mov    %rax,-0x8(%rbp)
mov    -0x8(%rbp),%rax
add    $0x10,%rsp
pop    %rbp
ret

x86 assembly (clang, -O2):
<initAminoAcidMass>:
push   %rax
mov    $0xd0,%edi
call   1030 <malloc@plt>
test   %rax,%rax
je     11c7 <initAminoAcidMass+0xb7>
movaps 0xed5(%rip),%xmm0
movups %xmm0,(%rax)
movaps 0xedb(%rip),%xmm0
movups %xmm0,0x10(%rax)
movaps 0xee0(%rip),%xmm0
movups %xmm0,0x20(%rax)
movaps 0xee5(%rip),%xmm0
movups %xmm0,0x30(%rax)
movsd  0xf59(%rip),%xmm0
movups %xmm0,0x40(%rax)
movaps 0xede(%rip),%xmm0
movups %xmm0,0x50(%rax)
movaps 0xee3(%rip),%xmm0
xorps  %xmm1,%xmm1
movhps 0xf41(%rip),%xmm1
movups %xmm0,0x60(%rax)
movups %xmm1,0x70(%rax)
movaps 0xeda(%rip),%xmm0
movups %xmm0,0x80(%rax)
movaps 0xedc(%rip),%xmm0
movups %xmm0,0x90(%rax)
movaps 0xede(%rip),%xmm0
movups %xmm0,0xa0(%rax)
movaps 0xee0(%rip),%xmm0
movups %xmm0,0xb0(%rax)
movaps 0xee2(%rip),%xmm0
movups %xmm0,0xc0(%rax)
pop    %rcx
ret
xor    %eax,%eax
pop    %rcx
ret

LLVM IR (-O0):
define double* @initAminoAcidMass() {
%1 = alloca double*
%2 = alloca double*
%3 = call i64 @malloc(i32 208)
%4 = inttoptr i64 %3 to double*
store double* %4, double** %2
%5 = icmp eq double* %4, null
br i1 %5, label %6, label %7
6: ; preds = %0
store double* null, double** %1
br label %61
7: ; preds = %0
%8 = load double*, double** %2
%9 = getelementptr inbounds double, double* %8, i64 0
store double 0x4051C260029F16B1, double* %9
%10 = load double*, double** %2
%11 = getelementptr inbounds double, double* %10, i64 1
store double 0x405CA23C74FB54A0, double* %11
%12 = load double*, double** %2
%13 = getelementptr inbounds double, double* %12, i64 2
store double 0x406400FB139C94F7, double* %13
%14 = load double*, double** %2
%15 = getelementptr inbounds double, double* %14, i64 3
store double 0x405CC1B9628CBD12, double* %15
%16 = load double*, double** %2
%17 = getelementptr inbounds double, double* %16, i64 4
store double 0x4060215CE5B4245F, double* %17
%18 = load double*, double** %2
%19 = getelementptr inbounds double, double* %18, i64 5
store double 0x406262306A2B1705, double* %19
%20 = load double*, double** %2
%21 = getelementptr inbounds double, double* %20, i64 6
store double 0x404C82BF33871609, double* %21
%22 = load double*, double** %2
%23 = getelementptr inbounds double, double* %22, i64 7
store double 0x406121E297396D09, double* %23
%24 = load double*, double** %2
%25 = getelementptr inbounds double, double* %24, i64 8
store double 0x405C45613D31B9B6, double* %25
%26 = load double*, double** %2
%27 = getelementptr inbounds double, double* %26, i64 9
store double 0.000000e+00, double* %27
%28 = load double*, double** %2
%29 = getelementptr inbounds double, double* %28, i64 10
store double 0x40600309E98DCDB3, double* %29
%30 = load double*, double** %2
%31 = getelementptr inbounds double, double* %30, i64 11
store double 0x405C45613D31B9B6, double* %31
%32 = load double*, double** %2
%33 = getelementptr inbounds double, double* %32, i64 12
store double 0x4060614B9CB6848C, double* %33
%34 = load double*, double** %2
%35 = getelementptr inbounds double, double* %34, i64 13
store double 0x405C82BF5D78811B, double* %35
%36 = load double*, double** %2
%37 = getelementptr inbounds double, double* %36, i64 14
store double 0.000000e+00, double* %37
%38 = load double*, double** %2
%39 = getelementptr inbounds double, double* %38, i64 15
store double 0x405843606B7AA25E, double* %39
%40 = load double*, double** %2
%41 = getelementptr inbounds double, double* %40, i64 16
store double 0x406001DFE32A0664, double* %41
%42 = load double*, double** %2
%43 = getelementptr inbounds double, double* %42, i64 17
store double 0x4063833C4B09E98E, double* %43
%44 = load double*, double** %2
%45 = getelementptr inbounds double, double* %44, i64 18
store double 0x4055C20CC78E9F6B, double* %45
%46 = load double*, double** %2
%47 = getelementptr inbounds double, double* %46, i64 19
store double 0x4059430D306A2B17, double* %47
%48 = load double*, double** %2
%49 = getelementptr inbounds double, double* %48, i64 20
store double 0x4062DE84230FCF81, double* %49
%50 = load double*, double** %2
%51 = getelementptr inbounds double, double* %50, i64 21
store double 0x4058C460D4562E0A, double* %51
%52 = load double*, double** %2
%53 = getelementptr inbounds double, double* %52, i64 22
store double 0x40674289B52007DD, double* %53
%54 = load double*, double** %2
%55 = getelementptr inbounds double, double* %54, i64 23
store double 1.110000e+02, double* %55
%56 = load double*, double** %2
%57 = getelementptr inbounds double, double* %56, i64 24
store double 0x40646206CCA2DB62, double* %57
%58 = load double*, double** %2
%59 = getelementptr inbounds double, double* %58, i64 25
store double 0x4060119E6EEB7026, double* %59
%60 = load double*, double** %2
store double* %60, double** %1
br label %61
61: ; preds = %7, %6
%62 = load double*, double** %1
ret double* %62
}

LLVM IR (-O2):
define double* @initAminoAcidMass() {
%1 = tail call i64 @malloc(i32 208)
%2 = inttoptr i64 %1 to double*
%3 = icmp eq i64 %1, 0
br i1 %3, label %30, label %4
4: ; preds = %0
%5 = inttoptr i64 %1 to <2 x double>*
store <2 x double> <double 0x4051C260029F16B1, double 0x405CA23C74FB54A0>, <2 x double>* %5
%6 = getelementptr inbounds double, double* %2, i64 2
%7 = bitcast double* %6 to <2 x double>*
store <2 x double> <double 0x406400FB139C94F7, double 0x405CC1B9628CBD12>, <2 x double>* %7
%8 = getelementptr inbounds double, double* %2, i64 4
%9 = bitcast double* %8 to <2 x double>*
store <2 x double> <double 0x4060215CE5B4245F, double 0x406262306A2B1705>, <2 x double>* %9
%10 = getelementptr inbounds double, double* %2, i64 6
%11 = bitcast double* %10 to <2 x double>*
store <2 x double> <double 0x404C82BF33871609, double 0x406121E297396D09>, <2 x double>* %11
%12 = getelementptr inbounds double, double* %2, i64 8
%13 = bitcast double* %12 to <2 x double>*
store <2 x double> <double 0x405C45613D31B9B6, double 0.000000e+00>, <2 x double>* %13
%14 = getelementptr inbounds double, double* %2, i64 10
%15 = bitcast double* %14 to <2 x double>*
store <2 x double> <double 0x40600309E98DCDB3, double 0x405C45613D31B9B6>, <2 x double>* %15
%16 = getelementptr inbounds double, double* %2, i64 12
%17 = bitcast double* %16 to <2 x double>*
store <2 x double> <double 0x4060614B9CB6848C, double 0x405C82BF5D78811B>, <2 x double>* %17
%18 = getelementptr inbounds double, double* %2, i64 14
%19 = bitcast double* %18 to <2 x double>*
store <2 x double> <double 0.000000e+00, double 0x405843606B7AA25E>, <2 x double>* %19
%20 = getelementptr inbounds double, double* %2, i64 16
%21 = bitcast double* %20 to <2 x double>*
store <2 x double> <double 0x406001DFE32A0664, double 0x4063833C4B09E98E>, <2 x double>* %21
%22 = getelementptr inbounds double, double* %2, i64 18
%23 = bitcast double* %22 to <2 x double>*
store <2 x double> <double 0x4055C20CC78E9F6B, double 0x4059430D306A2B17>, <2 x double>* %23
%24 = getelementptr inbounds double, double* %2, i64 20
%25 = bitcast double* %24 to <2 x double>*
store <2 x double> <double 0x4062DE84230FCF81, double 0x4058C460D4562E0A>, <2 x double>* %25
%26 = getelementptr inbounds double, double* %2, i64 22
%27 = bitcast double* %26 to <2 x double>*
store <2 x double> <double 0x40674289B52007DD, double 1.110000e+02>, <2 x double>* %27
%28 = getelementptr inbounds double, double* %2, i64 24
%29 = bitcast double* %28 to <2 x double>*
store <2 x double> <double 0x40646206CCA2DB62, double 0x4060119E6EEB7026>, <2 x double>* %29
br label %30
30: ; preds = %0, %4
%31 = phi double* [ %2, %4 ], [ null, %0 ]
ret double* %31
}