// File: /workspace/github_cpp_makefile_star2_O3/tjohnman[P]sfxr-sdl2/build/../src/main.cpp
// Function: ResetSample(bool)
void ResetSample(bool restart)
{
	if(!restart)
		phase=0;
	fperiod=100.0/(p_base_freq*p_base_freq+0.001);
	period=(int)fperiod;
	fmaxperiod=100.0/(p_freq_limit*p_freq_limit+0.001);
	fslide=1.0-pow((double)p_freq_ramp, 3.0)*0.01;
	fdslide=-pow((double)p_freq_dramp, 3.0)*0.000001;
	square_duty=0.5f-p_duty*0.5f;
	square_slide=-p_duty_ramp*0.00005f;
	if(p_arp_mod>=0.0f)
		arp_mod=1.0-pow((double)p_arp_mod, 2.0)*0.9;
	else
		arp_mod=1.0+pow((double)p_arp_mod, 2.0)*10.0;
	arp_time=0;
	arp_limit=(int)(pow(1.0f-p_arp_speed, 2.0f)*20000+32);
	if(p_arp_speed==1.0f)
		arp_limit=0;
	if(!restart)
	{
		// reset filter
		fltp=0.0f;
		fltdp=0.0f;
		fltw=pow(p_lpf_freq, 3.0f)*0.1f;
		fltw_d=1.0f+p_lpf_ramp*0.0001f;
		fltdmp=5.0f/(1.0f+pow(p_lpf_resonance, 2.0f)*20.0f)*(0.01f+fltw);
		if(fltdmp>0.8f) fltdmp=0.8f;
		fltphp=0.0f;
		flthp=pow(p_hpf_freq, 2.0f)*0.1f;
		flthp_d=1.0+p_hpf_ramp*0.0003f;
		// reset vibrato
		vib_phase=0.0f;
		vib_speed=pow(p_vib_speed, 2.0f)*0.01f;
		vib_amp=p_vib_strength*0.5f;
		// reset envelope
		env_vol=0.0f;
		env_stage=0;
		env_time=0;
		env_length[0]=(int)(p_env_attack*p_env_attack*100000.0f);
		env_length[1]=(int)(p_env_sustain*p_env_sustain*100000.0f);
		env_length[2]=(int)(p_env_decay*p_env_decay*100000.0f);

		fphase=pow(p_pha_offset, 2.0f)*1020.0f;
		if(p_pha_offset<0.0f) fphase=-fphase;
		fdphase=pow(p_pha_ramp, 2.0f)*1.0f;
		if(p_pha_ramp<0.0f) fdphase=-fdphase;
		iphase=abs((int)fphase);
		ipp=0;
		for(int i=0;i<1024;i++)
			phaser_buffer[i]=0.0f;

		for(int i=0;i<32;i++)
			noise_buffer[i]=frnd(2.0f)-1.0f;

		rep_time=0;
		rep_limit=(int)(pow(1.0f-p_repeat_speed, 2.0f)*20000+32);
		if(p_repeat_speed==0.0f)
			rep_limit=0;
	}
}

