// File: /workspace/github_c_makefile_star2_O0/Tarsnap[P]kivaloo/dynamodb-kv/main.c
// Function: main
int
main(int argc, char * argv[])
{
	/* State variables. */
	struct serverpool * SP;
	struct dynamodb_request_queue * QW;
	struct dynamodb_request_queue * QR;
	struct dispatch_state * D;
	int s;

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

	/* Working variable. */
	char * dynamodb_host;
	char * key_id;
	char * key_secret;
	struct sock_addr ** sas;
	struct logging_file * logfile;
	struct capacity_reader * M;
	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("-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_OPTARG("-t"):
			if (opt_t != NULL)
				usage();
			if ((opt_t = strdup(optarg)) == NULL)
				OPT_EPARSE(ch, optarg);
			break;
		GETOPT_OPT("--version"):
			fprintf(stderr, "dynamodb-kv @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. */

	/* Verify that we have mandatory options. */
	if (opt_k == NULL)
		usage();
	if (opt_r == NULL)
		usage();
	if (opt_s == NULL)
		usage();
	if (opt_t == NULL)
		usage();

	/* Construct the DynamoDB endpoint host name. */
	if (asprintf(&dynamodb_host, "dynamodb.%s.amazonaws.com:443",
	    opt_r) == -1) {
		warnp("asprintf");
		exit(1);
	}

	/* Start looking up addresses for DynamoDB endpoints. */
	if ((SP = serverpool_create(dynamodb_host, 15, 120)) == NULL) {
		warnp("Error starting DNS lookups for %s", dynamodb_host);
		exit(1);
	}

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

	/* Create DynamoDB request queues for writes and reads. */
	if ((QW = dynamodb_request_queue_init(key_id, key_secret,
	    opt_r, SP)) == NULL) {
		warnp("Error creating DynamoDB request queue");
		exit(1);
	}
	if ((QR = dynamodb_request_queue_init(key_id, key_secret,
	    opt_r, SP)) == NULL) {
		warnp("Error creating DynamoDB request queue");
		exit(1);
	}

	/* Start reading table throughput parameters. */
	if ((M = capacity_init(key_id, key_secret, opt_t, opt_r,
	    SP, QW, QR)) == NULL) {
		warnp("Error reading DynamoDB table metadata");
		exit(1);
	}

	/* 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);
		}
		dynamodb_request_queue_log(QW, logfile);
		dynamodb_request_queue_log(QR, 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);
	}

	/* Handle connections, one at once. */
	do {
		/* accept a connection. */
		if ((D = dispatch_accept(QW, QR, opt_t, 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);

	/* 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);

	/* Stop performing DescribeTable requests. */
	capacity_free(M);

	/* Free DynamoDB request queues. */
	dynamodb_request_queue_free(QR);
	dynamodb_request_queue_free(QW);

	/* Stop DNS lookups. */
	serverpool_free(SP);

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

	/* Free key strings. */
	free(key_id);
	insecure_memzero(key_secret, strlen(key_secret));
	free(key_secret);

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

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

// Assembly:
pushq %rbp
movq %rsp, %rbp
subq $0xf0, %rsp
movl $0x0, -0x4(%rbp)
movl %edi, -0x8(%rbp)
movq %rsi, -0x10(%rbp)
movq $0x0, -0x40(%rbp)
movq $0x0, -0x48(%rbp)
movq $0x0, -0x50(%rbp)
movq $0x0, -0x58(%rbp)
movq $0x0, -0x60(%rbp)
movq $0x0, -0x68(%rbp)
movl $0x0, -0x6c(%rbp)
movq -0x10(%rbp), %rax
cmpq $0x0, (%rax)
je 0x37f6
movq -0x10(%rbp), %rax
movq (%rax), %rdi
callq 0xff40
jmp 0x37f8
jmp 0x37fa
movl -0x8(%rbp), %edi
movq -0x10(%rbp), %rsi
callq 0xc4d0
movq %rax, -0xa8(%rbp)
cmpq $0x0, %rax
je 0x404e
movq $0x48, -0xb0(%rbp)
movq -0xb0(%rbp), %rax
decq %rax
movq %rax, -0xb8(%rbp)
movl $0x0, -0xbc(%rbp)
leaq 0x7(%rip), %rax         # 0x384b
movq %rax, -0xc8(%rbp)
leaq 0x3a106(%rip), %rax     # 0x3d958
cmpl $0x0, (%rax)
je 0x3876
movq -0xa8(%rbp), %rdi
callq 0xcb90
movq -0xb0(%rbp), %rcx
addq %rcx, %rax
movq %rax, -0xd0(%rbp)
jmp 0x3892
movq -0xb8(%rbp), %rax
movq %rax, %rcx
addq $0x1, %rcx
movq %rcx, -0xb8(%rbp)
movq %rax, -0xd0(%rbp)
movq -0xd0(%rbp), %rax
addq $-0x49, %rax
movq %rax, -0xd8(%rbp)
subq $0x2f, %rax
ja 0x3fd8
movq -0xd8(%rbp), %rax
leaq 0x1f748(%rip), %rcx     # 0x23004
movslq (%rcx,%rax,4), %rax
addq %rcx, %rax
jmpq *%rax
leaq 0x3a08c(%rip), %rax     # 0x3d958
cmpl $0x0, (%rax)
je 0x3901
leaq 0x3a078(%rip), %rax     # 0x3d950
cmpq $0x0, (%rax)
je 0x38e0
jmp 0x38ff
leaq 0x1f7dd(%rip), %rdi     # 0x230c4
leaq 0x1f7e5(%rip), %rsi     # 0x230d3
movl $0x49, %edx
leaq 0x1f7e0(%rip), %rcx     # 0x230da
callq 0x3240
jmp 0x3934
movq -0xb0(%rbp), %rax
movl $0x49, %esi
subq %rax, %rsi
leaq 0x1f7da(%rip), %rdi     # 0x230f1
movl $0x1, %edx
callq 0xcce0
movq -0xc8(%rbp), %rax
movq %rax, -0xe0(%rbp)
jmp 0x472e
cmpq $0x0, -0x40(%rbp)
je 0x3940
callq 0x4740
leaq 0x3a009(%rip), %rax     # 0x3d950
movq (%rax), %rdi
callq 0x3610
movq %rax, -0x40(%rbp)
cmpq $0x0, %rax
jne 0x39be
jmp 0x395b
jmp 0x395d
callq 0x3040
cmpl $0x0, (%rax)
je 0x3993
movq -0xa8(%rbp), %rsi
leaq 0x39fdb(%rip), %rax     # 0x3d950
movq (%rax), %rdx
leaq 0x1f775(%rip), %rdi     # 0x230f4
movb $0x0, %al
callq 0x10000
callq 0x3040
movl $0x0, (%rax)
jmp 0x39b2
movq -0xa8(%rbp), %rsi
leaq 0x39faf(%rip), %rax     # 0x3d950
movq (%rax), %rdx
leaq 0x1f749(%rip), %rdi     # 0x230f4
movb $0x0, %al
callq 0x10250
jmp 0x39b4
movl $0x1, %edi
callq 0x3480
jmp 0x4049
leaq 0x39f8e(%rip), %rax     # 0x3d958
cmpl $0x0, (%rax)
je 0x39ff
leaq 0x39f7a(%rip), %rax     # 0x3d950
cmpq $0x0, (%rax)
je 0x39de
jmp 0x39fd
leaq 0x1f6df(%rip), %rdi     # 0x230c4
leaq 0x1f6e7(%rip), %rsi     # 0x230d3
movl $0x4f, %edx
leaq 0x1f6e2(%rip), %rcx     # 0x230da
callq 0x3240
jmp 0x3a32
movq -0xb0(%rbp), %rax
movl $0x4f, %esi
subq %rax, %rsi
leaq 0x1f6fd(%rip), %rdi     # 0x23112
movl $0x1, %edx
callq 0xcce0
movq -0xc8(%rbp), %rax
movq %rax, -0xe0(%rbp)
jmp 0x472e
cmpq $0x0, -0x48(%rbp)
je 0x3a3e
callq 0x4740
leaq 0x39f0b(%rip), %rax     # 0x3d950
movq (%rax), %rdi
callq 0x3610
movq %rax, -0x48(%rbp)
cmpq $0x0, %rax
jne 0x3abc
jmp 0x3a59
jmp 0x3a5b
callq 0x3040
cmpl $0x0, (%rax)
je 0x3a91
movq -0xa8(%rbp), %rsi
leaq 0x39edd(%rip), %rax     # 0x3d950
movq (%rax), %rdx
leaq 0x1f677(%rip), %rdi     # 0x230f4
movb $0x0, %al
callq 0x10000
callq 0x3040
movl $0x0, (%rax)
jmp 0x3ab0
movq -0xa8(%rbp), %rsi
leaq 0x39eb1(%rip), %rax     # 0x3d950
movq (%rax), %rdx
leaq 0x1f64b(%rip), %rdi     # 0x230f4
movb $0x0, %al
callq 0x10250
jmp 0x3ab2
movl $0x1, %edi
callq 0x3480
jmp 0x4049
leaq 0x39e90(%rip), %rax     # 0x3d958
cmpl $0x0, (%rax)
je 0x3afd
leaq 0x39e7c(%rip), %rax     # 0x3d950
cmpq $0x0, (%rax)
je 0x3adc
jmp 0x3afb
leaq 0x1f5e1(%rip), %rdi     # 0x230c4
leaq 0x1f5e9(%rip), %rsi     # 0x230d3
movl $0x55, %edx
leaq 0x1f5e4(%rip), %rcx     # 0x230da
callq 0x3240
jmp 0x3b30
movq -0xb0(%rbp), %rax
movl $0x55, %esi
subq %rax, %rsi
leaq 0x1f602(%rip), %rdi     # 0x23115
movl $0x1, %edx
callq 0xcce0
movq -0xc8(%rbp), %rax
movq %rax, -0xe0(%rbp)
jmp 0x472e
cmpq $0x0, -0x50(%rbp)
je 0x3b3c
callq 0x4740
leaq 0x39e0d(%rip), %rax     # 0x3d950
movq (%rax), %rdi
callq 0x3610
movq %rax, -0x50(%rbp)
cmpq $0x0, %rax
jne 0x3bba
jmp 0x3b57
jmp 0x3b59
callq 0x3040
cmpl $0x0, (%rax)
je 0x3b8f
movq -0xa8(%rbp), %rsi
leaq 0x39ddf(%rip), %rax     # 0x3d950
movq (%rax), %rdx
leaq 0x1f579(%rip), %rdi     # 0x230f4
movb $0x0, %al
callq 0x10000
callq 0x3040
movl $0x0, (%rax)
jmp 0x3bae
movq -0xa8(%rbp), %rsi
leaq 0x39db3(%rip), %rax     # 0x3d950
movq (%rax), %rdx
leaq 0x1f54d(%rip), %rdi     # 0x230f4
movb $0x0, %al
callq 0x10250
jmp 0x3bb0
movl $0x1, %edi
callq 0x3480
jmp 0x4049
leaq 0x39d92(%rip), %rax     # 0x3d958
cmpl $0x0, (%rax)
je 0x3bfb
leaq 0x39d7e(%rip), %rax     # 0x3d950
cmpq $0x0, (%rax)
je 0x3bda
jmp 0x3bf9
leaq 0x1f4e3(%rip), %rdi     # 0x230c4
leaq 0x1f4eb(%rip), %rsi     # 0x230d3
movl $0x5b, %edx
leaq 0x1f4e6(%rip), %rcx     # 0x230da
callq 0x3240
jmp 0x3c2e
movq -0xb0(%rbp), %rax
movl $0x5b, %esi
subq %rax, %rsi
leaq 0x1f507(%rip), %rdi     # 0x23118
movl $0x1, %edx
callq 0xcce0
movq -0xc8(%rbp), %rax
movq %rax, -0xe0(%rbp)
jmp 0x472e
cmpq $0x0, -0x58(%rbp)
je 0x3c3a
callq 0x4740
leaq 0x39d0f(%rip), %rax     # 0x3d950
movq (%rax), %rdi
callq 0x3610
movq %rax, -0x58(%rbp)
cmpq $0x0, %rax
jne 0x3cb8
jmp 0x3c55
jmp 0x3c57
callq 0x3040
cmpl $0x0, (%rax)
je 0x3c8d
movq -0xa8(%rbp), %rsi
leaq 0x39ce1(%rip), %rax     # 0x3d950
movq (%rax), %rdx
leaq 0x1f47b(%rip), %rdi     # 0x230f4
movb $0x0, %al
callq 0x10000
callq 0x3040
movl $0x0, (%rax)
jmp 0x3cac
movq -0xa8(%rbp), %rsi
leaq 0x39cb5(%rip), %rax     # 0x3d950
movq (%rax), %rdx
leaq 0x1f44f(%rip), %rdi     # 0x230f4
movb $0x0, %al
callq 0x10250
jmp 0x3cae
movl $0x1, %edi
callq 0x3480
jmp 0x4049
leaq 0x39c94(%rip), %rax     # 0x3d958
cmpl $0x0, (%rax)
je 0x3cf9
leaq 0x39c80(%rip), %rax     # 0x3d950
cmpq $0x0, (%rax)
je 0x3cd8
jmp 0x3cf7
leaq 0x1f3e5(%rip), %rdi     # 0x230c4
leaq 0x1f3ed(%rip), %rsi     # 0x230d3
movl $0x61, %edx
leaq 0x1f3e8(%rip), %rcx     # 0x230da
callq 0x3240
jmp 0x3d2c
movq -0xb0(%rbp), %rax
movl $0x61, %esi
subq %rax, %rsi
leaq 0x1f40c(%rip), %rdi     # 0x2311b
movl $0x1, %edx
callq 0xcce0
movq -0xc8(%rbp), %rax
movq %rax, -0xe0(%rbp)
jmp 0x472e
cmpq $0x0, -0x60(%rbp)
je 0x3d38
callq 0x4740
leaq 0x39c11(%rip), %rax     # 0x3d950
movq (%rax), %rdi
callq 0x3610
movq %rax, -0x60(%rbp)
cmpq $0x0, %rax
jne 0x3db6
jmp 0x3d53
jmp 0x3d55
callq 0x3040
cmpl $0x0, (%rax)
je 0x3d8b
movq -0xa8(%rbp), %rsi
leaq 0x39be3(%rip), %rax     # 0x3d950
movq (%rax), %rdx
leaq 0x1f37d(%rip), %rdi     # 0x230f4
movb $0x0, %al
callq 0x10000
callq 0x3040
movl $0x0, (%rax)
jmp 0x3daa
movq -0xa8(%rbp), %rsi
leaq 0x39bb7(%rip), %rax     # 0x3d950
movq (%rax), %rdx
leaq 0x1f351(%rip), %rdi     # 0x230f4
movb $0x0, %al
callq 0x10250
jmp 0x3dac
movl $0x1, %edi
callq 0x3480
jmp 0x4049
leaq 0x39b96(%rip), %rax     # 0x3d958
cmpl $0x0, (%rax)
je 0x3df7
leaq 0x39b82(%rip), %rax     # 0x3d950
cmpq $0x0, (%rax)
je 0x3dd6
jmp 0x3df5
leaq 0x1f2e7(%rip), %rdi     # 0x230c4
leaq 0x1f2ef(%rip), %rsi     # 0x230d3
movl $0x67, %edx
leaq 0x1f2ea(%rip), %rcx     # 0x230da
callq 0x3240
jmp 0x3e2a
movq -0xb0(%rbp), %rax
movl $0x67, %esi
subq %rax, %rsi
leaq 0x1f311(%rip), %rdi     # 0x2311e
movl $0x1, %edx
callq 0xcce0
movq -0xc8(%rbp), %rax
movq %rax, -0xe0(%rbp)
jmp 0x472e
cmpq $0x0, -0x68(%rbp)
je 0x3e36
callq 0x4740
leaq 0x39b13(%rip), %rax     # 0x3d950
movq (%rax), %rdi
callq 0x3610
movq %rax, -0x68(%rbp)
cmpq $0x0, %rax
jne 0x3eb4
jmp 0x3e51
jmp 0x3e53
callq 0x3040
cmpl $0x0, (%rax)
je 0x3e89
movq -0xa8(%rbp), %rsi
leaq 0x39ae5(%rip), %rax     # 0x3d950
movq (%rax), %rdx
leaq 0x1f27f(%rip), %rdi     # 0x230f4
movb $0x0, %al
callq 0x10000
callq 0x3040
movl $0x0, (%rax)
jmp 0x3ea8
movq -0xa8(%rbp), %rsi
leaq 0x39ab9(%rip), %rax     # 0x3d950
movq (%rax), %rdx
leaq 0x1f253(%rip), %rdi     # 0x230f4
movb $0x0, %al
callq 0x10250
jmp 0x3eaa
movl $0x1, %edi
callq 0x3480
jmp 0x4049
leaq 0x39a98(%rip), %rax     # 0x3d958
cmpl $0x0, (%rax)
je 0x3ec7
jmp 0x3ef7
movq -0xb0(%rbp), %rax
movl $0x6d, %esi
subq %rax, %rsi
leaq 0x1f244(%rip), %rdi     # 0x23121
xorl %edx, %edx
callq 0xcce0
movq -0xc8(%rbp), %rax
movq %rax, -0xe0(%rbp)
jmp 0x472e
movq 0x290e2(%rip), %rax     # 0x2cfe0
movq (%rax), %rdi
leaq 0x1f223(%rip), %rsi     # 0x2312b
movb $0x0, %al
callq 0x3540
xorl %edi, %edi
callq 0x3480
leaq 0x39a3b(%rip), %rax     # 0x3d958
cmpl $0x0, (%rax)
je 0x3f24
jmp 0x3f54
movq -0xb0(%rbp), %rax
movl $0x70, %esi
subq %rax, %rsi
leaq 0x1f208(%rip), %rdi     # 0x23142
xorl %edx, %edx
callq 0xcce0
movq -0xc8(%rbp), %rax
movq %rax, -0xe0(%rbp)
jmp 0x472e
cmpl $0x0, -0x6c(%rbp)
je 0x3f5f
callq 0x4740
movl $0x1, -0x6c(%rbp)
jmp 0x4049
leaq 0x399e6(%rip), %rax     # 0x3d958
cmpl $0x0, (%rax)
je 0x3f79
jmp 0x3fa0
movq -0xb0(%rbp), %rax
movl $0x75, %edi
subq %rax, %rdi
callq 0xcf70
movq -0xc8(%rbp), %rax
movq %rax, -0xe0(%rbp)
jmp 0x472e
jmp 0x3fa2
movq -0xa8(%rbp), %rsi
leaq 0x1f195(%rip), %rdi     # 0x23145
movb $0x0, %al
callq 0x10250
callq 0x3040
movl $0x0, (%rax)
callq 0x4740
jmp 0x4022
leaq 0x39988(%rip), %rax     # 0x3d958
movl $0x1, (%rax)
jmp 0x4049
leaq 0x39979(%rip), %rax     # 0x3d958
cmpl $0x0, (%rax)
je 0x3fe6
jmp 0x4022
movl -0xbc(%rbp), %eax
cmpl $0x0, %eax
jne 0x400f
movq -0xb0(%rbp), %rax
movl $0x78, %edi
subq %rax, %rdi
callq 0xd030
movl $0x1, -0xbc(%rbp)
movq -0xc8(%rbp), %rax
movq %rax, -0xe0(%rbp)
jmp 0x472e
jmp 0x4024
movq -0xa8(%rbp), %rsi
leaq 0x1f12a(%rip), %rdi     # 0x2315c
movb $0x0, %al
callq 0x10250
callq 0x3040
movl $0x0, (%rax)
callq 0x4740
jmp 0x37fa
leaq 0x29613(%rip), %rax     # 0x2d668
movl (%rax), %ecx
movl -0x8(%rbp), %eax
subl %ecx, %eax
movl %eax, -0x8(%rbp)
leaq 0x29602(%rip), %rax     # 0x2d668
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 0x4085
callq 0x4740
cmpq $0x0, -0x40(%rbp)
jne 0x4091
callq 0x4740
cmpq $0x0, -0x58(%rbp)
jne 0x409d
callq 0x4740
cmpq $0x0, -0x60(%rbp)
jne 0x40a9
callq 0x4740
cmpq $0x0, -0x68(%rbp)
jne 0x40b5
callq 0x4740
movq -0x58(%rbp), %rdx
leaq -0x78(%rbp), %rdi
leaq 0x1f0ad(%rip), %rsi     # 0x23171
movb $0x0, %al
callq 0xc0c0
cmpl $-0x1, %eax
jne 0x4111
jmp 0x40d2
callq 0x3040
cmpl $0x0, (%rax)
je 0x40f7
leaq 0x1f0ac(%rip), %rdi     # 0x2318f
movb $0x0, %al
callq 0x10000
callq 0x3040
movl $0x0, (%rax)
jmp 0x4105
leaq 0x1f091(%rip), %rdi     # 0x2318f
movb $0x0, %al
callq 0x10250
jmp 0x4107
movl $0x1, %edi
callq 0x3480
movq -0x78(%rbp), %rdi
movl $0xf, %esi
movl $0x78, %edx
callq 0x14750
movq %rax, -0x18(%rbp)
cmpq $0x0, %rax
jne 0x4177
jmp 0x4130
callq 0x3040
cmpl $0x0, (%rax)
je 0x4159
movq -0x78(%rbp), %rsi
leaq 0x1f053(%rip), %rdi     # 0x23198
movb $0x0, %al
callq 0x10000
callq 0x3040
movl $0x0, (%rax)
jmp 0x416b
movq -0x78(%rbp), %rsi
leaq 0x1f034(%rip), %rdi     # 0x23198
movb $0x0, %al
callq 0x10250
jmp 0x416d
movl $0x1, %edi
callq 0x3480
movq -0x40(%rbp), %rdi
leaq -0x80(%rbp), %rsi
leaq -0x88(%rbp), %rdx
callq 0x5f30
cmpl $0x0, %eax
je 0x41d9
jmp 0x4192
callq 0x3040
cmpl $0x0, (%rax)
je 0x41bb
movq -0x40(%rbp), %rsi
leaq 0x1f013(%rip), %rdi     # 0x231ba
movb $0x0, %al
callq 0x10000
callq 0x3040
movl $0x0, (%rax)
jmp 0x41cd
movq -0x40(%rbp), %rsi
leaq 0x1eff4(%rip), %rdi     # 0x231ba
movb $0x0, %al
callq 0x10250
jmp 0x41cf
movl $0x1, %edi
callq 0x3480
movq -0x80(%rbp), %rdi
movq -0x88(%rbp), %rsi
movq -0x58(%rbp), %rdx
movq -0x18(%rbp), %rcx
callq 0x11f50
movq %rax, -0x20(%rbp)
cmpq $0x0, %rax
jne 0x423c
jmp 0x41fd
callq 0x3040
cmpl $0x0, (%rax)
je 0x4222
leaq 0x1efcb(%rip), %rdi     # 0x231d9
movb $0x0, %al
callq 0x10000
callq 0x3040
movl $0x0, (%rax)
jmp 0x4230
leaq 0x1efb0(%rip), %rdi     # 0x231d9
movb $0x0, %al
callq 0x10250
jmp 0x4232
movl $0x1, %edi
callq 0x3480
movq -0x80(%rbp), %rdi
movq -0x88(%rbp), %rsi
movq -0x58(%rbp), %rdx
movq -0x18(%rbp), %rcx
callq 0x11f50
movq %rax, -0x28(%rbp)
cmpq $0x0, %rax
jne 0x429f
jmp 0x4260
callq 0x3040
cmpl $0x0, (%rax)
je 0x4285
leaq 0x1ef68(%rip), %rdi     # 0x231d9
movb $0x0, %al
callq 0x10000
callq 0x3040
movl $0x0, (%rax)
jmp 0x4293
leaq 0x1ef4d(%rip), %rdi     # 0x231d9
movb $0x0, %al
callq 0x10250
jmp 0x4295
movl $0x1, %edi
callq 0x3480
movq -0x80(%rbp), %rdi
movq -0x88(%rbp), %rsi
movq -0x68(%rbp), %rdx
movq -0x58(%rbp), %rcx
movq -0x18(%rbp), %r8
movq -0x20(%rbp), %r9
movq -0x28(%rbp), %rax
movq %rax, (%rsp)
callq 0x4800
movq %rax, -0xa0(%rbp)
cmpq $0x0, %rax
jne 0x4315
jmp 0x42d6
callq 0x3040
cmpl $0x0, (%rax)
je 0x42fb
leaq 0x1ef18(%rip), %rdi     # 0x231ff
movb $0x0, %al
callq 0x10000
callq 0x3040
movl $0x0, (%rax)
jmp 0x4309
leaq 0x1eefd(%rip), %rdi     # 0x231ff
movb $0x0, %al
callq 0x10250
jmp 0x430b
movl $0x1, %edi
callq 0x3480
movq -0x60(%rbp), %rdi
callq 0xe390
movq %rax, -0x90(%rbp)
cmpq $0x0, %rax
jne 0x4374
jmp 0x432d
callq 0x3040
cmpl $0x0, (%rax)
je 0x4356
movq -0x60(%rbp), %rsi
leaq 0x1eee3(%rip), %rdi     # 0x23225
movb $0x0, %al
callq 0x10000
callq 0x3040
movl $0x0, (%rax)
jmp 0x4368
movq -0x60(%rbp), %rsi
leaq 0x1eec4(%rip), %rdi     # 0x23225
movb $0x0, %al
callq 0x10250
jmp 0x436a
movl $0x1, %edi
callq 0x3480
movq -0x90(%rbp), %rax
cmpq $0x0, (%rax)
jne 0x43aa
jmp 0x4383
movq -0x60(%rbp), %rsi
leaq 0x1eeba(%rip), %rdi     # 0x23248
movb $0x0, %al
callq 0x10250
callq 0x3040
movl $0x0, (%rax)
movl $0x1, %edi
callq 0x3480
movq -0x90(%rbp), %rax
cmpq $0x0, 0x8(%rax)
je 0x43d9
jmp 0x43ba
movq -0x60(%rbp), %rsi
leaq 0x1ee9d(%rip), %rdi     # 0x23262
movb $0x0, %al
callq 0x10250
callq 0x3040
movl $0x0, (%rax)
jmp 0x43d9
movq -0x90(%rbp), %rax
movq (%rax), %rdi
callq 0xf010
movl %eax, -0x34(%rbp)
cmpl $-0x1, %eax
jne 0x43fa
movl $0x1, %edi
callq 0x3480
cmpq $0x0, -0x48(%rbp)
je 0x447a
movq -0x48(%rbp), %rdi
callq 0x13710
movq %rax, -0x98(%rbp)
cmpq $0x0, %rax
jne 0x4458
jmp 0x4419
callq 0x3040
cmpl $0x0, (%rax)
je 0x443e
leaq 0x1ee6e(%rip), %rdi     # 0x23298
movb $0x0, %al
callq 0x10000
callq 0x3040
movl $0x0, (%rax)
jmp 0x444c
leaq 0x1ee53(%rip), %rdi     # 0x23298
movb $0x0, %al
callq 0x10250
jmp 0x444e
movl $0x1, %edi
callq 0x3480
movq -0x20(%rbp), %rdi
movq -0x98(%rbp), %rsi
callq 0x12300
movq -0x28(%rbp), %rdi
movq -0x98(%rbp), %rsi
callq 0x12300
jmp 0x4485
movq $0x0, -0x98(%rbp)
cmpq $0x0, -0x50(%rbp)
jne 0x44ea
movq -0x60(%rbp), %rdx
leaq -0x50(%rbp), %rdi
leaq 0x1ee12(%rip), %rsi     # 0x232ad
movb $0x0, %al
callq 0xc0c0
cmpl $-0x1, %eax
jne 0x44e8
jmp 0x44a9
callq 0x3040
cmpl $0x0, (%rax)
je 0x44ce
leaq 0x1ecd5(%rip), %rdi     # 0x2318f
movb $0x0, %al
callq 0x10000
callq 0x3040
movl $0x0, (%rax)
jmp 0x44dc
leaq 0x1ecba(%rip), %rdi     # 0x2318f
movb $0x0, %al
callq 0x10250
jmp 0x44de
movl $0x1, %edi
callq 0x3480
jmp 0x44ea
movq -0x50(%rbp), %rdi
callq 0xc200
cmpl $0x0, %eax
je 0x4539
jmp 0x44fa
callq 0x3040
cmpl $0x0, (%rax)
je 0x451f
leaq 0x1eda9(%rip), %rdi     # 0x232b4
movb $0x0, %al
callq 0x10000
callq 0x3040
movl $0x0, (%rax)
jmp 0x452d
leaq 0x1ed8e(%rip), %rdi     # 0x232b4
movb $0x0, %al
callq 0x10250
jmp 0x452f
movl $0x1, %edi
callq 0x3480
jmp 0x453b
movq -0x20(%rbp), %rdi
movq -0x28(%rbp), %rsi
movq -0x68(%rbp), %rdx
movl -0x34(%rbp), %ecx
callq 0x52c0
movq %rax, -0x30(%rbp)
cmpq $0x0, %rax
jne 0x459a
jmp 0x455b
callq 0x3040
cmpl $0x0, (%rax)
je 0x4580
leaq 0x1ed5c(%rip), %rdi     # 0x232c8
movb $0x0, %al
callq 0x10000
callq 0x3040
movl $0x0, (%rax)
jmp 0x458e
leaq 0x1ed41(%rip), %rdi     # 0x232c8
movb $0x0, %al
callq 0x10250
jmp 0x4590
movl $0x1, %edi
callq 0x3480
jmp 0x459c
callq 0x6400
cmpl $0x0, %eax
je 0x45e7
jmp 0x45a8
callq 0x3040
cmpl $0x0, (%rax)
je 0x45cd
leaq 0x1ed2e(%rip), %rdi     # 0x232e7
movb $0x0, %al
callq 0x10000
callq 0x3040
movl $0x0, (%rax)
jmp 0x45db
leaq 0x1ed13(%rip), %rdi     # 0x232e7
movb $0x0, %al
callq 0x10250
jmp 0x45dd
movl $0x1, %edi
callq 0x3480
jmp 0x45e9
movq -0x30(%rbp), %rdi
callq 0x55e0
cmpl $0x0, %eax
jne 0x459c
movq -0x30(%rbp), %rdi
callq 0x5610
cmpl $0x0, %eax
je 0x460f
movl $0x1, %edi
callq 0x3480
jmp 0x4611
cmpl $0x0, -0x6c(%rbp)
je 0x453b
cmpq $0x0, -0x98(%rbp)
je 0x4631
movq -0x98(%rbp), %rdi
callq 0x13fe0
movl -0x34(%rbp), %edi
callq 0x3660
cmpl $0x0, %eax
je 0x4677
jmp 0x4640
callq 0x3040
cmpl $0x0, (%rax)
je 0x4665
leaq 0x1f29f(%rip), %rdi     # 0x238f0
movb $0x0, %al
callq 0x10000
callq 0x3040
movl $0x0, (%rax)
jmp 0x4673
leaq 0x1f284(%rip), %rdi     # 0x238f0
movb $0x0, %al
callq 0x10250
jmp 0x4675
jmp 0x4677
movq -0x90(%rbp), %rdi
callq 0xefc0
movq -0xa0(%rbp), %rdi
callq 0x4b30
movq -0x28(%rbp), %rdi
callq 0x125d0
movq -0x20(%rbp), %rdi
callq 0x125d0
movq -0x18(%rbp), %rdi
callq 0x151f0
movq -0x78(%rbp), %rdi
callq 0x3460
movq -0x80(%rbp), %rdi
callq 0x3460
movq -0x88(%rbp), %rax
movq %rax, -0xe8(%rbp)
movq -0x88(%rbp), %rdi
callq 0x3190
movq -0xe8(%rbp), %rdi
movq %rax, %rsi
callq 0x47d0
movq -0x88(%rbp), %rdi
callq 0x3460
movq -0x40(%rbp), %rdi
callq 0x3460
movq -0x48(%rbp), %rdi
callq 0x3460
movq -0x50(%rbp), %rdi
callq 0x3460
movq -0x58(%rbp), %rdi
callq 0x3460
movq -0x60(%rbp), %rdi
callq 0x3460
movq -0x68(%rbp), %rdi
callq 0x3460
xorl %edi, %edi
callq 0x3480
movq -0xe0(%rbp), %rax
jmpq *%rax
nopw (%rax,%rax)