// File: tjohnman[P]sfxr-sdl2/build/../src/main.cpp
// Function: SynthSample(int, float*, _IO_FILE*)
void SynthSample(int length, float* buffer, FILE* file)
{
	for(int i=0;i<length;i++)
	{
		if(!playing_sample)
			break;

		rep_time++;
		if(rep_limit!=0 && rep_time>=rep_limit)
		{
			rep_time=0;
			ResetSample(true);
		}

		// frequency envelopes/arpeggios
		arp_time++;
		if(arp_limit!=0 && arp_time>=arp_limit)
		{
			arp_limit=0;
			fperiod*=arp_mod;
		}
		fslide+=fdslide;
		fperiod*=fslide;
		if(fperiod>fmaxperiod)
		{
			fperiod=fmaxperiod;
			if(p_freq_limit>0.0f)
				playing_sample=false;
		}
		float rfperiod=fperiod;
		if(vib_amp>0.0f)
		{
			vib_phase+=vib_speed;
			rfperiod=fperiod*(1.0+sin(vib_phase)*vib_amp);
		}
		period=(int)rfperiod;
		if(period<8) period=8;
		square_duty+=square_slide;
		if(square_duty<0.0f) square_duty=0.0f;
		if(square_duty>0.5f) square_duty=0.5f;		
		// volume envelope
		env_time++;
		if(env_time>env_length[env_stage])
		{
			env_time=0;
			env_stage++;
			if(env_stage==3)
				playing_sample=false;
		}
		if(env_stage==0)
			env_vol=(float)env_time/env_length[0];
		if(env_stage==1)
			env_vol=1.0f+pow(1.0f-(float)env_time/env_length[1], 1.0f)*2.0f*p_env_punch;
		if(env_stage==2)
			env_vol=1.0f-(float)env_time/env_length[2];

		// phaser step
		fphase+=fdphase;
		iphase=abs((int)fphase);
		if(iphase>1023) iphase=1023;

		if(flthp_d!=0.0f)
		{
			flthp*=flthp_d;
			if(flthp<0.00001f) flthp=0.00001f;
			if(flthp>0.1f) flthp=0.1f;
		}

		float ssample=0.0f;
		for(int si=0;si<8;si++) // 8x supersampling
		{
			float sample=0.0f;
			phase++;
			if(phase>=period)
			{
//				phase=0;
				phase%=period;
				if(wave_type==3)
					for(int i=0;i<32;i++)
						noise_buffer[i]=frnd(2.0f)-1.0f;
			}
			// base waveform
			float fp=(float)phase/period;
			switch(wave_type)
			{
			case 0: // square
				if(fp<square_duty)
					sample=0.5f;
				else
					sample=-0.5f;
				break;
			case 1: // sawtooth
				sample=1.0f-fp*2;
				break;
			case 2: // sine
				sample=(float)sin(fp*2*PI);
				break;
			case 3: // noise
				sample=noise_buffer[phase*32/period];
				break;
			}
			// lp filter
			float pp=fltp;
			fltw*=fltw_d;
			if(fltw<0.0f) fltw=0.0f;
			if(fltw>0.1f) fltw=0.1f;
			if(p_lpf_freq!=1.0f)
			{
				fltdp+=(sample-fltp)*fltw;
				fltdp-=fltdp*fltdmp;
			}
			else
			{
				fltp=sample;
				fltdp=0.0f;
			}
			fltp+=fltdp;
			// hp filter
			fltphp+=fltp-pp;
			fltphp-=fltphp*flthp;
			sample=fltphp;
			// phaser
			phaser_buffer[ipp&1023]=sample;
			sample+=phaser_buffer[(ipp-iphase+1024)&1023];
			ipp=(ipp+1)&1023;
			// final accumulation and envelope application
			ssample+=sample*env_vol;
		}
		ssample=ssample/8*master_vol;

		ssample*=2.0f*sound_vol;

		if(buffer!=NULL)
		{
			if(ssample>1.0f) ssample=1.0f;
			if(ssample<-1.0f) ssample=-1.0f;
			*buffer++=ssample;
		}
		if(file!=NULL)
		{
			// quantize depending on format
			// accumulate/count to accomodate variable sample rate?
			ssample*=4.0f; // arbitrary gain to get reasonable output volume...
			if(ssample>1.0f) ssample=1.0f;
			if(ssample<-1.0f) ssample=-1.0f;
			filesample+=ssample;
			fileacc++;
			if(wav_freq==44100 || fileacc==2)
			{
				filesample/=fileacc;
				fileacc=0;
				if(wav_bits==16)
				{
					short isample=(short)(filesample*32000);
					fwrite(&isample, 1, 2, file);
				}
				else
				{
					unsigned char isample=(unsigned char)(filesample*127+128);
					fwrite(&isample, 1, 1, file);
				}
				filesample=0.0f;
			}
			file_sampleswritten++;
		}
	}
}

