// File: /workspace/github_c_makefile_star2_O0/phoboslab[P]pl_mpeg/./pl_mpeg.h
// Function: plm_audio_decode_frame
void plm_audio_decode_frame(plm_audio_t *self) {
	// Prepare the quantizer table lookups
	int tab3 = 0;
	int sblimit = 0;
	
	int tab1 = (self->mode == PLM_AUDIO_MODE_MONO) ? 0 : 1;
	int tab2 = PLM_AUDIO_QUANT_LUT_STEP_1[tab1][self->bitrate_index];
	tab3 = QUANT_LUT_STEP_2[tab2][self->samplerate_index];
	sblimit = tab3 & 63;
	tab3 >>= 6;

	if (self->bound > sblimit) {
		self->bound = sblimit;
	}

	// Read the allocation information
	for (int sb = 0; sb < self->bound; sb++) {
		self->allocation[0][sb] = plm_audio_read_allocation(self, sb, tab3);
		self->allocation[1][sb] = plm_audio_read_allocation(self, sb, tab3);
	}

	for (int sb = self->bound; sb < sblimit; sb++) {
		self->allocation[0][sb] =
			self->allocation[1][sb] =
			plm_audio_read_allocation(self, sb, tab3);
	}

	// Read scale factor selector information
	int channels = (self->mode == PLM_AUDIO_MODE_MONO) ? 1 : 2;
	for (int sb = 0; sb < sblimit; sb++) {
		for (int ch = 0; ch < channels; ch++) {
			if (self->allocation[ch][sb]) {
				self->scale_factor_info[ch][sb] = plm_buffer_read(self->buffer, 2);
			}
		}
		if (self->mode == PLM_AUDIO_MODE_MONO) {
			self->scale_factor_info[1][sb] = self->scale_factor_info[0][sb];
		}
	}

	// Read scale factors
	for (int sb = 0; sb < sblimit; sb++) {
		for (int ch = 0; ch < channels; ch++) {
			if (self->allocation[ch][sb]) {
				int *sf = self->scale_factor[ch][sb];
				switch (self->scale_factor_info[ch][sb]) {
					case 0:
						sf[0] = plm_buffer_read(self->buffer, 6);
						sf[1] = plm_buffer_read(self->buffer, 6);
						sf[2] = plm_buffer_read(self->buffer, 6);
						break;
					case 1:
						sf[0] = 
						sf[1] = plm_buffer_read(self->buffer, 6);
						sf[2] = plm_buffer_read(self->buffer, 6);
						break;
					case 2:
						sf[0] = 
						sf[1] = 
						sf[2] = plm_buffer_read(self->buffer, 6);
						break;
					case 3:
						sf[0] = plm_buffer_read(self->buffer, 6);
						sf[1] = 
						sf[2] = plm_buffer_read(self->buffer, 6);
						break;
				}
			}
		}
		if (self->mode == PLM_AUDIO_MODE_MONO) {
			self->scale_factor[1][sb][0] = self->scale_factor[0][sb][0];
			self->scale_factor[1][sb][1] = self->scale_factor[0][sb][1];
			self->scale_factor[1][sb][2] = self->scale_factor[0][sb][2];
		}
	}

	// Coefficient input and reconstruction
	int out_pos = 0;
	for (int part = 0; part < 3; part++) {
		for (int granule = 0; granule < 4; granule++) {

			// Read the samples
			for (int sb = 0; sb < self->bound; sb++) {
				plm_audio_read_samples(self, 0, sb, part);
				plm_audio_read_samples(self, 1, sb, part);
			}
			for (int sb = self->bound; sb < sblimit; sb++) {
				plm_audio_read_samples(self, 0, sb, part);
				self->sample[1][sb][0] = self->sample[0][sb][0];
				self->sample[1][sb][1] = self->sample[0][sb][1];
				self->sample[1][sb][2] = self->sample[0][sb][2];
			}
			for (int sb = sblimit; sb < 32; sb++) {
				self->sample[0][sb][0] = 0;
				self->sample[0][sb][1] = 0;
				self->sample[0][sb][2] = 0;
				self->sample[1][sb][0] = 0;
				self->sample[1][sb][1] = 0;
				self->sample[1][sb][2] = 0;
			}

			// Synthesis loop
			for (int p = 0; p < 3; p++) {
				// Shifting step
				self->v_pos = (self->v_pos - 64) & 1023;

				for (int ch = 0; ch < 2; ch++) {
					plm_audio_idct36(self->sample[ch], p, self->V[ch], self->v_pos);

					// Build U, windowing, calculate output
					memset(self->U, 0, sizeof(self->U));

					int d_index = 512 - (self->v_pos >> 1);
					int v_index = (self->v_pos % 128) >> 1;
					while (v_index < 1024) {
						for (int i = 0; i < 32; ++i) {
							self->U[i] += self->D[d_index++] * self->V[ch][v_index++];
						}

						v_index += 128 - 32;
						d_index += 64 - 32;
					}

					d_index -= (512 - 32);
					v_index = (128 - 32 + 1024) - v_index;
					while (v_index < 1024) {
						for (int i = 0; i < 32; ++i) {
							self->U[i] += self->D[d_index++] * self->V[ch][v_index++];
						}

						v_index += 128 - 32;
						d_index += 64 - 32;
					}

					// Output samples
					#ifdef PLM_AUDIO_SEPARATE_CHANNELS
						float *out_channel = ch == 0
							? self->samples.left
							: self->samples.right;
						for (int j = 0; j < 32; j++) {
							out_channel[out_pos + j] = self->U[j] / -1090519040.0f;
						}
					#else
						for (int j = 0; j < 32; j++) {
							self->samples.interleaved[((out_pos + j) << 1) + ch] = 
								self->U[j] / -1090519040.0f;
						}
					#endif
				} // End of synthesis channel loop
				out_pos += 32;
			} // End of synthesis sub-block loop

		} // Decoding of the granule finished
	}

	plm_buffer_align(self->buffer);
}

