// File: /workspace/github_c_makefile_star2_O1/DrYerzinia[P]C_DigiMode/src/filter/filter_test.cpp
// Function: main
int main(int argc, char **argv){

	std::string args;
	for(int i = 0; i < argc; i++) args += std::string(argv[i]) + std::string(" ");
	util::readInArguments(args);

	std::string fn = util::getArgument("-fn");
	std::string filename = "dat/psk/0_5000hz_sweep.raw";
	if(fn.compare("NULL")){
		filename = fn;
	}

	std::string of = util::getArgument("-of");
	std::string output_filename = "dat/data_filtered.raw";
	if(of.compare("NULL")){
		output_filename = of;
	}

	FIR_filter test_filter;

	// filter parameteres ////////////////////////////////////////////////

	std::string ft = util::getArgument("-ft");
	std::string filter_type = "highpass";
	if(filter_type.compare("NULL")){
		filter_type = ft;
	}
	
	int points = 127;
	float low_cutoff_freq = 800;
	float high_cutoff_freq = 900;
	float cutoff_freq = 2500;

	std::string pts = util::getArgument("-pts");
	if(pts.compare("NULL")){
		points = atoi(pts.c_str());
	}
	
	std::string co = util::getArgument("-co");
	if(co.compare("NULL")){
		cutoff_freq = atof(co.c_str());
	}
	
	std::string lco = util::getArgument("-lco");
	if(lco.compare("NULL")){
		low_cutoff_freq = atof(lco.c_str());
	}


	std::string hco = util::getArgument("-hco");
	if(hco.compare("NULL")){
		high_cutoff_freq = atof(hco.c_str());
	}

	test_filter.set_sample_rate(22050);

	// Setup Filter ///////////////////////////////////////////////////////

	if(filter_type.compare("bandpass") == 0){
		test_filter.set_up_bandpass(points, low_cutoff_freq, high_cutoff_freq);
	} else if(filter_type.compare("lowpass") == 0){
		test_filter.set_up_lowpass(points, cutoff_freq);
	} else if(filter_type.compare("highpass") == 0){
		test_filter.set_up_highpass(points, cutoff_freq);
	}  else if(filter_type.compare("bandstop") == 0){
		test_filter.set_up_bandreject(points, low_cutoff_freq, high_cutoff_freq);
	} else if(filter_type.compare("90deg") == 0){
		test_filter.set_up_90deg();
	} else {
		std::cout << "Invalid Filter Type: " << filter_type << std::endl;
		exit(0);
	}

	// Filter Data and Write Data ////////////////////////////////////////

	std::ostream *output_file;
	if(output_filename.compare("stdout") == 0) output_file = &std::cout;
	else output_file = new std::fstream(output_filename.c_str(), std::fstream::out | std::fstream::binary);

	char wbuf[1];
	float max = 0.0001;

	std::istream *data_file;

	if(filename.compare("stdin") == 0){
		data_file = &std::cin;
	} else {
		data_file = new std::fstream(filename.c_str(), std::fstream::in | std::fstream::binary);

		if(!((std::fstream*)data_file)->is_open()){
			std::cout << "Error: couldn't open input file" << std::endl;
			exit(0);
		}
	}

	while(!data_file->eof()){		
		data_file->read(wbuf, 1);
		if(test_filter.proccess_byte(wbuf[0])){
			float dat = test_filter.get_next_datapoint();
			if(max < dat)
				max = dat;
			wbuf[0] = (char) dat*(127/max);
			output_file->write(wbuf, 1);
			output_file->flush();
		}
	}

	if(filename.compare("stdin") != 0) ((std::fstream*)data_file)->close();

	if(output_filename.compare("stdout") != 0){
		((std::fstream*)output_file)->close();
		delete output_file;
	}

	// The End ////////////////////////////////////////////////////////////

	return 0;

}

