// File: /workspace/github_c_makefile_star2_O1/Tarsnap[P]kivaloo/lbs-dynamodb/main.c
// Function: main
int
main(int argc, char * argv[])
{
	/* State variables. */
	struct wire_requestqueue * Q_DDBKV;
	struct wire_requestqueue * Q_DDBKV_M;
	struct metadata * M;
	struct deleteto * deleter;
	struct state * S;
	struct dispatch_state * D;
	int s;
	int s_t;
	int s_m;

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

	/* Working variables. */
	struct sock_addr ** sas_s;
	struct sock_addr ** sas_t;
	struct sock_addr ** sas_m;
	uint64_t itemsz_64;
	size_t itemsz;
	uint8_t tableid[32];
	const char * ch;

	WARNP_INIT;

	/* Parse the command line. */
	while ((ch = GETOPT(argc, argv)) != NULL) {
		GETOPT_SWITCH(ch) {
		GETOPT_OPTARG("-p"):
			if (opt_p != NULL)
				usage();
			if ((opt_p = 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_OPTARG("-m"):
			if (opt_m != NULL)
				usage();
			if ((opt_m = strdup(optarg)) == NULL)
				OPT_EPARSE(ch, optarg);
			break;
		GETOPT_OPT("--version"):
			fprintf(stderr, "kivaloo-lbs-dynamodb @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_s == NULL)
		usage();
	if (opt_t == NULL)
		usage();
	if (opt_m == NULL)
		usage();

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

	/* Resolve the target (dynamodb-kv daemon) addresses. */
	if ((sas_t = sock_resolve(opt_t)) == NULL) {
		warnp("Error resolving socket address: %s", opt_t);
		exit(1);
	}
	if (sas_t[0] == NULL) {
		warn0("No addresses found for %s", opt_t);
		exit(1);
	}
	if ((sas_m = sock_resolve(opt_m)) == NULL) {
		warnp("Error resolving socket address: %s", opt_m);
		exit(1);
	}
	if (sas_m[0] == NULL) {
		warn0("No addresses found for %s", opt_m);
		exit(1);
	}

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

	/* Connect to the dynamodb-kv daemons. */
	if ((s_t = sock_connect(sas_t)) == -1)
		exit(1);
	if ((s_m = sock_connect(sas_m)) == -1)
		exit(1);

	/* Create queues of requests to the dynamodb-kv daemons. */
	if ((Q_DDBKV = wire_requestqueue_init(s_t)) == NULL) {
		warnp("Cannot create DynamoDB-KV request queue");
		exit(1);
	}
	if ((Q_DDBKV_M = wire_requestqueue_init(s_m)) == NULL) {
		warnp("Cannot create DynamoDB-KV request queue");
		exit(1);
	}

	/*
	 * Create a metadata handler; this also atomically takes ownership of
	 * the metadata with respect to other lbs-dynamodb processes.
	 */
	if ((M = metadata_init(Q_DDBKV_M, &itemsz_64, tableid)) == NULL) {
		warnp("Error initializing state metadata handler");
		exit(1);
	}

	/* Sanity-check the item size recorded in the metadata. */
	if ((itemsz_64 < 512) || (itemsz_64 > 8192)) {
		warn0("Invalid lbs-dynamodb item size: %" PRIu64, itemsz_64);
		exit(1);
	}
	itemsz = (size_t)itemsz_64;

	/* Create a deleter. */
	if ((deleter = deleteto_init(Q_DDBKV, M)) == NULL) {
		warnp("Error initializing garbage collection");
		exit(1);
	}

	/* Initialize the internal state. */
	if ((S = state_init(Q_DDBKV, itemsz, tableid, M)) == NULL) {
		warnp("Error initializing state from DynamoDB");
		exit(1);
	}

	/* 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(S, deleter, s)) == NULL)
			exit(1);

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

		/* Close and free the connection. */
		if (dispatch_done(D))
			exit(1);
	} while (opt_1 == 0);

	/* Clean up the internal state. */
	state_free(S);

	/*
	 * Shut down deleting (cleanly if possible, but we don't care if we
	 * encounter an error at this point).
	 */
	deleteto_stop(deleter);

	/* Shut down the metadata handler. */
	metadata_free(M);

	/* Shut down the dynamodb-kv request queues. */
	wire_requestqueue_destroy(Q_DDBKV_M);
	wire_requestqueue_free(Q_DDBKV_M);
	wire_requestqueue_destroy(Q_DDBKV);
	wire_requestqueue_free(Q_DDBKV);

	/* Close sockets. */
	if (close(s_m))
		warnp("close");
	if (close(s_t))
		warnp("close");
	if (close(s))
		warnp("close");

	/* Free socket addresses. */
	sock_addr_freelist(sas_m);
	sock_addr_freelist(sas_t);
	sock_addr_freelist(sas_s);

	/* Free option strings. */
	free(opt_s);
	free(opt_p);
	free(opt_m);
	free(opt_t);

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

// Assembly:
pushq %rbp
pushq %r15
pushq %r14
pushq %r13
pushq %r12
pushq %rbx
subq $0x98, %rsp
movl %edi, 0x4(%rsp)
movq $0x0, 0x20(%rsp)
movq %rsi, 0x38(%rsp)
movq (%rsi), %rdi
testq %rdi, %rdi
je 0x297c
callq 0x9448
movl 0x4(%rsp), %edi
movq 0x38(%rsp), %rsi
callq 0x76d0
testq %rax, %rax
jne 0x29c0
movb $0x1, %bl
xorl %r15d, %r15d
xorl %r14d, %r14d
xorl %ebp, %ebp
leaq 0x11b68(%rip), %rax     # 0x14508
movl 0x4(%rsp), %ecx
cmpl %ecx, (%rax)
jne 0x29bb
testq %rbp, %rbp
je 0x29bb
testq %r14, %r14
je 0x29bb
testq %r15, %r15
jne 0x2d42
callq 0x32f9
movq %rax, %r12
movq $0x0, 0x18(%rsp)
leaq 0x21dd5(%rip), %r15     # 0x247a8
leaq 0xa657(%rip), %r14      # 0xd031
leaq 0xa677(%rip), %rbp      # 0xd058
leaq 0xa673(%rip), %r13      # 0xd05b
leaq 0xc5f5(%rip), %rbx      # 0xefe4
movq $0x0, 0x10(%rsp)
movq $0x0, 0x30(%rsp)
movq $0x0, 0x28(%rsp)
movq $0x48, 0x8(%rsp)
movq 0x8(%rsp), %rax
decq %rax
movq %rax, 0x60(%rsp)
movl $0x0, 0x44(%rsp)
cmpl $0x0, (%r15)
je 0x2a3d
movq %r12, %rdi
callq 0x79fb
addq 0x8(%rsp), %rax
jmp 0x2a4b
movq 0x60(%rsp), %rax
leaq 0x1(%rax), %rcx
movq %rcx, 0x60(%rsp)
cmpq $0x60, %rax
jg 0x2a8b
cmpq $0x54, %rax
jg 0x2aba
cmpq $0x49, %rax
je 0x2b32
cmpq $0x4f, %rax
jne 0x2b7b
cmpl $0x0, (%r15)
jne 0x2bd2
movl $0x4f, %esi
subq 0x8(%rsp), %rsi
leaq 0xa5cc(%rip), %rdi      # 0xd052
jmp 0x2b66
cmpq $0x68, %rax
jg 0x2ae7
cmpq $0x61, %rax
je 0x2b0f
cmpq $0x64, %rax
jne 0x2b7b
cmpl $0x0, (%r15)
jne 0x2bb8
movl $0x64, %esi
subq 0x8(%rsp), %rsi
movq %rbx, %rdi
jmp 0x2b26
cmpq $0x55, %rax
je 0x2b4b
cmpq $0x5b, %rax
jne 0x2b7b
cmpl $0x0, (%r15)
jne 0x2c77
movl $0x5b, %esi
subq 0x8(%rsp), %rsi
movq %rbp, %rdi
jmp 0x2b66
cmpq $0x69, %rax
jne 0x2b75
cmpl $0x0, (%r15)
jne 0x2d18
movl $0x69, %edi
subq 0x8(%rsp), %rdi
callq 0x7bcf
jmp 0x2a28
cmpl $0x0, (%r15)
jne 0x2cf1
movl $0x61, %esi
subq 0x8(%rsp), %rsi
movq %r13, %rdi
xorl %edx, %edx
callq 0x7ab8
jmp 0x2a28
cmpl $0x0, (%r15)
jne 0x2c0b
movl $0x49, %esi
subq 0x8(%rsp), %rsi
movq %r14, %rdi
jmp 0x2b66
cmpl $0x0, (%r15)
jne 0x2c41
movl $0x55, %esi
subq 0x8(%rsp), %rsi
leaq 0xa4ef(%rip), %rdi      # 0xd055
movl $0x1, %edx
callq 0x7ab8
jmp 0x2a28
cmpq $0x6c, %rax
je 0x2bac
cmpl $0x0, (%r15)
jne 0x2d21
cmpl $0x0, 0x44(%rsp)
jne 0x2a28
movl $0x6c, %edi
subq 0x8(%rsp), %rdi
callq 0x7c0f
movl $0x1, 0x44(%rsp)
jmp 0x2a28
movl $0x1, (%r15)
jmp 0x2cb4
cmpl $0x0, 0x18(%rsp)
movl $0x1, %eax
movq %rax, 0x18(%rsp)
je 0x2cb4
jmp 0x29bb
leaq 0x21bc7(%rip), %rax     # 0x247a0
cmpq $0x0, (%rax)
je 0x2e3d
cmpq $0x0, 0x10(%rsp)
jne 0x29bb
leaq 0x21baa(%rip), %rax     # 0x247a0
movq (%rax), %r14
movq %r14, %rdi
callq 0x2390
movq %rax, 0x10(%rsp)
jmp 0x2cab
leaq 0x21b8e(%rip), %rax     # 0x247a0
cmpq $0x0, (%rax)
je 0x2dff
cmpq $0x0, 0x20(%rsp)
jne 0x29bb
leaq 0x21b71(%rip), %rax     # 0x247a0
movq (%rax), %r14
movq %r14, %rdi
callq 0x2390
movq %rax, 0x20(%rsp)
jmp 0x2cab
leaq 0x21b58(%rip), %rax     # 0x247a0
cmpq $0x0, (%rax)
je 0x2e5c
cmpq $0x0, 0x30(%rsp)
jne 0x29bb
leaq 0x21b3b(%rip), %rax     # 0x247a0
movq (%rax), %r14
movq %r14, %rdi
callq 0x2390
movq %rax, 0x30(%rsp)
jmp 0x2cab
leaq 0x21b22(%rip), %rax     # 0x247a0
cmpq $0x0, (%rax)
je 0x2e1e
cmpq $0x0, 0x28(%rsp)
jne 0x29bb
leaq 0x21b05(%rip), %rax     # 0x247a0
movq (%rax), %r14
movq %r14, %rdi
callq 0x2390
movq %rax, 0x28(%rsp)
testq %rax, %rax
je 0x2d68
movl 0x4(%rsp), %edi
movq 0x38(%rsp), %rsi
callq 0x76d0
movq %rax, %r12
testq %rax, %rax
leaq 0xa362(%rip), %r14      # 0xd031
jne 0x2a0a
cmpl $0x0, 0x18(%rsp)
sete %bl
movq 0x30(%rsp), %r14
movq 0x28(%rsp), %r15
movq 0x10(%rsp), %rbp
jmp 0x2999
movq 0x11300(%rip), %rax     # 0x13ff8
movq (%rax), %rcx
leaq 0xa363(%rip), %rdi      # 0xd065
movl $0x1f, %esi
movl $0x1, %edx
callq 0x2370
xorl %edi, %edi
callq 0x2350
leaq 0xa366(%rip), %rdi      # 0xd085
jmp 0x2d28
leaq 0xa374(%rip), %rdi      # 0xd09c
movq %r12, %rsi
xorl %eax, %eax
callq 0x95e7
callq 0x20a0
movl $0x0, (%rax)
callq 0x32f9
movq %rbp, %rdi
callq 0x8420
testq %rax, %rax
jne 0x2d8b
callq 0x20a0
cmpl $0x0, (%rax)
jne 0x2dbf
leaq 0xa351(%rip), %rdi      # 0xd0b1
movq %rbp, %rsi
jmp 0x2ed2
callq 0x20a0
cmpl $0x0, (%rax)
jne 0x2da3
leaq 0xa2bb(%rip), %rdi      # 0xd034
movq %r12, %rsi
movq %r14, %rdx
xorl %eax, %eax
callq 0x95e7
jmp 0x2f07
movq %rax, %r12
cmpq $0x0, (%rax)
jne 0x2dd1
leaq 0xa339(%rip), %rdi      # 0xd0d4
movq %rbp, %rsi
jmp 0x2e8e
movq %rax, %rbx
leaq 0xa287(%rip), %rdi      # 0xd034
movq %r12, %rsi
movq %r14, %rdx
xorl %eax, %eax
callq 0x94c8
jmp 0x2f01
movq %rax, %rbx
leaq 0xa2e8(%rip), %rdi      # 0xd0b1
movq %rbp, %rsi
jmp 0x2efa
movq %r14, %rdi
callq 0x8420
testq %rax, %rax
jne 0x2e7b
callq 0x20a0
cmpl $0x0, (%rax)
jne 0x2ea2
leaq 0xa2ba(%rip), %rdi      # 0xd0b1
movq %r14, %rsi
jmp 0x2ed2
leaq 0xa1fe(%rip), %rdi      # 0xd004
leaq 0xa206(%rip), %rsi      # 0xd013
leaq 0xa206(%rip), %rcx      # 0xd01a
movl $0x49, %edx
callq 0x21a0
leaq 0xa1df(%rip), %rdi      # 0xd004
leaq 0xa1e7(%rip), %rsi      # 0xd013
leaq 0xa1e7(%rip), %rcx      # 0xd01a
movl $0x5b, %edx
callq 0x21a0
leaq 0xa1c0(%rip), %rdi      # 0xd004
leaq 0xa1c8(%rip), %rsi      # 0xd013
leaq 0xa1c8(%rip), %rcx      # 0xd01a
movl $0x4f, %edx
callq 0x21a0
leaq 0xa1a1(%rip), %rdi      # 0xd004
leaq 0xa1a9(%rip), %rsi      # 0xd013
leaq 0xa1a9(%rip), %rcx      # 0xd01a
movl $0x55, %edx
callq 0x21a0
movq %rax, %r13
cmpq $0x0, (%rax)
jne 0x2eb1
leaq 0xa249(%rip), %rdi      # 0xd0d4
movq %r14, %rsi
xorl %eax, %eax
callq 0x95e7
callq 0x20a0
movl $0x0, (%rax)
jmp 0x2f07
movq %rax, %rbx
leaq 0xa205(%rip), %rdi      # 0xd0b1
movq %r14, %rsi
jmp 0x2efa
movq %r15, %rdi
callq 0x8420
testq %rax, %rax
jne 0x2edb
callq 0x20a0
cmpl $0x0, (%rax)
jne 0x2eed
leaq 0xa1e2(%rip), %rdi      # 0xd0b1
movq %r15, %rsi
xorl %eax, %eax
callq 0x95e7
jmp 0x2f07
cmpq $0x0, (%rax)
jne 0x2f11
leaq 0xa1ec(%rip), %rdi      # 0xd0d4
movq %r15, %rsi
jmp 0x2e8e
movq %rax, %rbx
leaq 0xa1ba(%rip), %rdi      # 0xd0b1
movq %r15, %rsi
xorl %eax, %eax
callq 0x94c8
movl $0x0, (%rbx)
movl $0x1, %edi
callq 0x2350
movq %rax, 0x38(%rsp)
cmpq $0x0, 0x8(%r12)
je 0x2f3a
leaq 0xa1c9(%rip), %rdi      # 0xd0ee
movq %rbp, %rsi
xorl %eax, %eax
callq 0x95e7
callq 0x20a0
movl $0x0, (%rax)
movq (%r12), %rdi
callq 0x8b7b
movl %eax, 0x4(%rsp)
cmpl $-0x1, %eax
je 0x2f07
movq %r13, %rdi
callq 0x8d3d
cmpl $-0x1, %eax
je 0x2f07
movl %eax, 0x18(%rsp)
movq 0x38(%rsp), %rdi
callq 0x8d3d
movl %eax, 0x40(%rsp)
cmpl $-0x1, %eax
je 0x2f07
movq %rbp, 0x10(%rsp)
movq %r15, 0x28(%rsp)
movq %r14, 0x30(%rsp)
movl 0x18(%rsp), %edi
callq 0xaa2c
movq %rax, 0x50(%rsp)
testq %rax, %rax
je 0x2fa5
movl 0x40(%rsp), %edi
callq 0xaa2c
movq %rax, 0x58(%rsp)
testq %rax, %rax
jne 0x2fd8
callq 0x20a0
cmpl $0x0, (%rax)
jne 0x2fc2
leaq 0xa16e(%rip), %rdi      # 0xd124
xorl %eax, %eax
callq 0x95e7
jmp 0x2f07
movq %rax, %rbx
leaq 0xa158(%rip), %rdi      # 0xd124
xorl %eax, %eax
callq 0x94c8
jmp 0x2f01
leaq 0x68(%rsp), %rsi
leaq 0x70(%rsp), %rdx
movq 0x58(%rsp), %rdi
callq 0x4258
movq %rax, 0x48(%rsp)
testq %rax, %rax
jne 0x3009
callq 0x20a0
cmpl $0x0, (%rax)
jne 0x3029
leaq 0xa145(%rip), %rdi      # 0xd14c
jmp 0x2fb6
movq 0x68(%rsp), %r14
leaq -0x2001(%r14), %rax
cmpq $-0x1e02, %rax          # imm = 0xE1FE
ja 0x3035
leaq 0xa152(%rip), %rdi      # 0xd176
jmp 0x2e8b
movq %rax, %rbx
leaq 0xa119(%rip), %rdi      # 0xd14c
jmp 0x2fcc
movq 0x50(%rsp), %rdi
movq 0x48(%rsp), %rsi
callq 0x3f74
testq %rax, %rax
jne 0x305f
callq 0x20a0
cmpl $0x0, (%rax)
jne 0x3098
leaq 0xa140(%rip), %rdi      # 0xd19a
jmp 0x2fb6
movq %rax, %r15
leaq 0x70(%rsp), %rdx
movq 0x50(%rsp), %rdi
movq %r14, %rsi
movq 0x48(%rsp), %rcx
callq 0x3a04
testq %rax, %rax
jne 0x30a7
callq 0x20a0
cmpl $0x0, (%rax)
jne 0x31b5
leaq 0xa12d(%rip), %rdi      # 0xd1c0
jmp 0x2fb6
movq %rax, %rbx
leaq 0xa0f8(%rip), %rdi      # 0xd19a
jmp 0x2fcc
movq %rax, %r14
cmpq $0x0, 0x20(%rsp)
jne 0x30e9
leaq 0xa12e(%rip), %rsi      # 0xd1e7
leaq 0x20(%rsp), %rdi
movq 0x10(%rsp), %rdx
xorl %eax, %eax
callq 0x7110
cmpl $-0x1, %eax
jne 0x30e9
callq 0x20a0
cmpl $0x0, (%rax)
jne 0x320e
leaq 0xa10a(%rip), %rdi      # 0xd1ee
jmp 0x2fb6
movq 0x20(%rsp), %rdi
callq 0x7214
testl %eax, %eax
jne 0x31c4
movq %r14, %rdi
movq %r15, %rsi
movl 0x4(%rsp), %edx
callq 0x3340
movq %rax, %rbp
testq %rax, %rax
je 0x2f07
callq 0x4ab8
testl %eax, %eax
jne 0x31da
movq %rbp, %rdi
callq 0x358a
testl %eax, %eax
jne 0x3116
movq %rbp, %rdi
callq 0x35a8
testl %eax, %eax
jne 0x2f07
testb %bl, %bl
jne 0x30fb
movq %r14, %rdi
callq 0x3f49
movq %r15, %rdi
callq 0x4170
movq 0x48(%rsp), %rdi
callq 0x476b
movq 0x58(%rsp), %rbx
movq %rbx, %rdi
callq 0xb0f1
movq %rbx, %rdi
callq 0xb105
movq 0x50(%rsp), %rbx
movq %rbx, %rdi
callq 0xb0f1
movq %rbx, %rdi
callq 0xb105
movl 0x40(%rsp), %edi
callq 0x21c0
testl %eax, %eax
je 0x3235
callq 0x20a0
cmpl $0x0, (%rax)
jne 0x321d
leaq 0xafe3(%rip), %rdi      # 0xe18c
xorl %eax, %eax
callq 0x95e7
jmp 0x3235
movq %rax, %rbx
leaq 0xa001(%rip), %rdi      # 0xd1c0
jmp 0x2fcc
callq 0x20a0
cmpl $0x0, (%rax)
jne 0x31f0
leaq 0xa022(%rip), %rdi      # 0xd1f7
jmp 0x2fb6
callq 0x20a0
cmpl $0x0, (%rax)
jne 0x31ff
leaq 0xa020(%rip), %rdi      # 0xd20b
jmp 0x2fb6
movq %rax, %rbx
leaq 0x9ffd(%rip), %rdi      # 0xd1f7
jmp 0x2fcc
movq %rax, %rbx
leaq 0xa002(%rip), %rdi      # 0xd20b
jmp 0x2fcc
movq %rax, %rbx
leaq 0x9fd6(%rip), %rdi      # 0xd1ee
jmp 0x2fcc
movq %rax, %r14
leaq 0xaf65(%rip), %rdi      # 0xe18c
xorl %eax, %eax
callq 0x94c8
movl $0x0, (%r14)
movl 0x18(%rsp), %edi
callq 0x21c0
testl %eax, %eax
je 0x3274
callq 0x20a0
cmpl $0x0, (%rax)
jne 0x325c
leaq 0xaf39(%rip), %rdi      # 0xe18c
xorl %eax, %eax
callq 0x95e7
jmp 0x3274
movq %rax, %r14
leaq 0xaf26(%rip), %rdi      # 0xe18c
xorl %eax, %eax
callq 0x94c8
movl $0x0, (%r14)
movl 0x4(%rsp), %edi
callq 0x21c0
testl %eax, %eax
je 0x32b2
callq 0x20a0
cmpl $0x0, (%rax)
jne 0x329b
leaq 0xaefa(%rip), %rdi      # 0xe18c
xorl %eax, %eax
callq 0x95e7
jmp 0x32b2
movq %rax, %rbx
leaq 0xaee7(%rip), %rdi      # 0xe18c
xorl %eax, %eax
callq 0x94c8
movl $0x0, (%rbx)
movq 0x38(%rsp), %rdi
callq 0x8b37
movq %r13, %rdi
callq 0x8b37
movq %r12, %rdi
callq 0x8b37
movq 0x10(%rsp), %rdi
callq 0x2040
movq 0x20(%rsp), %rdi
callq 0x2040
movq 0x28(%rsp), %rdi
callq 0x2040
movq 0x30(%rsp), %rdi
callq 0x2040
jmp 0x2d11