// Assembly:
pushq %rbp
movq %rsp, %rbp
subq $0x80, %rsp
movq %rdi, -0x8(%rbp)
movl $0x0, -0xc(%rbp)
movl $0x0, -0x10(%rbp)
movq -0x8(%rbp), %rax
movl 0x1c(%rax), %edx
movl $0x1, %eax
xorl %ecx, %ecx
cmpl $0x3, %edx
cmovel %ecx, %eax
movl %eax, -0x14(%rbp)
movslq -0x14(%rbp), %rcx
leaq 0x4ac1(%rip), %rax      # 0xe250
shlq $0x4, %rcx
addq %rcx, %rax
movq -0x8(%rbp), %rcx
movslq 0x10(%rcx), %rcx
movzbl (%rax,%rcx), %eax
movl %eax, -0x18(%rbp)
movslq -0x18(%rbp), %rcx
leaq 0x4ac0(%rip), %rax      # 0xe270
imulq $0x3, %rcx, %rcx
addq %rcx, %rax
movq -0x8(%rbp), %rcx
movslq 0xc(%rcx), %rcx
movzbl (%rax,%rcx), %eax
movl %eax, -0xc(%rbp)
movl -0xc(%rbp), %eax
andl $0x3f, %eax
movl %eax, -0x10(%rbp)
movl -0xc(%rbp), %eax
sarl $0x6, %eax
movl %eax, -0xc(%rbp)
movq -0x8(%rbp), %rax
movl 0x20(%rax), %eax
cmpl -0x10(%rbp), %eax
jle 0x97ee
movl -0x10(%rbp), %ecx
movq -0x8(%rbp), %rax
movl %ecx, 0x20(%rax)
movl $0x0, -0x1c(%rbp)
movl -0x1c(%rbp), %eax
movq -0x8(%rbp), %rcx
cmpl 0x20(%rcx), %eax
jge 0x984d
movq -0x8(%rbp), %rdi
movl -0x1c(%rbp), %esi
movl -0xc(%rbp), %edx
callq 0xa180
movq %rax, %rdx
movq -0x8(%rbp), %rax
movslq -0x1c(%rbp), %rcx
movq %rdx, 0x40(%rax,%rcx,8)
movq -0x8(%rbp), %rdi
movl -0x1c(%rbp), %esi
movl -0xc(%rbp), %edx
callq 0xa180
movq %rax, %rdx
movq -0x8(%rbp), %rax
movslq -0x1c(%rbp), %rcx
movq %rdx, 0x140(%rax,%rcx,8)
movl -0x1c(%rbp), %eax
addl $0x1, %eax
movl %eax, -0x1c(%rbp)
jmp 0x97f5
movq -0x8(%rbp), %rax
movl 0x20(%rax), %eax
movl %eax, -0x20(%rbp)
movl -0x20(%rbp), %eax
cmpl -0x10(%rbp), %eax
jge 0x9899
movq -0x8(%rbp), %rdi
movl -0x20(%rbp), %esi
movl -0xc(%rbp), %edx
callq 0xa180
movq %rax, %rdx
movq -0x8(%rbp), %rax
movslq -0x20(%rbp), %rcx
movq %rdx, 0x140(%rax,%rcx,8)
movq -0x8(%rbp), %rax
movslq -0x20(%rbp), %rcx
movq %rdx, 0x40(%rax,%rcx,8)
movl -0x20(%rbp), %eax
addl $0x1, %eax
movl %eax, -0x20(%rbp)
jmp 0x9857
movq -0x8(%rbp), %rax
movl 0x1c(%rax), %edx
movl $0x2, %eax
movl $0x1, %ecx
cmpl $0x3, %edx
cmovel %ecx, %eax
movl %eax, -0x24(%rbp)
movl $0x0, -0x28(%rbp)
movl -0x28(%rbp), %eax
cmpl -0x10(%rbp), %eax
jge 0x9968
movl $0x0, -0x2c(%rbp)
movl -0x2c(%rbp), %eax
cmpl -0x24(%rbp), %eax
jge 0x9930
movq -0x8(%rbp), %rax
addq $0x40, %rax
movslq -0x2c(%rbp), %rcx
shlq $0x8, %rcx
addq %rcx, %rax
movslq -0x28(%rbp), %rcx
cmpq $0x0, (%rax,%rcx,8)
je 0x9923
movq -0x8(%rbp), %rax
movq 0x30(%rax), %rdi
movl $0x2, %esi
callq 0x5320
movb %al, %dl
movq -0x8(%rbp), %rax
addq $0x240, %rax            # imm = 0x240
movslq -0x2c(%rbp), %rcx
shlq $0x5, %rcx
addq %rcx, %rax
movslq -0x28(%rbp), %rcx
movb %dl, (%rax,%rcx)
jmp 0x9925
movl -0x2c(%rbp), %eax
addl $0x1, %eax
movl %eax, -0x2c(%rbp)
jmp 0x98cd
movq -0x8(%rbp), %rax
cmpl $0x3, 0x1c(%rax)
jne 0x9958
movq -0x8(%rbp), %rax
movslq -0x28(%rbp), %rcx
movb 0x240(%rax,%rcx), %dl
movq -0x8(%rbp), %rax
movslq -0x28(%rbp), %rcx
movb %dl, 0x260(%rax,%rcx)
jmp 0x995a
movl -0x28(%rbp), %eax
addl $0x1, %eax
movl %eax, -0x28(%rbp)
jmp 0x98ba
movl $0x0, -0x30(%rbp)
movl -0x30(%rbp), %eax
cmpl -0x10(%rbp), %eax
jge 0x9bdd
movl $0x0, -0x34(%rbp)
movl -0x34(%rbp), %eax
cmpl -0x24(%rbp), %eax
jge 0x9b1f
movq -0x8(%rbp), %rax
addq $0x40, %rax
movslq -0x34(%rbp), %rcx
shlq $0x8, %rcx
addq %rcx, %rax
movslq -0x30(%rbp), %rcx
cmpq $0x0, (%rax,%rcx,8)
je 0x9b0f
movq -0x8(%rbp), %rax
movslq -0x34(%rbp), %rcx
leaq (%rcx,%rcx,2), %rcx
shlq $0x7, %rcx
addq %rcx, %rax
movslq -0x30(%rbp), %rcx
leaq (%rcx,%rcx,2), %rcx
leaq 0x280(%rax,%rcx,4), %rax
movq %rax, -0x40(%rbp)
movq -0x8(%rbp), %rcx
movslq -0x34(%rbp), %rax
shlq $0x5, %rax
addq %rax, %rcx
movslq -0x30(%rbp), %rax
movzbl 0x240(%rax,%rcx), %eax
movq %rax, -0x80(%rbp)
subq $0x3, %rax
ja 0x9b0d
movq -0x80(%rbp), %rax
leaq 0x3655(%rip), %rcx      # 0xd060
movslq (%rcx,%rax,4), %rax
addq %rcx, %rax
jmpq *%rax
movq -0x8(%rbp), %rax
movq 0x30(%rax), %rdi
movl $0x6, %esi
callq 0x5320
movl %eax, %ecx
movq -0x40(%rbp), %rax
movl %ecx, (%rax)
movq -0x8(%rbp), %rax
movq 0x30(%rax), %rdi
movl $0x6, %esi
callq 0x5320
movl %eax, %ecx
movq -0x40(%rbp), %rax
movl %ecx, 0x4(%rax)
movq -0x8(%rbp), %rax
movq 0x30(%rax), %rdi
movl $0x6, %esi
callq 0x5320
movl %eax, %ecx
movq -0x40(%rbp), %rax
movl %ecx, 0x8(%rax)
jmp 0x9b0d
movq -0x8(%rbp), %rax
movq 0x30(%rax), %rdi
movl $0x6, %esi
callq 0x5320
movl %eax, %ecx
movq -0x40(%rbp), %rax
movl %ecx, 0x4(%rax)
movq -0x40(%rbp), %rax
movl %ecx, (%rax)
movq -0x8(%rbp), %rax
movq 0x30(%rax), %rdi
movl $0x6, %esi
callq 0x5320
movl %eax, %ecx
movq -0x40(%rbp), %rax
movl %ecx, 0x8(%rax)
jmp 0x9b0d
movq -0x8(%rbp), %rax
movq 0x30(%rax), %rdi
movl $0x6, %esi
callq 0x5320
movl %eax, %ecx
movq -0x40(%rbp), %rax
movl %ecx, 0x8(%rax)
movq -0x40(%rbp), %rax
movl %ecx, 0x4(%rax)
movq -0x40(%rbp), %rax
movl %ecx, (%rax)
jmp 0x9b0d
movq -0x8(%rbp), %rax
movq 0x30(%rax), %rdi
movl $0x6, %esi
callq 0x5320
movl %eax, %ecx
movq -0x40(%rbp), %rax
movl %ecx, (%rax)
movq -0x8(%rbp), %rax
movq 0x30(%rax), %rdi
movl $0x6, %esi
callq 0x5320
movl %eax, %ecx
movq -0x40(%rbp), %rax
movl %ecx, 0x8(%rax)
movq -0x40(%rbp), %rax
movl %ecx, 0x4(%rax)
jmp 0x9b0f
jmp 0x9b11
movl -0x34(%rbp), %eax
addl $0x1, %eax
movl %eax, -0x34(%rbp)
jmp 0x9982
movq -0x8(%rbp), %rax
cmpl $0x3, 0x1c(%rax)
jne 0x9bcd
movq -0x8(%rbp), %rax
addq $0x280, %rax            # imm = 0x280
movslq -0x30(%rbp), %rcx
imulq $0xc, %rcx, %rcx
addq %rcx, %rax
movl (%rax), %ecx
movq -0x8(%rbp), %rax
addq $0x280, %rax            # imm = 0x280
addq $0x180, %rax            # imm = 0x180
movslq -0x30(%rbp), %rdx
imulq $0xc, %rdx, %rdx
addq %rdx, %rax
movl %ecx, (%rax)
movq -0x8(%rbp), %rax
addq $0x280, %rax            # imm = 0x280
movslq -0x30(%rbp), %rcx
imulq $0xc, %rcx, %rcx
addq %rcx, %rax
movl 0x4(%rax), %ecx
movq -0x8(%rbp), %rax
addq $0x280, %rax            # imm = 0x280
addq $0x180, %rax            # imm = 0x180
movslq -0x30(%rbp), %rdx
imulq $0xc, %rdx, %rdx
addq %rdx, %rax
movl %ecx, 0x4(%rax)
movq -0x8(%rbp), %rax
addq $0x280, %rax            # imm = 0x280
movslq -0x30(%rbp), %rcx
imulq $0xc, %rcx, %rcx
addq %rcx, %rax
movl 0x8(%rax), %ecx
movq -0x8(%rbp), %rax
addq $0x280, %rax            # imm = 0x280
addq $0x180, %rax            # imm = 0x180
movslq -0x30(%rbp), %rdx
imulq $0xc, %rdx, %rdx
addq %rdx, %rax
movl %ecx, 0x8(%rax)
jmp 0x9bcf
movl -0x30(%rbp), %eax
addl $0x1, %eax
movl %eax, -0x30(%rbp)
jmp 0x996f
movl $0x0, -0x44(%rbp)
movl $0x0, -0x48(%rbp)
cmpl $0x3, -0x48(%rbp)
jge 0xa098
movl $0x0, -0x4c(%rbp)
cmpl $0x4, -0x4c(%rbp)
jge 0xa088
movl $0x0, -0x50(%rbp)
movl -0x50(%rbp), %eax
movq -0x8(%rbp), %rcx
cmpl 0x20(%rcx), %eax
jge 0x9c49
movq -0x8(%rbp), %rdi
movl -0x50(%rbp), %edx
movl -0x48(%rbp), %ecx
xorl %esi, %esi
callq 0xa230
movq -0x8(%rbp), %rdi
movl -0x50(%rbp), %edx
movl -0x48(%rbp), %ecx
movl $0x1, %esi
callq 0xa230
movl -0x50(%rbp), %eax
addl $0x1, %eax
movl %eax, -0x50(%rbp)
jmp 0x9c0d
movq -0x8(%rbp), %rax
movl 0x20(%rax), %eax
movl %eax, -0x54(%rbp)
movl -0x54(%rbp), %eax
cmpl -0x10(%rbp), %eax
jge 0x9d1e
movq -0x8(%rbp), %rdi
movl -0x54(%rbp), %edx
movl -0x48(%rbp), %ecx
xorl %esi, %esi
callq 0xa230
movq -0x8(%rbp), %rax
addq $0x580, %rax            # imm = 0x580
movslq -0x54(%rbp), %rcx
imulq $0xc, %rcx, %rcx
addq %rcx, %rax
movl (%rax), %ecx
movq -0x8(%rbp), %rax
addq $0x580, %rax            # imm = 0x580
addq $0x180, %rax            # imm = 0x180
movslq -0x54(%rbp), %rdx
imulq $0xc, %rdx, %rdx
addq %rdx, %rax
movl %ecx, (%rax)
movq -0x8(%rbp), %rax
addq $0x580, %rax            # imm = 0x580
movslq -0x54(%rbp), %rcx
imulq $0xc, %rcx, %rcx
addq %rcx, %rax
movl 0x4(%rax), %ecx
movq -0x8(%rbp), %rax
addq $0x580, %rax            # imm = 0x580
addq $0x180, %rax            # imm = 0x180
movslq -0x54(%rbp), %rdx
imulq $0xc, %rdx, %rdx
addq %rdx, %rax
movl %ecx, 0x4(%rax)
movq -0x8(%rbp), %rax
addq $0x580, %rax            # imm = 0x580
movslq -0x54(%rbp), %rcx
imulq $0xc, %rcx, %rcx
addq %rcx, %rax
movl 0x8(%rax), %ecx
movq -0x8(%rbp), %rax
addq $0x580, %rax            # imm = 0x580
addq $0x180, %rax            # imm = 0x180
movslq -0x54(%rbp), %rdx
imulq $0xc, %rdx, %rdx
addq %rdx, %rax
movl %ecx, 0x8(%rax)
movl -0x54(%rbp), %eax
addl $0x1, %eax
movl %eax, -0x54(%rbp)
jmp 0x9c53
movl -0x10(%rbp), %eax
movl %eax, -0x58(%rbp)
cmpl $0x20, -0x58(%rbp)
jge 0x9df4
movq -0x8(%rbp), %rax
addq $0x580, %rax            # imm = 0x580
movslq -0x58(%rbp), %rcx
imulq $0xc, %rcx, %rcx
addq %rcx, %rax
movl $0x0, (%rax)
movq -0x8(%rbp), %rax
addq $0x580, %rax            # imm = 0x580
movslq -0x58(%rbp), %rcx
imulq $0xc, %rcx, %rcx
addq %rcx, %rax
movl $0x0, 0x4(%rax)
movq -0x8(%rbp), %rax
addq $0x580, %rax            # imm = 0x580
movslq -0x58(%rbp), %rcx
imulq $0xc, %rcx, %rcx
addq %rcx, %rax
movl $0x0, 0x8(%rax)
movq -0x8(%rbp), %rax
addq $0x580, %rax            # imm = 0x580
addq $0x180, %rax            # imm = 0x180
movslq -0x58(%rbp), %rcx
imulq $0xc, %rcx, %rcx
addq %rcx, %rax
movl $0x0, (%rax)
movq -0x8(%rbp), %rax
addq $0x580, %rax            # imm = 0x580
addq $0x180, %rax            # imm = 0x180
movslq -0x58(%rbp), %rcx
imulq $0xc, %rcx, %rcx
addq %rcx, %rax
movl $0x0, 0x4(%rax)
movq -0x8(%rbp), %rax
addq $0x580, %rax            # imm = 0x580
addq $0x180, %rax            # imm = 0x180
movslq -0x58(%rbp), %rcx
imulq $0xc, %rcx, %rcx
addq %rcx, %rax
movl $0x0, 0x8(%rax)
movl -0x58(%rbp), %eax
addl $0x1, %eax
movl %eax, -0x58(%rbp)
jmp 0x9d24
movl $0x0, -0x5c(%rbp)
cmpl $0x3, -0x5c(%rbp)
jge 0xa078
movq -0x8(%rbp), %rax
movl 0x24(%rax), %ecx
subl $0x40, %ecx
andl $0x3ff, %ecx            # imm = 0x3FF
movq -0x8(%rbp), %rax
movl %ecx, 0x24(%rax)
movl $0x0, -0x60(%rbp)
cmpl $0x2, -0x60(%rbp)
jge 0xa061
movq -0x8(%rbp), %rdi
addq $0x580, %rdi            # imm = 0x580
movslq -0x60(%rbp), %rax
imulq $0x180, %rax, %rax      # imm = 0x180
addq %rax, %rdi
movl -0x5c(%rbp), %esi
movq -0x8(%rbp), %rdx
addq $0x3c90, %rdx           # imm = 0x3C90
movslq -0x60(%rbp), %rax
shlq $0xc, %rax
addq %rax, %rdx
movq -0x8(%rbp), %rax
movl 0x24(%rax), %ecx
callq 0xa4e0
movq -0x8(%rbp), %rdi
addq $0x5c90, %rdi           # imm = 0x5C90
xorl %esi, %esi
movl $0x80, %edx
callq 0x20e0
movq -0x8(%rbp), %rax
movl 0x24(%rax), %ecx
sarl %ecx
movl $0x200, %eax            # imm = 0x200
subl %ecx, %eax
movl %eax, -0x64(%rbp)
movq -0x8(%rbp), %rax
movl 0x24(%rax), %eax
movl $0x80, %ecx
cltd
idivl %ecx
sarl %edx
movl %edx, -0x68(%rbp)
cmpl $0x400, -0x68(%rbp)     # imm = 0x400
jge 0x9f4a
movl $0x0, -0x6c(%rbp)
cmpl $0x20, -0x6c(%rbp)
jge 0x9f33
movq -0x8(%rbp), %rax
movl -0x64(%rbp), %ecx
movl %ecx, %edx
addl $0x1, %edx
movl %edx, -0x64(%rbp)
movslq %ecx, %rcx
movss 0x2c90(%rax,%rcx,4), %xmm0
movq -0x8(%rbp), %rax
addq $0x3c90, %rax           # imm = 0x3C90
movslq -0x60(%rbp), %rcx
shlq $0xc, %rcx
addq %rcx, %rax
movl -0x68(%rbp), %ecx
movl %ecx, %edx
addl $0x1, %edx
movl %edx, -0x68(%rbp)
movslq %ecx, %rcx
movss (%rax,%rcx,4), %xmm2
movq -0x8(%rbp), %rax
movslq -0x6c(%rbp), %rcx
movss 0x5c90(%rax,%rcx,4), %xmm1
mulss %xmm2, %xmm0
addss %xmm1, %xmm0
movss %xmm0, 0x5c90(%rax,%rcx,4)
movl -0x6c(%rbp), %eax
addl $0x1, %eax
movl %eax, -0x6c(%rbp)
jmp 0x9ebd
movl -0x68(%rbp), %eax
addl $0x60, %eax
movl %eax, -0x68(%rbp)
movl -0x64(%rbp), %eax
addl $0x20, %eax
movl %eax, -0x64(%rbp)
jmp 0x9ea9
movl -0x64(%rbp), %eax
subl $0x1e0, %eax            # imm = 0x1E0
movl %eax, -0x64(%rbp)
movl $0x460, %eax            # imm = 0x460
subl -0x68(%rbp), %eax
movl %eax, -0x68(%rbp)
cmpl $0x400, -0x68(%rbp)     # imm = 0x400
jge 0xa001
movl $0x0, -0x70(%rbp)
cmpl $0x20, -0x70(%rbp)
jge 0x9fea
movq -0x8(%rbp), %rax
movl -0x64(%rbp), %ecx
movl %ecx, %edx
addl $0x1, %edx
movl %edx, -0x64(%rbp)
movslq %ecx, %rcx
movss 0x2c90(%rax,%rcx,4), %xmm0
movq -0x8(%rbp), %rax
addq $0x3c90, %rax           # imm = 0x3C90
movslq -0x60(%rbp), %rcx
shlq $0xc, %rcx
addq %rcx, %rax
movl -0x68(%rbp), %ecx
movl %ecx, %edx
addl $0x1, %edx
movl %edx, -0x68(%rbp)
movslq %ecx, %rcx
movss (%rax,%rcx,4), %xmm2
movq -0x8(%rbp), %rax
movslq -0x70(%rbp), %rcx
movss 0x5c90(%rax,%rcx,4), %xmm1
mulss %xmm2, %xmm0
addss %xmm1, %xmm0
movss %xmm0, 0x5c90(%rax,%rcx,4)
movl -0x70(%rbp), %eax
addl $0x1, %eax
movl %eax, -0x70(%rbp)
jmp 0x9f74
movl -0x68(%rbp), %eax
addl $0x60, %eax
movl %eax, -0x68(%rbp)
movl -0x64(%rbp), %eax
addl $0x20, %eax
movl %eax, -0x64(%rbp)
jmp 0x9f60
movl $0x0, -0x74(%rbp)
cmpl $0x20, -0x74(%rbp)
jge 0xa051
movq -0x8(%rbp), %rax
movslq -0x74(%rbp), %rcx
movss 0x5c90(%rax,%rcx,4), %xmm0
movss 0x44b9(%rip), %xmm1     # 0xe4e0
divss %xmm1, %xmm0
movq -0x8(%rbp), %rax
movl -0x44(%rbp), %ecx
addl -0x74(%rbp), %ecx
shll %ecx
addl -0x60(%rbp), %ecx
movslq %ecx, %rcx
movss %xmm0, 0x88c(%rax,%rcx,4)
movl -0x74(%rbp), %eax
addl $0x1, %eax
movl %eax, -0x74(%rbp)
jmp 0xa008
jmp 0xa053
movl -0x60(%rbp), %eax
addl $0x1, %eax
movl %eax, -0x60(%rbp)
jmp 0x9e23
movl -0x44(%rbp), %eax
addl $0x20, %eax
movl %eax, -0x44(%rbp)
movl -0x5c(%rbp), %eax
addl $0x1, %eax
movl %eax, -0x5c(%rbp)
jmp 0x9dfb
jmp 0xa07a
movl -0x4c(%rbp), %eax
addl $0x1, %eax
movl %eax, -0x4c(%rbp)
jmp 0x9bfc
jmp 0xa08a
movl -0x48(%rbp), %eax
addl $0x1, %eax
movl %eax, -0x48(%rbp)
jmp 0x9beb
movq -0x8(%rbp), %rax
movq 0x30(%rax), %rdi
callq 0x5420
addq $0x80, %rsp
popq %rbp
retq
nop