// File: /workspace/github_c_makefile_star2_O0/PoulinV[P]AxiCLASS/build/../source/distortions.c
// Function: distortions_init
int distortions_init(struct precision * ppr,
                     struct background * pba,
                     struct thermodynamics * pth,
                     struct perturbations * ppt,
                     struct primordial * ppm,
                     struct distortions * psd) {

  if (psd->has_distortions == _FALSE_) {
    if (psd->distortions_verbose > 0)
      printf("No distortions requested. Distortions module skipped.\n");
    return _SUCCESS_;
  }
  if (psd->distortions_verbose > 0) {
    printf("Computing spectral distortions\n");
  }

  class_test(pth->compute_damping_scale==_FALSE_,
             psd->error_message,
             "Cannot compute spectral distortions without damping scale\n");

  /** Set physical constants */
  class_call(distortions_constants(ppr,pba,pth,psd),
             psd->error_message,
             psd->error_message);

  if (psd->sd_branching_approx == bra_exact) {
    /** Set/Check the distortions detector */
    class_call(distortions_set_detector(ppr,psd),
               psd->error_message,
               psd->error_message);
  }

  /** Assign values to all indices in the distortions structure */
  class_call(distortions_indices(psd),
             psd->error_message,
             psd->error_message);

  /** Define z and x arrays */
  class_call(distortions_get_xz_lists(ppr,pba,pth,psd),
             psd->error_message,
             psd->error_message);

  /** Define branching ratios */
  class_call(distortions_compute_branching_ratios(ppr,psd),
             psd->error_message,
             psd->error_message);

  /** Define heating function */
  class_call(distortions_compute_heating_rate(ppr,pba,pth,ppt,ppm,psd),
             psd->error_message,
             psd->error_message);

  /** Define final spectral distortions */
  class_call(distortions_compute_spectral_shapes(ppr,pba,pth,psd),
             psd->error_message,
             psd->error_message);

  psd->is_allocated = _TRUE_;

  return _SUCCESS_;
}

