// File: /workspace/github_cpp_makefile_star2_O3/Sleepwalking[P]world-octave/synthesis.cpp
// Function: Synthesis(double*, int, double**, double**, int, double, int, int, double*)
void Synthesis(double *f0, int f0_length, double **spectrogram,
    double **aperiodicity, int fft_size, double frame_period, int fs,
    int y_length, double *y) {
  double *impulse_response = new double[fft_size];

  for (int i = 0; i < y_length; ++i) y[i] = 0.0;

  MinimumPhaseAnalysis minimum_phase = {0};
  InitializeMinimumPhaseAnalysis(fft_size, &minimum_phase);
  InverseRealFFT inverse_real_fft = {0};
  InitializeInverseRealFFT(fft_size, &inverse_real_fft);
  ForwardRealFFT forward_real_fft = {0};
  InitializeForwardRealFFT(fft_size, &forward_real_fft);

  double *pulse_locations = new double[y_length];
  int *pulse_locations_index = new int[y_length];
  double *interpolated_vuv = new double[y_length];
  int number_of_pulses = GetTimeBase(f0, f0_length, fs, frame_period / 1000.0,
      y_length, pulse_locations, pulse_locations_index,
      interpolated_vuv);

  frame_period /= 1000.0;
  int noise_size;

  for (int i = 0; i < number_of_pulses; ++i) {
    noise_size = pulse_locations_index[MyMin(number_of_pulses - 1, i + 1)] -
      pulse_locations_index[i];

    GetOneFrameSegment(interpolated_vuv[pulse_locations_index[i]], noise_size,
        spectrogram, fft_size, aperiodicity, f0_length, frame_period,
        pulse_locations[i], fs, &forward_real_fft, &inverse_real_fft,
        &minimum_phase, impulse_response);

    int index = 0;
    for (int j = 0; j < fft_size; ++j) {
      index = MyMin(y_length - 1,
        MyMax(0, j + pulse_locations_index[i] - fft_size / 2 + 1));
        y[index] += impulse_response[j];
    }
  }

  delete[] pulse_locations;
  delete[] pulse_locations_index;
  delete[] interpolated_vuv;

  DestroyMinimumPhaseAnalysis(&minimum_phase);
  DestroyInverseRealFFT(&inverse_real_fft);
  DestroyForwardRealFFT(&forward_real_fft);

  delete[] impulse_response;
}

