// File: /workspace/github_c_makefile_star2_O0/Tarsnap[P]kivaloo/s3/main.c
// Function: main
int
main(int argc, char * argv[])
{
	/* State variables. */
	struct s3_request_queue * Q;
	struct dns_reader * DR;
	struct dispatch_state * D;
	int s;

	/* Command-line parameters. */
	char * opt_k = NULL;
	char * opt_l = NULL;
	char * opt_p = NULL;
	size_t opt_n = 16;
	char * opt_r = NULL;
	char * opt_s = NULL;
	int opt_1 = 0;

	/* Working variable. */
	char * s3_key_id;
	char * s3_key_secret;
	struct sock_addr ** sas;
	char * s3_host;
	struct logging_file * logfile;
	size_t i;
	const char * ch;

	WARNP_INIT;

	/* Parse the command line. */
	while ((ch = GETOPT(argc, argv)) != NULL) {
		GETOPT_SWITCH(ch) {
		GETOPT_OPTARG("-k"):
			if (opt_k != NULL)
				usage();
			if ((opt_k = strdup(optarg)) == NULL)
				OPT_EPARSE(ch, optarg);
			break;
		GETOPT_OPTARG("-l"):
			if (opt_l != NULL)
				usage();
			if ((opt_l = strdup(optarg)) == NULL)
				OPT_EPARSE(ch, optarg);
			break;
		GETOPT_OPTARG("-n"):
			if (opt_n != 16)
				usage();
			if (PARSENUM(&opt_n, optarg, 1, 250)) {
				warn0("Maximum number of connections must"
				    " be in [1, 250]");
				exit(1);
			}
			break;
		GETOPT_OPTARG("-p"):
			if (opt_p != NULL)
				usage();
			if ((opt_p = strdup(optarg)) == NULL)
				OPT_EPARSE(ch, optarg);
			break;
		GETOPT_OPTARG("-r"):
			if (opt_r != NULL)
				usage();
			if ((opt_r = strdup(optarg)) == NULL)
				OPT_EPARSE(ch, optarg);
			break;
		GETOPT_OPTARG("-s"):
			if (opt_s != NULL)
				usage();
			if ((opt_s = strdup(optarg)) == NULL)
				OPT_EPARSE(ch, optarg);
			break;
		GETOPT_OPT("--version"):
			fprintf(stderr, "kivaloo-s3 @VERSION@\n");
			exit(0);
		GETOPT_OPT("-1"):
			if (opt_1 != 0)
				usage();
			opt_1 = 1;
			break;
		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. */

	/* Sanity-check options. */
	if (opt_k == NULL)
		usage();
	if (opt_r == NULL)
		usage();
	if (opt_s == NULL)
		usage();

	/* Read the key file. */
	if (aws_readkeys(opt_k, &s3_key_id, &s3_key_secret)) {
		warnp("Error reading S3 keys from %s", opt_k);
		exit(1);
	}

	/* Create an S3 request queue. */
	if ((Q = s3_request_queue_init(s3_key_id, s3_key_secret, opt_r,
	    opt_n)) == NULL) {
		warnp("Error creating S3 request queue");
		exit(1);
	}

	/* Construct the S3 endpoint host name. */
	if (asprintf(&s3_host, "s3.%s.amazonaws.com:80", opt_r) == -1) {
		warnp("asprintf");
		exit(1);
	}

	/* Perform an initial DNS lookup for the S3 endpoint. */
	if ((sas = sock_resolve(s3_host)) == NULL) {
		warnp("Error resolving S3 endpoint: %s", s3_host);
		exit(1);
	}

	/* Add addresses to the request queue. */
	for (i = 0; sas[i] != NULL; i++) {
		if (s3_request_queue_addaddr(Q, sas[i], 600)) {
			warnp("Error adding S3 endpoint address");
			exit(1);
		}
	}

	/* Free the initial set of S3 endpoint addresses. */
	sock_addr_freelist(sas);

	/* Resolve the listening address. */
	if ((sas = sock_resolve(opt_s)) == NULL) {
		warnp("Error resolving socket address: %s", opt_s);
		exit(1);
	}
	if (sas[0] == NULL) {
		warn0("No addresses found for %s", opt_s);
		exit(1);
	}

	/* Create and bind a socket, and mark it as listening. */
	if (sas[1] != NULL)
		warn0("Listening on first of multiple addresses found for %s",
		    opt_s);
	if ((s = sock_listener(sas[0])) == -1)
		exit(1);

	/* If requested, create a log file. */
	if (opt_l != NULL) {
		if ((logfile = logging_open(opt_l)) == NULL) {
			warnp("Cannot open log file");
			exit(1);
		}
		s3_request_queue_log(Q, logfile);
	} else {
		logfile = NULL;
	}

	/* Daemonize and write pid. */
	if (opt_p == NULL) {
		if (asprintf(&opt_p, "%s.pid", opt_s) == -1) {
			warnp("asprintf");
			exit(1);
		}
	}
	if (daemonize(opt_p)) {
		warnp("Failed to daemonize");
		exit(1);
	}

	/* Start DNS lookups. */
	if ((DR = dns_reader_start(Q, s3_host)) == NULL) {
		warnp("Failed to start DNS resolution");
		exit(1);
	}

	/* Handle connections, one at once. */
	do {
		/* accept a connection. */
		if ((D = dispatch_accept(Q, s)) == NULL) {
			warnp("Error accepting new connection");
			exit(1);
		}

		/* Loop until the connection dies. */
		do {
			if (events_run()) {
				warnp("Error running event loop");
				exit(1);
			}
		} while (dispatch_alive(D));

		/* Clean up the connection. */
		if (dispatch_done(D))
			exit(1);
	} while (opt_1 == 0);

	/* Stop DNS lookups. */
	dns_reader_stop(DR);

	/* Free the S3 request queue. */
	s3_request_queue_free(Q);

	/* Close the log file, if we have one. */
	if (logfile != NULL)
		logging_close(logfile);

	/* Close the listening socket. */
	if (close(s))
		warnp("close");

	/* Free the address structures. */
	sock_addr_freelist(sas);

	/* Free string allocated by asprintf. */
	free(s3_host);

	/* Free key strings. */
	free(s3_key_id);
	insecure_memzero(s3_key_secret, strlen(s3_key_secret));
	free(s3_key_secret);

	/* Free option strings. */
	free(opt_k);
	free(opt_l);
	free(opt_p);
	free(opt_r);
	free(opt_s);

	/* Success! */
	return (0);
}

// Assembly:
pushq %rbp
movq %rsp, %rbp
subq $0xf0, %rsp
movl $0x0, -0x4(%rbp)
movl %edi, -0x8(%rbp)
movq %rsi, -0x10(%rbp)
movq $0x0, -0x38(%rbp)
movq $0x0, -0x40(%rbp)
movq $0x0, -0x48(%rbp)
movq $0x10, -0x50(%rbp)
movq $0x0, -0x58(%rbp)
movq $0x0, -0x60(%rbp)
movl $0x0, -0x64(%rbp)
movq -0x10(%rbp), %rax
cmpq $0x0, (%rax)
je 0x26a6
movq -0x10(%rbp), %rax
movq (%rax), %rdi
callq 0xe5b0
jmp 0x26a8
jmp 0x26aa
movl -0x8(%rbp), %edi
movq -0x10(%rbp), %rsi
callq 0xb3f0
movq %rax, -0xa0(%rbp)
cmpq $0x0, %rax
je 0x2fb6
movq $0x46, -0xa8(%rbp)
movq -0xa8(%rbp), %rax
decq %rax
movq %rax, -0xb0(%rbp)
movl $0x0, -0xb4(%rbp)
leaq 0x7(%rip), %rax         # 0x26fb
movq %rax, -0xc0(%rbp)
leaq 0x35186(%rip), %rax     # 0x37888
cmpl $0x0, (%rax)
je 0x2726
movq -0xa0(%rbp), %rdi
callq 0xbab0
movq -0xa8(%rbp), %rcx
addq %rcx, %rax
movq %rax, -0xc8(%rbp)
jmp 0x2742
movq -0xb0(%rbp), %rax
movq %rax, %rcx
addq $0x1, %rcx
movq %rcx, -0xb0(%rbp)
movq %rax, -0xc8(%rbp)
movq -0xc8(%rbp), %rax
addq $-0x47, %rax
movq %rax, -0xd0(%rbp)
subq $0x32, %rax
ja 0x2f40
movq -0xd0(%rbp), %rax
leaq 0x1b8b4(%rip), %rcx     # 0x1e020
movslq (%rcx,%rax,4), %rax
addq %rcx, %rax
jmpq *%rax
leaq 0x3510c(%rip), %rax     # 0x37888
cmpl $0x0, (%rax)
je 0x27b1
leaq 0x350f8(%rip), %rax     # 0x37880
cmpq $0x0, (%rax)
je 0x2790
jmp 0x27af
leaq 0x1b955(%rip), %rdi     # 0x1e0ec
leaq 0x1b95d(%rip), %rsi     # 0x1e0fb
movl $0x47, %edx
leaq 0x1b958(%rip), %rcx     # 0x1e102
callq 0x2200
jmp 0x27e4
movq -0xa8(%rbp), %rax
movl $0x47, %esi
subq %rax, %rsi
leaq 0x1b952(%rip), %rdi     # 0x1e119
movl $0x1, %edx
callq 0xbc00
movq -0xc0(%rbp), %rax
movq %rax, -0xd8(%rbp)
jmp 0x3663
cmpq $0x0, -0x38(%rbp)
je 0x27f0
callq 0x3670
leaq 0x35089(%rip), %rax     # 0x37880
movq (%rax), %rdi
callq 0x24b0
movq %rax, -0x38(%rbp)
cmpq $0x0, %rax
jne 0x286e
jmp 0x280b
jmp 0x280d
callq 0x20a0
cmpl $0x0, (%rax)
je 0x2843
movq -0xa0(%rbp), %rsi
leaq 0x3505b(%rip), %rax     # 0x37880
movq (%rax), %rdx
leaq 0x1b8ed(%rip), %rdi     # 0x1e11c
movb $0x0, %al
callq 0xe670
callq 0x20a0
movl $0x0, (%rax)
jmp 0x2862
movq -0xa0(%rbp), %rsi
leaq 0x3502f(%rip), %rax     # 0x37880
movq (%rax), %rdx
leaq 0x1b8c1(%rip), %rdi     # 0x1e11c
movb $0x0, %al
callq 0xe8c0
jmp 0x2864
movl $0x1, %edi
callq 0x2480
jmp 0x2fb1
leaq 0x3500e(%rip), %rax     # 0x37888
cmpl $0x0, (%rax)
je 0x28af
leaq 0x34ffa(%rip), %rax     # 0x37880
cmpq $0x0, (%rax)
je 0x288e
jmp 0x28ad
leaq 0x1b857(%rip), %rdi     # 0x1e0ec
leaq 0x1b85f(%rip), %rsi     # 0x1e0fb
movl $0x4d, %edx
leaq 0x1b85a(%rip), %rcx     # 0x1e102
callq 0x2200
jmp 0x28e2
movq -0xa8(%rbp), %rax
movl $0x4d, %esi
subq %rax, %rsi
leaq 0x1b875(%rip), %rdi     # 0x1e13a
movl $0x1, %edx
callq 0xbc00
movq -0xc0(%rbp), %rax
movq %rax, -0xd8(%rbp)
jmp 0x3663
cmpq $0x0, -0x40(%rbp)
je 0x28ee
callq 0x3670
leaq 0x34f8b(%rip), %rax     # 0x37880
movq (%rax), %rdi
callq 0x24b0
movq %rax, -0x40(%rbp)
cmpq $0x0, %rax
jne 0x296c
jmp 0x2909
jmp 0x290b
callq 0x20a0
cmpl $0x0, (%rax)
je 0x2941
movq -0xa0(%rbp), %rsi
leaq 0x34f5d(%rip), %rax     # 0x37880
movq (%rax), %rdx
leaq 0x1b7ef(%rip), %rdi     # 0x1e11c
movb $0x0, %al
callq 0xe670
callq 0x20a0
movl $0x0, (%rax)
jmp 0x2960
movq -0xa0(%rbp), %rsi
leaq 0x34f31(%rip), %rax     # 0x37880
movq (%rax), %rdx
leaq 0x1b7c3(%rip), %rdi     # 0x1e11c
movb $0x0, %al
callq 0xe8c0
jmp 0x2962
movl $0x1, %edi
callq 0x2480
jmp 0x2fb1
leaq 0x34f10(%rip), %rax     # 0x37888
cmpl $0x0, (%rax)
je 0x29ad
leaq 0x34efc(%rip), %rax     # 0x37880
cmpq $0x0, (%rax)
je 0x298c
jmp 0x29ab
leaq 0x1b759(%rip), %rdi     # 0x1e0ec
leaq 0x1b761(%rip), %rsi     # 0x1e0fb
movl $0x53, %edx
leaq 0x1b75c(%rip), %rcx     # 0x1e102
callq 0x2200
jmp 0x29e0
movq -0xa8(%rbp), %rax
movl $0x53, %esi
subq %rax, %rsi
leaq 0x1b77a(%rip), %rdi     # 0x1e13d
movl $0x1, %edx
callq 0xbc00
movq -0xc0(%rbp), %rax
movq %rax, -0xd8(%rbp)
jmp 0x3663
cmpq $0x10, -0x50(%rbp)
je 0x29ec
callq 0x3670
callq 0x20a0
movl $0x0, (%rax)
movq $0x1, -0x50(%rbp)
movq -0x50(%rbp), %rax
shrq %rax
movq %rax, -0x50(%rbp)
cmpq $0x0, %rax
jbe 0x2a60
leaq 0x34e69(%rip), %rax     # 0x37880
movq (%rax), %rdi
movsd 0x1b5e6(%rip), %xmm0    # 0x1e008
movsd 0x1b5e6(%rip), %xmm1    # 0x1e010
xorl %esi, %esi
callq 0x36b0
movaps %xmm0, %xmm1
cvttsd2si %xmm1, %rax
movq %rax, %rdx
sarq $0x3f, %rdx
movsd 0x1b5d0(%rip), %xmm1    # 0x1e018
subsd %xmm1, %xmm0
cvttsd2si %xmm0, %rcx
andq %rdx, %rcx
orq %rcx, %rax
movq %rax, -0x50(%rbp)
jmp 0x2af3
movq $-0x1, -0x50(%rbp)
xorl %eax, %eax
testb $0x1, %al
jne 0x2a70
jmp 0x2abc
leaq 0x34e09(%rip), %rax     # 0x37880
movq (%rax), %rdi
movq -0x50(%rbp), %rdx
xorl %eax, %eax
movl $0x1, %ecx
cmpq $0x0, %rdx
cmovbel %ecx, %eax
movslq %eax, %rsi
movq -0x50(%rbp), %rdx
xorl %eax, %eax
movl $0xfa, %ecx
cmpq $0x0, %rdx
cmovbel %ecx, %eax
movslq %eax, %rdx
xorl %r8d, %r8d
movl %r8d, %ecx
callq 0x3760
movq %rax, -0x50(%rbp)
movq %rax, -0xe0(%rbp)
jmp 0x2aec
leaq 0x34dbd(%rip), %rax     # 0x37880
movq (%rax), %rdi
movq -0x50(%rbp), %rcx
movl $0x1, %esi
movl $0xfa, %edx
xorl %r9d, %r9d
movl %r9d, %r8d
callq 0x3820
movq %rax, -0x50(%rbp)
xorl %eax, %eax
movq %rax, -0xe0(%rbp)
movq -0xe0(%rbp), %rax
callq 0x20a0
cmpl $0x0, (%rax)
je 0x2b22
jmp 0x2aff
leaq 0x1b63a(%rip), %rdi     # 0x1e140
movb $0x0, %al
callq 0xe8c0
callq 0x20a0
movl $0x0, (%rax)
movl $0x1, %edi
callq 0x2480
jmp 0x2fb1
leaq 0x34d5a(%rip), %rax     # 0x37888
cmpl $0x0, (%rax)
je 0x2b63
leaq 0x34d46(%rip), %rax     # 0x37880
cmpq $0x0, (%rax)
je 0x2b42
jmp 0x2b61
leaq 0x1b5a3(%rip), %rdi     # 0x1e0ec
leaq 0x1b5ab(%rip), %rsi     # 0x1e0fb
movl $0x5c, %edx
leaq 0x1b5a6(%rip), %rcx     # 0x1e102
callq 0x2200
jmp 0x2b96
movq -0xa8(%rbp), %rax
movl $0x5c, %esi
subq %rax, %rsi
leaq 0x1b5f9(%rip), %rdi     # 0x1e172
movl $0x1, %edx
callq 0xbc00
movq -0xc0(%rbp), %rax
movq %rax, -0xd8(%rbp)
jmp 0x3663
cmpq $0x0, -0x48(%rbp)
je 0x2ba2
callq 0x3670
leaq 0x34cd7(%rip), %rax     # 0x37880
movq (%rax), %rdi
callq 0x24b0
movq %rax, -0x48(%rbp)
cmpq $0x0, %rax
jne 0x2c20
jmp 0x2bbd
jmp 0x2bbf
callq 0x20a0
cmpl $0x0, (%rax)
je 0x2bf5
movq -0xa0(%rbp), %rsi
leaq 0x34ca9(%rip), %rax     # 0x37880
movq (%rax), %rdx
leaq 0x1b53b(%rip), %rdi     # 0x1e11c
movb $0x0, %al
callq 0xe670
callq 0x20a0
movl $0x0, (%rax)
jmp 0x2c14
movq -0xa0(%rbp), %rsi
leaq 0x34c7d(%rip), %rax     # 0x37880
movq (%rax), %rdx
leaq 0x1b50f(%rip), %rdi     # 0x1e11c
movb $0x0, %al
callq 0xe8c0
jmp 0x2c16
movl $0x1, %edi
callq 0x2480
jmp 0x2fb1
leaq 0x34c5c(%rip), %rax     # 0x37888
cmpl $0x0, (%rax)
je 0x2c61
leaq 0x34c48(%rip), %rax     # 0x37880
cmpq $0x0, (%rax)
je 0x2c40
jmp 0x2c5f
leaq 0x1b4a5(%rip), %rdi     # 0x1e0ec
leaq 0x1b4ad(%rip), %rsi     # 0x1e0fb
movl $0x62, %edx
leaq 0x1b4a8(%rip), %rcx     # 0x1e102
callq 0x2200
jmp 0x2c94
movq -0xa8(%rbp), %rax
movl $0x62, %esi
subq %rax, %rsi
leaq 0x1b4fe(%rip), %rdi     # 0x1e175
movl $0x1, %edx
callq 0xbc00
movq -0xc0(%rbp), %rax
movq %rax, -0xd8(%rbp)
jmp 0x3663
cmpq $0x0, -0x58(%rbp)
je 0x2ca0
callq 0x3670
leaq 0x34bd9(%rip), %rax     # 0x37880
movq (%rax), %rdi
callq 0x24b0
movq %rax, -0x58(%rbp)
cmpq $0x0, %rax
jne 0x2d1e
jmp 0x2cbb
jmp 0x2cbd
callq 0x20a0
cmpl $0x0, (%rax)
je 0x2cf3
movq -0xa0(%rbp), %rsi
leaq 0x34bab(%rip), %rax     # 0x37880
movq (%rax), %rdx
leaq 0x1b43d(%rip), %rdi     # 0x1e11c
movb $0x0, %al
callq 0xe670
callq 0x20a0
movl $0x0, (%rax)
jmp 0x2d12
movq -0xa0(%rbp), %rsi
leaq 0x34b7f(%rip), %rax     # 0x37880
movq (%rax), %rdx
leaq 0x1b411(%rip), %rdi     # 0x1e11c
movb $0x0, %al
callq 0xe8c0
jmp 0x2d14
movl $0x1, %edi
callq 0x2480
jmp 0x2fb1
leaq 0x34b5e(%rip), %rax     # 0x37888
cmpl $0x0, (%rax)
je 0x2d5f
leaq 0x34b4a(%rip), %rax     # 0x37880
cmpq $0x0, (%rax)
je 0x2d3e
jmp 0x2d5d
leaq 0x1b3a7(%rip), %rdi     # 0x1e0ec
leaq 0x1b3af(%rip), %rsi     # 0x1e0fb
movl $0x68, %edx
leaq 0x1b3aa(%rip), %rcx     # 0x1e102
callq 0x2200
jmp 0x2d92
movq -0xa8(%rbp), %rax
movl $0x68, %esi
subq %rax, %rsi
leaq 0x1b403(%rip), %rdi     # 0x1e178
movl $0x1, %edx
callq 0xbc00
movq -0xc0(%rbp), %rax
movq %rax, -0xd8(%rbp)
jmp 0x3663
cmpq $0x0, -0x60(%rbp)
je 0x2d9e
callq 0x3670
leaq 0x34adb(%rip), %rax     # 0x37880
movq (%rax), %rdi
callq 0x24b0
movq %rax, -0x60(%rbp)
cmpq $0x0, %rax
jne 0x2e1c
jmp 0x2db9
jmp 0x2dbb
callq 0x20a0
cmpl $0x0, (%rax)
je 0x2df1
movq -0xa0(%rbp), %rsi
leaq 0x34aad(%rip), %rax     # 0x37880
movq (%rax), %rdx
leaq 0x1b33f(%rip), %rdi     # 0x1e11c
movb $0x0, %al
callq 0xe670
callq 0x20a0
movl $0x0, (%rax)
jmp 0x2e10
movq -0xa0(%rbp), %rsi
leaq 0x34a81(%rip), %rax     # 0x37880
movq (%rax), %rdx
leaq 0x1b313(%rip), %rdi     # 0x1e11c
movb $0x0, %al
callq 0xe8c0
jmp 0x2e12
movl $0x1, %edi
callq 0x2480
jmp 0x2fb1
leaq 0x34a60(%rip), %rax     # 0x37888
cmpl $0x0, (%rax)
je 0x2e2f
jmp 0x2e5f
movq -0xa8(%rbp), %rax
movl $0x6e, %esi
subq %rax, %rsi
leaq 0x1b336(%rip), %rdi     # 0x1e17b
xorl %edx, %edx
callq 0xbc00
movq -0xc0(%rbp), %rax
movq %rax, -0xd8(%rbp)
jmp 0x3663
movq 0x24192(%rip), %rax     # 0x26ff8
movq (%rax), %rdi
leaq 0x1b315(%rip), %rsi     # 0x1e185
movb $0x0, %al
callq 0x22e0
xorl %edi, %edi
callq 0x2480
leaq 0x34a03(%rip), %rax     # 0x37888
cmpl $0x0, (%rax)
je 0x2e8c
jmp 0x2ebc
movq -0xa8(%rbp), %rax
movl $0x71, %esi
subq %rax, %rsi
leaq 0x1b2f9(%rip), %rdi     # 0x1e19b
xorl %edx, %edx
callq 0xbc00
movq -0xc0(%rbp), %rax
movq %rax, -0xd8(%rbp)
jmp 0x3663
cmpl $0x0, -0x64(%rbp)
je 0x2ec7
callq 0x3670
movl $0x1, -0x64(%rbp)
jmp 0x2fb1
leaq 0x349ae(%rip), %rax     # 0x37888
cmpl $0x0, (%rax)
je 0x2ee1
jmp 0x2f08
movq -0xa8(%rbp), %rax
movl $0x76, %edi
subq %rax, %rdi
callq 0xbe90
movq -0xc0(%rbp), %rax
movq %rax, -0xd8(%rbp)
jmp 0x3663
jmp 0x2f0a
movq -0xa0(%rbp), %rsi
leaq 0x1b286(%rip), %rdi     # 0x1e19e
movb $0x0, %al
callq 0xe8c0
callq 0x20a0
movl $0x0, (%rax)
callq 0x3670
jmp 0x2f8a
leaq 0x34950(%rip), %rax     # 0x37888
movl $0x1, (%rax)
jmp 0x2fb1
leaq 0x34941(%rip), %rax     # 0x37888
cmpl $0x0, (%rax)
je 0x2f4e
jmp 0x2f8a
movl -0xb4(%rbp), %eax
cmpl $0x0, %eax
jne 0x2f77
movq -0xa8(%rbp), %rax
movl $0x79, %edi
subq %rax, %rdi
callq 0xbf50
movl $0x1, -0xb4(%rbp)
movq -0xc0(%rbp), %rax
movq %rax, -0xd8(%rbp)
jmp 0x3663
jmp 0x2f8c
movq -0xa0(%rbp), %rsi
leaq 0x1b21b(%rip), %rdi     # 0x1e1b5
movb $0x0, %al
callq 0xe8c0
callq 0x20a0
movl $0x0, (%rax)
callq 0x3670
jmp 0x26aa
leaq 0x245fb(%rip), %rax     # 0x275b8
movl (%rax), %ecx
movl -0x8(%rbp), %eax
subl %ecx, %eax
movl %eax, -0x8(%rbp)
leaq 0x245ea(%rip), %rax     # 0x275b8
movl (%rax), %ecx
movq -0x10(%rbp), %rax
movslq %ecx, %rcx
shlq $0x3, %rcx
addq %rcx, %rax
movq %rax, -0x10(%rbp)
cmpl $0x0, -0x8(%rbp)
je 0x2fed
callq 0x3670
cmpq $0x0, -0x38(%rbp)
jne 0x2ff9
callq 0x3670
cmpq $0x0, -0x58(%rbp)
jne 0x3005
callq 0x3670
cmpq $0x0, -0x60(%rbp)
jne 0x3011
callq 0x3670
movq -0x38(%rbp), %rdi
leaq -0x70(%rbp), %rsi
leaq -0x78(%rbp), %rdx
callq 0x4e50
cmpl $0x0, %eax
je 0x3070
jmp 0x3029
callq 0x20a0
cmpl $0x0, (%rax)
je 0x3052
movq -0x38(%rbp), %rsi
leaq 0x1b18c(%rip), %rdi     # 0x1e1ca
movb $0x0, %al
callq 0xe670
callq 0x20a0
movl $0x0, (%rax)
jmp 0x3064
movq -0x38(%rbp), %rsi
leaq 0x1b16d(%rip), %rdi     # 0x1e1ca
movb $0x0, %al
callq 0xe8c0
jmp 0x3066
movl $0x1, %edi
callq 0x2480
movq -0x70(%rbp), %rdi
movq -0x78(%rbp), %rsi
movq -0x58(%rbp), %rdx
movq -0x50(%rbp), %rcx
callq 0xfb30
movq %rax, -0x18(%rbp)
cmpq $0x0, %rax
jne 0x30d0
jmp 0x3091
callq 0x20a0
cmpl $0x0, (%rax)
je 0x30b6
leaq 0x1b146(%rip), %rdi     # 0x1e1e8
movb $0x0, %al
callq 0xe670
callq 0x20a0
movl $0x0, (%rax)
jmp 0x30c4
leaq 0x1b12b(%rip), %rdi     # 0x1e1e8
movb $0x0, %al
callq 0xe8c0
jmp 0x30c6
movl $0x1, %edi
callq 0x2480
movq -0x58(%rbp), %rdx
leaq -0x88(%rbp), %rdi
leaq 0x1b126(%rip), %rsi     # 0x1e208
movb $0x0, %al
callq 0xafe0
cmpl $-0x1, %eax
jne 0x312f
jmp 0x30f0
callq 0x20a0
cmpl $0x0, (%rax)
je 0x3115
leaq 0x1b11e(%rip), %rdi     # 0x1e21f
movb $0x0, %al
callq 0xe670
callq 0x20a0
movl $0x0, (%rax)
jmp 0x3123
leaq 0x1b103(%rip), %rdi     # 0x1e21f
movb $0x0, %al
callq 0xe8c0
jmp 0x3125
movl $0x1, %edi
callq 0x2480
movq -0x88(%rbp), %rdi
callq 0xca00
movq %rax, -0x80(%rbp)
cmpq $0x0, %rax
jne 0x3194
jmp 0x3147
callq 0x20a0
cmpl $0x0, (%rax)
je 0x3173
movq -0x88(%rbp), %rsi
leaq 0x1b0c9(%rip), %rdi     # 0x1e228
movb $0x0, %al
callq 0xe670
callq 0x20a0
movl $0x0, (%rax)
jmp 0x3188
movq -0x88(%rbp), %rsi
leaq 0x1b0a7(%rip), %rdi     # 0x1e228
movb $0x0, %al
callq 0xe8c0
jmp 0x318a
movl $0x1, %edi
callq 0x2480
movq $0x0, -0x98(%rbp)
movq -0x80(%rbp), %rax
movq -0x98(%rbp), %rcx
cmpq $0x0, (%rax,%rcx,8)
je 0x322d
movq -0x18(%rbp), %rdi
movq -0x80(%rbp), %rax
movq -0x98(%rbp), %rcx
movq (%rax,%rcx,8), %rsi
movl $0x258, %edx            # imm = 0x258
callq 0xfce0
cmpl $0x0, %eax
je 0x3214
jmp 0x31d5
callq 0x20a0
cmpl $0x0, (%rax)
je 0x31fa
leaq 0x1b062(%rip), %rdi     # 0x1e248
movb $0x0, %al
callq 0xe670
callq 0x20a0
movl $0x0, (%rax)
jmp 0x3208
leaq 0x1b047(%rip), %rdi     # 0x1e248
movb $0x0, %al
callq 0xe8c0
jmp 0x320a
movl $0x1, %edi
callq 0x2480
jmp 0x3216
movq -0x98(%rbp), %rax
addq $0x1, %rax
movq %rax, -0x98(%rbp)
jmp 0x319f
movq -0x80(%rbp), %rdi
callq 0xd630
movq -0x60(%rbp), %rdi
callq 0xca00
movq %rax, -0x80(%rbp)
cmpq $0x0, %rax
jne 0x3292
jmp 0x324b
callq 0x20a0
cmpl $0x0, (%rax)
je 0x3274
movq -0x60(%rbp), %rsi
leaq 0x1b009(%rip), %rdi     # 0x1e269
movb $0x0, %al
callq 0xe670
callq 0x20a0
movl $0x0, (%rax)
jmp 0x3286
movq -0x60(%rbp), %rsi
leaq 0x1afea(%rip), %rdi     # 0x1e269
movb $0x0, %al
callq 0xe8c0
jmp 0x3288
movl $0x1, %edi
callq 0x2480
movq -0x80(%rbp), %rax
cmpq $0x0, (%rax)
jne 0x32c5
jmp 0x329e
movq -0x60(%rbp), %rsi
leaq 0x1afe3(%rip), %rdi     # 0x1e28c
movb $0x0, %al
callq 0xe8c0
callq 0x20a0
movl $0x0, (%rax)
movl $0x1, %edi
callq 0x2480
movq -0x80(%rbp), %rax
cmpq $0x0, 0x8(%rax)
je 0x32f1
jmp 0x32d2
movq -0x60(%rbp), %rsi
leaq 0x1afc9(%rip), %rdi     # 0x1e2a6
movb $0x0, %al
callq 0xe8c0
callq 0x20a0
movl $0x0, (%rax)
jmp 0x32f1
movq -0x80(%rbp), %rax
movq (%rax), %rdi
callq 0xd680
movl %eax, -0x2c(%rbp)
cmpl $-0x1, %eax
jne 0x330f
movl $0x1, %edi
callq 0x2480
cmpq $0x0, -0x40(%rbp)
je 0x337f
movq -0x40(%rbp), %rdi
callq 0xeb00
movq %rax, -0x90(%rbp)
cmpq $0x0, %rax
jne 0x336d
jmp 0x332e
callq 0x20a0
cmpl $0x0, (%rax)
je 0x3353
leaq 0x1af9d(%rip), %rdi     # 0x1e2dc
movb $0x0, %al
callq 0xe670
callq 0x20a0
movl $0x0, (%rax)
jmp 0x3361
leaq 0x1af82(%rip), %rdi     # 0x1e2dc
movb $0x0, %al
callq 0xe8c0
jmp 0x3363
movl $0x1, %edi
callq 0x2480
movq -0x18(%rbp), %rdi
movq -0x90(%rbp), %rsi
callq 0xfcc0
jmp 0x338a
movq $0x0, -0x90(%rbp)
cmpq $0x0, -0x48(%rbp)
jne 0x33ef
movq -0x60(%rbp), %rdx
leaq -0x48(%rbp), %rdi
leaq 0x1af51(%rip), %rsi     # 0x1e2f1
movb $0x0, %al
callq 0xafe0
cmpl $-0x1, %eax
jne 0x33ed
jmp 0x33ae
callq 0x20a0
cmpl $0x0, (%rax)
je 0x33d3
leaq 0x1ae60(%rip), %rdi     # 0x1e21f
movb $0x0, %al
callq 0xe670
callq 0x20a0
movl $0x0, (%rax)
jmp 0x33e1
leaq 0x1ae45(%rip), %rdi     # 0x1e21f
movb $0x0, %al
callq 0xe8c0
jmp 0x33e3
movl $0x1, %edi
callq 0x2480
jmp 0x33ef
movq -0x48(%rbp), %rdi
callq 0xb120
cmpl $0x0, %eax
je 0x343e
jmp 0x33ff
callq 0x20a0
cmpl $0x0, (%rax)
je 0x3424
leaq 0x1aee8(%rip), %rdi     # 0x1e2f8
movb $0x0, %al
callq 0xe670
callq 0x20a0
movl $0x0, (%rax)
jmp 0x3432
leaq 0x1aecd(%rip), %rdi     # 0x1e2f8
movb $0x0, %al
callq 0xe8c0
jmp 0x3434
movl $0x1, %edi
callq 0x2480
movq -0x18(%rbp), %rdi
movq -0x88(%rbp), %rsi
callq 0x3910
movq %rax, -0x20(%rbp)
cmpq $0x0, %rax
jne 0x3499
jmp 0x345a
callq 0x20a0
cmpl $0x0, (%rax)
je 0x347f
leaq 0x1aea1(%rip), %rdi     # 0x1e30c
movb $0x0, %al
callq 0xe670
callq 0x20a0
movl $0x0, (%rax)
jmp 0x348d
leaq 0x1ae86(%rip), %rdi     # 0x1e30c
movb $0x0, %al
callq 0xe8c0
jmp 0x348f
movl $0x1, %edi
callq 0x2480
jmp 0x349b
movq -0x18(%rbp), %rdi
movl -0x2c(%rbp), %esi
callq 0x3fa0
movq %rax, -0x28(%rbp)
cmpq $0x0, %rax
jne 0x34f2
jmp 0x34b3
callq 0x20a0
cmpl $0x0, (%rax)
je 0x34d8
leaq 0x1ae67(%rip), %rdi     # 0x1e32b
movb $0x0, %al
callq 0xe670
callq 0x20a0
movl $0x0, (%rax)
jmp 0x34e6
leaq 0x1ae4c(%rip), %rdi     # 0x1e32b
movb $0x0, %al
callq 0xe8c0
jmp 0x34e8
movl $0x1, %edi
callq 0x2480
jmp 0x34f4
callq 0x5320
cmpl $0x0, %eax
je 0x353f
jmp 0x3500
callq 0x20a0
cmpl $0x0, (%rax)
je 0x3525
leaq 0x1ae39(%rip), %rdi     # 0x1e34a
movb $0x0, %al
callq 0xe670
callq 0x20a0
movl $0x0, (%rax)
jmp 0x3533
leaq 0x1ae1e(%rip), %rdi     # 0x1e34a
movb $0x0, %al
callq 0xe8c0
jmp 0x3535
movl $0x1, %edi
callq 0x2480
jmp 0x3541
movq -0x28(%rbp), %rdi
callq 0x42a0
cmpl $0x0, %eax
jne 0x34f4
movq -0x28(%rbp), %rdi
callq 0x42d0
cmpl $0x0, %eax
je 0x3567
movl $0x1, %edi
callq 0x2480
jmp 0x3569
cmpl $0x0, -0x64(%rbp)
je 0x349b
movq -0x20(%rbp), %rdi
callq 0x3df0
movq -0x18(%rbp), %rdi
callq 0x100c0
cmpq $0x0, -0x90(%rbp)
je 0x359b
movq -0x90(%rbp), %rdi
callq 0xf3d0
movl -0x2c(%rbp), %edi
callq 0x2220
cmpl $0x0, %eax
je 0x35e1
jmp 0x35aa
callq 0x20a0
cmpl $0x0, (%rax)
je 0x35cf
leaq 0x1b508(%rip), %rdi     # 0x1eac3
movb $0x0, %al
callq 0xe670
callq 0x20a0
movl $0x0, (%rax)
jmp 0x35dd
leaq 0x1b4ed(%rip), %rdi     # 0x1eac3
movb $0x0, %al
callq 0xe8c0
jmp 0x35df
jmp 0x35e1
movq -0x80(%rbp), %rdi
callq 0xd630
movq -0x88(%rbp), %rdi
callq 0x2040
movq -0x70(%rbp), %rdi
callq 0x2040
movq -0x78(%rbp), %rax
movq %rax, -0xe8(%rbp)
movq -0x78(%rbp), %rdi
callq 0x2180
movq -0xe8(%rbp), %rdi
movq %rax, %rsi
callq 0x38e0
movq -0x78(%rbp), %rdi
callq 0x2040
movq -0x38(%rbp), %rdi
callq 0x2040
movq -0x40(%rbp), %rdi
callq 0x2040
movq -0x48(%rbp), %rdi
callq 0x2040
movq -0x58(%rbp), %rdi
callq 0x2040
movq -0x60(%rbp), %rdi
callq 0x2040
xorl %eax, %eax
addq $0xf0, %rsp
popq %rbp
retq
movq -0xd8(%rbp), %rax
jmpq *%rax
nopl (%rax)