// File: /workspace/github_c_makefile_star2_O0/Tarsnap[P]spiped/spipe/main.c
// Function: main
int
main(int argc, char * argv[])
{
	/* Command-line parameters. */
	const char * opt_b = NULL;
	int opt_f = 0;
	int opt_g = 0;
	int opt_j = 0;
	const char * opt_k = NULL;
	int opt_o_set = 0;
	double opt_o = 0.0;
	const char * opt_t = NULL;

	/* Working variables. */
	struct events_threads ET;
	struct sock_addr * sa_b = NULL;
	struct sock_addr ** sas_t;
	struct proto_secret * K;
	const char * ch;
	int s[2];
	void * conn_cookie;
	int rc;

	WARNP_INIT;

	/* Parse the command line. */
	while ((ch = GETOPT(argc, argv)) != NULL) {
		GETOPT_SWITCH(ch) {
		GETOPT_OPTARG("-b"):
			if (opt_b)
				usage();
			opt_b = optarg;
			break;
		GETOPT_OPT("-f"):
			if (opt_f)
				usage();
			opt_f = 1;
			break;
		GETOPT_OPT("-g"):
			if (opt_g)
				usage();
			opt_g = 1;
			break;
		GETOPT_OPT("-j"):
			if (opt_j)
				usage();
			opt_j = 1;
			break;
		GETOPT_OPTARG("-k"):
			if (opt_k)
				usage();
			opt_k = optarg;
			break;
		GETOPT_OPTARG("-o"):
			if (opt_o_set)
				usage();
			opt_o_set = 1;
			if (PARSENUM(&opt_o, optarg, 0, INFINITY))
				OPT_EPARSE(ch, optarg);
			break;
		GETOPT_OPTARG("-t"):
			if (opt_t)
				usage();
			opt_t = optarg;
			break;
		GETOPT_OPT("-v"):
			fprintf(stderr, "spipe @VERSION@\n");
			exit(0);
		GETOPT_MISSING_ARG:
			warn0("Missing argument to %s", ch);
			usage();
		GETOPT_DEFAULT:
			warn0("illegal option -- %s", ch);
			usage();
		}
	}
	argc -= optind;
	argv += optind;

	/* We should have processed all the arguments. */
	if (argc != 0)
		usage();
	(void)argv; /* argv is not used beyond this point. */

	/* Set defaults. */
	if (opt_o == 0.0)
		opt_o = 5.0;

	/* Sanity-check options. */
	if (opt_f && opt_g)
		usage();
	if (opt_k == NULL)
		usage();
	if (!(opt_o > 0.0))
		usage();
	if ((opt_t == NULL) || sock_addr_validate(opt_t))
		usage();
	if (opt_b && sock_addr_validate(opt_b))
		usage();

	/* Initialize the "events & threads" cookie. */
	ET.conndone = 0;
	ET.connection_error = 0;
	ET.stopped = 0;

	/* Resolve target address. */
	if ((sas_t = sock_resolve(opt_t)) == NULL) {
		warnp("Error resolving socket address: %s", opt_t);
		goto err0;
	}
	if (sas_t[0] == NULL) {
		warn0("No addresses found for %s", opt_t);
		goto err1;
	}

	/* Resolve bind address (if applicable). */
	if (opt_b && ((sa_b = sock_resolve_one(opt_b, 1)) == NULL)) {
		warnp("Failed to get bind address");
		goto err1;
	}

	/* Load the keying data. */
	if ((K = proto_crypt_secret(opt_k)) == NULL) {
		warnp("Error reading shared secret");
		goto err2;
	}

	/*
	 * Create a socket pair to push bits through.  The spiped protocol
	 * code expects to be handed a socket to read/write bits to, and our
	 * stdin/stdout might not be sockets (in fact, almost certainly aren't
	 * sockets); so we'll hand one end of the socket pair to the spiped
	 * protocol code and shuttle bits between stdin/stdout and the other
	 * end of the socket pair ourselves.
	 */
	if (socketpair(AF_UNIX, SOCK_STREAM, 0, s)) {
		warnp("socketpair");
		goto err3;
	}

	/* Set up a connection. */
	if ((conn_cookie = proto_conn_create(s[1], sas_t, sa_b, 0, opt_f,
	    opt_g, opt_j, K, opt_o, callback_conndied, &ET)) == NULL) {
		warnp("Could not set up connection");
		goto err4;
	}

	/* sas_t and s[1] are now owned by proto_conn. */
	sas_t = NULL;
	s[1] = -1;

	/* Push bits from the socket to stdout. */
	if (pushbits(s[0], STDOUT_FILENO, &ET.threads[1])) {
		warnp("Could not push bits");
		goto err5;
	}

	/* Push bits from stdin into the socket. */
	if (pushbits(STDIN_FILENO, s[0], &ET.threads[0])) {
		warnp("Could not push bits");
		goto err6;
	}

	/* Register a handler for SIGTERM. */
	if (graceful_shutdown_initialize(&callback_graceful_shutdown, &ET)) {
		warn0("Failed to start graceful_shutdown timer");
		goto err7;
	}

	/* Loop until we're done with the connection. */
	if (events_spin(&ET.conndone)) {
		warnp("Error running event loop");
		goto err5;
	}

	/* Wait for threads to finish (if necessary) */
	if (ET.stopped == 0) {
		if ((rc = pthread_join(ET.threads[0], NULL)) != 0) {
			warn0("pthread_join: %s", strerror(rc));
			goto err3;
		}
		if ((rc = pthread_join(ET.threads[1], NULL)) != 0) {
			warn0("pthread_join: %s", strerror(rc));
			goto err3;
		}
	}

	/* Clean up. */
	if (close(s[0]))
		warnp("close");
	proto_crypt_secret_free(K);
	sock_addr_free(sa_b);

	/* Handle a connection error. */
	if (ET.connection_error)
		goto err0;

	/* Success! */
	exit(0);

err7:
	if ((rc = pthread_cancel(ET.threads[0])) != 0)
		warn0("pthread_cancel: %s", strerror(rc));
	if ((rc = pthread_join(ET.threads[0], NULL)) != 0)
		warn0("pthread_join: %s", strerror(rc));
err6:
	if ((rc = pthread_cancel(ET.threads[1])) != 0)
		warn0("pthread_cancel: %s", strerror(rc));
	if ((rc = pthread_join(ET.threads[1], NULL)) != 0)
		warn0("pthread_join: %s", strerror(rc));
err5:
	proto_conn_drop(conn_cookie, PROTO_CONN_CANCELLED);
err4:
	if ((s[1] != -1) && close(s[1]))
		warnp("close");
	if (close(s[0]))
		warnp("close");
err3:
	proto_crypt_secret_free(K);
err2:
	sock_addr_free(sa_b);
err1:
	sock_addr_freelist(sas_t);
err0:
	/* Failure! */
	exit(1);
}

