// File: /workspace/github_cpp_makefile_star2_O1/Ripser[P]ripser/ripser.cpp
// Function: main
int main(int argc, char** argv) {
	const char* filename = nullptr;

	file_format format = DISTANCE_MATRIX;

	index_t dim_max = 1;
	value_t threshold = std::numeric_limits<value_t>::max();
	float ratio = 1;
	coefficient_t modulus = 2;

	for (index_t i = 1; i < argc; ++i) {
		const std::string arg(argv[i]);
		if (arg == "--help") {
			print_usage_and_exit(0);
		} else if (arg == "--dim") {
			std::string parameter = std::string(argv[++i]);
			size_t next_pos;
			dim_max = std::stol(parameter, &next_pos);
			if (next_pos != parameter.size()) print_usage_and_exit(-1);
		} else if (arg == "--threshold") {
			std::string parameter = std::string(argv[++i]);
			size_t next_pos;
			threshold = std::stof(parameter, &next_pos);
			if (next_pos != parameter.size()) print_usage_and_exit(-1);
		} else if (arg == "--ratio") {
			std::string parameter = std::string(argv[++i]);
			size_t next_pos;
			ratio = std::stof(parameter, &next_pos);
			if (next_pos != parameter.size()) print_usage_and_exit(-1);
		} else if (arg == "--format") {
			std::string parameter = std::string(argv[++i]);
			if (parameter.rfind("lower", 0) == 0)
				format = LOWER_DISTANCE_MATRIX;
			else if (parameter.rfind("upper", 0) == 0)
				format = UPPER_DISTANCE_MATRIX;
			else if (parameter.rfind("dist", 0) == 0)
				format = DISTANCE_MATRIX;
			else if (parameter.rfind("point", 0) == 0)
				format = POINT_CLOUD;
			else if (parameter == "dipha")
				format = DIPHA;
			else if (parameter == "sparse")
				format = SPARSE;
			else if (parameter == "binary")
				format = BINARY;
			else
				print_usage_and_exit(-1);
#ifdef USE_COEFFICIENTS
		} else if (arg == "--modulus") {
			std::string parameter = std::string(argv[++i]);
			size_t next_pos;
			modulus = std::stol(parameter, &next_pos);
			if (next_pos != parameter.size() || !is_prime(modulus)) print_usage_and_exit(-1);
#endif
		} else {
			if (filename) { print_usage_and_exit(-1); }
			filename = argv[i];
		}
	}

	std::ifstream file_stream(filename);
	if (filename && file_stream.fail()) {
		std::cerr << "couldn't open file " << filename << std::endl;
		exit(-1);
	}

	if (format == SPARSE) {
		sparse_distance_matrix dist =
		    read_sparse_distance_matrix(filename ? file_stream : std::cin);
		std::cout << "sparse distance matrix with " << dist.size() << " points and "
		          << dist.num_edges << "/" << (dist.size() * (dist.size() - 1)) / 2 << " entries"
		          << std::endl;

		ripser<sparse_distance_matrix>(std::move(dist), dim_max, threshold, ratio, modulus)
		    .compute_barcodes();
	} else if (format == POINT_CLOUD && threshold < std::numeric_limits<value_t>::max()) {
		sparse_distance_matrix dist(read_point_cloud(filename ? file_stream : std::cin), threshold);
		ripser<sparse_distance_matrix>(std::move(dist), dim_max, threshold, ratio, modulus)
				.compute_barcodes();
	} else {
		compressed_lower_distance_matrix dist =
		    read_file(filename ? file_stream : std::cin, format);

		value_t min = std::numeric_limits<value_t>::infinity(),
		        max = -std::numeric_limits<value_t>::infinity(), max_finite = max;
		int num_edges = 0;

		value_t enclosing_radius = std::numeric_limits<value_t>::infinity();
		if (threshold == std::numeric_limits<value_t>::max()) {
			for (size_t i = 0; i < dist.size(); ++i) {
				value_t r_i = -std::numeric_limits<value_t>::infinity();
				for (size_t j = 0; j < dist.size(); ++j) r_i = std::max(r_i, dist(i, j));
				enclosing_radius = std::min(enclosing_radius, r_i);
			}
		}

		for (auto d : dist.distances) {
			min = std::min(min, d);
			max = std::max(max, d);
			if (d != std::numeric_limits<value_t>::infinity()) max_finite = std::max(max_finite, d);
			if (d <= threshold) ++num_edges;
		}
		std::cout << "value range: [" << min << "," << max_finite << "]" << std::endl;

		if (threshold == std::numeric_limits<value_t>::max()) {
			std::cout << "distance matrix with " << dist.size()
			          << " points, using threshold at enclosing radius " << enclosing_radius
			          << std::endl;
			ripser<compressed_lower_distance_matrix>(std::move(dist), dim_max, enclosing_radius,
			                                         ratio, modulus)
			    .compute_barcodes();
		} else {
			std::cout << "sparse distance matrix with " << dist.size() << " points and "
			          << num_edges << "/" << (dist.size() * (dist.size() - 1)) / 2 << " entries"
			          << std::endl;

			ripser<sparse_distance_matrix>(sparse_distance_matrix(std::move(dist), threshold),
			                               dim_max, threshold, ratio, modulus)
			    .compute_barcodes();
		}
		exit(0);
	}
}

