// File: /workspace/github_c_makefile_star2_O0/lesgourg[P]class_public/build/../source/background.c
// Function: background_output_budget
int background_output_budget(
                             struct background* pba
                             ) {

  double budget_matter, budget_radiation, budget_other,budget_neutrino;
  int index_ncdm;

  budget_matter = 0;
  budget_radiation = 0;
  budget_other = 0;
  budget_neutrino = 0;

  //The name for the class_print_species macro can be at most 30 characters total
  if (pba->background_verbose > 1) {

    printf(" ---------------------------- Budget equation ----------------------- \n");

    printf(" ---> Nonrelativistic Species \n");
    class_print_species("Bayrons",b);
    budget_matter+=pba->Omega0_b;
    if (pba->has_cdm == _TRUE_) {
      class_print_species("Cold Dark Matter",cdm);
      budget_matter+=pba->Omega0_cdm;
    }
    if (pba->has_idm == _TRUE_){
      class_print_species("Interacting DM - idr,b,g",idm);
      budget_matter+=pba->Omega0_idm;
    }
    if (pba->has_dcdm == _TRUE_) {
      class_print_species("Decaying Cold Dark Matter",dcdm);
      budget_matter+=pba->Omega0_dcdm;
    }

    if (pba->N_ncdm > 0) {
      printf(" ---> Non-Cold Dark Matter Species (incl. massive neutrinos)\n");
    }
    if (pba->N_ncdm > 0) {
      for (index_ncdm=0;index_ncdm<pba->N_ncdm;++index_ncdm) {
        printf("-> %-26s%-4d Omega = %-15g , omega = %-15g\n","Non-Cold Species Nr.",index_ncdm+1,pba->Omega0_ncdm[index_ncdm],pba->Omega0_ncdm[index_ncdm]*pba->h*pba->h);
        budget_neutrino+=pba->Omega0_ncdm[index_ncdm];
        budget_matter+=pba->Omega0_ncdm[index_ncdm];
      }
    }

    printf(" ---> Relativistic Species \n");
    class_print_species("Photons",g);
    budget_radiation+=pba->Omega0_g;
    if (pba->has_ur == _TRUE_) {
      class_print_species("Ultra-relativistic relics",ur);
      budget_radiation+=pba->Omega0_ur;
    }
    if (pba->has_dr == _TRUE_) {
      class_print_species("Dark Radiation (from decay)",dr);
      budget_radiation+=pba->Omega0_dr;
    }
    if (pba->has_idr == _TRUE_) {
      class_print_species("Interacting Dark Radiation",idr);
      budget_radiation+=pba->Omega0_idr;
    }

    if ((pba->has_lambda == _TRUE_) || (pba->has_fld == _TRUE_) || (pba->has_scf == _TRUE_) || (pba->has_curvature == _TRUE_)) {
      printf(" ---> Other Content \n");
    }
    if (pba->has_lambda == _TRUE_) {
      class_print_species("Cosmological Constant",lambda);
      budget_other+=pba->Omega0_lambda;
    }
    if (pba->has_fld == _TRUE_) {
      class_print_species("Dark Energy Fluid",fld);
      budget_other+=pba->Omega0_fld;
    }
    if (pba->has_scf == _TRUE_) {
      class_print_species("Scalar Field",scf);
      budget_other+=pba->Omega0_scf;
    }
    if (pba->has_curvature == _TRUE_) {
      class_print_species("Spatial Curvature",k);
      budget_other+=pba->Omega0_k;
    }

    printf(" ---> Total budgets \n");
    printf(" Radiation                        Omega = %-15g , omega = %-15g \n",budget_radiation,budget_radiation*pba->h*pba->h);
    printf(" Non-relativistic                 Omega = %-15g , omega = %-15g \n",budget_matter,budget_matter*pba->h*pba->h);
    if (pba->N_ncdm > 0) {
      printf(" - Non-Free-Streaming Matter      Omega = %-15g , omega = %-15g \n",pba->Omega0_nfsm,pba->Omega0_nfsm*pba->h*pba->h);
      printf(" - Non-Cold Dark Matter           Omega = %-15g , omega = %-15g \n",budget_neutrino,budget_neutrino*pba->h*pba->h);
    }
    if ((pba->has_lambda == _TRUE_) || (pba->has_fld == _TRUE_) || (pba->has_scf == _TRUE_) || (pba->has_curvature == _TRUE_)) {
      printf(" Other Content                    Omega = %-15g , omega = %-15g \n",budget_other,budget_other*pba->h*pba->h);
    }
    printf(" TOTAL                            Omega = %-15g , omega = %-15g \n",budget_radiation+budget_matter+budget_other,(budget_radiation+budget_matter+budget_other)*pba->h*pba->h);
    printf(" -------------------------------------------------------------------- \n");
  }

  return _SUCCESS_;
}