// Assembly:
pushq %rbp
movq %rsp, %rbp
pushq %rbx
subq $0x118, %rsp            # imm = 0x118
movl $0x0, -0xc(%rbp)
movl %edi, -0x10(%rbp)
movq %rsi, -0x18(%rbp)
movq $0x0, -0x20(%rbp)
movl $0x0, -0x24(%rbp)
movl $0x0, -0x28(%rbp)
movl $0x0, -0x2c(%rbp)
movq $0x0, -0x38(%rbp)
movl $0x0, -0x3c(%rbp)
xorps %xmm0, %xmm0
movsd %xmm0, -0x48(%rbp)
movq $0x0, -0x50(%rbp)
movq $0x0, -0x78(%rbp)
movq -0x18(%rbp), %rax
cmpq $0x0, (%rax)
je 0x3774
movq -0x18(%rbp), %rax
movq (%rax), %rdi
callq 0x9870
jmp 0x3776
jmp 0x3778
movl -0x10(%rbp), %edi
movq -0x18(%rbp), %rsi
callq 0x6b80
movq %rax, -0x90(%rbp)
cmpq $0x0, %rax
je 0x3eb8
movq $0x9d, -0xb0(%rbp)
movq -0xb0(%rbp), %rax
decq %rax
movq %rax, -0xb8(%rbp)
movl $0x0, -0xbc(%rbp)
leaq 0x7(%rip), %rax         # 0x37c9
movq %rax, -0xc8(%rbp)
leaq 0x30fb0(%rip), %rax     # 0x34780
cmpl $0x0, (%rax)
je 0x37f4
movq -0x90(%rbp), %rdi
callq 0x7240
movq -0xb0(%rbp), %rcx
addq %rcx, %rax
movq %rax, -0xd0(%rbp)
jmp 0x3810
movq -0xb8(%rbp), %rax
movq %rax, %rcx
addq $0x1, %rcx
movq %rcx, -0xb8(%rbp)
movq %rax, -0xd0(%rbp)
movq -0xd0(%rbp), %rax
addq $-0x9e, %rax
movq %rax, -0xd8(%rbp)
subq $0x2b, %rax
ja 0x3e42
movq -0xd8(%rbp), %rax
leaq 0x18828(%rip), %rcx     # 0x1c064
movslq (%rcx,%rax,4), %rax
addq %rcx, %rax
jmpq *%rax
leaq 0x30f34(%rip), %rax     # 0x34780
cmpl $0x0, (%rax)
je 0x3881
leaq 0x30f20(%rip), %rax     # 0x34778
cmpq $0x0, (%rax)
je 0x3860
jmp 0x387f
leaq 0x188ad(%rip), %rdi     # 0x1c114
leaq 0x188b5(%rip), %rsi     # 0x1c123
movl $0x9e, %edx
leaq 0x188b0(%rip), %rcx     # 0x1c12a
callq 0x3140
jmp 0x38b4
movq -0xb0(%rbp), %rax
movl $0x9e, %esi
subq %rax, %rsi
leaq 0x188aa(%rip), %rdi     # 0x1c141
movl $0x1, %edx
callq 0x7390
movq -0xc8(%rbp), %rax
movq %rax, -0xe0(%rbp)
jmp 0x45c5
cmpq $0x0, -0x20(%rbp)
je 0x38c0
callq 0x45d0
leaq 0x30eb1(%rip), %rax     # 0x34778
movq (%rax), %rax
movq %rax, -0x20(%rbp)
jmp 0x3eb3
leaq 0x30ea6(%rip), %rax     # 0x34780
cmpl $0x0, (%rax)
je 0x38e1
jmp 0x3911
movq -0xb0(%rbp), %rax
movl $0xa3, %esi
subq %rax, %rsi
leaq 0x1884d(%rip), %rdi     # 0x1c144
xorl %edx, %edx
callq 0x7390
movq -0xc8(%rbp), %rax
movq %rax, -0xe0(%rbp)
jmp 0x45c5
cmpl $0x0, -0x24(%rbp)
je 0x391c
callq 0x45d0
movl $0x1, -0x24(%rbp)
jmp 0x3eb3
leaq 0x30e51(%rip), %rax     # 0x34780
cmpl $0x0, (%rax)
je 0x3936
jmp 0x3966
movq -0xb0(%rbp), %rax
movl $0xa8, %esi
subq %rax, %rsi
leaq 0x187fb(%rip), %rdi     # 0x1c147
xorl %edx, %edx
callq 0x7390
movq -0xc8(%rbp), %rax
movq %rax, -0xe0(%rbp)
jmp 0x45c5
cmpl $0x0, -0x28(%rbp)
je 0x3971
callq 0x45d0
movl $0x1, -0x28(%rbp)
jmp 0x3eb3
leaq 0x30dfc(%rip), %rax     # 0x34780
cmpl $0x0, (%rax)
je 0x398b
jmp 0x39bb
movq -0xb0(%rbp), %rax
movl $0xad, %esi
subq %rax, %rsi
leaq 0x187a9(%rip), %rdi     # 0x1c14a
xorl %edx, %edx
callq 0x7390
movq -0xc8(%rbp), %rax
movq %rax, -0xe0(%rbp)
jmp 0x45c5
cmpl $0x0, -0x2c(%rbp)
je 0x39c6
callq 0x45d0
movl $0x1, -0x2c(%rbp)
jmp 0x3eb3
leaq 0x30da7(%rip), %rax     # 0x34780
cmpl $0x0, (%rax)
je 0x3a0e
leaq 0x30d93(%rip), %rax     # 0x34778
cmpq $0x0, (%rax)
je 0x39ed
jmp 0x3a0c
leaq 0x18720(%rip), %rdi     # 0x1c114
leaq 0x18728(%rip), %rsi     # 0x1c123
movl $0xb2, %edx
leaq 0x18723(%rip), %rcx     # 0x1c12a
callq 0x3140
jmp 0x3a41
movq -0xb0(%rbp), %rax
movl $0xb2, %esi
subq %rax, %rsi
leaq 0x18729(%rip), %rdi     # 0x1c14d
movl $0x1, %edx
callq 0x7390
movq -0xc8(%rbp), %rax
movq %rax, -0xe0(%rbp)
jmp 0x45c5
cmpq $0x0, -0x38(%rbp)
je 0x3a4d
callq 0x45d0
leaq 0x30d24(%rip), %rax     # 0x34778
movq (%rax), %rax
movq %rax, -0x38(%rbp)
jmp 0x3eb3
leaq 0x30d19(%rip), %rax     # 0x34780
cmpl $0x0, (%rax)
je 0x3a9c
leaq 0x30d05(%rip), %rax     # 0x34778
cmpq $0x0, (%rax)
je 0x3a7b
jmp 0x3a9a
leaq 0x18692(%rip), %rdi     # 0x1c114
leaq 0x1869a(%rip), %rsi     # 0x1c123
movl $0xb7, %edx
leaq 0x18695(%rip), %rcx     # 0x1c12a
callq 0x3140
jmp 0x3acf
movq -0xb0(%rbp), %rax
movl $0xb7, %esi
subq %rax, %rsi
leaq 0x1869e(%rip), %rdi     # 0x1c150
movl $0x1, %edx
callq 0x7390
movq -0xc8(%rbp), %rax
movq %rax, -0xe0(%rbp)
jmp 0x45c5
cmpl $0x0, -0x3c(%rbp)
je 0x3ada
callq 0x45d0
movl $0x1, -0x3c(%rbp)
callq 0x3400
movl $0x0, (%rax)
movsd 0x18524(%rip), %xmm0    # 0x1c018
movsd %xmm0, -0x48(%rbp)
movsd -0x48(%rbp), %xmm0
movsd 0x1850a(%rip), %xmm1    # 0x1c010
divsd %xmm1, %xmm0
movsd %xmm0, -0x48(%rbp)
xorps %xmm1, %xmm1
ucomisd %xmm1, %xmm0
jbe 0x3b3e
leaq 0x30c59(%rip), %rax     # 0x34778
movq (%rax), %rdi
xorps %xmm0, %xmm0
movsd 0x18503(%rip), %xmm1    # 0x1c030
xorl %esi, %esi
callq 0x4600
movsd %xmm0, -0x48(%rbp)
jmp 0x3c76
movsd 0x184da(%rip), %xmm0    # 0x1c020
movsd %xmm0, -0x48(%rbp)
movb $0x1, %al
testb $0x1, %al
jne 0x3b56
jmp 0x3bf4
leaq 0x30c1b(%rip), %rax     # 0x34778
movq (%rax), %rax
movq %rax, -0xf8(%rbp)
movsd -0x48(%rbp), %xmm1
xorps %xmm0, %xmm0
xorl %eax, %eax
ucomisd %xmm1, %xmm0
cmovael %eax, %eax
cltq
movq %rax, -0xf0(%rbp)
movsd -0x48(%rbp), %xmm2
xorps %xmm1, %xmm1
movss 0x184cf(%rip), %xmm0    # 0x1c060
xorps %xmm3, %xmm3
movss %xmm3, -0xe8(%rbp)
ucomisd %xmm2, %xmm1
movss %xmm0, -0xe4(%rbp)
jae 0x3bba
movss -0xe8(%rbp), %xmm0
movss %xmm0, -0xe4(%rbp)
movq -0xf0(%rbp), %rsi
movq -0xf8(%rbp), %rdi
movss -0xe4(%rbp), %xmm0
cvttss2si %xmm0, %rdx
xorl %r8d, %r8d
movl %r8d, %ecx
callq 0x46b0
cvtsi2sd %rax, %xmm0
movsd %xmm0, -0x48(%rbp)
movsd %xmm0, -0x100(%rbp)
jmp 0x3c6e
leaq 0x30b7d(%rip), %rax     # 0x34778
movq (%rax), %rdi
movsd -0x48(%rbp), %xmm0
movsd 0x1841d(%rip), %xmm2    # 0x1c028
movaps %xmm0, %xmm1
subsd %xmm2, %xmm1
cvttsd2si %xmm1, %rax
cvttsd2si %xmm0, %rcx
movq %rcx, %rdx
sarq $0x3f, %rdx
andq %rdx, %rax
orq %rax, %rcx
xorl %r9d, %r9d
movl %r9d, %esi
movl %r9d, %r8d
callq 0x4770
movq %rax, %xmm0
movaps 0x183fd(%rip), %xmm1    # 0x1c040
punpckldq %xmm1, %xmm0    # xmm0 = xmm0[0],xmm1[0],xmm0[1],xmm1[1]
movapd 0x18401(%rip), %xmm1    # 0x1c050
subpd %xmm1, %xmm0
movaps %xmm0, %xmm1
unpckhpd %xmm0, %xmm0            # xmm0 = xmm0[1,1]
addsd %xmm1, %xmm0
movsd %xmm0, -0x48(%rbp)
xorps %xmm0, %xmm0
movsd %xmm0, -0x100(%rbp)
movsd -0x100(%rbp), %xmm0
callq 0x3400
cmpl $0x0, (%rax)
je 0x3ce5
jmp 0x3c82
jmp 0x3c84
callq 0x3400
cmpl $0x0, (%rax)
je 0x3cba
movq -0x90(%rbp), %rsi
leaq 0x30adc(%rip), %rax     # 0x34778
movq (%rax), %rdx
leaq 0x184ad(%rip), %rdi     # 0x1c153
movb $0x0, %al
callq 0x9930
callq 0x3400
movl $0x0, (%rax)
jmp 0x3cd9
movq -0x90(%rbp), %rsi
leaq 0x30ab0(%rip), %rax     # 0x34778
movq (%rax), %rdx
leaq 0x18481(%rip), %rdi     # 0x1c153
movb $0x0, %al
callq 0x9b80
jmp 0x3cdb
movl $0x1, %edi
callq 0x3130
jmp 0x3eb3
leaq 0x30a8f(%rip), %rax     # 0x34780
cmpl $0x0, (%rax)
je 0x3d26
leaq 0x30a7b(%rip), %rax     # 0x34778
cmpq $0x0, (%rax)
je 0x3d05
jmp 0x3d24
leaq 0x18408(%rip), %rdi     # 0x1c114
leaq 0x18410(%rip), %rsi     # 0x1c123
movl $0xbe, %edx
leaq 0x1840b(%rip), %rcx     # 0x1c12a
callq 0x3140
jmp 0x3d59
movq -0xb0(%rbp), %rax
movl $0xbe, %esi
subq %rax, %rsi
leaq 0x18435(%rip), %rdi     # 0x1c171
movl $0x1, %edx
callq 0x7390
movq -0xc8(%rbp), %rax
movq %rax, -0xe0(%rbp)
jmp 0x45c5
cmpq $0x0, -0x50(%rbp)
je 0x3d65
callq 0x45d0
leaq 0x30a0c(%rip), %rax     # 0x34778
movq (%rax), %rax
movq %rax, -0x50(%rbp)
jmp 0x3eb3
leaq 0x30a01(%rip), %rax     # 0x34780
cmpl $0x0, (%rax)
je 0x3d86
jmp 0x3db6
movq -0xb0(%rbp), %rax
movl $0xc3, %esi
subq %rax, %rsi
leaq 0x183d8(%rip), %rdi     # 0x1c174
xorl %edx, %edx
callq 0x7390
movq -0xc8(%rbp), %rax
movq %rax, -0xe0(%rbp)
jmp 0x45c5
movq 0x20233(%rip), %rax     # 0x23ff0
movq (%rax), %rdi
leaq 0x183b0(%rip), %rsi     # 0x1c177
movb $0x0, %al
callq 0x3540
xorl %edi, %edi
callq 0x3130
leaq 0x309a4(%rip), %rax     # 0x34780
cmpl $0x0, (%rax)
je 0x3de3
jmp 0x3e0a
movq -0xb0(%rbp), %rax
movl $0xc6, %edi
subq %rax, %rdi
callq 0x7620
movq -0xc8(%rbp), %rax
movq %rax, -0xe0(%rbp)
jmp 0x45c5
jmp 0x3e0c
movq -0x90(%rbp), %rsi
leaq 0x1836e(%rip), %rdi     # 0x1c188
movb $0x0, %al
callq 0x9b80
callq 0x3400
movl $0x0, (%rax)
callq 0x45d0
jmp 0x3e8c
leaq 0x30946(%rip), %rax     # 0x34780
movl $0x1, (%rax)
jmp 0x3eb3
leaq 0x30937(%rip), %rax     # 0x34780
cmpl $0x0, (%rax)
je 0x3e50
jmp 0x3e8c
movl -0xbc(%rbp), %eax
cmpl $0x0, %eax
jne 0x3e79
movq -0xb0(%rbp), %rax
movl $0xc9, %edi
subq %rax, %rdi
callq 0x76e0
movl $0x1, -0xbc(%rbp)
movq -0xc8(%rbp), %rax
movq %rax, -0xe0(%rbp)
jmp 0x45c5
jmp 0x3e8e
movq -0x90(%rbp), %rsi
leaq 0x18303(%rip), %rdi     # 0x1c19f
movb $0x0, %al
callq 0x9b80
callq 0x3400
movl $0x0, (%rax)
callq 0x45d0
jmp 0x3778
leaq 0x206d9(%rip), %rax     # 0x24598
movl (%rax), %ecx
movl -0x10(%rbp), %eax
subl %ecx, %eax
movl %eax, -0x10(%rbp)
leaq 0x206c8(%rip), %rax     # 0x24598
movl (%rax), %ecx
movq -0x18(%rbp), %rax
movslq %ecx, %rcx
shlq $0x3, %rcx
addq %rcx, %rax
movq %rax, -0x18(%rbp)
cmpl $0x0, -0x10(%rbp)
je 0x3eef
callq 0x45d0
movsd -0x48(%rbp), %xmm0
xorps %xmm1, %xmm1
ucomisd %xmm1, %xmm0
jne 0x3f0c
jp 0x3f0c
movsd 0x18101(%rip), %xmm0    # 0x1c008
movsd %xmm0, -0x48(%rbp)
cmpl $0x0, -0x24(%rbp)
je 0x3f1d
cmpl $0x0, -0x28(%rbp)
je 0x3f1d
callq 0x45d0
cmpq $0x0, -0x38(%rbp)
jne 0x3f29
callq 0x45d0
movsd -0x48(%rbp), %xmm0
xorps %xmm1, %xmm1
ucomisd %xmm1, %xmm0
ja 0x3f3c
callq 0x45d0
cmpq $0x0, -0x50(%rbp)
je 0x3f51
movq -0x50(%rbp), %rdi
callq 0x97c0
cmpl $0x0, %eax
je 0x3f56
callq 0x45d0
cmpq $0x0, -0x20(%rbp)
je 0x3f70
movq -0x20(%rbp), %rdi
callq 0x97c0
cmpl $0x0, %eax
je 0x3f70
callq 0x45d0
movl $0x0, -0x60(%rbp)
movl $0x0, -0x5c(%rbp)
movl $0x0, -0x58(%rbp)
movq -0x50(%rbp), %rdi
callq 0x7cd0
movq %rax, -0x80(%rbp)
cmpq $0x0, %rax
jne 0x3fdc
jmp 0x3f9a
callq 0x3400
cmpl $0x0, (%rax)
je 0x3fc3
movq -0x50(%rbp), %rsi
leaq 0x18205(%rip), %rdi     # 0x1c1b4
movb $0x0, %al
callq 0x9930
callq 0x3400
movl $0x0, (%rax)
jmp 0x3fd5
movq -0x50(%rbp), %rsi
leaq 0x181e6(%rip), %rdi     # 0x1c1b4
movb $0x0, %al
callq 0x9b80
jmp 0x3fd7
jmp 0x45bb
movq -0x80(%rbp), %rax
cmpq $0x0, (%rax)
jne 0x400a
jmp 0x3fe8
movq -0x50(%rbp), %rsi
leaq 0x181e4(%rip), %rdi     # 0x1c1d7
movb $0x0, %al
callq 0x9b80
callq 0x3400
movl $0x0, (%rax)
jmp 0x45b2
cmpq $0x0, -0x20(%rbp)
je 0x4065
movq -0x20(%rbp), %rdi
movl $0x1, %esi
callq 0x8720
movq %rax, -0x78(%rbp)
cmpq $0x0, %rax
jne 0x4065
jmp 0x402b
callq 0x3400
cmpl $0x0, (%rax)
je 0x4050
leaq 0x181b5(%rip), %rdi     # 0x1c1f1
movb $0x0, %al
callq 0x9930
callq 0x3400
movl $0x0, (%rax)
jmp 0x405e
leaq 0x1819a(%rip), %rdi     # 0x1c1f1
movb $0x0, %al
callq 0x9b80
jmp 0x4060
jmp 0x45b2
movq -0x38(%rbp), %rdi
callq 0xa6b0
movq %rax, -0x88(%rbp)
cmpq $0x0, %rax
jne 0x40b7
jmp 0x407d
callq 0x3400
cmpl $0x0, (%rax)
je 0x40a2
leaq 0x1817e(%rip), %rdi     # 0x1c20c
movb $0x0, %al
callq 0x9930
callq 0x3400
movl $0x0, (%rax)
jmp 0x40b0
leaq 0x18163(%rip), %rdi     # 0x1c20c
movb $0x0, %al
callq 0x9b80
jmp 0x40b2
jmp 0x45a9
leaq -0x98(%rbp), %rcx
movl $0x1, %esi
xorl %edx, %edx
movl %esi, %edi
callq 0x3310
cmpl $0x0, %eax
je 0x410d
jmp 0x40d3
callq 0x3400
cmpl $0x0, (%rax)
je 0x40f8
leaq 0x18144(%rip), %rdi     # 0x1c228
movb $0x0, %al
callq 0x9930
callq 0x3400
movl $0x0, (%rax)
jmp 0x4106
leaq 0x18129(%rip), %rdi     # 0x1c228
movb $0x0, %al
callq 0x9b80
jmp 0x4108
jmp 0x459d
movl -0x94(%rbp), %edi
movq -0x80(%rbp), %rsi
movq -0x78(%rbp), %rdx
movl -0x24(%rbp), %r8d
movl -0x28(%rbp), %r9d
movl -0x2c(%rbp), %ebx
movq -0x88(%rbp), %r11
movsd -0x48(%rbp), %xmm0
xorl %ecx, %ecx
leaq 0x6f5(%rip), %r10       # 0x4830
leaq -0x70(%rbp), %rax
movl %ebx, (%rsp)
movq %r11, 0x8(%rsp)
movq %r10, 0x10(%rsp)
movq %rax, 0x18(%rsp)
callq 0x9f60
movq %rax, -0xa0(%rbp)
cmpq $0x0, %rax
jne 0x419f
jmp 0x4165
callq 0x3400
cmpl $0x0, (%rax)
je 0x418a
leaq 0x180bd(%rip), %rdi     # 0x1c233
movb $0x0, %al
callq 0x9930
callq 0x3400
movl $0x0, (%rax)
jmp 0x4198
leaq 0x180a2(%rip), %rdi     # 0x1c233
movb $0x0, %al
callq 0x9b80
jmp 0x419a
jmp 0x4500
movq $0x0, -0x80(%rbp)
movl $0xffffffff, -0x94(%rbp) # imm = 0xFFFFFFFF
movl -0x98(%rbp), %edi
leaq -0x70(%rbp), %rdx
addq $0x8, %rdx
movl $0x1, %esi
callq 0x4a20
cmpl $0x0, %eax
je 0x420a
jmp 0x41d0
callq 0x3400
cmpl $0x0, (%rax)
je 0x41f5
leaq 0x1806e(%rip), %rdi     # 0x1c24f
movb $0x0, %al
callq 0x9930
callq 0x3400
movl $0x0, (%rax)
jmp 0x4203
leaq 0x18053(%rip), %rdi     # 0x1c24f
movb $0x0, %al
callq 0x9b80
jmp 0x4205
jmp 0x44ef
movl -0x98(%rbp), %esi
leaq -0x70(%rbp), %rdx
xorl %edi, %edi
callq 0x4a20
cmpl $0x0, %eax
je 0x425c
jmp 0x4222
callq 0x3400
cmpl $0x0, (%rax)
je 0x4247
leaq 0x1801c(%rip), %rdi     # 0x1c24f
movb $0x0, %al
callq 0x9930
callq 0x3400
movl $0x0, (%rax)
jmp 0x4255
leaq 0x18001(%rip), %rdi     # 0x1c24f
movb $0x0, %al
callq 0x9b80
jmp 0x4257
jmp 0x446b
leaq 0x6ad(%rip), %rdi       # 0x4910
leaq -0x70(%rbp), %rsi
callq 0xbfc0
cmpl $0x0, %eax
je 0x4291
jmp 0x4273
leaq 0x17fe9(%rip), %rdi     # 0x1c263
movb $0x0, %al
callq 0x9b80
callq 0x3400
movl $0x0, (%rax)
jmp 0x43e7
leaq -0x70(%rbp), %rdi
addq $0x10, %rdi
callq 0x4fa0
cmpl $0x0, %eax
je 0x42df
jmp 0x42a5
callq 0x3400
cmpl $0x0, (%rax)
je 0x42ca
leaq 0x17fd5(%rip), %rdi     # 0x1c28b
movb $0x0, %al
callq 0x9930
callq 0x3400
movl $0x0, (%rax)
jmp 0x42d8
leaq 0x17fba(%rip), %rdi     # 0x1c28b
movb $0x0, %al
callq 0x9b80
jmp 0x42da
jmp 0x44ef
cmpl $0x0, -0x58(%rbp)
jne 0x4377
movq -0x70(%rbp), %rdi
xorl %eax, %eax
movl %eax, %esi
callq 0x3030
movl %eax, -0xa4(%rbp)
cmpl $0x0, %eax
je 0x432f
jmp 0x4303
movl -0xa4(%rbp), %edi
callq 0x3300
movq %rax, %rsi
leaq 0x17f8c(%rip), %rdi     # 0x1c2a4
movb $0x0, %al
callq 0x9b80
callq 0x3400
movl $0x0, (%rax)
jmp 0x459d
movq -0x68(%rbp), %rdi
xorl %eax, %eax
movl %eax, %esi
callq 0x3030
movl %eax, -0xa4(%rbp)
cmpl $0x0, %eax
je 0x4375
jmp 0x4349
movl -0xa4(%rbp), %edi
callq 0x3300
movq %rax, %rsi
leaq 0x17f46(%rip), %rdi     # 0x1c2a4
movb $0x0, %al
callq 0x9b80
callq 0x3400
movl $0x0, (%rax)
jmp 0x459d
jmp 0x4377
movl -0x98(%rbp), %edi
callq 0x30b0
cmpl $0x0, %eax
je 0x43c0
jmp 0x4389
callq 0x3400
cmpl $0x0, (%rax)
je 0x43ae
leaq 0x18b6a(%rip), %rdi     # 0x1cf04
movb $0x0, %al
callq 0x9930
callq 0x3400
movl $0x0, (%rax)
jmp 0x43bc
leaq 0x18b4f(%rip), %rdi     # 0x1cf04
movb $0x0, %al
callq 0x9b80
jmp 0x43be
jmp 0x43c0
movq -0x88(%rbp), %rdi
callq 0xa950
movq -0x78(%rbp), %rdi
callq 0x88c0
cmpl $0x0, -0x5c(%rbp)
je 0x43e0
jmp 0x45bb
xorl %edi, %edi
callq 0x3130
movq -0x70(%rbp), %rdi
callq 0x3390
movl %eax, -0xa4(%rbp)
cmpl $0x0, %eax
je 0x4426
jmp 0x43fd
movl -0xa4(%rbp), %edi
callq 0x3300
movq %rax, %rsi
leaq 0x17ea3(%rip), %rdi     # 0x1c2b5
movb $0x0, %al
callq 0x9b80
callq 0x3400
movl $0x0, (%rax)
jmp 0x4426
movq -0x70(%rbp), %rdi
xorl %eax, %eax
movl %eax, %esi
callq 0x3030
movl %eax, -0xa4(%rbp)
cmpl $0x0, %eax
je 0x4469
jmp 0x4440
movl -0xa4(%rbp), %edi
callq 0x3300
movq %rax, %rsi
leaq 0x17e4f(%rip), %rdi     # 0x1c2a4
movb $0x0, %al
callq 0x9b80
callq 0x3400
movl $0x0, (%rax)
jmp 0x4469
jmp 0x446b
movq -0x68(%rbp), %rdi
callq 0x3390
movl %eax, -0xa4(%rbp)
cmpl $0x0, %eax
je 0x44aa
jmp 0x4481
movl -0xa4(%rbp), %edi
callq 0x3300
movq %rax, %rsi
leaq 0x17e1f(%rip), %rdi     # 0x1c2b5
movb $0x0, %al
callq 0x9b80
callq 0x3400
movl $0x0, (%rax)
jmp 0x44aa
movq -0x68(%rbp), %rdi
xorl %eax, %eax
movl %eax, %esi
callq 0x3030
movl %eax, -0xa4(%rbp)
cmpl $0x0, %eax
je 0x44ed
jmp 0x44c4
movl -0xa4(%rbp), %edi
callq 0x3300
movq %rax, %rsi
leaq 0x17dcb(%rip), %rdi     # 0x1c2a4
movb $0x0, %al
callq 0x9b80
callq 0x3400
movl $0x0, (%rax)
jmp 0x44ed
jmp 0x44ef
movq -0xa0(%rbp), %rdi
movl $0x1, %esi
callq 0x9dc0
cmpl $-0x1, -0x94(%rbp)
je 0x4552
movl -0x94(%rbp), %edi
callq 0x30b0
cmpl $0x0, %eax
je 0x4552
jmp 0x451b
callq 0x3400
cmpl $0x0, (%rax)
je 0x4540
leaq 0x189d8(%rip), %rdi     # 0x1cf04
movb $0x0, %al
callq 0x9930
callq 0x3400
movl $0x0, (%rax)
jmp 0x454e
leaq 0x189bd(%rip), %rdi     # 0x1cf04
movb $0x0, %al
callq 0x9b80
jmp 0x4550
jmp 0x4552
movl -0x98(%rbp), %edi
callq 0x30b0
cmpl $0x0, %eax
je 0x459b
jmp 0x4564
callq 0x3400
cmpl $0x0, (%rax)
je 0x4589
leaq 0x1898f(%rip), %rdi     # 0x1cf04
movb $0x0, %al
callq 0x9930
callq 0x3400
movl $0x0, (%rax)
jmp 0x4597
leaq 0x18974(%rip), %rdi     # 0x1cf04
movb $0x0, %al
callq 0x9b80
jmp 0x4599
jmp 0x459b
jmp 0x459d
movq -0x88(%rbp), %rdi
callq 0xa950
movq -0x78(%rbp), %rdi
callq 0x88c0
movq -0x80(%rbp), %rdi
callq 0x8900
movl $0x1, %edi
callq 0x3130
movq -0xe0(%rbp), %rax
jmpq *%rax
nop