// Assembly:
pushq %rbp
pushq %r15
pushq %r14
pushq %r13
pushq %r12
pushq %rbx
subq $0x298, %rsp            # imm = 0x298
movl %r9d, 0x58(%rsp)
movq %xmm0, 0x80(%rsp)
movq %rcx, 0xb8(%rsp)
movq %rdx, 0xc0(%rsp)
movq %rsi, 0x60(%rsp)
movq %rdi, %r12
movq 0x2d8(%rsp), %r14
movl 0x2d0(%rsp), %r13d
movl %r8d, %eax
movq %rax, 0xb0(%rsp)
leaq (,%rax,8), %rax
movl %r8d, 0x54(%rsp)
testl %r8d, %r8d
movq $-0x1, %r15
movq %rax, 0xf0(%rsp)
movq %rax, %rdi
cmovsq %r15, %rdi
movq %rdi, 0x118(%rsp)
callq 0x1030
movq %rax, 0x88(%rsp)
leaq (,%r13,8), %rbx
testl %r13d, %r13d
jle 0x3803
movq %r14, %rdi
xorl %esi, %esi
movq %rbx, %rdx
callq 0x1080
testl %r13d, %r13d
movslq %r13d, %r14
cmovsq %r15, %rbx
movq $-0x1, %rax
leaq (,%r14,4), %r15
testl %r13d, %r13d
cmovsq %rax, %r15
shlq $0x3, %r14
testl %r13d, %r13d
cmovsq %rax, %r14
leaq 0x180(%rsp), %rbp
movl $0xb0, %edx
movq %rbp, %rdi
xorl %esi, %esi
callq 0x1080
movl 0x54(%rsp), %r13d
movl %r13d, %edi
movq %rbp, %rsi
callq 0x1b46
pxor %xmm0, %xmm0
leaq 0x120(%rsp), %rsi
movdqa %xmm0, (%rsi)
movdqa %xmm0, 0x10(%rsi)
movdqa %xmm0, 0x20(%rsi)
movdqa %xmm0, 0x30(%rsi)
movdqa %xmm0, 0x40(%rsi)
movdqa %xmm0, 0x50(%rsi)
movl %r13d, %edi
callq 0x1a83
leaq 0x230(%rsp), %rsi
pxor %xmm0, %xmm0
movdqa %xmm0, (%rsi)
movdqa %xmm0, 0x10(%rsi)
movdqa %xmm0, 0x20(%rsi)
movdqa %xmm0, 0x30(%rsi)
movdqa %xmm0, 0x40(%rsi)
movdqa %xmm0, 0x50(%rsi)
movl %r13d, %edi
movl 0x2d0(%rsp), %r13d
callq 0x19c0
movq %r14, %rdi
callq 0x1030
movq %rax, 0xa8(%rsp)
movq %r15, %rdi
callq 0x1030
movq %rax, 0xa0(%rsp)
movq %r14, %rdi
callq 0x1030
movq %rax, %r15
movq %rbx, 0x90(%rsp)
movq %rbx, %rdi
callq 0x1030
movq %rax, %rbp
movq 0x60(%rsp), %rax
leal 0x1(%rax), %ebx
movslq %ebx, %r14
shlq $0x3, %r14
cmpl $-0x1, %eax
movq $-0x1, %rax
cmovlq %rax, %r14
movq %r14, %rdi
callq 0x1030
movq %rax, 0x98(%rsp)
movq %r14, %rdi
callq 0x1030
movq %rax, 0x68(%rsp)
movq %r14, %rdi
callq 0x1030
cvtsi2sdl 0x58(%rsp), %xmm8
testl %r13d, %r13d
jle 0x39f9
leal 0x1(%r13), %esi
andl $-0x2, %esi
leaq -0x1(%r13), %rcx
movq %rcx, %xmm0
pshufd $0x44, %xmm0, %xmm0     # xmm0 = xmm0[0,1,0,1]
movdqa 0xb6f4(%rip), %xmm1     # 0xf060
xorl %ecx, %ecx
movdqa 0xb6fa(%rip), %xmm2     # 0xf070
pxor %xmm2, %xmm0
pcmpeqd %xmm3, %xmm3
movdqa 0xb6fa(%rip), %xmm4     # 0xf080
movdqa %xmm1, %xmm5
pxor %xmm2, %xmm5
movdqa %xmm5, %xmm6
pcmpgtd %xmm0, %xmm6
pcmpeqd %xmm0, %xmm5
pshufd $0xf5, %xmm5, %xmm7     # xmm7 = xmm5[1,1,3,3]
pand %xmm6, %xmm7
pshufd $0xf5, %xmm6, %xmm5     # xmm5 = xmm6[1,1,3,3]
por %xmm7, %xmm5
movd %xmm5, %edx
notl %edx
testb $0x1, %dl
je 0x39c9
xorps %xmm6, %xmm6
cvtsi2sd %ecx, %xmm6
divsd %xmm8, %xmm6
movsd %xmm6, (%rbp,%rcx,8)
pxor %xmm3, %xmm5
pextrw $0x4, %xmm5, %edx
testb $0x1, %dl
je 0x39ec
leal 0x1(%rcx), %edx
xorps %xmm5, %xmm5
cvtsi2sd %edx, %xmm5
divsd %xmm8, %xmm5
movsd %xmm5, 0x8(%rbp,%rcx,8)
addq $0x2, %rcx
paddq %xmm4, %xmm1
cmpq %rcx, %rsi
jne 0x3986
movq %rbp, 0x58(%rsp)
movsd 0x80(%rsp), %xmm0
divsd 0xb719(%rip), %xmm0     # 0xf128
movsd %xmm0, 0x80(%rsp)
movl %ebx, %ebp
movl %ebx, %ebx
cmpl $0x0, 0x60(%rsp)
movq 0x98(%rsp), %r14
movsd %xmm8, 0x70(%rsp)
movq %rax, 0x78(%rsp)
js 0x3b09
leaq 0x1(%rbx), %rax
andq $-0x2, %rax
leaq -0x1(%rbx), %rcx
movq %rcx, %xmm0
pshufd $0x44, %xmm0, %xmm0     # xmm0 = xmm0[0,1,0,1]
movdqa 0xb607(%rip), %xmm1     # 0xf060
xorl %ecx, %ecx
movdqa 0xb60d(%rip), %xmm2     # 0xf070
pxor %xmm2, %xmm0
pcmpeqd %xmm3, %xmm3
movdqa 0xb60d(%rip), %xmm4     # 0xf080
movdqa %xmm1, %xmm5
pxor %xmm2, %xmm5
movdqa %xmm5, %xmm6
pcmpgtd %xmm0, %xmm6
pcmpeqd %xmm0, %xmm5
pshufd $0xf5, %xmm5, %xmm7     # xmm7 = xmm5[1,1,3,3]
pand %xmm6, %xmm7
pshufd $0xf5, %xmm6, %xmm5     # xmm5 = xmm6[1,1,3,3]
por %xmm7, %xmm5
movd %xmm5, %edx
notl %edx
testb $0x1, %dl
je 0x3aba
xorps %xmm6, %xmm6
cvtsi2sd %ecx, %xmm6
mulsd 0x80(%rsp), %xmm6
movsd %xmm6, (%r14,%rcx,8)
pxor %xmm3, %xmm5
pextrw $0x4, %xmm5, %edx
testb $0x1, %dl
je 0x3ae2
leal 0x1(%rcx), %edx
xorps %xmm5, %xmm5
cvtsi2sd %edx, %xmm5
mulsd 0x80(%rsp), %xmm5
movsd %xmm5, 0x8(%r14,%rcx,8)
addq $0x2, %rcx
paddq %xmm4, %xmm1
cmpq %rcx, %rax
jne 0x3a73
leaq (,%rbx,8), %rdx
movq 0x68(%rsp), %rdi
movq %r12, %rsi
callq 0x10b0
movq 0x78(%rsp), %rax
movq 0x60(%rsp), %rdx
movslq %edx, %rsi
leaq -0x1(%rsi), %rcx
movq %rcx, 0xe0(%rsp)
movq 0x68(%rsp), %rcx
movsd -0x8(%rcx,%rsi,8), %xmm0
addsd %xmm0, %xmm0
subsd -0x10(%rcx,%rsi,8), %xmm0
movsd %xmm0, (%rcx,%rsi,8)
testl %edx, %edx
js 0x3b7d
leaq -0x2(%rsi), %rcx
xorl %edx, %edx
xorpd %xmm0, %xmm0
movsd 0xb4c3(%rip), %xmm1     # 0xf010
movsd (%r12,%rdx,8), %xmm2
cmpeqsd %xmm0, %xmm2
andnpd %xmm1, %xmm2
movlpd %xmm2, (%rax,%rdx,8)
incq %rdx
cmpq %rdx, %rbx
jne 0x3b4d
movq 0xe0(%rsp), %rdx
movsd (%rax,%rdx,8), %xmm0
movsd (%rax,%rcx,8), %xmm1
jmp 0x3b7d
addsd %xmm0, %xmm0
subsd %xmm1, %xmm0
movsd %xmm0, (%rax,%rsi,8)
movq 0x90(%rsp), %rdi
callq 0x1030
movq %rax, %r12
movq %r14, %rdi
movq 0x68(%rsp), %rsi
movl %ebp, %edx
movq 0x58(%rsp), %rbx
movq %rbx, %rcx
movl %r13d, %r8d
movq %rax, %r9
callq 0x4733
movq %r14, %rdi
movq 0x78(%rsp), %rsi
movl %ebp, %edx
movq %rbx, %rcx
movl %r13d, %r8d
movq %r15, %r9
callq 0x4733
testl %r13d, %r13d
jle 0x3c37
xorl %eax, %eax
movsd 0xb532(%rip), %xmm0     # 0xf110
movsd 0xb42a(%rip), %xmm1     # 0xf010
movapd %xmm0, %xmm2
cmpltsd (%r15,%rax,8), %xmm2
andpd %xmm1, %xmm2
movlpd %xmm2, (%r15,%rax,8)
incq %rax
cmpq %rax, %r13
jne 0x3be6
xorl %eax, %eax
movq 0xb543(%rip), %xmm0     # 0xf150
xorpd %xmm1, %xmm1
movsd (%r15,%rax,8), %xmm2
ucomisd %xmm1, %xmm2
movdqa %xmm0, %xmm2
jne 0x3c23
jnp 0x3c29
movq (%r12,%rax,8), %xmm2
movq %xmm2, (%r12,%rax,8)
incq %rax
cmpq %rax, %r13
jne 0x3c11
movq %r15, 0xe8(%rsp)
movq 0x90(%rsp), %r14
movq %r14, %rdi
callq 0x1030
movsd (%r12), %xmm0
mulsd 0xb3cb(%rip), %xmm0     # 0xf028
movq %rax, %r15
movsd 0x70(%rsp), %xmm3
divsd %xmm3, %xmm0
movsd %xmm0, (%rax)
cmpl $0x2, %r13d
jl 0x3ca6
movsd (%r15), %xmm0
movl $0x1, %eax
movsd 0xb3a2(%rip), %xmm1     # 0xf028
movsd (%r12,%rax,8), %xmm2
mulsd %xmm1, %xmm2
divsd %xmm3, %xmm2
addsd %xmm2, %xmm0
movsd %xmm0, (%r15,%rax,8)
incq %rax
cmpq %rax, %r13
jne 0x3c86
movq %r12, 0x60(%rsp)
movq %r14, %rdi
callq 0x1030
movq %rax, %rbp
testl %r13d, %r13d
jle 0x3dae
xorl %ebx, %ebx
movsd (%r15,%rbx,8), %xmm0
movsd 0xb359(%rip), %xmm1     # 0xf028
callq 0x1120
movsd %xmm0, (%rbp,%rbx,8)
incq %rbx
cmpq %rbx, %r13
jne 0x3cc1
movq %r14, %rdi
callq 0x1030
movq %rax, %r14
cmpl $0x2, %r13d
jl 0x3dc6
leal -0x1(%r13), %ebx
movsd (%rbp), %xmm1
xorl %eax, %eax
movapd 0xb3c6(%rip), %xmm0     # 0xf0d0
movsd 0x8(%rbp,%rax,8), %xmm2
movapd %xmm2, %xmm3
subsd %xmm1, %xmm3
andpd %xmm0, %xmm3
movlpd %xmm3, (%r14,%rax,8)
leaq 0x1(%rax), %rcx
movapd %xmm2, %xmm1
movq %rcx, %rax
cmpq %rcx, %rbx
jne 0x3d0a
xorl %r13d, %r13d
movsd 0xb3e3(%rip), %xmm2     # 0xf120
xorl %r12d, %r12d
movsd 0x70(%rsp), %xmm1
movsd (%r14,%r13,8), %xmm0
ucomisd %xmm2, %xmm0
jbe 0x3d94
movq 0x58(%rsp), %rax
movsd (%rax,%r13,8), %xmm0
movslq %r12d, %r12
movq 0xa8(%rsp), %rax
movsd %xmm0, (%rax,%r12,8)
mulsd %xmm1, %xmm0
callq 0x4b8c
movsd 0xb3a1(%rip), %xmm2     # 0xf120
movsd 0x70(%rsp), %xmm1
movq 0xa0(%rsp), %rcx
movl %eax, (%rcx,%r12,4)
incl %r12d
incq %r13
cmpq %r13, %rbx
jne 0x3d46
movq 0x88(%rsp), %rbx
movl 0x2d0(%rsp), %r13d
jmp 0x3dd1
movq %r14, %rdi
callq 0x1030
movq %rax, %r14
xorl %r12d, %r12d
movq 0x88(%rsp), %rbx
jmp 0x3dd1
movq 0x88(%rsp), %rbx
xorl %r12d, %r12d
movq %r14, %rdi
callq 0x1110
movq %rbp, %rdi
callq 0x1110
movq %r15, %rdi
callq 0x1110
movq 0x78(%rsp), %rdi
callq 0x1110
movq 0x68(%rsp), %rdi
callq 0x1110
movq 0x98(%rsp), %rdi
callq 0x1110
movq 0x58(%rsp), %rdi
callq 0x1110
movq 0x60(%rsp), %rdi
callq 0x1110
testl %r12d, %r12d
movq 0xe8(%rsp), %r14
jle 0x4523
movl 0x54(%rsp), %eax
movl %eax, %ecx
shrl $0x1f, %ecx
addl %eax, %ecx
sarl %ecx
leal 0x1(%rcx), %esi
xorps %xmm0, %xmm0
cvtsi2sd %eax, %xmm0
movsd %xmm0, 0xd0(%rsp)
decl %r13d
negl %ecx
movq %rcx, 0xf8(%rsp)
movl %r12d, %eax
movq %rax, 0x100(%rsp)
decl %r12d
movq %rsi, 0xd8(%rsp)
shlq $0x4, %rsi
movq %rsi, 0xc8(%rsp)
xorl %eax, %eax
movq %r13, 0x110(%rsp)
movq %r12, 0x108(%rsp)
movq 0xa0(%rsp), %rsi
movslq (%rsi,%rax,4), %rdi
leaq 0x1(%rax), %rcx
cmpl %ecx, %r12d
movq %rcx, 0x98(%rsp)
cmovll %r12d, %ecx
movq 0xa8(%rsp), %rdx
movsd (%rdx,%rax,8), %xmm0
movsd %xmm0, 0x58(%rsp)
movslq %ecx, %rax
movl (%rsi,%rax,4), %eax
movq %rax, 0x70(%rsp)
movq %rdi, 0x60(%rsp)
movsd (%r14,%rdi,8), %xmm0
movsd %xmm0, 0x68(%rsp)
movq 0x118(%rsp), %r13
movq %r13, %rdi
callq 0x1030
movq %rax, 0x90(%rsp)
movq %r13, %rdi
callq 0x1030
movq %rax, %r15
movq %r13, %rdi
callq 0x1030
movq %rax, %r12
movq %r13, %rdi
callq 0x1030
movq %rax, %rbp
movsd 0x58(%rsp), %xmm0
divsd 0x80(%rsp), %xmm0
movsd %xmm0, 0x58(%rsp)
callq 0x1180
cvttsd2si %xmm0, %r13d
movq 0xe0(%rsp), %r14
cmpl %r13d, %r14d
cmovll %r14d, %r13d
movsd 0x58(%rsp), %xmm0
callq 0x1050
movsd 0x58(%rsp), %xmm5
cvttsd2si %xmm0, %eax
cmpl %eax, %r14d
cmovll %r14d, %eax
xorps %xmm0, %xmm0
cvtsi2sd %r13d, %xmm0
subsd %xmm0, %xmm5
cmpl %eax, %r13d
jne 0x3fc3
cmpl $-0x1, 0x54(%rsp)
movq 0xd8(%rsp), %rdi
movq 0xc8(%rsp), %r14
movsd 0xb181(%rip), %xmm3     # 0xf110
movsd 0xb079(%rip), %xmm4     # 0xf010
jl 0x40b6
movslq %r13d, %rcx
movq 0xc0(%rsp), %rdx
movq (%rdx,%rcx,8), %rcx
xorl %edx, %edx
movsd (%rcx,%rdx,8), %xmm0
movsd %xmm0, (%r12,%rdx,8)
incq %rdx
cmpq %rdx, %rdi
jne 0x3fae
jmp 0x4032
cmpl $-0x1, 0x54(%rsp)
movq 0xd8(%rsp), %rdi
movq 0xc8(%rsp), %r14
movsd 0xb130(%rip), %xmm3     # 0xf110
movsd 0xb028(%rip), %xmm4     # 0xf010
jl 0x40b6
movapd %xmm4, %xmm0
subsd %xmm5, %xmm0
movslq %r13d, %rcx
movq 0xc0(%rsp), %rsi
movq (%rsi,%rcx,8), %rcx
movslq %eax, %rdx
movq (%rsi,%rdx,8), %rdx
xorl %esi, %esi
movsd (%rdx,%rsi,8), %xmm1
mulsd %xmm5, %xmm1
movsd (%rcx,%rsi,8), %xmm2
mulsd %xmm0, %xmm2
addsd %xmm1, %xmm2
movsd %xmm2, (%r12,%rsi,8)
incq %rsi
cmpq %rsi, %rdi
jne 0x400e
cmpl %eax, %r13d
jne 0x4068
cmpl $-0x1, 0x54(%rsp)
jl 0x40b6
movslq %r13d, %rax
movq 0xb8(%rsp), %rcx
movq (%rcx,%rax,8), %rax
xorl %ecx, %ecx
movsd (%rax,%rcx,8), %xmm0
mulsd %xmm0, %xmm0
movsd %xmm0, (%rbp,%rcx,8)
incq %rcx
cmpq %rcx, %rdi
jne 0x404f
jmp 0x40b6
cmpl $-0x1, 0x54(%rsp)
jl 0x40b6
movapd %xmm4, %xmm0
subsd %xmm5, %xmm0
movslq %r13d, %rcx
movq 0xb8(%rsp), %rdx
movq (%rdx,%rcx,8), %rcx
cltq
movq (%rdx,%rax,8), %rax
xorl %edx, %edx
movsd (%rax,%rdx,8), %xmm1
mulsd %xmm5, %xmm1
movsd (%rcx,%rdx,8), %xmm2
mulsd %xmm0, %xmm2
addsd %xmm1, %xmm2
mulsd %xmm2, %xmm2
movsd %xmm2, (%rbp,%rdx,8)
incq %rdx
cmpq %rdx, %rdi
jne 0x408e
ucomisd 0x68(%rsp), %xmm3
jae 0x41af
cmpl $-0x1, 0x180(%rsp)
movsd 0xb06e(%rip), %xmm1     # 0xf140
jl 0x413c
movq $-0x1, %r13
movapd %xmm4, %xmm0
subsd 0x8(%rbp,%r13,8), %xmm0
mulsd 0x8(%r12,%r13,8), %xmm0
addsd %xmm1, %xmm0
callq 0x10a0
movsd 0xaf12(%rip), %xmm4     # 0xf010
movsd 0xb00a(%rip), %xmm1     # 0xf110
mulsd %xmm1, %xmm0
movsd 0xb02e(%rip), %xmm1     # 0xf140
movq 0x188(%rsp), %rax
movsd %xmm0, 0x8(%rax,%r13,8)
movl 0x180(%rsp), %eax
movl %eax, %ecx
shrl $0x1f, %ecx
addl %eax, %ecx
sarl %ecx
movslq %ecx, %rax
incq %r13
cmpq %rax, %r13
jl 0x40db
leaq 0x180(%rsp), %rdi
callq 0x1c07
cmpl $-0x1, 0x54(%rsp)
jl 0x4181
movq 0x190(%rsp), %rax
movq 0x130(%rsp), %rcx
xorl %edx, %edx
movsd (%rax,%rdx), %xmm0
movsd %xmm0, (%rcx,%rdx)
movsd 0x8(%rax,%rdx), %xmm0
movsd %xmm0, 0x8(%rcx,%rdx)
addq $0x10, %rdx
cmpq %rdx, %r14
jne 0x4162
movl $0x9, %ecx
movq %rsp, %rdi
leaq 0x138(%rsp), %rsi
rep  movsq (%rsi), %es:(%rdi)
callq 0x8792
movq 0x128(%rsp), %rdi
movl 0x54(%rsp), %esi
movq %r15, %rdx
callq 0x4588
jmp 0x41c8
cmpl $0x0, 0x54(%rsp)
jle 0x41c8
movq %r15, %rdi
xorl %esi, %esi
movq 0xf0(%rsp), %rdx
callq 0x1080
movq 0x70(%rsp), %rdx
subl 0x60(%rsp), %edx
xorps %xmm0, %xmm0
cvtsi2sd %edx, %xmm0
movsd %xmm0, 0x78(%rsp)
testl %edx, %edx
jle 0x4245
movq %rdx, 0x70(%rsp)
movl %edx, %r13d
xorpd %xmm1, %xmm1
xorl %ebx, %ebx
movsd %xmm1, 0x58(%rsp)
callq 0x4d40
movsd 0x58(%rsp), %xmm1
movq 0x238(%rsp), %rax
movsd %xmm0, (%rax,%rbx,8)
addsd %xmm0, %xmm1
incq %rbx
cmpq %rbx, %r13
jne 0x41f0
divsd 0x78(%rsp), %xmm1
xorl %ecx, %ecx
movq 0x88(%rsp), %rbx
movq 0x70(%rsp), %rdx
movsd (%rax,%rcx,8), %xmm0
subsd %xmm1, %xmm0
movsd %xmm0, (%rax,%rcx,8)
incq %rcx
cmpq %rcx, %r13
jne 0x422f
cmpl 0x54(%rsp), %edx
jge 0x426f
movslq %edx, %rdi
shlq $0x3, %rdi
addq 0x238(%rsp), %rdi
notl %edx
addl 0x54(%rsp), %edx
leaq 0x8(,%rdx,8), %rdx
xorl %esi, %esi
callq 0x1080
movl $0x9, %ecx
movq %rsp, %rdi
leaq 0x248(%rsp), %rsi
rep  movsq (%rsi), %es:(%rdi)
callq 0x8792
movsd 0x68(%rsp), %xmm0
ucomisd 0xaeb3(%rip), %xmm0     # 0xf148
movl 0x180(%rsp), %eax
jne 0x42a0
jnp 0x42fb
cmpl $-0x1, %eax
jl 0x4349
movq $-0x1, %r13
movsd 0x8(%r12,%r13,8), %xmm0
mulsd 0x8(%rbp,%r13,8), %xmm0
callq 0x10a0
movsd 0xae45(%rip), %xmm1     # 0xf110
mulsd %xmm1, %xmm0
movq 0x188(%rsp), %rax
movsd %xmm0, 0x8(%rax,%r13,8)
movl 0x180(%rsp), %eax
movl %eax, %ecx
shrl $0x1f, %ecx
addl %eax, %ecx
sarl %ecx
movslq %ecx, %rax
incq %r13
cmpq %rax, %r13
jl 0x42b0
jmp 0x4349
cmpl $-0x1, %eax
jl 0x4349
movq $-0x1, %r13
movsd 0x8(%r12,%r13,8), %xmm0
callq 0x10a0
movsd 0xadf5(%rip), %xmm1     # 0xf110
mulsd %xmm1, %xmm0
movq 0x188(%rsp), %rax
movsd %xmm0, 0x8(%rax,%r13,8)
movl 0x180(%rsp), %eax
movl %eax, %ecx
shrl $0x1f, %ecx
addl %eax, %ecx
sarl %ecx
movslq %ecx, %rax
incq %r13
cmpq %rax, %r13
jl 0x4307
leaq 0x180(%rsp), %rdi
callq 0x1c07
cmpl $-0x1, 0x54(%rsp)
jl 0x43cf
movq 0x190(%rsp), %rax
movq 0x130(%rsp), %rcx
movq 0x240(%rsp), %rdx
xorl %esi, %esi
movsd (%rax,%rsi), %xmm0
movsd %xmm0, (%rcx,%rsi)
movsd 0x8(%rax,%rsi), %xmm0
movsd %xmm0, 0x8(%rcx,%rsi)
movsd (%rax,%rsi), %xmm1
mulsd 0x8(%rdx,%rsi), %xmm0
mulsd (%rdx,%rsi), %xmm1
subsd %xmm0, %xmm1
movsd %xmm1, (%rcx,%rsi)
movsd (%rax,%rsi), %xmm0
movsd 0x8(%rax,%rsi), %xmm1
mulsd (%rdx,%rsi), %xmm1
mulsd 0x8(%rdx,%rsi), %xmm0
addsd %xmm1, %xmm0
movsd %xmm0, 0x8(%rcx,%rsi)
addq $0x10, %rsi
cmpq %rsi, %r14
jne 0x4377
movl $0x9, %ecx
movq %rsp, %rdi
leaq 0x138(%rsp), %rsi
rep  movsq (%rsi), %es:(%rdi)
callq 0x8792
movq 0x128(%rsp), %rdi
movl 0x54(%rsp), %esi
movq 0x90(%rsp), %r14
movq %r14, %rdx
callq 0x4588
movsd 0x78(%rsp), %xmm0
ucomisd 0xad37(%rip), %xmm0     # 0xf148
movq 0x110(%rsp), %r13
jb 0x4421
sqrtsd %xmm0, %xmm0
jmp 0x4426
callq 0x1090
movq 0xb0(%rsp), %rcx
movsd 0xd0(%rsp), %xmm2
cmpl $0x0, 0x54(%rsp)
jle 0x44dd
xorl %eax, %eax
movsd (%r15,%rax,8), %xmm1
mulsd %xmm0, %xmm1
addsd (%r14,%rax,8), %xmm1
divsd %xmm2, %xmm1
movsd %xmm1, (%rbx,%rax,8)
incq %rax
cmpq %rax, %rcx
jne 0x4444
movq %r12, %rdi
callq 0x1110
movq %rbp, %rdi
callq 0x1110
movq %r15, %rdi
callq 0x1110
movq %r14, %rdi
callq 0x1110
movq 0xb0(%rsp), %rsi
cmpl $0x0, 0x54(%rsp)
movq 0x2d8(%rsp), %rdx
movl $0xffffffff, %edi       # imm = 0xFFFFFFFF
movq 0x60(%rsp), %r8
jle 0x44fd
addl 0xf8(%rsp), %r8d
xorl %eax, %eax
movl %r8d, %ecx
addl %eax, %ecx
cmovsl %edi, %ecx
incl %ecx
cmpl %ecx, %r13d
cmovll %r13d, %ecx
movsd (%rbx,%rax,8), %xmm0
movslq %ecx, %rcx
addsd (%rdx,%rcx,8), %xmm0
movsd %xmm0, (%rdx,%rcx,8)
incq %rax
cmpq %rax, %rsi
jne 0x44b0
jmp 0x44fd
movq %r12, %rdi
callq 0x1110
movq %rbp, %rdi
callq 0x1110
movq %r15, %rdi
callq 0x1110
movq %r14, %rdi
callq 0x1110
movq 0x98(%rsp), %rax
cmpq 0x100(%rsp), %rax
movq 0xe8(%rsp), %r14
movq 0x108(%rsp), %r12
jne 0x3e90
movq 0xa8(%rsp), %rdi
callq 0x1110
movq 0xa0(%rsp), %rdi
callq 0x1110
movq %r14, %rdi
callq 0x1110
leaq 0x180(%rsp), %rdi
callq 0x1db7
leaq 0x120(%rsp), %rdi
callq 0x1b07
leaq 0x230(%rsp), %rdi
callq 0x1a44
movq %rbx, %rdi
callq 0x1110
addq $0x298, %rsp            # imm = 0x298
popq %rbx
popq %r12
popq %r13
popq %r14
popq %r15
popq %rbp
retq
nop