// Assembly:
pushq %r14
pushq %rbx
pushq %rax
movl %edi, %ebx
testl %edi, %edi
jne 0x2e70
movl $0x0, 0xa638(%rip)      # 0xd4a8
movss 0xa5cc(%rip), %xmm0     # 0xd444
mulss %xmm0, %xmm0
cvtss2sd %xmm0, %xmm0
movsd 0x7240(%rip), %xmm1     # 0xa0c8
addsd %xmm1, %xmm0
movsd 0x723c(%rip), %xmm2     # 0xa0d0
movapd %xmm2, %xmm3
divsd %xmm0, %xmm3
movsd %xmm3, 0xa60c(%rip)     # 0xd4b0
cvttsd2si %xmm3, %eax
movl %eax, 0xa622(%rip)      # 0xd4d0
movss 0xa592(%rip), %xmm0     # 0xd448
mulss %xmm0, %xmm0
cvtss2sd %xmm0, %xmm0
addsd %xmm1, %xmm0
divsd %xmm0, %xmm2
movsd %xmm2, 0xa5ea(%rip)     # 0xd4b8
xorps %xmm0, %xmm0
cvtss2sd 0xa573(%rip), %xmm0     # 0xd44c
movsd 0x71f7(%rip), %xmm1     # 0xa0d8
callq 0x2480
mulsd 0x71f2(%rip), %xmm0     # 0xa0e0
addsd 0x71f2(%rip), %xmm0     # 0xa0e8
movsd %xmm0, 0xa5c2(%rip)     # 0xd4c0
xorps %xmm0, %xmm0
cvtss2sd 0xa547(%rip), %xmm0     # 0xd450
movsd 0x71c7(%rip), %xmm1     # 0xa0d8
callq 0x2480
mulsd 0x71d2(%rip), %xmm0     # 0xa0f0
movsd %xmm0, 0xa5a2(%rip)     # 0xd4c8
movss 0x70da(%rip), %xmm0     # 0xa008
movss 0xa51e(%rip), %xmm1     # 0xd454
mulss %xmm0, %xmm1
subss %xmm1, %xmm0
movss %xmm0, 0xa58e(%rip)     # 0xd4d4
movss 0xa50a(%rip), %xmm0     # 0xd458
mulss 0x70b6(%rip), %xmm0     # 0xa00c
movss %xmm0, 0xa57a(%rip)     # 0xd4d8
movss 0xa53a(%rip), %xmm0     # 0xd4a0
xorps %xmm1, %xmm1
ucomiss %xmm1, %xmm0
cvtss2sd %xmm0, %xmm0
mulsd %xmm0, %xmm0
jae 0x2f80
mulsd 0x7182(%rip), %xmm0     # 0xa100
jmp 0x2f88
mulsd 0x7170(%rip), %xmm0     # 0xa0f8
addsd 0x7158(%rip), %xmm0     # 0xa0e8
movsd %xmm0, 0xb648(%rip)     # 0xe5e0
xorl %r14d, %r14d
movss 0xa4f9(%rip), %xmm0     # 0xd49c
movss 0x7065(%rip), %xmm2     # 0xa010
movaps %xmm2, %xmm1
subss %xmm0, %xmm1
mulss %xmm1, %xmm1
mulss 0x7056(%rip), %xmm1     # 0xa014
addss 0x7052(%rip), %xmm1     # 0xa018
cvttss2si %xmm1, %eax
ucomiss %xmm2, %xmm0
movl %r14d, 0xb600(%rip)     # 0xe5d4
movl $0x0, %ecx
cmovnel %eax, %ecx
cmovpl %eax, %ecx
movl %ecx, 0xb5f3(%rip)      # 0xe5d8
testb %bl, %bl
jne 0x329b
movl %r14d, 0xb5ac(%rip)     # 0xe5a0
movl %r14d, 0xb5a9(%rip)     # 0xe5a4
movss 0xa47d(%rip), %xmm0     # 0xd480
movss 0x7011(%rip), %xmm1     # 0xa01c
callq 0x2400
movss 0x7008(%rip), %xmm1     # 0xa020
mulss %xmm1, %xmm0
movss 0xa460(%rip), %xmm2     # 0xd484
mulss 0x6ff8(%rip), %xmm2     # 0xa024
movss %xmm0, 0xb574(%rip)     # 0xe5a8
movss 0x6fd4(%rip), %xmm3     # 0xa010
addss %xmm3, %xmm2
movss %xmm2, 0xb564(%rip)     # 0xe5ac
movss 0xa42c(%rip), %xmm2     # 0xd47c
mulss %xmm2, %xmm2
mulss 0x6fcc(%rip), %xmm2     # 0xa028
addss %xmm3, %xmm2
movaps %xmm3, %xmm4
movss 0x6fc1(%rip), %xmm3     # 0xa02c
divss %xmm2, %xmm3
movss 0x6fb9(%rip), %xmm2     # 0xa030
addss %xmm2, %xmm0
mulss %xmm3, %xmm0
movss 0x6fad(%rip), %xmm3     # 0xa034
minss %xmm0, %xmm3
movss %xmm3, 0xb51d(%rip)     # 0xe5b0
movl %r14d, 0xb51a(%rip)     # 0xe5b4
movss 0xa3e6(%rip), %xmm0     # 0xd488
mulss %xmm0, %xmm0
mulss %xmm1, %xmm0
movss %xmm0, 0xb506(%rip)     # 0xe5b8
movss 0xa3d2(%rip), %xmm0     # 0xd48c
mulss 0x6f76(%rip), %xmm0     # 0xa038
addss %xmm4, %xmm0
movss %xmm0, 0xb4ee(%rip)     # 0xe5bc
movl %r14d, 0xb4eb(%rip)     # 0xe5c0
movss 0xa383(%rip), %xmm0     # 0xd460
mulss %xmm0, %xmm0
mulss %xmm2, %xmm0
movss %xmm0, 0xb4d7(%rip)     # 0xe5c4
movss 0xa367(%rip), %xmm0     # 0xd45c
mulss 0x6f0b(%rip), %xmm0     # 0xa008
movss %xmm0, 0xb4c3(%rip)     # 0xe5c8
movl %r14d, 0xa3e8(%rip)     # 0xd4f4
movl %r14d, 0xa3c9(%rip)     # 0xd4dc
movl %r14d, 0xa3c6(%rip)     # 0xd4e0
movss 0xa34a(%rip), %xmm0     # 0xd46c
movss 0xa33e(%rip), %xmm1     # 0xd468
unpcklps %xmm0, %xmm1            # xmm1 = xmm1[0],xmm0[0],xmm1[1],xmm0[1]
mulps %xmm1, %xmm1
mulps 0x6fe9(%rip), %xmm1     # 0xa120
cvttps2dq %xmm1, %xmm0
movlps %xmm0, 0xa3a6(%rip)     # 0xd4e8
movss 0xa326(%rip), %xmm0     # 0xd470
mulss %xmm0, %xmm0
mulss 0x6ee6(%rip), %xmm0     # 0xa03c
cvttss2si %xmm0, %eax
movl %eax, 0xa390(%rip)      # 0xd4f0
movss 0xa328(%rip), %xmm0     # 0xd490
movaps %xmm0, %xmm1
mulss %xmm0, %xmm1
mulss 0x6ec9(%rip), %xmm1     # 0xa040
movaps 0x6fb2(%rip), %xmm2     # 0xa130
movaps %xmm1, %xmm3
xorps %xmm2, %xmm3
xorps %xmm4, %xmm4
cmpltss %xmm4, %xmm0
andps %xmm0, %xmm3
andnps %xmm1, %xmm0
orps %xmm3, %xmm0
movss %xmm0, 0xa35b(%rip)     # 0xd4f8
movss 0xa2ef(%rip), %xmm1     # 0xd494
movaps %xmm1, %xmm3
mulss %xmm1, %xmm3
xorps %xmm3, %xmm2
cmpltss %xmm4, %xmm1
andps %xmm1, %xmm2
andnps %xmm3, %xmm1
orps %xmm2, %xmm1
movss %xmm1, 0xa337(%rip)     # 0xd4fc
cvttss2si %xmm0, %eax
movl %eax, %ecx
negl %ecx
cmovsl %eax, %ecx
movl %ecx, 0xa32a(%rip)      # 0xd500
movl %r14d, 0xb333(%rip)     # 0xe510
leaq 0xa32c(%rip), %rdi      # 0xd510
movl $0x1000, %edx           # imm = 0x1000
xorl %esi, %esi
callq 0x2160
leaq 0xb329(%rip), %rbx      # 0xe520
callq 0x20c0
cltq
imulq $-0x2e4e46e7, %rax, %rcx # imm = 0xD1B1B919
shrq $0x20, %rcx
addl %eax, %ecx
movl %ecx, %edx
shrl $0x1f, %edx
sarl $0xd, %ecx
addl %edx, %ecx
imull $0x2711, %ecx, %ecx     # imm = 0x2711
subl %ecx, %eax
xorps %xmm0, %xmm0
cvtsi2ss %eax, %xmm0
divss 0x6dd8(%rip), %xmm0     # 0xa004
addss %xmm0, %xmm0
addss 0x6e0c(%rip), %xmm0     # 0xa044
movss %xmm0, (%r14,%rbx)
addq $0x4, %r14
cmpq $0x80, %r14
jne 0x31f7
movl $0x0, 0xb377(%rip)      # 0xe5cc
movss 0xa23b(%rip), %xmm0     # 0xd498
movss 0x6dab(%rip), %xmm1     # 0xa010
subss %xmm0, %xmm1
mulss %xmm1, %xmm1
mulss 0x6d9f(%rip), %xmm1     # 0xa014
addss 0x6d9b(%rip), %xmm1     # 0xa018
cvttss2si %xmm1, %eax
movl %eax, 0xb349(%rip)      # 0xe5d0
xorps %xmm1, %xmm1
ucomiss %xmm1, %xmm0
jne 0x329b
jp 0x329b
movl $0x0, 0xb335(%rip)      # 0xe5d0
addq $0x8, %rsp
popq %rbx
popq %r14
retq