// Assembly:
pushq %rbp
pushq %r15
pushq %r14
pushq %r13
pushq %r12
pushq %rbx
subq $0x2c8, %rsp            # imm = 0x2C8
leaq 0x80(%rsp), %rax
movq %rax, -0x10(%rax)
movq $0x0, -0x8(%rax)
movb $0x0, (%rax)
testl %edi, %edi
jle 0x26d2
movq %rsi, %rbx
leaq 0x40(%rsp), %r12
leaq 0xc0(%rsp), %r13
movl %edi, %r15d
xorl %ebp, %ebp
leaq 0x30(%rsp), %r14
movq (%rbx,%rbp,8), %rsi
movq %r14, %rdi
leaq 0x108(%rsp), %rdx
callq 0x331a
leaq 0x20(%rsp), %rax
movq %rax, 0x10(%rsp)
leaq 0x10(%rsp), %rdi
leaq 0x3b0e(%rip), %rsi      # 0x60ae
leaq 0x3b08(%rip), %rdx      # 0x60af
callq 0x33e8
movq 0x30(%rsp), %rcx
movl $0xf, %esi
cmpq %r12, %rcx
je 0x25c0
movq 0x40(%rsp), %rsi
movq 0x38(%rsp), %r8
movq 0x18(%rsp), %rdx
leaq (%rdx,%r8), %rax
cmpq %rsi, %rax
jbe 0x25ee
movl $0xf, %esi
leaq 0x20(%rsp), %rdi
cmpq %rdi, 0x10(%rsp)
je 0x25e9
movq 0x20(%rsp), %rsi
cmpq %rsi, %rax
jbe 0x25fd
movq 0x10(%rsp), %rsi
movq %r14, %rdi
callq 0x20c0
jmp 0x260b
leaq 0x10(%rsp), %rdi
xorl %esi, %esi
xorl %edx, %edx
callq 0x21f0
movq %r13, 0xb0(%rsp)
movq (%rax), %rdx
leaq 0x10(%rax), %rcx
cmpq %rcx, %rdx
je 0x2634
movq %rdx, 0xb0(%rsp)
movq (%rcx), %rdx
movq %rdx, 0xc0(%rsp)
jmp 0x263c
movups (%rcx), %xmm0
movups %xmm0, (%r13)
movq %rax, %rdx
addq $0x8, %rdx
movq 0x8(%rax), %rsi
movq %rsi, 0xb8(%rsp)
movq %rcx, (%rax)
movq $0x0, (%rdx)
movb $0x0, (%rcx)
movq 0xb0(%rsp), %rsi
movq 0xb8(%rsp), %rdx
leaq 0x70(%rsp), %rdi
callq 0x20c0
movq 0xb0(%rsp), %rdi
cmpq %r13, %rdi
je 0x2693
movq 0xc0(%rsp), %rsi
incq %rsi
callq 0x21d0
movq 0x10(%rsp), %rdi
leaq 0x20(%rsp), %rax
cmpq %rax, %rdi
je 0x26af
movq 0x20(%rsp), %rsi
incq %rsi
callq 0x21d0
movq 0x30(%rsp), %rdi
cmpq %r12, %rdi
je 0x26c6
movq 0x40(%rsp), %rsi
incq %rsi
callq 0x21d0
incq %rbp
cmpq %rbp, %r15
jne 0x2576
leaq 0x298(%rsp), %r14
movq %r14, -0x10(%r14)
movq 0x70(%rsp), %rsi
movq 0x78(%rsp), %rdx
addq %rsi, %rdx
leaq 0x288(%rsp), %rdi
callq 0x3358
leaq 0x288(%rsp), %rdi
callq 0x56a2
movq 0x288(%rsp), %rdi
cmpq %r14, %rdi
je 0x2722
movq 0x298(%rsp), %rsi
incq %rsi
callq 0x21d0
leaq 0x278(%rsp), %r14
movq %r14, -0x10(%r14)
leaq 0x38e7(%rip), %rsi      # 0x601c
leaq 0x38e3(%rip), %rdx      # 0x601f
leaq 0x268(%rsp), %rdi
callq 0x33e8
leaq 0x30(%rsp), %rdi
leaq 0x268(%rsp), %rsi
callq 0x5648
movq 0x268(%rsp), %rdi
cmpq %r14, %rdi
je 0x2778
movq 0x278(%rsp), %rsi
incq %rsi
callq 0x21d0
leaq 0x10(%rsp), %rdi
leaq 0x20(%rsp), %rax
movq %rax, (%rdi)
leaq 0x3894(%rip), %rsi      # 0x6020
leaq 0x38a7(%rip), %rdx      # 0x603a
callq 0x33e8
leaq 0x389c(%rip), %rsi      # 0x603b
leaq 0x30(%rsp), %rdi
callq 0x20b0
testl %eax, %eax
je 0x27bc
leaq 0x10(%rsp), %rdi
leaq 0x30(%rsp), %rsi
callq 0x2130
leaq 0x258(%rsp), %r14
movq %r14, -0x10(%r14)
leaq 0x3871(%rip), %rsi      # 0x6040
leaq 0x386d(%rip), %rdx      # 0x6043
leaq 0x248(%rsp), %rdi
callq 0x33e8
leaq 0x108(%rsp), %rdi
leaq 0x248(%rsp), %rsi
callq 0x5648
movq 0x248(%rsp), %rdi
cmpq %r14, %rdi
je 0x2815
movq 0x258(%rsp), %rsi
incq %rsi
callq 0x21d0
leaq 0xa0(%rsp), %r13
movq %r13, -0x10(%r13)
leaq 0x381c(%rip), %rsi      # 0x6044
leaq 0x382a(%rip), %rdx      # 0x6059
leaq 0x90(%rsp), %rdi
callq 0x33e8
leaq 0x37f8(%rip), %rsi      # 0x603b
leaq 0x108(%rsp), %rdi
callq 0x20b0
testl %eax, %eax
je 0x2869
leaq 0x90(%rsp), %rdi
leaq 0x108(%rsp), %rsi
callq 0x2130
leaq 0xb0(%rsp), %rdi
callq 0x3528
leaq 0x238(%rsp), %r14
movq %r14, -0x10(%r14)
leaq 0x37d1(%rip), %rsi      # 0x605a
leaq 0x37cd(%rip), %rdx      # 0x605d
leaq 0x228(%rsp), %rdi
callq 0x33e8
leaq 0x2a8(%rsp), %rdi
leaq 0x228(%rsp), %rsi
callq 0x5648
movq 0x228(%rsp), %rdi
cmpq %r14, %rdi
je 0x28cf
movq 0x238(%rsp), %rsi
incq %rsi
callq 0x21d0
leaq 0x60(%rsp), %rbp
movq %rbp, -0x10(%rbp)
leaq 0x377f(%rip), %rsi      # 0x605e
leaq 0x3780(%rip), %rdx      # 0x6066
leaq 0x50(%rsp), %rdi
callq 0x33e8
leaq 0x3744(%rip), %rsi      # 0x603b
leaq 0x50(%rsp), %rdi
callq 0x20b0
testl %eax, %eax
je 0x2917
leaq 0x50(%rsp), %rdi
leaq 0x2a8(%rsp), %rsi
callq 0x2130
leaq 0x1f8(%rsp), %r14
movq %r14, -0x10(%r14)
leaq 0x373d(%rip), %rsi      # 0x6067
leaq 0x373a(%rip), %rdx      # 0x606b
leaq 0x1e8(%rsp), %rdi
callq 0x33e8
leaq 0x208(%rsp), %rdi
leaq 0x1e8(%rsp), %rsi
callq 0x5648
movq 0x1e8(%rsp), %rdi
cmpq %r14, %rdi
je 0x2970
movq 0x1f8(%rsp), %rsi
incq %rsi
callq 0x21d0
leaq 0x36c4(%rip), %rsi      # 0x603b
leaq 0x208(%rsp), %rdi
callq 0x20b0
testl %eax, %eax
je 0x2999
movq 0x208(%rsp), %rdi
callq 0x22a0
movl %eax, %ebx
jmp 0x299e
movl $0x7f, %ebx
leaq 0x1b8(%rsp), %r14
movq %r14, -0x10(%r14)
leaq 0x36bb(%rip), %rsi      # 0x606c
leaq 0x36b7(%rip), %rdx      # 0x606f
leaq 0x1a8(%rsp), %rdi
callq 0x33e8
leaq 0x1c8(%rsp), %rdi
leaq 0x1a8(%rsp), %rsi
callq 0x5648
movq 0x1a8(%rsp), %rdi
cmpq %r14, %rdi
je 0x29f7
movq 0x1b8(%rsp), %rsi
incq %rsi
callq 0x21d0
leaq 0x363d(%rip), %rsi      # 0x603b
leaq 0x1c8(%rsp), %rdi
callq 0x20b0
testl %eax, %eax
je 0x2a22
movq 0x1c8(%rsp), %rdi
callq 0x2220
cvtsd2ss %xmm0, %xmm0
jmp 0x2a2a
movss 0x35da(%rip), %xmm0     # 0x6004
movss %xmm0, 0x8(%rsp)
leaq 0x178(%rsp), %r14
movq %r14, -0x10(%r14)
leaq 0x362d(%rip), %rsi      # 0x6070
leaq 0x362a(%rip), %rdx      # 0x6074
leaq 0x168(%rsp), %rdi
callq 0x33e8
leaq 0x188(%rsp), %rdi
leaq 0x168(%rsp), %rsi
callq 0x5648
movq 0x168(%rsp), %rdi
cmpq %r14, %rdi
je 0x2a89
movq 0x178(%rsp), %rsi
incq %rsi
callq 0x21d0
leaq 0x35ab(%rip), %rsi      # 0x603b
leaq 0x188(%rsp), %rdi
callq 0x20b0
testl %eax, %eax
je 0x2ab4
movq 0x188(%rsp), %rdi
callq 0x2220
cvtsd2ss %xmm0, %xmm0
jmp 0x2abc
movss 0x354c(%rip), %xmm0     # 0x6008
movss %xmm0, 0x4(%rsp)
leaq 0x138(%rsp), %r14
movq %r14, -0x10(%r14)
leaq 0x35a0(%rip), %rsi      # 0x6075
leaq 0x359d(%rip), %rdx      # 0x6079
leaq 0x128(%rsp), %rdi
callq 0x33e8
leaq 0x148(%rsp), %rdi
leaq 0x128(%rsp), %rsi
callq 0x5648
movq 0x128(%rsp), %rdi
cmpq %r14, %rdi
je 0x2b1b
movq 0x138(%rsp), %rsi
incq %rsi
callq 0x21d0
leaq 0x3519(%rip), %rsi      # 0x603b
leaq 0x148(%rsp), %rdi
callq 0x20b0
testl %eax, %eax
je 0x2b46
movq 0x148(%rsp), %rdi
callq 0x2220
cvtsd2ss %xmm0, %xmm0
jmp 0x2b4e
movss 0x34be(%rip), %xmm0     # 0x600c
movss %xmm0, 0xc(%rsp)
leaq 0xb0(%rsp), %rdi
movss 0x34ac(%rip), %xmm0     # 0x6010
callq 0x3522
leaq 0x350a(%rip), %rsi      # 0x607a
leaq 0x50(%rsp), %rdi
callq 0x20b0
testl %eax, %eax
je 0x2be5
leaq 0x34fe(%rip), %rsi      # 0x6083
leaq 0x50(%rsp), %rdi
callq 0x20b0
testl %eax, %eax
je 0x2c02
leaq 0x34c4(%rip), %rsi      # 0x605e
leaq 0x50(%rsp), %rdi
callq 0x20b0
testl %eax, %eax
je 0x2c19
leaq 0x34dc(%rip), %rsi      # 0x608b
leaq 0x50(%rsp), %rdi
callq 0x20b0
testl %eax, %eax
je 0x2c30
leaq 0x34d0(%rip), %rsi      # 0x6094
leaq 0x50(%rsp), %rdi
callq 0x20b0
testl %eax, %eax
jne 0x2f7a
leaq 0xb0(%rsp), %rdi
callq 0x3bc4
jmp 0x2c4b
leaq 0xb0(%rsp), %rdi
movl %ebx, %esi
movss 0x4(%rsp), %xmm0
movss 0xc(%rsp), %xmm1
callq 0x38b8
jmp 0x2c4b
leaq 0xb0(%rsp), %rdi
movl %ebx, %esi
movss 0x8(%rsp), %xmm0
callq 0x367c
jmp 0x2c4b
leaq 0xb0(%rsp), %rdi
movl %ebx, %esi
movss 0x8(%rsp), %xmm0
callq 0x3796
jmp 0x2c4b
leaq 0xb0(%rsp), %rdi
movl %ebx, %esi
movss 0x4(%rsp), %xmm0
movss 0xc(%rsp), %xmm1
callq 0x3a38
leaq 0x345e(%rip), %rsi      # 0x60b0
leaq 0x90(%rsp), %rdi
callq 0x20b0
testl %eax, %eax
je 0x2c8b
movl $0x210, %edi            # imm = 0x210
callq 0x21c0
movq %rax, %r14
movq 0x90(%rsp), %rsi
movq %rax, %rdi
movl $0x14, %edx
callq 0x2260
addq $0x10, %r14
jmp 0x2c92
movq 0x6336(%rip), %r14      # 0x8fc8
leaq 0x341e(%rip), %rsi      # 0x60b7
leaq 0x10(%rsp), %rdi
callq 0x20b0
testl %eax, %eax
je 0x2d01
movl $0x210, %edi            # imm = 0x210
callq 0x21c0
movq %rax, %r15
movq 0x10(%rsp), %rsi
movq %rax, %rdi
movl $0xc, %edx
callq 0x2260
movq %r15, %rdi
subq $-0x80, %rdi
callq 0x2090
testb %al, %al
jne 0x2d08
movq 0x62eb(%rip), %rdi      # 0x8fc8
leaq 0x33d9(%rip), %rsi      # 0x60bd
movl $0x1f, %edx
callq 0x2200
movq 0x62d3(%rip), %rdi      # 0x8fc8
callq 0x2110
xorl %edi, %edi
callq 0x2210
movq 0x62d8(%rip), %r15      # 0x8fe0
movq (%r15), %rax
movq -0x18(%rax), %rax
testb $0x2, 0x20(%r15,%rax)
jne 0x2dbf
movss 0x32f1(%rip), %xmm0     # 0x6014
movss %xmm0, 0x4(%rsp)
leaq 0x3(%rsp), %rbx
leaq 0xb0(%rsp), %r12
movl $0x1, %edx
movq %r15, %rdi
movq %rbx, %rsi
callq 0x2230
movsbl 0x3(%rsp), %esi
movq %r12, %rdi
callq 0x355c
testb %al, %al
je 0x2dac
movq %r12, %rdi
callq 0x3642
movaps %xmm0, %xmm2
cvttss2si %xmm0, %eax
movsbl %al, %eax
xorps %xmm0, %xmm0
cvtsi2ss %eax, %xmm0
maxss 0x4(%rsp), %xmm2
movss 0x329a(%rip), %xmm1     # 0x6018
movss %xmm2, 0x4(%rsp)
divss %xmm2, %xmm1
mulss %xmm0, %xmm1
cvttss2si %xmm1, %eax
movb %al, 0x3(%rsp)
movl $0x1, %edx
movq %r14, %rdi
movq %rbx, %rsi
callq 0x2240
movq %r14, %rdi
callq 0x2140
movq (%r15), %rax
movq -0x18(%rax), %rax
testb $0x2, 0x20(%r15,%rax)
je 0x2d36
leaq 0x32f1(%rip), %rsi      # 0x60b7
leaq 0x10(%rsp), %rdi
callq 0x20b0
testl %eax, %eax
je 0x2ddc
movq %r15, %rdi
callq 0x2050
leaq 0x32cd(%rip), %rsi      # 0x60b0
leaq 0x90(%rsp), %rdi
callq 0x20b0
testl %eax, %eax
je 0x2e06
leaq -0x10(%r14), %rdi
callq 0x2050
movq (%r14), %rax
movq %r14, %rdi
callq *0x8(%rax)
leaq 0x158(%rsp), %rax
movq -0x10(%rax), %rdi
cmpq %rax, %rdi
je 0x2e27
movq 0x158(%rsp), %rsi
incq %rsi
callq 0x21d0
leaq 0x198(%rsp), %rax
movq -0x10(%rax), %rdi
cmpq %rax, %rdi
je 0x2e48
movq 0x198(%rsp), %rsi
incq %rsi
callq 0x21d0
leaq 0x1d8(%rsp), %rax
movq -0x10(%rax), %rdi
cmpq %rax, %rdi
je 0x2e69
movq 0x1d8(%rsp), %rsi
incq %rsi
callq 0x21d0
leaq 0x218(%rsp), %rax
movq -0x10(%rax), %rdi
cmpq %rax, %rdi
je 0x2e8a
movq 0x218(%rsp), %rsi
incq %rsi
callq 0x21d0
movq 0x50(%rsp), %rdi
cmpq %rbp, %rdi
je 0x2ea1
movq 0x60(%rsp), %rsi
incq %rsi
callq 0x21d0
leaq 0x2b8(%rsp), %rax
movq -0x10(%rax), %rdi
cmpq %rax, %rdi
je 0x2ec2
movq 0x2b8(%rsp), %rsi
incq %rsi
callq 0x21d0
leaq 0xb0(%rsp), %rdi
callq 0x353e
movq 0x90(%rsp), %rdi
cmpq %r13, %rdi
je 0x2eec
movq 0xa0(%rsp), %rsi
incq %rsi
callq 0x21d0
leaq 0x118(%rsp), %rax
movq -0x10(%rax), %rdi
cmpq %rax, %rdi
je 0x2f0d
movq 0x118(%rsp), %rsi
incq %rsi
callq 0x21d0
movq 0x10(%rsp), %rdi
leaq 0x20(%rsp), %rax
cmpq %rax, %rdi
je 0x2f29
movq 0x20(%rsp), %rsi
incq %rsi
callq 0x21d0
leaq 0x40(%rsp), %rax
movq -0x10(%rax), %rdi
cmpq %rax, %rdi
je 0x2f44
movq 0x40(%rsp), %rsi
incq %rsi
callq 0x21d0
movq 0x70(%rsp), %rdi
leaq 0x80(%rsp), %rax
cmpq %rax, %rdi
je 0x2f66
movq 0x80(%rsp), %rsi
incq %rsi
callq 0x21d0
xorl %eax, %eax
addq $0x2c8, %rsp            # imm = 0x2C8
popq %rbx
popq %r12
popq %r13
popq %r14
popq %r15
popq %rbp
retq
movq 0x6047(%rip), %rdi      # 0x8fc8
leaq 0x3112(%rip), %rsi      # 0x609a
movl $0x15, %edx
callq 0x2200
movq 0x50(%rsp), %rsi
movq 0x58(%rsp), %rdx
movq 0x6025(%rip), %rdi      # 0x8fc8
callq 0x2200
movq %rax, %rdi
callq 0x2110
jmp 0x2cfa
movq %rax, %rbx
movl $0x210, %esi            # imm = 0x210
movq %r15, %rdi
jmp 0x2fcd
movq %rax, %rbx
movl $0x210, %esi            # imm = 0x210
movq %r14, %rdi
callq 0x21d0
jmp 0x31b1
jmp 0x31ae
jmp 0x3087
jmp 0x30c0
jmp 0x30f1
movq %rax, %rbx
movq 0x128(%rsp), %rdi
cmpq %r14, %rdi
je 0x31d2
movq 0x138(%rsp), %rsi
jmp 0x31ca
movq %rax, %rbx
jmp 0x31d2
movq %rax, %rbx
movq 0x168(%rsp), %rdi
cmpq %r14, %rdi
je 0x31f3
movq 0x178(%rsp), %rsi
jmp 0x31eb
movq %rax, %rbx
jmp 0x31f3
movq %rax, %rbx
movq 0x1a8(%rsp), %rdi
cmpq %r14, %rdi
je 0x3214
movq 0x1b8(%rsp), %rsi
jmp 0x320c
movq %rax, %rbx
jmp 0x3214
movq %rax, %rbx
movq 0x1e8(%rsp), %rdi
cmpq %r14, %rdi
je 0x3235
movq 0x1f8(%rsp), %rsi
jmp 0x322d
movq %rax, %rbx
jmp 0x3235
movq %rax, %rbx
jmp 0x324c
movq %rax, %rbx
movq 0x228(%rsp), %rdi
cmpq %r14, %rdi
je 0x326d
movq 0x238(%rsp), %rsi
jmp 0x3265
movq %rax, %rbx
jmp 0x326d
movq %rax, %rbx
jmp 0x327a
movq %rax, %rbx
jmp 0x3297
movq %rax, %rbx
movq 0x248(%rsp), %rdi
cmpq %r14, %rdi
je 0x32b8
movq 0x258(%rsp), %rsi
jmp 0x32b0
movq %rax, %rbx
jmp 0x32b8
movq %rax, %rbx
jmp 0x32d4
movq %rax, %rbx
movq 0x268(%rsp), %rdi
cmpq %r14, %rdi
je 0x32ef
movq 0x278(%rsp), %rsi
jmp 0x32e7
jmp 0x314b
movq %rax, %rbx
movq 0x288(%rsp), %rdi
cmpq %r14, %rdi
je 0x32ef
movq 0x298(%rsp), %rsi
jmp 0x32e7
jmp 0x314b
jmp 0x31ae
jmp 0x31ae
movq %rax, %rbx
jmp 0x32ef
movq %rax, %rbx
jmp 0x3199
movq %rax, %rbx
jmp 0x317d
movq %rax, %rbx
movq 0xb0(%rsp), %rdi
cmpq %r13, %rdi
je 0x317d
movq 0xc0(%rsp), %rsi
incq %rsi
callq 0x21d0
movq 0x10(%rsp), %rdi
leaq 0x20(%rsp), %rax
cmpq %rax, %rdi
je 0x3199
movq 0x20(%rsp), %rsi
incq %rsi
callq 0x21d0
movq 0x30(%rsp), %rdi
cmpq %r12, %rdi
jne 0x32e2
jmp 0x32ef
jmp 0x31ae
movq %rax, %rbx
leaq 0x158(%rsp), %rax
movq -0x10(%rax), %rdi
cmpq %rax, %rdi
je 0x31d2
movq 0x158(%rsp), %rsi
incq %rsi
callq 0x21d0
leaq 0x198(%rsp), %rax
movq -0x10(%rax), %rdi
cmpq %rax, %rdi
je 0x31f3
movq 0x198(%rsp), %rsi
incq %rsi
callq 0x21d0
leaq 0x1d8(%rsp), %rax
movq -0x10(%rax), %rdi
cmpq %rax, %rdi
je 0x3214
movq 0x1d8(%rsp), %rsi
incq %rsi
callq 0x21d0
leaq 0x218(%rsp), %rax
movq -0x10(%rax), %rdi
cmpq %rax, %rdi
je 0x3235
movq 0x218(%rsp), %rsi
incq %rsi
callq 0x21d0
movq 0x50(%rsp), %rdi
cmpq %rbp, %rdi
je 0x324c
movq 0x60(%rsp), %rsi
incq %rsi
callq 0x21d0
leaq 0x2b8(%rsp), %rax
movq -0x10(%rax), %rdi
cmpq %rax, %rdi
je 0x326d
movq 0x2b8(%rsp), %rsi
incq %rsi
callq 0x21d0
leaq 0xb0(%rsp), %rdi
callq 0x353e
movq 0x90(%rsp), %rdi
cmpq %r13, %rdi
je 0x3297
movq 0xa0(%rsp), %rsi
incq %rsi
callq 0x21d0
leaq 0x118(%rsp), %rax
movq -0x10(%rax), %rdi
cmpq %rax, %rdi
je 0x32b8
movq 0x118(%rsp), %rsi
incq %rsi
callq 0x21d0
movq 0x10(%rsp), %rdi
leaq 0x20(%rsp), %rax
cmpq %rax, %rdi
je 0x32d4
movq 0x20(%rsp), %rsi
incq %rsi
callq 0x21d0
leaq 0x40(%rsp), %rax
movq -0x10(%rax), %rdi
cmpq %rax, %rdi
je 0x32ef
movq 0x40(%rsp), %rsi
incq %rsi
callq 0x21d0
leaq 0x80(%rsp), %rax
movq 0x70(%rsp), %rdi
cmpq %rax, %rdi
je 0x3311
movq 0x80(%rsp), %rsi
incq %rsi
callq 0x21d0
movq %rbx, %rdi
callq 0x2320
nop