// Assembly:
subq $0x38, %rsp
movq %rdi, 0x30(%rsp)
xorps %xmm0, %xmm0
movsd %xmm0, 0x28(%rsp)
xorps %xmm0, %xmm0
movsd %xmm0, 0x20(%rsp)
xorps %xmm0, %xmm0
movsd %xmm0, 0x18(%rsp)
xorps %xmm0, %xmm0
movsd %xmm0, 0x10(%rsp)
movq 0x30(%rsp), %rax
movswl 0xb82(%rax), %eax
cmpl $0x1, %eax
jle 0x9a0bb
leaq 0x138be7(%rip), %rdi    # 0x1d24d0
movb $0x0, %al
callq 0x8030
leaq 0x138c21(%rip), %rdi    # 0x1d2518
movb $0x0, %al
callq 0x8030
movq 0x30(%rsp), %rax
movsd 0x20(%rax), %xmm0
movq 0x30(%rsp), %rax
movsd 0x20(%rax), %xmm1
movq 0x30(%rsp), %rax
mulsd 0x8(%rax), %xmm1
movq 0x30(%rsp), %rax
mulsd 0x8(%rax), %xmm1
leaq 0x138c0b(%rip), %rdi    # 0x1d2538
leaq 0x138c2c(%rip), %rsi    # 0x1d2560
movb $0x2, %al
callq 0x8030
movq 0x30(%rsp), %rax
movsd 0x20(%rax), %xmm0
addsd 0x28(%rsp), %xmm0
movsd %xmm0, 0x28(%rsp)
movq 0x30(%rsp), %rax
movswl 0x320(%rax), %eax
cmpl $0x1, %eax
jne 0x999b5
movq 0x30(%rsp), %rax
movsd 0x30(%rax), %xmm0
movq 0x30(%rsp), %rax
movsd 0x30(%rax), %xmm1
movq 0x30(%rsp), %rax
mulsd 0x8(%rax), %xmm1
movq 0x30(%rsp), %rax
mulsd 0x8(%rax), %xmm1
leaq 0x138ba7(%rip), %rdi    # 0x1d2538
leaq 0x138bf2(%rip), %rsi    # 0x1d258a
movb $0x2, %al
callq 0x8030
movq 0x30(%rsp), %rax
movsd 0x30(%rax), %xmm0
addsd 0x28(%rsp), %xmm0
movsd %xmm0, 0x28(%rsp)
movq 0x30(%rsp), %rax
movswl 0x322(%rax), %eax
cmpl $0x1, %eax
jne 0x99a19
movq 0x30(%rsp), %rax
movsd 0x38(%rax), %xmm0
movq 0x30(%rsp), %rax
movsd 0x38(%rax), %xmm1
movq 0x30(%rsp), %rax
mulsd 0x8(%rax), %xmm1
movq 0x30(%rsp), %rax
mulsd 0x8(%rax), %xmm1
leaq 0x138b43(%rip), %rdi    # 0x1d2538
leaq 0x138b6c(%rip), %rsi    # 0x1d2568
movb $0x2, %al
callq 0x8030
movq 0x30(%rsp), %rax
movsd 0x38(%rax), %xmm0
addsd 0x28(%rsp), %xmm0
movsd %xmm0, 0x28(%rsp)
movq 0x30(%rsp), %rax
movswl 0x324(%rax), %eax
cmpl $0x1, %eax
jne 0x99a86
movq 0x30(%rsp), %rax
movsd 0x1b8(%rax), %xmm0
movq 0x30(%rsp), %rax
movsd 0x1b8(%rax), %xmm1
movq 0x30(%rsp), %rax
mulsd 0x8(%rax), %xmm1
movq 0x30(%rsp), %rax
mulsd 0x8(%rax), %xmm1
leaq 0x138ad9(%rip), %rdi    # 0x1d2538
leaq 0x138b1b(%rip), %rsi    # 0x1d2581
movb $0x2, %al
callq 0x8030
movq 0x30(%rsp), %rax
movsd 0x1b8(%rax), %xmm0
addsd 0x28(%rsp), %xmm0
movsd %xmm0, 0x28(%rsp)
movq 0x30(%rsp), %rax
cmpl $0x0, 0x70(%rax)
jle 0x99a9f
leaq 0x138b03(%rip), %rdi    # 0x1d259b
movb $0x0, %al
callq 0x8030
movq 0x30(%rsp), %rax
cmpl $0x0, 0x70(%rax)
jle 0x99b7a
movl $0x0, 0xc(%rsp)
movl 0xc(%rsp), %eax
movq 0x30(%rsp), %rcx
cmpl 0x70(%rcx), %eax
jge 0x99b78
movl 0xc(%rsp), %edx
addl $0x1, %edx
movq 0x30(%rsp), %rax
movq 0xa0(%rax), %rax
movslq 0xc(%rsp), %rcx
movsd (%rax,%rcx,8), %xmm0
movq 0x30(%rsp), %rax
movq 0xa0(%rax), %rax
movslq 0xc(%rsp), %rcx
movsd (%rax,%rcx,8), %xmm1
movq 0x30(%rsp), %rax
mulsd 0x8(%rax), %xmm1
movq 0x30(%rsp), %rax
mulsd 0x8(%rax), %xmm1
leaq 0x138ac3(%rip), %rdi    # 0x1d25d9
leaq 0x138ae8(%rip), %rsi    # 0x1d2605
movb $0x2, %al
callq 0x8030
movq 0x30(%rsp), %rax
movq 0xa0(%rax), %rax
movslq 0xc(%rsp), %rcx
movsd (%rax,%rcx,8), %xmm0
addsd 0x10(%rsp), %xmm0
movsd %xmm0, 0x10(%rsp)
movq 0x30(%rsp), %rax
movq 0xa0(%rax), %rax
movslq 0xc(%rsp), %rcx
movsd (%rax,%rcx,8), %xmm0
addsd 0x28(%rsp), %xmm0
movsd %xmm0, 0x28(%rsp)
movl 0xc(%rsp), %eax
addl $0x1, %eax
movl %eax, 0xc(%rsp)
jmp 0x99ab6
jmp 0x99b7a
leaq 0x138a99(%rip), %rdi    # 0x1d261a
movb $0x0, %al
callq 0x8030
movq 0x30(%rsp), %rax
movsd 0x10(%rax), %xmm0
movq 0x30(%rsp), %rax
movsd 0x10(%rax), %xmm1
movq 0x30(%rsp), %rax
mulsd 0x8(%rax), %xmm1
movq 0x30(%rsp), %rax
mulsd 0x8(%rax), %xmm1
leaq 0x138981(%rip), %rdi    # 0x1d2538
leaq 0x138a79(%rip), %rsi    # 0x1d2637
movb $0x2, %al
callq 0x8030
movq 0x30(%rsp), %rax
movsd 0x10(%rax), %xmm0
addsd 0x20(%rsp), %xmm0
movsd %xmm0, 0x20(%rsp)
movq 0x30(%rsp), %rax
movswl 0x330(%rax), %eax
cmpl $0x1, %eax
jne 0x99c3f
movq 0x30(%rsp), %rax
movsd 0x28(%rax), %xmm0
movq 0x30(%rsp), %rax
movsd 0x28(%rax), %xmm1
movq 0x30(%rsp), %rax
mulsd 0x8(%rax), %xmm1
movq 0x30(%rsp), %rax
mulsd 0x8(%rax), %xmm1
leaq 0x13891d(%rip), %rdi    # 0x1d2538
leaq 0x138a1d(%rip), %rsi    # 0x1d263f
movb $0x2, %al
callq 0x8030
movq 0x30(%rsp), %rax
movsd 0x28(%rax), %xmm0
addsd 0x20(%rsp), %xmm0
movsd %xmm0, 0x20(%rsp)
movq 0x30(%rsp), %rax
movswl 0x326(%rax), %eax
cmpl $0x1, %eax
jne 0x99cac
movq 0x30(%rsp), %rax
movsd 0x1c0(%rax), %xmm0
movq 0x30(%rsp), %rax
movsd 0x1c0(%rax), %xmm1
movq 0x30(%rsp), %rax
mulsd 0x8(%rax), %xmm1
movq 0x30(%rsp), %rax
mulsd 0x8(%rax), %xmm1
leaq 0x1388b3(%rip), %rdi    # 0x1d2538
leaq 0x1389cd(%rip), %rsi    # 0x1d2659
movb $0x2, %al
callq 0x8030
movq 0x30(%rsp), %rax
movsd 0x1c0(%rax), %xmm0
addsd 0x20(%rsp), %xmm0
movsd %xmm0, 0x20(%rsp)
movq 0x30(%rsp), %rax
movswl 0x332(%rax), %eax
cmpl $0x1, %eax
jne 0x99d10
movq 0x30(%rsp), %rax
movsd 0x40(%rax), %xmm0
movq 0x30(%rsp), %rax
movsd 0x40(%rax), %xmm1
movq 0x30(%rsp), %rax
mulsd 0x8(%rax), %xmm1
movq 0x30(%rsp), %rax
mulsd 0x8(%rax), %xmm1
leaq 0x13884c(%rip), %rdi    # 0x1d2538
leaq 0x138982(%rip), %rsi    # 0x1d2675
movb $0x2, %al
callq 0x8030
movq 0x30(%rsp), %rax
movsd 0x40(%rax), %xmm0
addsd 0x20(%rsp), %xmm0
movsd %xmm0, 0x20(%rsp)
movq 0x30(%rsp), %rax
movswl 0x32c(%rax), %eax
cmpl $0x1, %eax
je 0x99d54
movq 0x30(%rsp), %rax
movswl 0x32e(%rax), %eax
cmpl $0x1, %eax
je 0x99d54
movq 0x30(%rsp), %rax
movswl 0x328(%rax), %eax
cmpl $0x1, %eax
je 0x99d54
movq 0x30(%rsp), %rax
movswl 0x334(%rax), %eax
cmpl $0x1, %eax
jne 0x99d62
leaq 0x138935(%rip), %rdi    # 0x1d2690
movb $0x0, %al
callq 0x8030
movq 0x30(%rsp), %rax
movswl 0x32c(%rax), %eax
cmpl $0x1, %eax
jne 0x99dcf
movq 0x30(%rsp), %rax
movsd 0xf8(%rax), %xmm0
movq 0x30(%rsp), %rax
movsd 0xf8(%rax), %xmm1
movq 0x30(%rsp), %rax
mulsd 0x8(%rax), %xmm1
movq 0x30(%rsp), %rax
mulsd 0x8(%rax), %xmm1
leaq 0x138790(%rip), %rdi    # 0x1d2538
leaq 0x1388f7(%rip), %rsi    # 0x1d26a6
movb $0x2, %al
callq 0x8030
movq 0x30(%rsp), %rax
movsd 0xf8(%rax), %xmm0
addsd 0x18(%rsp), %xmm0
movsd %xmm0, 0x18(%rsp)
movq 0x30(%rsp), %rax
movswl 0x32e(%rax), %eax
cmpl $0x1, %eax
jne 0x99e3c
movq 0x30(%rsp), %rax
movsd 0x100(%rax), %xmm0
movq 0x30(%rsp), %rax
movsd 0x100(%rax), %xmm1
movq 0x30(%rsp), %rax
mulsd 0x8(%rax), %xmm1
movq 0x30(%rsp), %rax
mulsd 0x8(%rax), %xmm1
leaq 0x138723(%rip), %rdi    # 0x1d2538
leaq 0x1388a0(%rip), %rsi    # 0x1d26bc
movb $0x2, %al
callq 0x8030
movq 0x30(%rsp), %rax
movsd 0x100(%rax), %xmm0
addsd 0x18(%rsp), %xmm0
movsd %xmm0, 0x18(%rsp)
movq 0x30(%rsp), %rax
movswl 0x328(%rax), %eax
cmpl $0x1, %eax
jne 0x99ea9
movq 0x30(%rsp), %rax
movsd 0x108(%rax), %xmm0
movq 0x30(%rsp), %rax
movsd 0x108(%rax), %xmm1
movq 0x30(%rsp), %rax
mulsd 0x8(%rax), %xmm1
movq 0x30(%rsp), %rax
mulsd 0x8(%rax), %xmm1
leaq 0x1386b6(%rip), %rdi    # 0x1d2538
leaq 0x138845(%rip), %rsi    # 0x1d26ce
movb $0x2, %al
callq 0x8030
movq 0x30(%rsp), %rax
movsd 0x108(%rax), %xmm0
addsd 0x18(%rsp), %xmm0
movsd %xmm0, 0x18(%rsp)
movq 0x30(%rsp), %rax
movswl 0x334(%rax), %eax
cmpl $0x1, %eax
jne 0x99f16
movq 0x30(%rsp), %rax
movsd 0xf0(%rax), %xmm0
movq 0x30(%rsp), %rax
movsd 0xf0(%rax), %xmm1
movq 0x30(%rsp), %rax
mulsd 0x8(%rax), %xmm1
movq 0x30(%rsp), %rax
mulsd 0x8(%rax), %xmm1
leaq 0x138649(%rip), %rdi    # 0x1d2538
leaq 0x1387e5(%rip), %rsi    # 0x1d26db
movb $0x2, %al
callq 0x8030
movq 0x30(%rsp), %rax
movsd 0xf0(%rax), %xmm0
addsd 0x18(%rsp), %xmm0
movsd %xmm0, 0x18(%rsp)
leaq 0x1387d0(%rip), %rdi    # 0x1d26ed
movb $0x0, %al
callq 0x8030
movsd 0x20(%rsp), %xmm0
movsd 0x20(%rsp), %xmm1
movq 0x30(%rsp), %rax
mulsd 0x8(%rax), %xmm1
movq 0x30(%rsp), %rax
mulsd 0x8(%rax), %xmm1
leaq 0x1387b8(%rip), %rdi    # 0x1d2703
movb $0x2, %al
callq 0x8030
movsd 0x28(%rsp), %xmm0
movsd 0x28(%rsp), %xmm1
movq 0x30(%rsp), %rax
mulsd 0x8(%rax), %xmm1
movq 0x30(%rsp), %rax
mulsd 0x8(%rax), %xmm1
leaq 0x1387cc(%rip), %rdi    # 0x1d2745
movb $0x2, %al
callq 0x8030
movq 0x30(%rsp), %rax
cmpl $0x0, 0x70(%rax)
jle 0x99ff5
movq 0x30(%rsp), %rax
movsd 0x1e0(%rax), %xmm0
movq 0x30(%rsp), %rax
movsd 0x1e0(%rax), %xmm1
movq 0x30(%rsp), %rax
mulsd 0x8(%rax), %xmm1
movq 0x30(%rsp), %rax
mulsd 0x8(%rax), %xmm1
leaq 0x1387c7(%rip), %rdi    # 0x1d2787
movb $0x2, %al
callq 0x8030
movsd 0x10(%rsp), %xmm0
movsd 0x10(%rsp), %xmm1
movq 0x30(%rsp), %rax
mulsd 0x8(%rax), %xmm1
movq 0x30(%rsp), %rax
mulsd 0x8(%rax), %xmm1
leaq 0x1387db(%rip), %rdi    # 0x1d27c9
movb $0x2, %al
callq 0x8030
movq 0x30(%rsp), %rax
movswl 0x32c(%rax), %eax
cmpl $0x1, %eax
je 0x9a039
movq 0x30(%rsp), %rax
movswl 0x32e(%rax), %eax
cmpl $0x1, %eax
je 0x9a039
movq 0x30(%rsp), %rax
movswl 0x328(%rax), %eax
cmpl $0x1, %eax
je 0x9a039
movq 0x30(%rsp), %rax
movswl 0x334(%rax), %eax
cmpl $0x1, %eax
jne 0x9a067
movsd 0x18(%rsp), %xmm0
movsd 0x18(%rsp), %xmm1
movq 0x30(%rsp), %rax
mulsd 0x8(%rax), %xmm1
movq 0x30(%rsp), %rax
mulsd 0x8(%rax), %xmm1
leaq 0x1387ab(%rip), %rdi    # 0x1d280b
movb $0x2, %al
callq 0x8030
movsd 0x20(%rsp), %xmm0
addsd 0x28(%rsp), %xmm0
addsd 0x18(%rsp), %xmm0
movsd 0x20(%rsp), %xmm1
addsd 0x28(%rsp), %xmm1
addsd 0x18(%rsp), %xmm1
movq 0x30(%rsp), %rax
mulsd 0x8(%rax), %xmm1
movq 0x30(%rsp), %rax
mulsd 0x8(%rax), %xmm1
leaq 0x1387a7(%rip), %rdi    # 0x1d284d
movb $0x2, %al
callq 0x8030
leaq 0x1387db(%rip), %rdi    # 0x1d288f
movb $0x0, %al
callq 0x8030
xorl %eax, %eax
addq $0x38, %rsp
retq
nopw %cs:(%rax,%rax)