// File: /workspace/github_cpp_makefile_star2_O3/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 $0x1, %edi
jle 0x4387
movq %rsi, %r15
movslq %edi, %rax
movq %rax, 0x58(%rsp)
movss 0x8384(%rip), %xmm0     # 0xc0ac
movss %xmm0, (%rsp)
movss 0x837b(%rip), %xmm0     # 0xc0b0
movss %xmm0, 0x4(%rsp)
movl $0x2, %eax
movq %rax, 0x8(%rsp)
movl $0x1, %ebx
movq $0x0, 0x10(%rsp)
leaq 0x130(%rsp), %r12
leaq 0x60(%rsp), %r14
leaq 0x28(%rsp), %r13
movl $0x1, %eax
movq %rax, 0x18(%rsp)
movq %rsi, 0x20(%rsp)
movq (%r15,%rbx,8), %rsi
movq %r12, %rdi
movq %r14, %rdx
callq 0x20c0
movq %r12, %rdi
leaq 0x878c(%rip), %rsi      # 0xc519
callq 0x2080
testl %eax, %eax
je 0x4313
movq %r12, %rdi
leaq 0x877c(%rip), %rsi      # 0xc520
callq 0x2080
testl %eax, %eax
je 0x3e0c
movq %r12, %rdi
leaq 0x876f(%rip), %rsi      # 0xc526
callq 0x2080
testl %eax, %eax
je 0x3e79
movq %r12, %rdi
leaq 0x8764(%rip), %rsi      # 0xc532
callq 0x2080
testl %eax, %eax
je 0x3edd
movq %r12, %rdi
leaq 0x8755(%rip), %rsi      # 0xc53a
callq 0x2080
testl %eax, %eax
je 0x3f94
cmpq $0x0, 0x10(%rsp)
jne 0x435e
movq (%r15,%rbx,8), %rax
movq %rax, 0x10(%rsp)
jmp 0x3f67
movq 0x8(%r15,%rbx,8), %rsi
movq %r14, %rdi
movq %r13, %rdx
callq 0x20c0
movq 0x60(%rsp), %r14
callq 0x2040
movq %rax, %rbp
movl (%rax), %r15d
movl $0x0, (%rax)
movq %r14, %rdi
movq %r13, %rsi
movl $0xa, %edx
callq 0x22a0
movq 0x28(%rsp), %rdx
subq %r14, %rdx
je 0x4324
movl (%rbp), %ecx
cmpl $0x22, %ecx
je 0x4330
testl %ecx, %ecx
jne 0x3e64
movl %r15d, (%rbp)
movq %rax, 0x18(%rsp)
cmpq 0x68(%rsp), %rdx
je 0x3f41
jmp 0x431a
movq 0x8(%r15,%rbx,8), %rsi
movq %r14, %rdi
movq %r13, %rdx
callq 0x20c0
movq 0x60(%rsp), %r14
callq 0x2040
movq %rax, %rbp
movl (%rax), %r15d
movl $0x0, (%rax)
movq %r14, %rdi
movq %r13, %rsi
callq 0x2280
movss %xmm0, (%rsp)
movq 0x28(%rsp), %rax
subq %r14, %rax
je 0x4352
movl (%rbp), %ecx
cmpl $0x22, %ecx
je 0x4346
testl %ecx, %ecx
jne 0x3ed1
movl %r15d, (%rbp)
cmpq 0x68(%rsp), %rax
je 0x3f41
jmp 0x433c
movq 0x8(%r15,%rbx,8), %rsi
movq %r14, %rdi
movq %r13, %rdx
callq 0x20c0
movq 0x60(%rsp), %r14
callq 0x2040
movq %rax, %rbp
movl (%rax), %r15d
movl $0x0, (%rax)
movq %r14, %rdi
movq %r13, %rsi
callq 0x2280
movq 0x28(%rsp), %rax
subq %r14, %rax
je 0x437b
movl (%rbp), %ecx
cmpl $0x22, %ecx
je 0x436f
testl %ecx, %ecx
jne 0x3f30
movl %r15d, (%rbp)
movss %xmm0, 0x4(%rsp)
cmpq 0x68(%rsp), %rax
jne 0x4365
movq 0x60(%rsp), %rdi
leaq 0x70(%rsp), %rax
cmpq %rax, %rdi
leaq 0x60(%rsp), %r14
leaq 0x28(%rsp), %r13
movq 0x20(%rsp), %r15
je 0x3f64
callq 0x21d0
incq %rbx
movq 0x130(%rsp), %rdi
leaq 0x140(%rsp), %rax
cmpq %rax, %rdi
je 0x3f81
callq 0x21d0
incq %rbx
cmpq 0x58(%rsp), %rbx
jl 0x3d74
jmp 0x40a3
movq 0x8(%r15,%rbx,8), %rsi
movq %r14, %rdi
movq %r13, %rdx
callq 0x20c0
movq $0x0, 0x8(%rsp)
movl $0x5, %ecx
movq %r14, %rdi
leaq 0x8587(%rip), %rsi      # 0xc543
xorl %edx, %edx
callq 0x2290
testq %rax, %rax
je 0x408b
movl $0x5, %ecx
movq %r14, %rdi
leaq 0x856e(%rip), %rsi      # 0xc549
xorl %edx, %edx
callq 0x2290
testq %rax, %rax
je 0x4065
movl $0x4, %ecx
movq %r14, %rdi
leaq 0x8559(%rip), %rsi      # 0xc54f
xorl %edx, %edx
callq 0x2290
testq %rax, %rax
je 0x406c
movl $0x5, %ecx
movq %r14, %rdi
leaq 0x8543(%rip), %rsi      # 0xc554
xorl %edx, %edx
callq 0x2290
testq %rax, %rax
je 0x4073
movq %r14, %rdi
leaq 0x8533(%rip), %rsi      # 0xc55a
callq 0x2080
testl %eax, %eax
je 0x407a
movq %r14, %rdi
leaq 0x8526(%rip), %rsi      # 0xc560
callq 0x2080
testl %eax, %eax
je 0x4081
movq %r14, %rdi
leaq 0x851a(%rip), %rsi      # 0xc567
callq 0x2080
movl $0x6, %ecx
movq %rcx, 0x8(%rsp)
testl %eax, %eax
je 0x408b
jmp 0x4695
movl $0x1, %eax
jmp 0x4086
movl $0x2, %eax
jmp 0x4086
movl $0x3, %eax
jmp 0x4086
movl $0x4, %eax
jmp 0x4086
movl $0x5, %eax
movq %rax, 0x8(%rsp)
movq 0x60(%rsp), %rdi
leaq 0x70(%rsp), %rax
cmpq %rax, %rdi
jne 0x3f5f
jmp 0x3f64
leaq 0x130(%rsp), %rbx
movq %rbx, %rdi
movq 0x10(%rsp), %r14
movq %r14, %rsi
movl $0x8, %edx
callq 0x2390
testq %r14, %r14
je 0x40df
movq 0x130(%rsp), %rax
movq -0x18(%rax), %rax
testb $0x5, 0x150(%rsp,%rax)
jne 0x43ce
movq 0x8(%rsp), %rdx
cmpl $0x3, %edx
je 0x421d
cmpl $0x5, %edx
jne 0x4420
testq %r14, %r14
jne 0x4102
movq 0xded6(%rip), %rbx      # 0x11fd8
leaq 0x28(%rsp), %rdi
movq %rbx, %rsi
callq 0x3262
movq 0xdeb2(%rip), %rdi      # 0x11fc8
leaq 0x8465(%rip), %rsi      # 0xc582
movl $0x1c, %edx
callq 0x2230
movq 0x30(%rsp), %rsi
subq 0x28(%rsp), %rsi
sarq $0x3, %rsi
movabsq $-0x5555555555555555, %r14 # imm = 0xAAAAAAAAAAAAAAAB
imulq %r14, %rsi
movq 0xde7e(%rip), %rdi      # 0x11fc8
callq 0x2170
movq %rax, %rbx
leaq 0x8446(%rip), %rsi      # 0xc59f
movl $0xc, %edx
movq %rax, %rdi
callq 0x2230
movq 0x40(%rsp), %rsi
movq %rbx, %rdi
callq 0x21e0
movq %rax, %rbx
leaq 0x842f(%rip), %rsi      # 0xc5ac
movl $0x1, %edx
movq %rax, %rdi
callq 0x2230
movq 0x30(%rsp), %rax
subq 0x28(%rsp), %rax
sarq $0x3, %rax
imulq %r14, %rax
leaq -0x1(%rax), %rsi
imulq %rax, %rsi
shrq %rsi
movq %rbx, %rdi
callq 0x2170
movq %rax, %rbx
leaq 0x83f5(%rip), %rsi      # 0xc5ae
movl $0x8, %edx
movq %rax, %rdi
callq 0x2230
movq (%rbx), %rax
movq -0x18(%rax), %rdi
addq %rbx, %rdi
movl $0xa, %esi
callq 0x21f0
movsbl %al, %esi
movq %rbx, %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 0x5348
leaq 0x60(%rsp), %rdi
callq 0x540e
jmp 0x429b
movss 0x7e87(%rip), %xmm0     # 0xc0ac
ucomiss (%rsp), %xmm0
jbe 0x441b
testq %r14, %r14
jne 0x423d
movq 0xdd9d(%rip), %rsi      # 0x11fd8
jmp 0x4245
leaq 0x130(%rsp), %rsi
leaq 0x60(%rsp), %rdi
callq 0x2fd3
leaq 0x28(%rsp), %rdi
leaq 0x60(%rsp), %rsi
movss (%rsp), %xmm0
callq 0x55c8
leaq 0x60(%rsp), %rdi
callq 0x4d48
leaq 0x60(%rsp), %rdi
leaq 0x28(%rsp), %rsi
movq 0x18(%rsp), %rdx
movss (%rsp), %xmm0
movss 0x4(%rsp), %xmm1
movl $0x2, %ecx
callq 0x5348
leaq 0x60(%rsp), %rdi
callq 0x540e
movq 0xe8(%rsp), %rdi
testq %rdi, %rdi
je 0x42ad
callq 0x21d0
movq 0xd0(%rsp), %rdi
testq %rdi, %rdi
je 0x42bf
callq 0x21d0
movq 0xb8(%rsp), %rdi
testq %rdi, %rdi
je 0x42d1
callq 0x21d0
leaq 0xa0(%rsp), %rdi
callq 0x5c40
leaq 0x60(%rsp), %rdi
callq 0x4e10
leaq 0x28(%rsp), %rdi
callq 0x4e10
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 0x3b75
movl $0xffffffff, %edi       # imm = 0xFFFFFFFF
callq 0x3b75
leaq 0x82c9(%rip), %rdi      # 0xc5f4
callq 0x2150
leaq 0x82bd(%rip), %rdi      # 0xc5f4
callq 0x22c0
movl $0xffffffff, %edi       # imm = 0xFFFFFFFF
callq 0x3b75
leaq 0x82ac(%rip), %rdi      # 0xc5f9
callq 0x22c0
leaq 0x82a0(%rip), %rdi      # 0xc5f9
callq 0x2150
movl $0xffffffff, %edi       # imm = 0xFFFFFFFF
jmp 0x4315
movl $0xffffffff, %edi       # imm = 0xFFFFFFFF
callq 0x3b75
leaq 0x8283(%rip), %rdi      # 0xc5f9
callq 0x22c0
leaq 0x8277(%rip), %rdi      # 0xc5f9
callq 0x2150
leaq 0x130(%rsp), %rdi
xorl %esi, %esi
movl $0x8, %edx
callq 0x2390
movq 0xdc36(%rip), %rsi      # 0x11fd8
movl $0x1, %eax
movq %rax, 0x18(%rsp)
movss 0x7cf8(%rip), %xmm0     # 0xc0ac
movss %xmm0, (%rsp)
movss 0x7cef(%rip), %xmm0     # 0xc0b0
movss %xmm0, 0x4(%rsp)
movl $0x2, %edx
jmp 0x4436
movq 0xdc1b(%rip), %rdi      # 0x11ff0
leaq 0x8192(%rip), %rsi      # 0xc56e
movl $0x13, %edx
callq 0x2230
movq 0x10(%rsp), %rbx
movq %rbx, %rdi
callq 0x20e0
movq 0xdbf6(%rip), %rdi      # 0x11ff0
movq %rbx, %rsi
movq %rax, %rdx
callq 0x2230
movq 0xdbe4(%rip), %rdi      # 0x11ff0
callq 0x20f0
movl $0xffffffff, %edi       # imm = 0xFFFFFFFF
callq 0x2250
movl $0x3, %edx
testq %r14, %r14
jne 0x442e
movq 0xdbac(%rip), %rsi      # 0x11fd8
jmp 0x4436
leaq 0x130(%rsp), %rsi
leaq 0x28(%rsp), %rdi
callq 0x3ae6
movss 0x7c6c(%rip), %xmm3     # 0xc0b4
movss (%rsp), %xmm0
ucomiss 0x7c58(%rip), %xmm0     # 0xc0ac
jne 0x44c8
jp 0x44c8
movq 0x40(%rsp), %rax
movq 0x48(%rsp), %rcx
subq %rax, %rcx
je 0x44c8
sarq $0x3, %rcx
cmpq $0x1, %rcx
adcq $0x0, %rcx
movss 0x7c39(%rip), %xmm1     # 0xc0b4
xorl %edx, %edx
movss 0x7c33(%rip), %xmm0     # 0xc0b8
xorl %esi, %esi
movaps %xmm0, %xmm2
xorps %xmm3, %xmm3
cmpq %rsi, %rdx
je 0x44aa
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 0x448a
minss %xmm1, %xmm3
incq %rdx
movaps %xmm3, %xmm1
cmpq %rcx, %rdx
jne 0x4485
movss %xmm3, 0x10(%rsp)
movq 0x28(%rsp), %rax
movq 0x30(%rsp), %rcx
cmpq %rcx, %rax
jne 0x44f7
xorl %ebx, %ebx
movsd 0x7ba1(%rip), %xmm0     # 0xc088
movsd %xmm0, 0x58(%rsp)
movsd 0x7b9b(%rip), %xmm0     # 0xc090
jmp 0x4567
movss 0x7bb9(%rip), %xmm3     # 0xc0b8
movss 0x7bad(%rip), %xmm1     # 0xc0b4
xorl %ebx, %ebx
movss 0x7ba3(%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 0x4535
movaps %xmm3, %xmm4
movss (%rsp), %xmm3
ucomiss %xmm2, %xmm3
minss %xmm1, %xmm2
sbbl $-0x1, %ebx
addq $0x4, %rax
movaps %xmm2, %xmm1
movaps %xmm4, %xmm3
cmpq %rcx, %rax
jne 0x4511
xorps %xmm0, %xmm0
cvtss2sd %xmm2, %xmm0
movsd %xmm0, 0x58(%rsp)
xorps %xmm0, %xmm0
cvtss2sd %xmm4, %xmm0
movsd %xmm0, 0x20(%rsp)
movq 0xda54(%rip), %rdi      # 0x11fc8
leaq 0x803c(%rip), %rsi      # 0xc5b7
movl $0xe, %edx
callq 0x2230
movq 0xda3c(%rip), %rdi      # 0x11fc8
movsd 0x58(%rsp), %xmm0
callq 0x22f0
movq %rax, %r14
leaq 0x80e5(%rip), %rsi      # 0xc686
movl $0x1, %edx
movq %rax, %rdi
callq 0x2230
movq %r14, %rdi
movsd 0x20(%rsp), %xmm0
callq 0x22f0
movq %rax, %r14
leaq 0x7bea(%rip), %rsi      # 0xc1b0
movl $0x1, %edx
movq %rax, %rdi
callq 0x2230
movq %r14, %rdi
callq 0x20f0
movss (%rsp), %xmm0
ucomiss 0x7ac5(%rip), %xmm0     # 0xc0ac
jne 0x469f
jp 0x469f
movq 0xd9ce(%rip), %rdi      # 0x11fc8
leaq 0x7f88(%rip), %rsi      # 0xc589
movl $0x15, %edx
callq 0x2230
movq 0x48(%rsp), %rsi
subq 0x40(%rsp), %rsi
sarq $0x3, %rsi
movq 0xd9a8(%rip), %rdi      # 0x11fc8
callq 0x2170
movq %rax, %rbx
leaq 0x7f97(%rip), %rsi      # 0xc5c6
movl $0x2d, %edx
movq %rax, %rdi
callq 0x2230
xorps %xmm0, %xmm0
cvtss2sd 0x10(%rsp), %xmm0
movq %rbx, %rdi
callq 0x22f0
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 0x573c
leaq 0x60(%rsp), %rdi
callq 0x5806
leaq 0x60(%rsp), %rdi
callq 0x597c
xorl %edi, %edi
callq 0x2250
movl $0xffffffff, %edi       # imm = 0xFFFFFFFF
callq 0x3b75
movq 0xd922(%rip), %rdi      # 0x11fc8
leaq 0x7ed5(%rip), %rsi      # 0xc582
movl $0x1c, %edx
callq 0x2230
movq 0x48(%rsp), %rsi
subq 0x40(%rsp), %rsi
sarq $0x3, %rsi
movq 0xd8fc(%rip), %rdi      # 0x11fc8
callq 0x2170
movq %rax, %r14
leaq 0x7ec4(%rip), %rsi      # 0xc59f
movl $0xc, %edx
movq %rax, %rdi
callq 0x2230
movq %r14, %rdi
movl %ebx, %esi
callq 0x2340
movq %rax, %rbx
leaq 0x7eb0(%rip), %rsi      # 0xc5ac
movl $0x1, %edx
movq %rax, %rdi
callq 0x2230
movq 0x48(%rsp), %rax
subq 0x40(%rsp), %rax
sarq $0x3, %rax
leaq -0x1(%rax), %rsi
imulq %rax, %rsi
shrq %rsi
movq %rbx, %rdi
callq 0x2170
movq %rax, %rbx
leaq 0x7e7a(%rip), %rsi      # 0xc5ae
movl $0x8, %edx
movq %rax, %rdi
callq 0x2230
movq %rbx, %rdi
callq 0x20f0
leaq 0x110(%rsp), %rdi
leaq 0x28(%rsp), %rsi
movss (%rsp), %xmm0
callq 0x59d8
leaq 0x60(%rsp), %rdi
leaq 0x110(%rsp), %rsi
movq 0x18(%rsp), %rdx
movss (%rsp), %xmm0
movss 0x4(%rsp), %xmm1
movl $0x2, %ecx
callq 0x5348
leaq 0x60(%rsp), %rdi
callq 0x540e
leaq 0x60(%rsp), %rdi
callq 0x5584
leaq 0x110(%rsp), %rdi
callq 0x4e10
jmp 0x468e
movq %rax, %rbx
leaq 0x60(%rsp), %rdi
callq 0x5584
jmp 0x47bf
movq %rax, %rbx
leaq 0x110(%rsp), %rdi
callq 0x4e10
jmp 0x4810
jmp 0x480d
movq %rax, %rbx
leaq 0x60(%rsp), %rdi
callq 0x597c
jmp 0x4810
jmp 0x480d
jmp 0x484b
jmp 0x47e7
jmp 0x4827
movq %rax, %rbx
leaq 0x60(%rsp), %rdi
callq 0x5584
jmp 0x482a
jmp 0x4827
movq %rax, %rbx
leaq 0x60(%rsp), %rdi
callq 0x4d48
jmp 0x4834
jmp 0x481c
jmp 0x481c
jmp 0x481c
movq %rax, %rbx
leaq 0x28(%rsp), %rdi
callq 0x5afc
jmp 0x4834
movq %rax, %rbx
jmp 0x4834
jmp 0x487a
jmp 0x484b
jmp 0x487a
movq %rax, %rbx
leaq 0x28(%rsp), %rdi
callq 0x4e10
leaq 0x130(%rsp), %rdi
callq 0x2060
jmp 0x4897
jmp 0x487a
jmp 0x484b
jmp 0x4852
jmp 0x487a
movq %rax, %rbx
jmp 0x485f
jmp 0x4852
movq %rax, %rbx
cmpl $0x0, (%rbp)
jne 0x485f
movl %r15d, (%rbp)
movq 0x60(%rsp), %rdi
leaq 0x70(%rsp), %rax
cmpq %rax, %rdi
je 0x487d
callq 0x21d0
jmp 0x487d
movq %rax, %rbx
jmp 0x4897
movq %rax, %rbx
movq 0x130(%rsp), %rdi
leaq 0x140(%rsp), %rax
cmpq %rax, %rdi
je 0x4897
callq 0x21d0
movq %rbx, %rdi
callq 0x2350