// Assembly:
pushq %rbp
movq %rsp, %rbp
subq $0x50, %rsp
movl %edi, -0x4(%rbp)
movq %rsi, -0x10(%rbp)
movq %rdx, -0x18(%rbp)
movl $0x0, -0x1c(%rbp)
movl -0x1c(%rbp), %eax
cmpl -0x4(%rbp), %eax
jge 0x50a4
testb $0x1, 0xedb7(%rip)      # 0x13544
jne 0x4794
jmp 0x50a4
movl 0xfec2(%rip), %eax      # 0x1465c
addl $0x1, %eax
movl %eax, 0xfeb9(%rip)      # 0x1465c
cmpl $0x0, 0xfeb6(%rip)      # 0x14660
je 0x47ce
movl 0xfeaa(%rip), %eax      # 0x1465c
cmpl 0xfea8(%rip), %eax      # 0x14660
jl 0x47ce
movl $0x0, 0xfe98(%rip)      # 0x1465c
movl $0x1, %edi
callq 0x40f0
movl 0xfe90(%rip), %eax      # 0x14664
addl $0x1, %eax
movl %eax, 0xfe87(%rip)      # 0x14664
cmpl $0x0, 0xfe84(%rip)      # 0x14668
je 0x4816
movl 0xfe78(%rip), %eax      # 0x14664
cmpl 0xfe76(%rip), %eax      # 0x14668
jl 0x4816
movl $0x0, 0xfe6a(%rip)      # 0x14668
movsd 0xfe6a(%rip), %xmm0     # 0x14670
mulsd 0xed42(%rip), %xmm0     # 0x13550
movsd %xmm0, 0xed3a(%rip)     # 0x13550
movsd 0xed4a(%rip), %xmm0     # 0x13568
addsd 0xed3a(%rip), %xmm0     # 0x13560
movsd %xmm0, 0xed32(%rip)     # 0x13560
movsd 0xed2a(%rip), %xmm0     # 0x13560
mulsd 0xed12(%rip), %xmm0     # 0x13550
movsd %xmm0, 0xed0a(%rip)     # 0x13550
movsd 0xed02(%rip), %xmm0     # 0x13550
ucomisd 0xed02(%rip), %xmm0     # 0x13558
jbe 0x4881
movsd 0xecf8(%rip), %xmm0     # 0x13558
movsd %xmm0, 0xece8(%rip)     # 0x13550
movss 0xec78(%rip), %xmm0     # 0x134e8
xorps %xmm1, %xmm1
ucomiss %xmm1, %xmm0
jbe 0x487f
movb $0x0, 0xecc5(%rip)      # 0x13544
jmp 0x4881
movsd 0xecc7(%rip), %xmm0     # 0x13550
cvtsd2ss %xmm0, %xmm0
movss %xmm0, -0x20(%rbp)
movss 0xfdbe(%rip), %xmm0     # 0x14658
xorps %xmm1, %xmm1
ucomiss %xmm1, %xmm0
jbe 0x4901
movss 0xfdaa(%rip), %xmm0     # 0x14654
addss 0xfd9e(%rip), %xmm0     # 0x14650
movss %xmm0, 0xfd96(%rip)     # 0x14650
movsd 0xec8e(%rip), %xmm0     # 0x13550
movsd %xmm0, -0x48(%rbp)
movss 0xfd81(%rip), %xmm0     # 0x14650
callq 0x8490
movaps %xmm0, %xmm1
movsd -0x48(%rbp), %xmm0
mulss 0xfd74(%rip), %xmm1     # 0x14658
cvtss2sd %xmm1, %xmm2
movsd 0x97e8(%rip), %xmm1     # 0xe0d8
addsd %xmm2, %xmm1
mulsd %xmm1, %xmm0
cvtsd2ss %xmm0, %xmm0
movss %xmm0, -0x20(%rbp)
cvttss2si -0x20(%rbp), %eax
movl %eax, 0xec64(%rip)      # 0x13570
cmpl $0x8, 0xec5d(%rip)      # 0x13570
jge 0x491f
movl $0x8, 0xec51(%rip)      # 0x13570
movss 0xec51(%rip), %xmm0     # 0x13578
addss 0xec45(%rip), %xmm0     # 0x13574
movss %xmm0, 0xec3d(%rip)     # 0x13574
xorps %xmm0, %xmm0
ucomiss 0xec33(%rip), %xmm0     # 0x13574
jbe 0x494e
xorps %xmm0, %xmm0
movss %xmm0, 0xec26(%rip)     # 0x13574
movss 0xec1e(%rip), %xmm0     # 0x13574
movss 0x96b6(%rip), %xmm1     # 0xe014
ucomiss %xmm1, %xmm0
jbe 0x4973
movss 0x96a9(%rip), %xmm0     # 0xe014
movss %xmm0, 0xec01(%rip)     # 0x13574
movl 0xec07(%rip), %eax      # 0x13580
addl $0x1, %eax
movl %eax, 0xebfe(%rip)      # 0x13580
movl 0xebf8(%rip), %eax      # 0x13580
movslq 0xebed(%rip), %rdx      # 0x1357c
leaq 0xebee(%rip), %rcx      # 0x13584
cmpl (%rcx,%rdx,4), %eax
jle 0x49c6
movl $0x0, 0xebdb(%rip)      # 0x13580
movl 0xebd1(%rip), %eax      # 0x1357c
addl $0x1, %eax
movl %eax, 0xebc8(%rip)      # 0x1357c
cmpl $0x3, 0xebc1(%rip)      # 0x1357c
jne 0x49c4
movb $0x0, 0xeb80(%rip)      # 0x13544
jmp 0x49c6
cmpl $0x0, 0xebaf(%rip)      # 0x1357c
jne 0x49eb
cvtsi2ssl 0xeba9(%rip), %xmm0 # 0x13580
cvtsi2ssl 0xeba5(%rip), %xmm1 # 0x13584
divss %xmm1, %xmm0
movss %xmm0, 0xeba5(%rip)     # 0x13590
cmpl $0x1, 0xeb8a(%rip)      # 0x1357c
jne 0x4a4d
cvtsi2ssl 0xeb84(%rip), %xmm1 # 0x13580
cvtsi2ssl 0xeb84(%rip), %xmm0 # 0x13588
divss %xmm0, %xmm1
movss 0x95f8(%rip), %xmm0     # 0xe008
subss %xmm1, %xmm0
movss 0x95ec(%rip), %xmm1     # 0xe008
callq 0x8460
movss 0x95fb(%rip), %xmm1     # 0xe024
mulss %xmm1, %xmm0
movss 0xeadf(%rip), %xmm1     # 0x13514
mulss %xmm1, %xmm0
movss 0x95c7(%rip), %xmm1     # 0xe008
addss %xmm1, %xmm0
movss %xmm0, 0xeb43(%rip)     # 0x13590
cmpl $0x2, 0xeb28(%rip)      # 0x1357c
jne 0x4a7e
cvtsi2ssl 0xeb22(%rip), %xmm1 # 0x13580
cvtsi2ssl 0xeb26(%rip), %xmm0 # 0x1358c
divss %xmm0, %xmm1
movss 0x9596(%rip), %xmm0     # 0xe008
subss %xmm1, %xmm0
movss %xmm0, 0xeb12(%rip)     # 0x13590
movss 0xeb12(%rip), %xmm0     # 0x13598
addss 0xeb06(%rip), %xmm0     # 0x13594
movss %xmm0, 0xeafe(%rip)     # 0x13594
cvttss2si 0xeaf6(%rip), %eax # 0x13594
movl %eax, %ecx
negl %ecx
cmovnsl %ecx, %eax
movl %eax, 0xeaf1(%rip)      # 0x1359c
cmpl $0x3ff, 0xeae7(%rip)    # imm = 0x3FF
jle 0x4ac1
movl $0x3ff, 0xeadb(%rip)    # imm = 0x3FF
movss 0xfb83(%rip), %xmm0     # 0x1464c
xorps %xmm1, %xmm1
ucomiss %xmm1, %xmm0
jne 0x4ad5
jp 0x4ad5
jmp 0x4b35
movss 0xfb6f(%rip), %xmm0     # 0x1464c
mulss 0xfb63(%rip), %xmm0     # 0x14648
movss %xmm0, 0xfb5b(%rip)     # 0x14648
movss 0x955b(%rip), %xmm0     # 0xe050
ucomiss 0xfb4c(%rip), %xmm0     # 0x14648
jbe 0x4b0e
movss 0x954a(%rip), %xmm0     # 0xe050
movss %xmm0, 0xfb3a(%rip)     # 0x14648
movss 0xfb32(%rip), %xmm0     # 0x14648
movss 0x951e(%rip), %xmm1     # 0xe03c
ucomiss %xmm1, %xmm0
jbe 0x4b33
movss 0x9511(%rip), %xmm0     # 0xe03c
movss %xmm0, 0xfb15(%rip)     # 0x14648
jmp 0x4b35
xorps %xmm0, %xmm0
movss %xmm0, -0x24(%rbp)
movl $0x0, -0x28(%rbp)
cmpl $0x8, -0x28(%rbp)
jge 0x4eb5
xorps %xmm0, %xmm0
movss %xmm0, -0x2c(%rbp)
movl 0xe9ec(%rip), %eax      # 0x13548
addl $0x1, %eax
movl %eax, 0xe9e3(%rip)      # 0x13548
movl 0xe9dd(%rip), %eax      # 0x13548
cmpl 0xe9ff(%rip), %eax      # 0x13570
jl 0x4bd6
movl 0xe9f7(%rip), %ecx      # 0x13570
movl 0xe9c9(%rip), %eax      # 0x13548
cltd
idivl %ecx
movl %edx, 0xe9c0(%rip)      # 0x13548
cmpl $0x3, 0xe951(%rip)      # 0x134e0
jne 0x4bd4
movl $0x0, -0x30(%rbp)
cmpl $0x20, -0x30(%rbp)
jge 0x4bd2
movss 0x947e(%rip), %xmm0     # 0xe024
callq 0x3830
movss 0x9455(%rip), %xmm1     # 0xe008
subss %xmm1, %xmm0
movslq -0x30(%rbp), %rcx
leaq 0xf9ee(%rip), %rax      # 0x145b0
movss %xmm0, (%rax,%rcx,4)
movl -0x30(%rbp), %eax
addl $0x1, %eax
movl %eax, -0x30(%rbp)
jmp 0x4b98
jmp 0x4bd4
jmp 0x4bd6
cvtsi2ssl 0xe96a(%rip), %xmm0 # 0x13548
cvtsi2ssl 0xe98a(%rip), %xmm1 # 0x13570
divss %xmm1, %xmm0
movss %xmm0, -0x34(%rbp)
movl 0xe8eb(%rip), %eax      # 0x134e0
movq %rax, -0x50(%rbp)
subq $0x3, %rax
ja 0x4cb9
movq -0x50(%rbp), %rax
leaq 0x9502(%rip), %rcx      # 0xe110
movslq (%rcx,%rax,4), %rax
addq %rcx, %rax
jmpq *%rax
movss -0x34(%rbp), %xmm1
movss 0xe950(%rip), %xmm0     # 0x13574
ucomiss %xmm1, %xmm0
jbe 0x4c38
movss 0x93e3(%rip), %xmm0     # 0xe014
movss %xmm0, -0x2c(%rbp)
jmp 0x4c45
movss 0x9430(%rip), %xmm0     # 0xe070
movss %xmm0, -0x2c(%rbp)
jmp 0x4cb9
movss -0x34(%rbp), %xmm0
movd %xmm0, %eax
xorl $0x80000000, %eax       # imm = 0x80000000
movd %eax, %xmm0
addss %xmm0, %xmm0
movss 0x93a3(%rip), %xmm1     # 0xe008
addss %xmm1, %xmm0
movss %xmm0, -0x2c(%rbp)
jmp 0x4cb9
movss 0x93ac(%rip), %xmm0     # 0xe024
mulss -0x34(%rbp), %xmm0
movss 0x93e7(%rip), %xmm1     # 0xe06c
mulss %xmm1, %xmm0
callq 0x8490
movss %xmm0, -0x2c(%rbp)
jmp 0x4cb9
movl 0xe8ad(%rip), %eax      # 0x13548
shll $0x5, %eax
cltd
idivl 0xe8cb(%rip)            # 0x13570
movslq %eax, %rcx
leaq 0xf901(%rip), %rax      # 0x145b0
movss (%rax,%rcx,4), %xmm0
movss %xmm0, -0x2c(%rbp)
movss 0xf96f(%rip), %xmm0     # 0x14630
movss %xmm0, -0x38(%rbp)
movss 0xf96e(%rip), %xmm0     # 0x1463c
mulss 0xf962(%rip), %xmm0     # 0x14638
movss %xmm0, 0xf95a(%rip)     # 0x14638
xorps %xmm0, %xmm0
ucomiss 0xf950(%rip), %xmm0     # 0x14638
jbe 0x4cf5
xorps %xmm0, %xmm0
movss %xmm0, 0xf943(%rip)     # 0x14638
movss 0xf93b(%rip), %xmm0     # 0x14638
movss 0x9337(%rip), %xmm1     # 0xe03c
ucomiss %xmm1, %xmm0
jbe 0x4d1a
movss 0x932a(%rip), %xmm0     # 0xe03c
movss %xmm0, 0xf91e(%rip)     # 0x14638
movss 0xe7fe(%rip), %xmm0     # 0x13520
movss 0x92de(%rip), %xmm1     # 0xe008
ucomiss %xmm1, %xmm0
jne 0x4d33
jp 0x4d33
jmp 0x4d97
movss -0x2c(%rbp), %xmm0
subss 0xf8f0(%rip), %xmm0     # 0x14630
movss 0xf8f0(%rip), %xmm2     # 0x14638
movss 0xf8e4(%rip), %xmm1     # 0x14634
mulss %xmm2, %xmm0
addss %xmm1, %xmm0
movss %xmm0, 0xf8d4(%rip)     # 0x14634
movss 0xf8cc(%rip), %xmm0     # 0x14634
movss 0xf8d0(%rip), %xmm2     # 0x14640
movss 0xf8bc(%rip), %xmm1     # 0x14634
movd %xmm0, %eax
xorl $0x80000000, %eax       # imm = 0x80000000
movd %eax, %xmm0
mulss %xmm2, %xmm0
addss %xmm1, %xmm0
movss %xmm0, 0xf89f(%rip)     # 0x14634
jmp 0x4daf
movss -0x2c(%rbp), %xmm0
movss %xmm0, 0xf88c(%rip)     # 0x14630
xorps %xmm0, %xmm0
movss %xmm0, 0xf885(%rip)     # 0x14634
movss 0xf87d(%rip), %xmm0     # 0x14634
addss 0xf871(%rip), %xmm0     # 0x14630
movss %xmm0, 0xf869(%rip)     # 0x14630
movss 0xf861(%rip), %xmm0     # 0x14630
subss -0x38(%rbp), %xmm0
addss 0xf868(%rip), %xmm0     # 0x14644
movss %xmm0, 0xf860(%rip)     # 0x14644
movss 0xf858(%rip), %xmm0     # 0x14644
movss 0xf854(%rip), %xmm2     # 0x14648
movss 0xf848(%rip), %xmm1     # 0x14644
movd %xmm0, %eax
xorl $0x80000000, %eax       # imm = 0x80000000
movd %eax, %xmm0
mulss %xmm2, %xmm0
addss %xmm1, %xmm0
movss %xmm0, 0xf82b(%rip)     # 0x14644
movss 0xf823(%rip), %xmm0     # 0x14644
movss %xmm0, -0x2c(%rbp)
movss -0x2c(%rbp), %xmm0
movl 0xf76f(%rip), %eax      # 0x145a0
andl $0x3ff, %eax            # imm = 0x3FF
movslq %eax, %rcx
leaq 0xe760(%rip), %rax      # 0x135a0
movss %xmm0, (%rax,%rcx,4)
movl 0xf755(%rip), %eax      # 0x145a0
subl 0xe74b(%rip), %eax      # 0x1359c
addl $0x400, %eax            # imm = 0x400
andl $0x3ff, %eax            # imm = 0x3FF
movslq %eax, %rcx
leaq 0xe73b(%rip), %rax      # 0x135a0
movss (%rax,%rcx,4), %xmm0
addss -0x2c(%rbp), %xmm0
movss %xmm0, -0x2c(%rbp)
movl 0xf726(%rip), %eax      # 0x145a0
addl $0x1, %eax
andl $0x3ff, %eax            # imm = 0x3FF
movl %eax, 0xf718(%rip)      # 0x145a0
movss -0x2c(%rbp), %xmm0
movss 0xe6fb(%rip), %xmm2     # 0x13590
movss -0x24(%rbp), %xmm1
mulss %xmm2, %xmm0
addss %xmm1, %xmm0
movss %xmm0, -0x24(%rbp)
movl -0x28(%rbp), %eax
addl $0x1, %eax
movl %eax, -0x28(%rbp)
jmp 0x4b44
movss -0x24(%rbp), %xmm0
movss 0x9192(%rip), %xmm1     # 0xe054
divss %xmm1, %xmm0
mulss 0xe462(%rip), %xmm0     # 0x13330
movss %xmm0, -0x24(%rbp)
movss 0x9149(%rip), %xmm0     # 0xe024
mulss 0xe451(%rip), %xmm0     # 0x13334
mulss -0x24(%rbp), %xmm0
movss %xmm0, -0x24(%rbp)
cmpq $0x0, -0x10(%rbp)
je 0x4f46
movss -0x24(%rbp), %xmm0
movss 0x9107(%rip), %xmm1     # 0xe008
ucomiss %xmm1, %xmm0
jbe 0x4f13
movss 0x90fa(%rip), %xmm0     # 0xe008
movss %xmm0, -0x24(%rbp)
movss 0x913d(%rip), %xmm0     # 0xe058
ucomiss -0x24(%rbp), %xmm0
jbe 0x4f2e
movss 0x912f(%rip), %xmm0     # 0xe058
movss %xmm0, -0x24(%rbp)
movss -0x24(%rbp), %xmm0
movq -0x10(%rbp), %rax
movq %rax, %rcx
addq $0x4, %rcx
movq %rcx, -0x10(%rbp)
movss %xmm0, (%rax)
cmpq $0x0, -0x18(%rbp)
je 0x5094
movss 0x9103(%rip), %xmm0     # 0xe05c
mulss -0x24(%rbp), %xmm0
movss %xmm0, -0x24(%rbp)
movss -0x24(%rbp), %xmm0
movss 0x9098(%rip), %xmm1     # 0xe008
ucomiss %xmm1, %xmm0
jbe 0x4f82
movss 0x908b(%rip), %xmm0     # 0xe008
movss %xmm0, -0x24(%rbp)
movss 0x90ce(%rip), %xmm0     # 0xe058
ucomiss -0x24(%rbp), %xmm0
jbe 0x4f9d
movss 0x90c0(%rip), %xmm0     # 0xe058
movss %xmm0, -0x24(%rbp)
movss -0x24(%rbp), %xmm0
addss 0xf6da(%rip), %xmm0     # 0x14684
movss %xmm0, 0xf6d2(%rip)     # 0x14684
movl 0xf6d0(%rip), %eax      # 0x14688
addl $0x1, %eax
movl %eax, 0xf6c7(%rip)      # 0x14688
cmpl $0xac44, 0xe375(%rip)   # imm = 0xAC44
je 0x4fda
cmpl $0x2, 0xf6b4(%rip)      # 0x14688
jne 0x5085
cvtsi2ssl 0xf6a6(%rip), %xmm1 # 0x14688
movss 0xf69a(%rip), %xmm0     # 0x14684
divss %xmm1, %xmm0
movss %xmm0, 0xf68e(%rip)     # 0x14684
movl $0x0, 0xf688(%rip)      # 0x14688
cmpl $0x10, 0xe335(%rip)     # 0x1333c
jne 0x503e
movss 0xf673(%rip), %xmm0     # 0x14684
movss 0x904f(%rip), %xmm1     # 0xe068
mulss %xmm1, %xmm0
cvttss2si %xmm0, %eax
movw %ax, -0x3a(%rbp)
movq -0x18(%rbp), %rcx
leaq -0x3a(%rbp), %rdi
movl $0x1, %esi
movl $0x2, %edx
callq 0x3610
jmp 0x507a
movss 0xf63e(%rip), %xmm0     # 0x14684
movss 0x9012(%rip), %xmm1     # 0xe060
mulss %xmm1, %xmm0
movss 0x900a(%rip), %xmm1     # 0xe064
addss %xmm1, %xmm0
cvttss2si %xmm0, %eax
movb %al, -0x3b(%rbp)
movq -0x18(%rbp), %rcx
leaq -0x3b(%rbp), %rdi
movl $0x1, %edx
movq %rdx, %rsi
callq 0x3610
xorps %xmm0, %xmm0
movss %xmm0, 0xf5ff(%rip)     # 0x14684
movl 0xf5f5(%rip), %eax      # 0x14680
addl $0x1, %eax
movl %eax, 0xf5ec(%rip)      # 0x14680
jmp 0x5096
movl -0x1c(%rbp), %eax
addl $0x1, %eax
movl %eax, -0x1c(%rbp)
jmp 0x477a
addq $0x50, %rsp
popq %rbp
retq
nopw (%rax,%rax)