// Assembly:
pushq %rbp
pushq %r15
pushq %r14
pushq %r13
pushq %r12
pushq %rbx
subq $0x338, %rsp            # imm = 0x338
cmpl $0x2, %edi
jl 0x40cc
movq %rsi, %r15
movslq %edi, %rax
movq %rax, 0x58(%rsp)
movss 0x8362(%rip), %xmm0     # 0xc0b0
movss %xmm0, (%rsp)
movss 0x8351(%rip), %xmm0     # 0xc0ac
movss %xmm0, 0x4(%rsp)
movl $0x2, %eax
movq %rax, 0x8(%rsp)
movl $0x1, %ebp
movq $0x0, 0x10(%rsp)
leaq 0x130(%rsp), %r12
leaq 0x60(%rsp), %rbx
leaq 0x28(%rsp), %r14
movl $0x1, %eax
movq %rax, 0x18(%rsp)
movq %rsi, 0x20(%rsp)
movq (%r15,%rbp,8), %rsi
movq %r12, %rdi
movq %rbx, %rdx
callq 0x20c0
movq %r12, %rdi
leaq 0x8766(%rip), %rsi      # 0xc519
callq 0x2080
testl %eax, %eax
je 0x4374
movq %r12, %rdi
leaq 0x8756(%rip), %rsi      # 0xc520
callq 0x2080
testl %eax, %eax
je 0x3e32
movq %r12, %rdi
leaq 0x8749(%rip), %rsi      # 0xc526
callq 0x2080
testl %eax, %eax
je 0x3e9e
movq %r12, %rdi
leaq 0x873e(%rip), %rsi      # 0xc532
callq 0x2080
testl %eax, %eax
je 0x3f04
movq %r12, %rdi
leaq 0x872f(%rip), %rsi      # 0xc53a
callq 0x2080
testl %eax, %eax
je 0x3fbd
cmpq $0x0, 0x10(%rsp)
jne 0x43bf
movq (%r15,%rbp,8), %rax
movq %rax, 0x10(%rsp)
jmp 0x3f90
movq 0x8(%r15,%rbp,8), %rsi
movq %rbx, %rdi
movq %r14, %rdx
callq 0x20c0
movq 0x60(%rsp), %rbx
callq 0x2040
movq %rax, %r15
movl (%rax), %r13d
movl $0x0, (%rax)
movq %rbx, %rdi
movq %r14, %rsi
movl $0xa, %edx
callq 0x22b0
movq 0x28(%rsp), %rdx
subq %rbx, %rdx
je 0x4385
movl (%r15), %ecx
cmpl $0x22, %ecx
je 0x4391
testl %ecx, %ecx
jne 0x3e89
movl %r13d, (%r15)
movq %rax, 0x18(%rsp)
cmpq 0x68(%rsp), %rdx
je 0x3f6a
jmp 0x437b
movq 0x8(%r15,%rbp,8), %rsi
movq %rbx, %rdi
movq %r14, %rdx
callq 0x20c0
movq %r14, %r15
movq 0x60(%rsp), %rbx
callq 0x2040
movq %rax, %r14
movl (%rax), %r13d
movl $0x0, (%rax)
movq %rbx, %rdi
movq %r15, %rsi
callq 0x2290
movss %xmm0, (%rsp)
movq 0x28(%rsp), %rax
subq %rbx, %rax
je 0x43b3
movl (%r14), %ecx
cmpl $0x22, %ecx
je 0x43a7
testl %ecx, %ecx
jne 0x3ef8
movl %r13d, (%r14)
cmpq 0x68(%rsp), %rax
je 0x3f6a
jmp 0x439d
movq 0x8(%r15,%rbp,8), %rsi
movq %rbx, %rdi
movq %r14, %rdx
callq 0x20c0
movq %r14, %r15
movq 0x60(%rsp), %rbx
callq 0x2040
movq %rax, %r14
movl (%rax), %r13d
movl $0x0, (%rax)
movq %rbx, %rdi
movq %r15, %rsi
callq 0x2290
movq 0x28(%rsp), %rax
subq %rbx, %rax
je 0x43dc
movl (%r14), %ecx
cmpl $0x22, %ecx
je 0x43d0
testl %ecx, %ecx
jne 0x3f59
movl %r13d, (%r14)
movss %xmm0, 0x4(%rsp)
cmpq 0x68(%rsp), %rax
jne 0x43c6
movq 0x60(%rsp), %rdi
leaq 0x70(%rsp), %rax
cmpq %rax, %rdi
leaq 0x60(%rsp), %rbx
leaq 0x28(%rsp), %r14
movq 0x20(%rsp), %r15
je 0x3f8d
callq 0x21e0
incq %rbp
movq 0x130(%rsp), %rdi
leaq 0x140(%rsp), %rax
cmpq %rax, %rdi
je 0x3faa
callq 0x21e0
incq %rbp
cmpq 0x58(%rsp), %rbp
jl 0x3d9a
jmp 0x4104
movq 0x8(%r15,%rbp,8), %rsi
movq %rbx, %rdi
movq %r14, %rdx
callq 0x20c0
movq $0x0, 0x8(%rsp)
movl $0x5, %ecx
movq %rbx, %rdi
leaq 0x855e(%rip), %rsi      # 0xc543
xorl %edx, %edx
callq 0x22a0
testq %rax, %rax
je 0x40b4
movl $0x5, %ecx
movq %rbx, %rdi
leaq 0x8545(%rip), %rsi      # 0xc549
xorl %edx, %edx
callq 0x22a0
testq %rax, %rax
je 0x408e
movl $0x4, %ecx
movq %rbx, %rdi
leaq 0x8530(%rip), %rsi      # 0xc54f
xorl %edx, %edx
callq 0x22a0
testq %rax, %rax
je 0x4095
movl $0x5, %ecx
movq %rbx, %rdi
leaq 0x851a(%rip), %rsi      # 0xc554
xorl %edx, %edx
callq 0x22a0
testq %rax, %rax
je 0x409c
movq %rbx, %rdi
leaq 0x850a(%rip), %rsi      # 0xc55a
callq 0x2080
testl %eax, %eax
je 0x40a3
movq %rbx, %rdi
leaq 0x84fd(%rip), %rsi      # 0xc560
callq 0x2080
testl %eax, %eax
je 0x40aa
movq %rbx, %rdi
leaq 0x84f1(%rip), %rsi      # 0xc567
callq 0x2080
movl $0x6, %ecx
movq %rcx, 0x8(%rsp)
testl %eax, %eax
je 0x40b4
jmp 0x46af
movl $0x1, %eax
jmp 0x40af
movl $0x2, %eax
jmp 0x40af
movl $0x3, %eax
jmp 0x40af
movl $0x4, %eax
jmp 0x40af
movl $0x5, %eax
movq %rax, 0x8(%rsp)
movq 0x60(%rsp), %rdi
leaq 0x70(%rsp), %rax
cmpq %rax, %rdi
jne 0x3f88
jmp 0x3f8d
movl $0x2, %eax
movq %rax, 0x8(%rsp)
movss 0x7fce(%rip), %xmm0     # 0xc0ac
movss %xmm0, 0x4(%rsp)
movss 0x7fc4(%rip), %xmm0     # 0xc0b0
movss %xmm0, (%rsp)
movl $0x1, %eax
movq %rax, 0x18(%rsp)
movq $0x0, 0x10(%rsp)
leaq 0x130(%rsp), %r14
movq %r14, %rdi
movq 0x10(%rsp), %rbx
movq %rbx, %rsi
movl $0x8, %edx
callq 0x23a0
testq %rbx, %rbx
je 0x4140
movq 0x130(%rsp), %rax
movq -0x18(%rax), %rax
testb $0x5, 0x150(%rsp,%rax)
jne 0x43f6
movq 0x8(%rsp), %rax
cmpl $0x3, %eax
je 0x427e
cmpl $0x5, %eax
jne 0x43e8
testq %rbx, %rbx
jne 0x4163
movq 0xde75(%rip), %r14      # 0x11fd8
leaq 0x28(%rsp), %rdi
movq %r14, %rsi
callq 0x3260
movq 0xde51(%rip), %rdi      # 0x11fc8
leaq 0x8404(%rip), %rsi      # 0xc582
movl $0x1c, %edx
callq 0x2240
movq 0x30(%rsp), %rsi
subq 0x28(%rsp), %rsi
sarq $0x3, %rsi
movabsq $-0x5555555555555555, %rbx # imm = 0xAAAAAAAAAAAAAAAB
imulq %rbx, %rsi
movq 0xde1d(%rip), %rdi      # 0x11fc8
callq 0x2170
movq %rax, %r14
leaq 0x83e5(%rip), %rsi      # 0xc59f
movl $0xc, %edx
movq %rax, %rdi
callq 0x2240
movq 0x40(%rsp), %rsi
movq %r14, %rdi
callq 0x21f0
movq %rax, %r14
leaq 0x83ce(%rip), %rsi      # 0xc5ac
movl $0x1, %edx
movq %rax, %rdi
callq 0x2240
movq 0x30(%rsp), %rax
subq 0x28(%rsp), %rax
sarq $0x3, %rax
imulq %rbx, %rax
leaq -0x1(%rax), %rsi
imulq %rax, %rsi
shrq %rsi
movq %r14, %rdi
callq 0x2170
movq %rax, %r14
leaq 0x8394(%rip), %rsi      # 0xc5ae
movl $0x8, %edx
movq %rax, %rdi
callq 0x2240
movq (%r14), %rax
movq -0x18(%rax), %rdi
addq %r14, %rdi
movl $0xa, %esi
callq 0x2200
movsbl %al, %esi
movq %r14, %rdi
callq 0x2030
movq %rax, %rdi
callq 0x2180
leaq 0x60(%rsp), %rdi
leaq 0x28(%rsp), %rsi
movq 0x18(%rsp), %rdx
movss (%rsp), %xmm0
movss 0x4(%rsp), %xmm1
movl $0x2, %ecx
callq 0x5388
leaq 0x60(%rsp), %rdi
callq 0x544e
jmp 0x42fc
movss 0x7e2a(%rip), %xmm0     # 0xc0b0
ucomiss (%rsp), %xmm0
jbe 0x43e8
testq %rbx, %rbx
jne 0x429e
movq 0xdd3c(%rip), %rsi      # 0x11fd8
jmp 0x42a6
leaq 0x130(%rsp), %rsi
leaq 0x60(%rsp), %rdi
callq 0x2fd1
leaq 0x28(%rsp), %rdi
leaq 0x60(%rsp), %rsi
movss (%rsp), %xmm0
callq 0x5608
leaq 0x60(%rsp), %rdi
callq 0x4d62
leaq 0x60(%rsp), %rdi
leaq 0x28(%rsp), %rsi
movq 0x18(%rsp), %rdx
movss (%rsp), %xmm0
movss 0x4(%rsp), %xmm1
movl $0x2, %ecx
callq 0x5388
leaq 0x60(%rsp), %rdi
callq 0x544e
movq 0xe8(%rsp), %rdi
testq %rdi, %rdi
je 0x430e
callq 0x21e0
movq 0xd0(%rsp), %rdi
testq %rdi, %rdi
je 0x4320
callq 0x21e0
movq 0xb8(%rsp), %rdi
testq %rdi, %rdi
je 0x4332
callq 0x21e0
leaq 0xa0(%rsp), %rdi
callq 0x5c6e
leaq 0x60(%rsp), %rdi
callq 0x4e24
leaq 0x28(%rsp), %rdi
callq 0x4e24
leaq 0x130(%rsp), %rdi
callq 0x2060
xorl %eax, %eax
addq $0x338, %rsp            # imm = 0x338
popq %rbx
popq %r12
popq %r13
popq %r14
popq %r15
popq %rbp
retq
xorl %edi, %edi
callq 0x3b9b
movl $0xffffffff, %edi       # imm = 0xFFFFFFFF
callq 0x3b9b
leaq 0x8268(%rip), %rdi      # 0xc5f4
callq 0x2150
leaq 0x825c(%rip), %rdi      # 0xc5f4
callq 0x22d0
movl $0xffffffff, %edi       # imm = 0xFFFFFFFF
callq 0x3b9b
leaq 0x824b(%rip), %rdi      # 0xc5f9
callq 0x22d0
leaq 0x823f(%rip), %rdi      # 0xc5f9
callq 0x2150
movl $0xffffffff, %edi       # imm = 0xFFFFFFFF
jmp 0x4376
movl $0xffffffff, %edi       # imm = 0xFFFFFFFF
callq 0x3b9b
leaq 0x8222(%rip), %rdi      # 0xc5f9
callq 0x22d0
leaq 0x8216(%rip), %rdi      # 0xc5f9
callq 0x2150
testq %rbx, %rbx
jne 0x4443
movq 0xdbe4(%rip), %rsi      # 0x11fd8
jmp 0x444b
movq 0xdbf3(%rip), %rdi      # 0x11ff0
leaq 0x816a(%rip), %rsi      # 0xc56e
movl $0x13, %edx
callq 0x2240
movq 0x10(%rsp), %rbx
movq %rbx, %rdi
callq 0x20e0
movq 0xdbce(%rip), %rdi      # 0x11ff0
movq %rbx, %rsi
movq %rax, %rdx
callq 0x2240
movq 0xdbbc(%rip), %rdi      # 0x11ff0
callq 0x20f0
movl $0xffffffff, %edi       # imm = 0xFFFFFFFF
callq 0x2260
leaq 0x130(%rsp), %rsi
leaq 0x28(%rsp), %rdi
movq 0x8(%rsp), %rdx
callq 0x3b0c
movss 0x7c52(%rip), %xmm3     # 0xc0b4
movss (%rsp), %xmm0
ucomiss 0x7c42(%rip), %xmm0     # 0xc0b0
jne 0x44e2
jp 0x44e2
movq 0x40(%rsp), %rax
movq 0x48(%rsp), %rcx
subq %rax, %rcx
je 0x44e2
sarq $0x3, %rcx
cmpq $0x1, %rcx
adcq $0x0, %rcx
movss 0x7c1f(%rip), %xmm1     # 0xc0b4
xorl %edx, %edx
movss 0x7c19(%rip), %xmm0     # 0xc0b8
xorl %esi, %esi
movaps %xmm0, %xmm2
xorps %xmm3, %xmm3
cmpq %rsi, %rdx
je 0x44c4
movq %rsi, %rdi
cmovgq %rdx, %rdi
movq %rsi, %r8
cmovlq %rdx, %r8
movq (%rax,%rdi,8), %rdi
movss (%rdi,%r8,4), %xmm3
maxss %xmm2, %xmm3
incq %rsi
movaps %xmm3, %xmm2
cmpq %rsi, %rcx
jne 0x44a4
minss %xmm1, %xmm3
incq %rdx
movaps %xmm3, %xmm1
cmpq %rcx, %rdx
jne 0x449f
movss %xmm3, 0x10(%rsp)
movq 0x28(%rsp), %rax
movq 0x30(%rsp), %rcx
cmpq %rcx, %rax
jne 0x4511
xorl %ebp, %ebp
movsd 0x7b87(%rip), %xmm0     # 0xc088
movsd %xmm0, 0x58(%rsp)
movsd 0x7b81(%rip), %xmm0     # 0xc090
jmp 0x4581
movss 0x7b9f(%rip), %xmm3     # 0xc0b8
movss 0x7b93(%rip), %xmm1     # 0xc0b4
xorl %ebp, %ebp
movss 0x7b89(%rip), %xmm0     # 0xc0b4
movss (%rax), %xmm2
movaps %xmm3, %xmm4
cmpltps %xmm2, %xmm4
movaps %xmm2, %xmm5
cmpneqps %xmm0, %xmm5
andps %xmm4, %xmm5
movd %xmm5, %edx
movaps %xmm2, %xmm4
testb $0x1, %dl
jne 0x454f
movaps %xmm3, %xmm4
movss (%rsp), %xmm3
ucomiss %xmm2, %xmm3
minss %xmm1, %xmm2
sbbl $-0x1, %ebp
addq $0x4, %rax
movaps %xmm2, %xmm1
movaps %xmm4, %xmm3
cmpq %rcx, %rax
jne 0x452b
xorps %xmm0, %xmm0
cvtss2sd %xmm2, %xmm0
movsd %xmm0, 0x58(%rsp)
xorps %xmm0, %xmm0
cvtss2sd %xmm4, %xmm0
movsd %xmm0, 0x20(%rsp)
movq 0xda3a(%rip), %rdi      # 0x11fc8
leaq 0x8022(%rip), %rsi      # 0xc5b7
movl $0xe, %edx
callq 0x2240
movq 0xda22(%rip), %rdi      # 0x11fc8
movsd 0x58(%rsp), %xmm0
callq 0x2300
movq %rax, %r14
leaq 0x80cb(%rip), %rsi      # 0xc686
movl $0x1, %edx
movq %rax, %rdi
callq 0x2240
movq %r14, %rdi
movsd 0x20(%rsp), %xmm0
callq 0x2300
movq %rax, %r14
leaq 0x7bd0(%rip), %rsi      # 0xc1b0
movl $0x1, %edx
movq %rax, %rdi
callq 0x2240
movq %r14, %rdi
callq 0x20f0
movss (%rsp), %xmm0
ucomiss 0x7aaf(%rip), %xmm0     # 0xc0b0
jne 0x46b9
jp 0x46b9
movq 0xd9b4(%rip), %rdi      # 0x11fc8
leaq 0x7f6e(%rip), %rsi      # 0xc589
movl $0x15, %edx
callq 0x2240
movq 0x48(%rsp), %rsi
subq 0x40(%rsp), %rsi
sarq $0x3, %rsi
movq 0xd98e(%rip), %rdi      # 0x11fc8
callq 0x2170
movq %rax, %r14
leaq 0x7f7d(%rip), %rsi      # 0xc5c6
movl $0x2d, %edx
movq %rax, %rdi
callq 0x2240
xorps %xmm0, %xmm0
cvtss2sd 0x10(%rsp), %xmm0
movq %r14, %rdi
callq 0x2300
movq %rax, %rdi
callq 0x20f0
leaq 0x60(%rsp), %rdi
leaq 0x28(%rsp), %rsi
movq 0x18(%rsp), %rdx
movss 0x10(%rsp), %xmm0
movss 0x4(%rsp), %xmm1
movl $0x2, %ecx
callq 0x5770
leaq 0x60(%rsp), %rdi
callq 0x583a
leaq 0x60(%rsp), %rdi
callq 0x59b0
xorl %edi, %edi
callq 0x2260
movl $0xffffffff, %edi       # imm = 0xFFFFFFFF
callq 0x3b9b
movq 0xd908(%rip), %rdi      # 0x11fc8
leaq 0x7ebb(%rip), %rsi      # 0xc582
movl $0x1c, %edx
callq 0x2240
movq 0x48(%rsp), %rsi
subq 0x40(%rsp), %rsi
sarq $0x3, %rsi
movq 0xd8e2(%rip), %rdi      # 0x11fc8
callq 0x2170
movq %rax, %r14
leaq 0x7eaa(%rip), %rsi      # 0xc59f
movl $0xc, %edx
movq %rax, %rdi
callq 0x2240
movq %r14, %rdi
movl %ebp, %esi
callq 0x2350
movq %rax, %r14
leaq 0x7e96(%rip), %rsi      # 0xc5ac
movl $0x1, %edx
movq %rax, %rdi
callq 0x2240
movq 0x48(%rsp), %rax
subq 0x40(%rsp), %rax
sarq $0x3, %rax
leaq -0x1(%rax), %rsi
imulq %rax, %rsi
shrq %rsi
movq %r14, %rdi
callq 0x2170
movq %rax, %r14
leaq 0x7e60(%rip), %rsi      # 0xc5ae
movl $0x8, %edx
movq %rax, %rdi
callq 0x2240
movq %r14, %rdi
callq 0x20f0
leaq 0x110(%rsp), %rdi
leaq 0x28(%rsp), %rsi
movss (%rsp), %xmm0
callq 0x5a0c
leaq 0x60(%rsp), %rdi
leaq 0x110(%rsp), %rsi
movq 0x18(%rsp), %rdx
movss (%rsp), %xmm0
movss 0x4(%rsp), %xmm1
movl $0x2, %ecx
callq 0x5388
leaq 0x60(%rsp), %rdi
callq 0x544e
leaq 0x60(%rsp), %rdi
callq 0x55c4
leaq 0x110(%rsp), %rdi
callq 0x4e24
jmp 0x46a8
movq %rax, %rbx
leaq 0x60(%rsp), %rdi
callq 0x55c4
jmp 0x47d9
movq %rax, %rbx
leaq 0x110(%rsp), %rdi
callq 0x4e24
jmp 0x4800
jmp 0x47fd
movq %rax, %rbx
leaq 0x60(%rsp), %rdi
callq 0x59b0
jmp 0x4800
jmp 0x47fd
jmp 0x4865
movq %rax, %rbx
leaq 0x28(%rsp), %rdi
callq 0x5b2a
jmp 0x4854
jmp 0x4810
jmp 0x4847
movq %rax, %rbx
leaq 0x60(%rsp), %rdi
callq 0x55c4
jmp 0x484a
jmp 0x4847
movq %rax, %rbx
leaq 0x60(%rsp), %rdi
callq 0x4d62
jmp 0x4854
jmp 0x4836
jmp 0x4836
jmp 0x4836
movq %rax, %rbx
jmp 0x4854
jmp 0x489f
jmp 0x4865
jmp 0x489f
jmp 0x489f
jmp 0x4865
jmp 0x486a
movq %rax, %rbx
leaq 0x28(%rsp), %rdi
callq 0x4e24
leaq 0x130(%rsp), %rdi
callq 0x2060
jmp 0x48bc
jmp 0x489f
movq %rax, %rbx
jmp 0x4884
movq %rax, %rbx
cmpl $0x0, (%r14)
jne 0x4884
movl %r13d, (%r14)
jmp 0x4884
movq %rax, %rbx
cmpl $0x0, (%r15)
jne 0x4884
movl %r13d, (%r15)
movq 0x60(%rsp), %rdi
leaq 0x70(%rsp), %rax
cmpq %rax, %rdi
je 0x48a2
callq 0x21e0
jmp 0x48a2
movq %rax, %rbx
jmp 0x48bc
movq %rax, %rbx
movq 0x130(%rsp), %rdi
leaq 0x140(%rsp), %rax
cmpq %rax, %rdi
je 0x48bc
callq 0x21e0
movq %rbx, %rdi
callq 0x2360