// Assembly:
subq $0x4838, %rsp           # imm = 0x4838
movq %rdi, 0x4828(%rsp)
movq %rsi, 0x4820(%rsp)
movq %rdx, 0x4818(%rsp)
movq %rcx, 0x4810(%rsp)
movq %r8, 0x4808(%rsp)
movq %r9, 0x4800(%rsp)
movq 0x4800(%rsp), %rax
cmpl $0x0, 0xcd0(%rax)
jne 0x18e8aa
movq 0x4800(%rsp), %rax
movswl 0x1600(%rax), %eax
cmpl $0x0, %eax
jle 0x18e89a
leaq 0x7bca5(%rip), %rdi     # 0x20a538
movb $0x0, %al
callq 0x8030
movl $0x0, 0x4834(%rsp)
jmp 0x18ed74
movq 0x4800(%rsp), %rax
movswl 0x1600(%rax), %eax
cmpl $0x0, %eax
jle 0x18e8cc
leaq 0x7bcaa(%rip), %rdi     # 0x20a56f
movb $0x0, %al
callq 0x8030
movq 0x4818(%rsp), %rax
movswl 0x32(%rax), %eax
cmpl $0x0, %eax
jne 0x18e959
leaq 0x4000(%rsp), %rdi
leaq 0x7bca3(%rip), %rsi     # 0x20a58f
movb $0x0, %al
callq 0x5b9c0
leaq 0x3800(%rsp), %rdi
leaq 0x4000(%rsp), %rcx
leaq 0x43778(%rip), %rsi     # 0x1d2082
leaq 0x7bcb9(%rip), %rdx     # 0x20a5ca
movb $0x0, %al
callq 0x5b9c0
movq 0x4800(%rsp), %rdi
addq $0x1602, %rdi           # imm = 0x1602
leaq 0x3800(%rsp), %r8
leaq 0x436fe(%rip), %rsi     # 0x1d2034
leaq 0x7bcb1(%rip), %rdx     # 0x20a5ee
movl $0x2d, %ecx
movb $0x0, %al
callq 0x5b9c0
movl $0x1, 0x4834(%rsp)
jmp 0x18ed74
movq 0x4828(%rsp), %rdi
movq 0x4820(%rsp), %rsi
movq 0x4818(%rsp), %rdx
movq 0x4800(%rsp), %rcx
callq 0x18ed90
cmpl $0x1, %eax
jne 0x18e9f0
leaq 0x3000(%rsp), %rdi
movq 0x4800(%rsp), %rcx
addq $0x1602, %rcx           # imm = 0x1602
leaq 0x43a37(%rip), %rsi     # 0x1d23d8
leaq 0x7bc57(%rip), %rdx     # 0x20a5ff
movb $0x0, %al
callq 0x5b9c0
movq 0x4800(%rsp), %rdi
addq $0x1602, %rdi           # imm = 0x1602
leaq 0x3000(%rsp), %r8
leaq 0x43667(%rip), %rsi     # 0x1d2034
leaq 0x7bc1a(%rip), %rdx     # 0x20a5ee
movl $0x32, %ecx
movb $0x0, %al
callq 0x5b9c0
movl $0x1, 0x4834(%rsp)
jmp 0x18ed74
movq 0x4800(%rsp), %rax
cmpl $0x4, (%rax)
jne 0x18ea8a
movq 0x4828(%rsp), %rdi
movq 0x4800(%rsp), %rsi
callq 0x18f010
cmpl $0x1, %eax
jne 0x18ea88
leaq 0x2800(%rsp), %rdi
movq 0x4800(%rsp), %rcx
addq $0x1602, %rcx           # imm = 0x1602
leaq 0x4399f(%rip), %rsi     # 0x1d23d8
leaq 0x7bbe6(%rip), %rdx     # 0x20a626
movb $0x0, %al
callq 0x5b9c0
movq 0x4800(%rsp), %rdi
addq $0x1602, %rdi           # imm = 0x1602
leaq 0x2800(%rsp), %r8
leaq 0x435cf(%rip), %rsi     # 0x1d2034
leaq 0x7bb82(%rip), %rdx     # 0x20a5ee
movl $0x38, %ecx
movb $0x0, %al
callq 0x5b9c0
movl $0x1, 0x4834(%rsp)
jmp 0x18ed74
jmp 0x18ea8a
movq 0x4800(%rsp), %rdi
callq 0x18fef0
cmpl $0x1, %eax
jne 0x18eb09
leaq 0x2000(%rsp), %rdi
movq 0x4800(%rsp), %rcx
addq $0x1602, %rcx           # imm = 0x1602
leaq 0x4391e(%rip), %rsi     # 0x1d23d8
leaq 0x7bb87(%rip), %rdx     # 0x20a648
movb $0x0, %al
callq 0x5b9c0
movq 0x4800(%rsp), %rdi
addq $0x1602, %rdi           # imm = 0x1602
leaq 0x2000(%rsp), %r8
leaq 0x4354e(%rip), %rsi     # 0x1d2034
leaq 0x7bb01(%rip), %rdx     # 0x20a5ee
movl $0x3e, %ecx
movb $0x0, %al
callq 0x5b9c0
movl $0x1, 0x4834(%rsp)
jmp 0x18ed74
movq 0x4828(%rsp), %rdi
movq 0x4820(%rsp), %rsi
movq 0x4818(%rsp), %rdx
movq 0x4800(%rsp), %rcx
callq 0x18ff80
cmpl $0x1, %eax
jne 0x18eba0
leaq 0x1800(%rsp), %rdi
movq 0x4800(%rsp), %rcx
addq $0x1602, %rcx           # imm = 0x1602
leaq 0x43887(%rip), %rsi     # 0x1d23d8
leaq 0x7bb09(%rip), %rdx     # 0x20a661
movb $0x0, %al
callq 0x5b9c0
movq 0x4800(%rsp), %rdi
addq $0x1602, %rdi           # imm = 0x1602
leaq 0x1800(%rsp), %r8
leaq 0x434b7(%rip), %rsi     # 0x1d2034
leaq 0x7ba6a(%rip), %rdx     # 0x20a5ee
movl $0x43, %ecx
movb $0x0, %al
callq 0x5b9c0
movl $0x1, 0x4834(%rsp)
jmp 0x18ed74
movq 0x4828(%rsp), %rdi
movq 0x4800(%rsp), %rsi
callq 0x1908d0
cmpl $0x1, %eax
jne 0x18ec27
leaq 0x1000(%rsp), %rdi
movq 0x4800(%rsp), %rcx
addq $0x1602, %rcx           # imm = 0x1602
leaq 0x43800(%rip), %rsi     # 0x1d23d8
leaq 0x7baac(%rip), %rdx     # 0x20a68b
movb $0x0, %al
callq 0x5b9c0
movq 0x4800(%rsp), %rdi
addq $0x1602, %rdi           # imm = 0x1602
leaq 0x1000(%rsp), %r8
leaq 0x43430(%rip), %rsi     # 0x1d2034
leaq 0x7b9e3(%rip), %rdx     # 0x20a5ee
movl $0x48, %ecx
movb $0x0, %al
callq 0x5b9c0
movl $0x1, 0x4834(%rsp)
jmp 0x18ed74
movq 0x4828(%rsp), %rdi
movq 0x4820(%rsp), %rsi
movq 0x4818(%rsp), %rdx
movq 0x4810(%rsp), %rcx
movq 0x4808(%rsp), %r8
movq 0x4800(%rsp), %r9
callq 0x191460
cmpl $0x1, %eax
jne 0x18ecce
leaq 0x800(%rsp), %rdi
movq 0x4800(%rsp), %rcx
addq $0x1602, %rcx           # imm = 0x1602
leaq 0x43759(%rip), %rsi     # 0x1d23d8
leaq 0x7ba33(%rip), %rdx     # 0x20a6b9
movb $0x0, %al
callq 0x5b9c0
movq 0x4800(%rsp), %rdi
addq $0x1602, %rdi           # imm = 0x1602
leaq 0x800(%rsp), %r8
leaq 0x43389(%rip), %rsi     # 0x1d2034
leaq 0x7b93c(%rip), %rdx     # 0x20a5ee
movl $0x4d, %ecx
movb $0x0, %al
callq 0x5b9c0
movl $0x1, 0x4834(%rsp)
jmp 0x18ed74
movq 0x4828(%rsp), %rdi
movq 0x4820(%rsp), %rsi
movq 0x4818(%rsp), %rdx
movq 0x4800(%rsp), %rcx
callq 0x191ba0
cmpl $0x1, %eax
jne 0x18ed58
movq %rsp, %rdi
movq 0x4800(%rsp), %rcx
addq $0x1602, %rcx           # imm = 0x1602
leaq 0x436c7(%rip), %rsi     # 0x1d23d8
leaq 0x7b9db(%rip), %rdx     # 0x20a6f3
movb $0x0, %al
callq 0x5b9c0
movq 0x4800(%rsp), %rdi
addq $0x1602, %rdi           # imm = 0x1602
movq %rsp, %r8
leaq 0x432fc(%rip), %rsi     # 0x1d2034
leaq 0x7b8af(%rip), %rdx     # 0x20a5ee
movl $0x52, %ecx
movb $0x0, %al
callq 0x5b9c0
movl $0x1, 0x4834(%rsp)
jmp 0x18ed74
movq 0x4800(%rsp), %rax
movw $0x1, 0x1e02(%rax)
movl $0x0, 0x4834(%rsp)
movl 0x4834(%rsp), %eax
addq $0x4838, %rsp           # imm = 0x4838
retq
nopw %cs:(%rax,%rax)