// File: /workspace/github_c_makefile_star2_O1/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
pushq %r15
pushq %r14
pushq %r13
pushq %r12
pushq %rbx
subq $0x88, %rsp
movl %edi, 0x20(%rsp)
movq $0x0, 0x40(%rsp)
movq %rsi, 0x68(%rsp)
movq (%rsi), %rdi
testq %rdi, %rdi
je 0x3c3c
callq 0xb804
movl 0x20(%rsp), %edi
movq 0x68(%rsp), %rsi
callq 0x9698
testq %rax, %rax
jne 0x3c8b
movb $0x1, %r12b
xorl %r15d, %r15d
xorl %r13d, %r13d
xorl %ebx, %ebx
xorl %r14d, %r14d
xorl %ebp, %ebp
leaq 0x19a02(%rip), %rax     # 0x1d668
movl 0x20(%rsp), %ecx
cmpl %ecx, (%rax)
jne 0x3c86
testq %rbp, %rbp
je 0x3c86
testq %r15, %r15
je 0x3c86
testq %r13, %r13
je 0x3c86
testq %rbx, %rbx
jne 0x4116
callq 0x46b3
movq %rax, %rbp
movq $0x0, 0x38(%rsp)
leaq 0x29caa(%rip), %r14     # 0x2d948
leaq 0x1038c(%rip), %rbx     # 0x14031
leaq 0x103b2(%rip), %r15     # 0x1405e
leaq 0x103ae(%rip), %r12     # 0x14061
leaq 0x103c8(%rip), %r13     # 0x14082
movq $0x0, 0x48(%rsp)
movq $0x0, 0x28(%rsp)
movq $0x0, 0x18(%rsp)
movq $0x0, 0x30(%rsp)
movq $0x0, 0x50(%rsp)
movq $0x48, 0x10(%rsp)
movq 0x10(%rsp), %rax
decq %rax
movq %rax, 0x80(%rsp)
movl $0x0, 0x64(%rsp)
cmpl $0x0, (%r14)
je 0x3d1d
movq %rbp, %rdi
callq 0x99c3
addq 0x10(%rsp), %rax
jmp 0x3d31
movq 0x80(%rsp), %rax
leaq 0x1(%rax), %rcx
movq %rcx, 0x80(%rsp)
cmpq $0x66, %rax
jg 0x3d7b
cmpq $0x54, %rax
jle 0x3db3
cmpq $0x55, %rax
je 0x3e5e
cmpq $0x5b, %rax
je 0x3e28
cmpq $0x61, %rax
jne 0x3eb1
cmpl $0x0, (%r14)
jne 0x3fcf
movl $0x61, %esi
subq 0x10(%rsp), %rsi
leaq 0x102e5(%rip), %rdi     # 0x1405b
jmp 0x3e79
cmpq $0x6f, %rax
jle 0x3de3
cmpq $0x70, %rax
je 0x3e88
cmpq $0x75, %rax
jne 0x3eab
cmpl $0x0, (%r14)
jne 0x407b
movl $0x75, %edi
subq 0x10(%rsp), %rdi
callq 0x9b97
jmp 0x3d08
cmpq $0x49, %rax
je 0x3e0f
cmpq $0x4f, %rax
jne 0x3eb1
cmpl $0x0, (%r14)
jne 0x3eee
movl $0x4f, %esi
subq 0x10(%rsp), %rsi
leaq 0x10274(%rip), %rdi     # 0x14052
jmp 0x3e79
cmpq $0x67, %rax
je 0x3e45
cmpq $0x6d, %rax
jne 0x3eb1
cmpl $0x0, (%r14)
jne 0x40a5
movl $0x6d, %esi
subq 0x10(%rsp), %rsi
movq %r12, %rdi
jmp 0x3e9f
cmpl $0x0, (%r14)
jne 0x3f27
movl $0x49, %esi
subq 0x10(%rsp), %rsi
movq %rbx, %rdi
jmp 0x3e79
cmpl $0x0, (%r14)
jne 0x3f99
movl $0x5b, %esi
subq 0x10(%rsp), %rsi
leaq 0x10215(%rip), %rdi     # 0x14058
jmp 0x3e79
cmpl $0x0, (%r14)
jne 0x3f60
movl $0x67, %esi
subq 0x10(%rsp), %rsi
movq %r15, %rdi
jmp 0x3e79
cmpl $0x0, (%r14)
jne 0x4005
movl $0x55, %esi
subq 0x10(%rsp), %rsi
leaq 0x101dc(%rip), %rdi     # 0x14055
movl $0x1, %edx
callq 0x9a80
jmp 0x3d08
cmpl $0x0, (%r14)
jne 0x4065
movl $0x70, %esi
subq 0x10(%rsp), %rsi
movq %r13, %rdi
xorl %edx, %edx
callq 0x9a80
jmp 0x3d08
cmpq $0x78, %rax
je 0x3ee2
cmpl $0x0, (%r14)
jne 0x4084
cmpl $0x0, 0x64(%rsp)
jne 0x3d08
movl $0x78, %edi
subq 0x10(%rsp), %rdi
callq 0x9bd7
movl $0x1, 0x64(%rsp)
jmp 0x3d08
movl $0x1, (%r14)
jmp 0x4042
leaq 0x29a4b(%rip), %rax     # 0x2d940
cmpq $0x0, (%rax)
je 0x425b
cmpq $0x0, 0x28(%rsp)
jne 0x3c86
leaq 0x29a2e(%rip), %rax     # 0x2d940
movq (%rax), %rbx
movq %rbx, %rdi
callq 0x3610
movq %rax, 0x28(%rsp)
jmp 0x4039
leaq 0x29a12(%rip), %rax     # 0x2d940
cmpq $0x0, (%rax)
je 0x427a
cmpq $0x0, 0x48(%rsp)
jne 0x3c86
leaq 0x299f5(%rip), %rax     # 0x2d940
movq (%rax), %rbx
movq %rbx, %rdi
callq 0x3610
movq %rax, 0x48(%rsp)
jmp 0x4039
leaq 0x299d9(%rip), %rax     # 0x2d940
cmpq $0x0, (%rax)
je 0x423c
cmpq $0x0, 0x18(%rsp)
jne 0x3c86
leaq 0x299bc(%rip), %rax     # 0x2d940
movq (%rax), %rbx
movq %rbx, %rdi
callq 0x3610
movq %rax, 0x18(%rsp)
jmp 0x4039
leaq 0x299a0(%rip), %rax     # 0x2d940
cmpq $0x0, (%rax)
je 0x42b8
cmpq $0x0, 0x50(%rsp)
jne 0x3c86
leaq 0x29983(%rip), %rax     # 0x2d940
movq (%rax), %rbx
movq %rbx, %rdi
callq 0x3610
movq %rax, 0x50(%rsp)
jmp 0x4039
leaq 0x2996a(%rip), %rax     # 0x2d940
cmpq $0x0, (%rax)
je 0x42d7
cmpq $0x0, 0x30(%rsp)
jne 0x3c86
leaq 0x2994d(%rip), %rax     # 0x2d940
movq (%rax), %rbx
movq %rbx, %rdi
callq 0x3610
movq %rax, 0x30(%rsp)
jmp 0x4039
leaq 0x29934(%rip), %rax     # 0x2d940
cmpq $0x0, (%rax)
je 0x4299
cmpq $0x0, 0x40(%rsp)
jne 0x3c86
leaq 0x29917(%rip), %rax     # 0x2d940
movq (%rax), %rbx
movq %rbx, %rdi
callq 0x3610
movq %rax, 0x40(%rsp)
testq %rax, %rax
je 0x40f3
movl 0x20(%rsp), %edi
movq 0x68(%rsp), %rsi
callq 0x9698
movq %rax, %rbp
testq %rax, %rax
leaq 0xffd4(%rip), %rbx      # 0x14031
jne 0x3ce7
jmp 0x40cc
cmpl $0x0, 0x38(%rsp)
movl $0x1, %eax
movq %rax, 0x38(%rsp)
je 0x4042
jmp 0x3c86
leaq 0x10003(%rip), %rdi     # 0x14085
jmp 0x408b
leaq 0x10011(%rip), %rdi     # 0x1409c
movq %rbp, %rsi
xorl %eax, %eax
callq 0xb9a3
callq 0x3040
movl $0x0, (%rax)
callq 0x46b3
movq 0x18f34(%rip), %rax     # 0x1cfe0
movq (%rax), %rcx
leaq 0xffb5(%rip), %rdi      # 0x1406b
movl $0x16, %esi
movl $0x1, %edx
callq 0x3660
xorl %edi, %edi
callq 0x3480
cmpl $0x0, 0x38(%rsp)
sete %r12b
movq 0x30(%rsp), %r13
movq 0x48(%rsp), %rbp
movq 0x18(%rsp), %rbx
movq 0x50(%rsp), %r15
movq 0x28(%rsp), %r14
jmp 0x3c5f
callq 0x3040
cmpl $0x0, (%rax)
jne 0x414e
leaq 0xff30(%rip), %rdi      # 0x14034
movq %rbp, %rsi
movq %rbx, %rdx
xorl %eax, %eax
callq 0xb9a3
jmp 0x4339
leaq 0xff94(%rip), %rsi      # 0x140b1
leaq 0x78(%rsp), %rdi
movq %r15, %rdx
xorl %eax, %eax
callq 0x93a4
cmpl $-0x1, %eax
jne 0x4171
callq 0x3040
cmpl $0x0, (%rax)
jne 0x41a9
leaq 0xff8d(%rip), %rdi      # 0x140cf
xorl %eax, %eax
callq 0xb9a3
jmp 0x4339
movq %rax, %r14
leaq 0xfedc(%rip), %rdi      # 0x14034
movq %rbp, %rsi
movq %rbx, %rdx
xorl %eax, %eax
callq 0xb884
movl $0x0, (%r14)
jmp 0x4339
movq 0x78(%rsp), %rdi
movl $0x78, %edx
movl $0xf, %esi
callq 0xdfcc
testq %rax, %rax
jne 0x41bf
callq 0x3040
cmpl $0x0, (%rax)
movq 0x78(%rsp), %rsi
jne 0x42f6
leaq 0xff34(%rip), %rdi      # 0x140d8
jmp 0x4316
movq %rax, %rbx
leaq 0xff1c(%rip), %rdi      # 0x140cf
xorl %eax, %eax
callq 0xb884
jmp 0x4333
movq %rax, 0x20(%rsp)
leaq 0x70(%rsp), %rsi
leaq 0x58(%rsp), %rdx
movq %rbp, %rdi
callq 0x5548
testl %eax, %eax
jne 0x4302
movq %r14, 0x28(%rsp)
movq 0x70(%rsp), %rdi
movq 0x58(%rsp), %rsi
movq %r15, %rdx
movq 0x20(%rsp), %rcx
callq 0xc814
testq %rax, %rax
je 0x4222
movq %rax, %r14
movq 0x70(%rsp), %rdi
movq 0x58(%rsp), %rsi
movq %r15, %rdx
movq 0x20(%rsp), %rcx
callq 0xc814
testq %rax, %rax
jne 0x4352
callq 0x3040
cmpl $0x0, (%rax)
jne 0x4343
leaq 0xfee2(%rip), %rdi      # 0x14119
jmp 0x4142
leaq 0xfdc1(%rip), %rdi      # 0x14004
leaq 0xfdc9(%rip), %rsi      # 0x14013
leaq 0xfdc9(%rip), %rcx      # 0x1401a
movl $0x67, %edx
callq 0x3210
leaq 0xfda2(%rip), %rdi      # 0x14004
leaq 0xfdaa(%rip), %rsi      # 0x14013
leaq 0xfdaa(%rip), %rcx      # 0x1401a
movl $0x4f, %edx
callq 0x3210
leaq 0xfd83(%rip), %rdi      # 0x14004
leaq 0xfd8b(%rip), %rsi      # 0x14013
leaq 0xfd8b(%rip), %rcx      # 0x1401a
movl $0x49, %edx
callq 0x3210
leaq 0xfd64(%rip), %rdi      # 0x14004
leaq 0xfd6c(%rip), %rsi      # 0x14013
leaq 0xfd6c(%rip), %rcx      # 0x1401a
movl $0x55, %edx
callq 0x3210
leaq 0xfd45(%rip), %rdi      # 0x14004
leaq 0xfd4d(%rip), %rsi      # 0x14013
leaq 0xfd4d(%rip), %rcx      # 0x1401a
movl $0x5b, %edx
callq 0x3210
leaq 0xfd26(%rip), %rdi      # 0x14004
leaq 0xfd2e(%rip), %rsi      # 0x14013
leaq 0xfd2e(%rip), %rcx      # 0x1401a
movl $0x61, %edx
callq 0x3210
movq %rax, %rbx
leaq 0xfdd8(%rip), %rdi      # 0x140d8
jmp 0x432c
callq 0x3040
cmpl $0x0, (%rax)
jne 0x431f
leaq 0xfde7(%rip), %rdi      # 0x140fa
movq %rbp, %rsi
xorl %eax, %eax
callq 0xb9a3
jmp 0x4339
movq %rax, %rbx
leaq 0xfdd1(%rip), %rdi      # 0x140fa
movq %rbp, %rsi
xorl %eax, %eax
callq 0xb884
movl $0x0, (%rbx)
movl $0x1, %edi
callq 0x3480
movq %rax, %rbx
leaq 0xfdcc(%rip), %rdi      # 0x14119
jmp 0x41b3
movq %r15, %rcx
movq %rax, %r15
movq 0x70(%rsp), %rdi
movq 0x58(%rsp), %rsi
movq %rax, (%rsp)
movq %rbx, %rdx
movq %rcx, 0x50(%rsp)
movq 0x20(%rsp), %r8
movq %r14, %r9
callq 0x4734
testq %rax, %rax
jne 0x4396
callq 0x3040
cmpl $0x0, (%rax)
jne 0x43c1
leaq 0xfdae(%rip), %rdi      # 0x1413f
jmp 0x4142
movq %rax, 0x68(%rsp)
movq %r13, %rdi
callq 0xa7dc
testq %rax, %rax
jne 0x43d0
callq 0x3040
cmpl $0x0, (%rax)
jne 0x43f7
leaq 0xfdac(%rip), %rdi      # 0x14165
movq %r13, %rsi
jmp 0x4316
movq %rax, %rbx
leaq 0xfd74(%rip), %rdi      # 0x1413f
jmp 0x41b3
cmpq $0x0, (%rax)
jne 0x4409
leaq 0xfdab(%rip), %rdi      # 0x14188
movq %r13, %rsi
xorl %eax, %eax
callq 0xb9a3
callq 0x3040
movl $0x0, (%rax)
jmp 0x4339
movq %rax, %rbx
leaq 0xfd64(%rip), %rdi      # 0x14165
movq %r13, %rsi
jmp 0x432c
movq %rbp, 0x48(%rsp)
movq %rax, 0x38(%rsp)
cmpq $0x0, 0x8(%rax)
je 0x4436
leaq 0xfd81(%rip), %rdi      # 0x141a2
movq %r13, %rsi
xorl %eax, %eax
callq 0xb9a3
callq 0x3040
movl $0x0, (%rax)
movq %r13, 0x30(%rsp)
movq 0x38(%rsp), %rax
movq (%rax), %rdi
callq 0xaf37
cmpl $-0x1, %eax
je 0x4339
movl %eax, %ebp
cmpq $0x0, 0x28(%rsp)
jne 0x4466
movq $0x0, 0x18(%rsp)
jmp 0x44af
movq 0x28(%rsp), %rdi
callq 0xd560
movq %rax, 0x18(%rsp)
testq %rax, %rax
jne 0x4494
callq 0x3040
cmpl $0x0, (%rax)
jne 0x45bc
leaq 0xfd49(%rip), %rdi      # 0x141d8
jmp 0x4142
movq %r14, %rdi
movq 0x18(%rsp), %r13
movq %r13, %rsi
callq 0xca1f
movq %r15, %rdi
movq %r13, %rsi
callq 0xca1f
cmpq $0x0, 0x40(%rsp)
jne 0x44d8
leaq 0xfd2f(%rip), %rsi      # 0x141ed
leaq 0x40(%rsp), %rdi
movq 0x30(%rsp), %rdx
xorl %eax, %eax
callq 0x93a4
cmpl $-0x1, %eax
je 0x4131
movq 0x40(%rsp), %rdi
callq 0x94a8
testl %eax, %eax
jne 0x4572
movq %r14, %rdi
movq %r15, %rsi
movq %rbx, %rdx
movl %ebp, %ecx
callq 0x4cb0
movq %rax, %r13
testq %rax, %rax
je 0x45cb
callq 0x59a8
testl %eax, %eax
jne 0x4588
movq %r13, %rdi
callq 0x4efc
testl %eax, %eax
jne 0x4506
movq %r13, %rdi
callq 0x4f13
testl %eax, %eax
jne 0x4339
testb %r12b, %r12b
jne 0x44ea
cmpq $0x0, 0x18(%rsp)
je 0x4542
movq 0x18(%rsp), %rdi
callq 0xdbf1
movl %ebp, %edi
callq 0x3670
testl %eax, %eax
je 0x4609
callq 0x3040
cmpl $0x0, (%rax)
jne 0x45f0
leaq 0x101c6(%rip), %rdi     # 0x1472c
xorl %eax, %eax
callq 0xb9a3
jmp 0x4609
callq 0x3040
cmpl $0x0, (%rax)
jne 0x459e
leaq 0xfc71(%rip), %rdi      # 0x141f4
jmp 0x4142
callq 0x3040
cmpl $0x0, (%rax)
jne 0x45ad
leaq 0xfc8e(%rip), %rdi      # 0x14227
jmp 0x4142
movq %rax, %rbx
leaq 0xfc4c(%rip), %rdi      # 0x141f4
jmp 0x41b3
movq %rax, %rbx
leaq 0xfc70(%rip), %rdi      # 0x14227
jmp 0x41b3
movq %rax, %rbx
leaq 0xfc12(%rip), %rdi      # 0x141d8
jmp 0x41b3
callq 0x3040
cmpl $0x0, (%rax)
jne 0x45e1
leaq 0xfc2c(%rip), %rdi      # 0x14208
jmp 0x4142
movq %rax, %rbx
leaq 0xfc1d(%rip), %rdi      # 0x14208
jmp 0x41b3
movq %rax, %r13
leaq 0x10132(%rip), %rdi     # 0x1472c
xorl %eax, %eax
callq 0xb884
movl $0x0, (%r13)
movq 0x38(%rsp), %rdi
callq 0xaef3
movq 0x68(%rsp), %rdi
callq 0x4929
movq %r15, %rdi
callq 0xcbcd
movq %r14, %rdi
callq 0xcbcd
movq 0x20(%rsp), %rdi
callq 0xe753
movq 0x78(%rsp), %rdi
callq 0x3460
movq 0x70(%rsp), %rdi
callq 0x3460
movq 0x58(%rsp), %r14
movq %r14, %rdi
callq 0x3180
leaq 0x19021(%rip), %rcx     # 0x1d680
movq (%rcx), %rcx
movq %r14, %rdi
movq %rax, %rsi
callq *%rcx
movq 0x58(%rsp), %rdi
callq 0x3460
movq 0x48(%rsp), %rdi
callq 0x3460
movq 0x28(%rsp), %rdi
callq 0x3460
movq 0x40(%rsp), %rdi
callq 0x3460
movq 0x50(%rsp), %rdi
callq 0x3460
movq 0x30(%rsp), %rdi
callq 0x3460
movq %rbx, %rdi
callq 0x3460
jmp 0x40c5