// File: /workspace/github_c_makefile_star2_O0/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
movq %rsp, %rbp
subq $0x100, %rsp            # imm = 0x100
movl $0x0, -0x4(%rbp)
movl %edi, -0x8(%rbp)
movq %rsi, -0x10(%rbp)
movq $0x0, -0x58(%rbp)
movq $0x0, -0x60(%rbp)
movq $0x0, -0x68(%rbp)
movq $0x0, -0x70(%rbp)
movl $0x0, -0x74(%rbp)
movq -0x10(%rbp), %rax
cmpq $0x0, (%rax)
je 0x2546
movq -0x10(%rbp), %rax
movq (%rax), %rdi
callq 0xcf50
jmp 0x2548
jmp 0x254a
movl -0x8(%rbp), %edi
movq -0x10(%rbp), %rsi
callq 0x9c00
movq %rax, -0xc8(%rbp)
cmpq $0x0, %rax
je 0x2ba2
movq $0x48, -0xd0(%rbp)
movq -0xd0(%rbp), %rax
decq %rax
movq %rax, -0xd8(%rbp)
movl $0x0, -0xdc(%rbp)
leaq 0x7(%rip), %rax         # 0x259b
movq %rax, -0xe8(%rbp)
leaq 0x28226(%rip), %rax     # 0x2a7c8
cmpl $0x0, (%rax)
je 0x25c6
movq -0xc8(%rbp), %rdi
callq 0xa2c0
movq -0xd0(%rbp), %rcx
addq %rcx, %rax
movq %rax, -0xf0(%rbp)
jmp 0x25e2
movq -0xd8(%rbp), %rax
movq %rax, %rcx
addq $0x1, %rcx
movq %rcx, -0xd8(%rbp)
movq %rax, -0xf0(%rbp)
movq -0xf0(%rbp), %rax
addq $-0x49, %rax
movq %rax, -0xf8(%rbp)
subq $0x23, %rax
ja 0x2b2c
movq -0xf8(%rbp), %rax
leaq 0x109f8(%rip), %rcx     # 0x13004
movslq (%rcx,%rax,4), %rax
addq %rcx, %rax
jmpq *%rax
leaq 0x281ac(%rip), %rax     # 0x2a7c8
cmpl $0x0, (%rax)
je 0x2651
leaq 0x28198(%rip), %rax     # 0x2a7c0
cmpq $0x0, (%rax)
je 0x2630
jmp 0x264f
leaq 0x10a5d(%rip), %rdi     # 0x13094
leaq 0x10a65(%rip), %rsi     # 0x130a3
movl $0x49, %edx
leaq 0x10a60(%rip), %rcx     # 0x130aa
callq 0x21b0
jmp 0x2684
movq -0xd0(%rbp), %rax
movl $0x49, %esi
subq %rax, %rsi
leaq 0x10a5a(%rip), %rdi     # 0x130c1
movl $0x1, %edx
callq 0xa410
movq -0xe8(%rbp), %rax
movq %rax, -0x100(%rbp)
jmp 0x330e
cmpq $0x0, -0x70(%rbp)
je 0x2690
callq 0x3320
leaq 0x28129(%rip), %rax     # 0x2a7c0
movq (%rax), %rdi
callq 0x23a0
movq %rax, -0x70(%rbp)
cmpq $0x0, %rax
jne 0x270e
jmp 0x26ab
jmp 0x26ad
callq 0x20a0
cmpl $0x0, (%rax)
je 0x26e3
movq -0xc8(%rbp), %rsi
leaq 0x280fb(%rip), %rax     # 0x2a7c0
movq (%rax), %rdx
leaq 0x109f5(%rip), %rdi     # 0x130c4
movb $0x0, %al
callq 0xd010
callq 0x20a0
movl $0x0, (%rax)
jmp 0x2702
movq -0xc8(%rbp), %rsi
leaq 0x280cf(%rip), %rax     # 0x2a7c0
movq (%rax), %rdx
leaq 0x109c9(%rip), %rdi     # 0x130c4
movb $0x0, %al
callq 0xd260
jmp 0x2704
movl $0x1, %edi
callq 0x2370
jmp 0x2b9d
leaq 0x280ae(%rip), %rax     # 0x2a7c8
cmpl $0x0, (%rax)
je 0x274f
leaq 0x2809a(%rip), %rax     # 0x2a7c0
cmpq $0x0, (%rax)
je 0x272e
jmp 0x274d
leaq 0x1095f(%rip), %rdi     # 0x13094
leaq 0x10967(%rip), %rsi     # 0x130a3
movl $0x4f, %edx
leaq 0x10962(%rip), %rcx     # 0x130aa
callq 0x21b0
jmp 0x2782
movq -0xd0(%rbp), %rax
movl $0x4f, %esi
subq %rax, %rsi
leaq 0x1097d(%rip), %rdi     # 0x130e2
movl $0x1, %edx
callq 0xa410
movq -0xe8(%rbp), %rax
movq %rax, -0x100(%rbp)
jmp 0x330e
cmpq $0x0, -0x58(%rbp)
je 0x278e
callq 0x3320
leaq 0x2802b(%rip), %rax     # 0x2a7c0
movq (%rax), %rdi
callq 0x23a0
movq %rax, -0x58(%rbp)
cmpq $0x0, %rax
jne 0x280c
jmp 0x27a9
jmp 0x27ab
callq 0x20a0
cmpl $0x0, (%rax)
je 0x27e1
movq -0xc8(%rbp), %rsi
leaq 0x27ffd(%rip), %rax     # 0x2a7c0
movq (%rax), %rdx
leaq 0x108f7(%rip), %rdi     # 0x130c4
movb $0x0, %al
callq 0xd010
callq 0x20a0
movl $0x0, (%rax)
jmp 0x2800
movq -0xc8(%rbp), %rsi
leaq 0x27fd1(%rip), %rax     # 0x2a7c0
movq (%rax), %rdx
leaq 0x108cb(%rip), %rdi     # 0x130c4
movb $0x0, %al
callq 0xd260
jmp 0x2802
movl $0x1, %edi
callq 0x2370
jmp 0x2b9d
leaq 0x27fb0(%rip), %rax     # 0x2a7c8
cmpl $0x0, (%rax)
je 0x284d
leaq 0x27f9c(%rip), %rax     # 0x2a7c0
cmpq $0x0, (%rax)
je 0x282c
jmp 0x284b
leaq 0x10861(%rip), %rdi     # 0x13094
leaq 0x10869(%rip), %rsi     # 0x130a3
movl $0x55, %edx
leaq 0x10864(%rip), %rcx     # 0x130aa
callq 0x21b0
jmp 0x2880
movq -0xd0(%rbp), %rax
movl $0x55, %esi
subq %rax, %rsi
leaq 0x10882(%rip), %rdi     # 0x130e5
movl $0x1, %edx
callq 0xa410
movq -0xe8(%rbp), %rax
movq %rax, -0x100(%rbp)
jmp 0x330e
cmpq $0x0, -0x60(%rbp)
je 0x288c
callq 0x3320
leaq 0x27f2d(%rip), %rax     # 0x2a7c0
movq (%rax), %rdi
callq 0x23a0
movq %rax, -0x60(%rbp)
cmpq $0x0, %rax
jne 0x290a
jmp 0x28a7
jmp 0x28a9
callq 0x20a0
cmpl $0x0, (%rax)
je 0x28df
movq -0xc8(%rbp), %rsi
leaq 0x27eff(%rip), %rax     # 0x2a7c0
movq (%rax), %rdx
leaq 0x107f9(%rip), %rdi     # 0x130c4
movb $0x0, %al
callq 0xd010
callq 0x20a0
movl $0x0, (%rax)
jmp 0x28fe
movq -0xc8(%rbp), %rsi
leaq 0x27ed3(%rip), %rax     # 0x2a7c0
movq (%rax), %rdx
leaq 0x107cd(%rip), %rdi     # 0x130c4
movb $0x0, %al
callq 0xd260
jmp 0x2900
movl $0x1, %edi
callq 0x2370
jmp 0x2b9d
leaq 0x27eb2(%rip), %rax     # 0x2a7c8
cmpl $0x0, (%rax)
je 0x294b
leaq 0x27e9e(%rip), %rax     # 0x2a7c0
cmpq $0x0, (%rax)
je 0x292a
jmp 0x2949
leaq 0x10763(%rip), %rdi     # 0x13094
leaq 0x1076b(%rip), %rsi     # 0x130a3
movl $0x5b, %edx
leaq 0x10766(%rip), %rcx     # 0x130aa
callq 0x21b0
jmp 0x297e
movq -0xd0(%rbp), %rax
movl $0x5b, %esi
subq %rax, %rsi
leaq 0x10787(%rip), %rdi     # 0x130e8
movl $0x1, %edx
callq 0xa410
movq -0xe8(%rbp), %rax
movq %rax, -0x100(%rbp)
jmp 0x330e
cmpq $0x0, -0x68(%rbp)
je 0x298a
callq 0x3320
leaq 0x27e2f(%rip), %rax     # 0x2a7c0
movq (%rax), %rdi
callq 0x23a0
movq %rax, -0x68(%rbp)
cmpq $0x0, %rax
jne 0x2a08
jmp 0x29a5
jmp 0x29a7
callq 0x20a0
cmpl $0x0, (%rax)
je 0x29dd
movq -0xc8(%rbp), %rsi
leaq 0x27e01(%rip), %rax     # 0x2a7c0
movq (%rax), %rdx
leaq 0x106fb(%rip), %rdi     # 0x130c4
movb $0x0, %al
callq 0xd010
callq 0x20a0
movl $0x0, (%rax)
jmp 0x29fc
movq -0xc8(%rbp), %rsi
leaq 0x27dd5(%rip), %rax     # 0x2a7c0
movq (%rax), %rdx
leaq 0x106cf(%rip), %rdi     # 0x130c4
movb $0x0, %al
callq 0xd260
jmp 0x29fe
movl $0x1, %edi
callq 0x2370
jmp 0x2b9d
leaq 0x27db4(%rip), %rax     # 0x2a7c8
cmpl $0x0, (%rax)
je 0x2a1b
jmp 0x2a4b
movq -0xd0(%rbp), %rax
movl $0x61, %esi
subq %rax, %rsi
leaq 0x106ba(%rip), %rdi     # 0x130eb
xorl %edx, %edx
callq 0xa410
movq -0xe8(%rbp), %rax
movq %rax, -0x100(%rbp)
jmp 0x330e
movq 0x175a6(%rip), %rax     # 0x19ff8
movq (%rax), %rdi
leaq 0x10699(%rip), %rsi     # 0x130f5
movb $0x0, %al
callq 0x2250
xorl %edi, %edi
callq 0x2370
leaq 0x27d57(%rip), %rax     # 0x2a7c8
cmpl $0x0, (%rax)
je 0x2a78
jmp 0x2aa8
movq -0xd0(%rbp), %rax
movl $0x64, %esi
subq %rax, %rsi
leaq 0x126e6(%rip), %rdi     # 0x15174
xorl %edx, %edx
callq 0xa410
movq -0xe8(%rbp), %rax
movq %rax, -0x100(%rbp)
jmp 0x330e
cmpl $0x0, -0x74(%rbp)
je 0x2ab3
callq 0x3320
movl $0x1, -0x74(%rbp)
jmp 0x2b9d
leaq 0x27d02(%rip), %rax     # 0x2a7c8
cmpl $0x0, (%rax)
je 0x2acd
jmp 0x2af4
movq -0xd0(%rbp), %rax
movl $0x69, %edi
subq %rax, %rdi
callq 0xa6a0
movq -0xe8(%rbp), %rax
movq %rax, -0x100(%rbp)
jmp 0x330e
jmp 0x2af6
movq -0xc8(%rbp), %rsi
leaq 0x10611(%rip), %rdi     # 0x13115
movb $0x0, %al
callq 0xd260
callq 0x20a0
movl $0x0, (%rax)
callq 0x3320
jmp 0x2b76
leaq 0x27ca4(%rip), %rax     # 0x2a7c8
movl $0x1, (%rax)
jmp 0x2b9d
leaq 0x27c95(%rip), %rax     # 0x2a7c8
cmpl $0x0, (%rax)
je 0x2b3a
jmp 0x2b76
movl -0xdc(%rbp), %eax
cmpl $0x0, %eax
jne 0x2b63
movq -0xd0(%rbp), %rax
movl $0x6c, %edi
subq %rax, %rdi
callq 0xa760
movl $0x1, -0xdc(%rbp)
movq -0xe8(%rbp), %rax
movq %rax, -0x100(%rbp)
jmp 0x330e
jmp 0x2b78
movq -0xc8(%rbp), %rsi
leaq 0x105a6(%rip), %rdi     # 0x1312c
movb $0x0, %al
callq 0xd260
callq 0x20a0
movl $0x0, (%rax)
callq 0x3320
jmp 0x254a
leaq 0x1796f(%rip), %rax     # 0x1a518
movl (%rax), %ecx
movl -0x8(%rbp), %eax
subl %ecx, %eax
movl %eax, -0x8(%rbp)
leaq 0x1795e(%rip), %rax     # 0x1a518
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 0x2bd9
callq 0x3320
cmpq $0x0, -0x58(%rbp)
jne 0x2be5
callq 0x3320
cmpq $0x0, -0x60(%rbp)
jne 0x2bf1
callq 0x3320
cmpq $0x0, -0x68(%rbp)
jne 0x2bfd
callq 0x3320
movq -0x58(%rbp), %rdi
callq 0xb3a0
movq %rax, -0x80(%rbp)
cmpq $0x0, %rax
jne 0x2c59
jmp 0x2c12
callq 0x20a0
cmpl $0x0, (%rax)
je 0x2c3b
movq -0x58(%rbp), %rsi
leaq 0x1051a(%rip), %rdi     # 0x13141
movb $0x0, %al
callq 0xd010
callq 0x20a0
movl $0x0, (%rax)
jmp 0x2c4d
movq -0x58(%rbp), %rsi
leaq 0x104fb(%rip), %rdi     # 0x13141
movb $0x0, %al
callq 0xd260
jmp 0x2c4f
movl $0x1, %edi
callq 0x2370
movq -0x80(%rbp), %rax
cmpq $0x0, (%rax)
jne 0x2c8c
jmp 0x2c65
movq -0x58(%rbp), %rsi
leaq 0x104f4(%rip), %rdi     # 0x13164
movb $0x0, %al
callq 0xd260
callq 0x20a0
movl $0x0, (%rax)
movl $0x1, %edi
callq 0x2370
movq -0x60(%rbp), %rdi
callq 0xb3a0
movq %rax, -0x88(%rbp)
cmpq $0x0, %rax
jne 0x2ceb
jmp 0x2ca4
callq 0x20a0
cmpl $0x0, (%rax)
je 0x2ccd
movq -0x60(%rbp), %rsi
leaq 0x10488(%rip), %rdi     # 0x13141
movb $0x0, %al
callq 0xd010
callq 0x20a0
movl $0x0, (%rax)
jmp 0x2cdf
movq -0x60(%rbp), %rsi
leaq 0x10469(%rip), %rdi     # 0x13141
movb $0x0, %al
callq 0xd260
jmp 0x2ce1
movl $0x1, %edi
callq 0x2370
movq -0x88(%rbp), %rax
cmpq $0x0, (%rax)
jne 0x2d21
jmp 0x2cfa
movq -0x60(%rbp), %rsi
leaq 0x1045f(%rip), %rdi     # 0x13164
movb $0x0, %al
callq 0xd260
callq 0x20a0
movl $0x0, (%rax)
movl $0x1, %edi
callq 0x2370
movq -0x68(%rbp), %rdi
callq 0xb3a0
movq %rax, -0x90(%rbp)
cmpq $0x0, %rax
jne 0x2d80
jmp 0x2d39
callq 0x20a0
cmpl $0x0, (%rax)
je 0x2d62
movq -0x68(%rbp), %rsi
leaq 0x103f3(%rip), %rdi     # 0x13141
movb $0x0, %al
callq 0xd010
callq 0x20a0
movl $0x0, (%rax)
jmp 0x2d74
movq -0x68(%rbp), %rsi
leaq 0x103d4(%rip), %rdi     # 0x13141
movb $0x0, %al
callq 0xd260
jmp 0x2d76
movl $0x1, %edi
callq 0x2370
movq -0x90(%rbp), %rax
cmpq $0x0, (%rax)
jne 0x2db6
jmp 0x2d8f
movq -0x68(%rbp), %rsi
leaq 0x103ca(%rip), %rdi     # 0x13164
movb $0x0, %al
callq 0xd260
callq 0x20a0
movl $0x0, (%rax)
movl $0x1, %edi
callq 0x2370
movq -0x80(%rbp), %rax
cmpq $0x0, 0x8(%rax)
je 0x2de2
jmp 0x2dc3
movq -0x58(%rbp), %rsi
leaq 0x103b0(%rip), %rdi     # 0x1317e
movb $0x0, %al
callq 0xd260
callq 0x20a0
movl $0x0, (%rax)
jmp 0x2de2
movq -0x80(%rbp), %rax
movq (%rax), %rdi
callq 0xc020
movl %eax, -0x44(%rbp)
cmpl $-0x1, %eax
jne 0x2e00
movl $0x1, %edi
callq 0x2370
movq -0x88(%rbp), %rdi
callq 0xc270
movl %eax, -0x48(%rbp)
cmpl $-0x1, %eax
jne 0x2e1e
movl $0x1, %edi
callq 0x2370
movq -0x90(%rbp), %rdi
callq 0xc270
movl %eax, -0x4c(%rbp)
cmpl $-0x1, %eax
jne 0x2e3c
movl $0x1, %edi
callq 0x2370
movl -0x48(%rbp), %edi
callq 0xf370
movq %rax, -0x18(%rbp)
cmpq $0x0, %rax
jne 0x2e8f
jmp 0x2e50
callq 0x20a0
cmpl $0x0, (%rax)
je 0x2e75
leaq 0x10353(%rip), %rdi     # 0x131b4
movb $0x0, %al
callq 0xd010
callq 0x20a0
movl $0x0, (%rax)
jmp 0x2e83
leaq 0x10338(%rip), %rdi     # 0x131b4
movb $0x0, %al
callq 0xd260
jmp 0x2e85
movl $0x1, %edi
callq 0x2370
movl -0x4c(%rbp), %edi
callq 0xf370
movq %rax, -0x20(%rbp)
cmpq $0x0, %rax
jne 0x2ee2
jmp 0x2ea3
callq 0x20a0
cmpl $0x0, (%rax)
je 0x2ec8
leaq 0x10300(%rip), %rdi     # 0x131b4
movb $0x0, %al
callq 0xd010
callq 0x20a0
movl $0x0, (%rax)
jmp 0x2ed6
leaq 0x102e5(%rip), %rdi     # 0x131b4
movb $0x0, %al
callq 0xd260
jmp 0x2ed8
movl $0x1, %edi
callq 0x2370
movq -0x20(%rbp), %rdi
leaq -0xc0(%rbp), %rdx
leaq -0x98(%rbp), %rsi
callq 0x4af0
movq %rax, -0x28(%rbp)
cmpq $0x0, %rax
jne 0x2f44
jmp 0x2f05
callq 0x20a0
cmpl $0x0, (%rax)
je 0x2f2a
leaq 0x102c6(%rip), %rdi     # 0x131dc
movb $0x0, %al
callq 0xd010
callq 0x20a0
movl $0x0, (%rax)
jmp 0x2f38
leaq 0x102ab(%rip), %rdi     # 0x131dc
movb $0x0, %al
callq 0xd260
jmp 0x2f3a
movl $0x1, %edi
callq 0x2370
cmpq $0x200, -0x98(%rbp) # imm = 0x200
jb 0x2f5e
cmpq $0x2000, -0x98(%rbp) # imm = 0x2000
jbe 0x2f8a
jmp 0x2f60
movq -0x98(%rbp), %rsi
leaq 0x10298(%rip), %rdi     # 0x13206
movb $0x0, %al
callq 0xd260
callq 0x20a0
movl $0x0, (%rax)
movl $0x1, %edi
callq 0x2370
movq -0x98(%rbp), %rax
movq %rax, -0xa0(%rbp)
movq -0x18(%rbp), %rdi
movq -0x28(%rbp), %rsi
callq 0x45a0
movq %rax, -0x30(%rbp)
cmpq $0x0, %rax
jne 0x2ff0
jmp 0x2fb1
callq 0x20a0
cmpl $0x0, (%rax)
je 0x2fd6
leaq 0x10268(%rip), %rdi     # 0x1322a
movb $0x0, %al
callq 0xd010
callq 0x20a0
movl $0x0, (%rax)
jmp 0x2fe4
leaq 0x1024d(%rip), %rdi     # 0x1322a
movb $0x0, %al
callq 0xd260
jmp 0x2fe6
movl $0x1, %edi
callq 0x2370
movq -0x18(%rbp), %rdi
movq -0xa0(%rbp), %rsi
leaq -0xc0(%rbp), %rdx
movq -0x28(%rbp), %rcx
callq 0x3cc0
movq %rax, -0x38(%rbp)
cmpq $0x0, %rax
jne 0x3056
jmp 0x3017
callq 0x20a0
cmpl $0x0, (%rax)
je 0x303c
leaq 0x10228(%rip), %rdi     # 0x13250
movb $0x0, %al
callq 0xd010
callq 0x20a0
movl $0x0, (%rax)
jmp 0x304a
leaq 0x1020d(%rip), %rdi     # 0x13250
movb $0x0, %al
callq 0xd260
jmp 0x304c
movl $0x1, %edi
callq 0x2370
cmpq $0x0, -0x70(%rbp)
jne 0x30bb
movq -0x58(%rbp), %rdx
leaq -0x70(%rbp), %rdi
leaq 0x1020b(%rip), %rsi     # 0x13277
movb $0x0, %al
callq 0x9440
cmpl $-0x1, %eax
jne 0x30b9
jmp 0x307a
callq 0x20a0
cmpl $0x0, (%rax)
je 0x309f
leaq 0x101f3(%rip), %rdi     # 0x1327e
movb $0x0, %al
callq 0xd010
callq 0x20a0
movl $0x0, (%rax)
jmp 0x30ad
leaq 0x101d8(%rip), %rdi     # 0x1327e
movb $0x0, %al
callq 0xd260
jmp 0x30af
movl $0x1, %edi
callq 0x2370
jmp 0x30bb
movq -0x70(%rbp), %rdi
callq 0x9580
cmpl $0x0, %eax
je 0x310a
jmp 0x30cb
callq 0x20a0
cmpl $0x0, (%rax)
je 0x30f0
leaq 0x101ab(%rip), %rdi     # 0x13287
movb $0x0, %al
callq 0xd010
callq 0x20a0
movl $0x0, (%rax)
jmp 0x30fe
leaq 0x10190(%rip), %rdi     # 0x13287
movb $0x0, %al
callq 0xd260
jmp 0x3100
movl $0x1, %edi
callq 0x2370
jmp 0x310c
movq -0x38(%rbp), %rdi
movq -0x30(%rbp), %rsi
movl -0x44(%rbp), %edx
callq 0x3360
movq %rax, -0x40(%rbp)
cmpq $0x0, %rax
jne 0x3130
movl $0x1, %edi
callq 0x2370
jmp 0x3132
callq 0x59f0
cmpl $0x0, %eax
je 0x317d
jmp 0x313e
callq 0x20a0
cmpl $0x0, (%rax)
je 0x3163
leaq 0x1014c(%rip), %rdi     # 0x1329b
movb $0x0, %al
callq 0xd010
callq 0x20a0
movl $0x0, (%rax)
jmp 0x3171
leaq 0x10131(%rip), %rdi     # 0x1329b
movb $0x0, %al
callq 0xd260
jmp 0x3173
movl $0x1, %edi
callq 0x2370
jmp 0x317f
movq -0x40(%rbp), %rdi
callq 0x3670
cmpl $0x0, %eax
jne 0x3132
movq -0x40(%rbp), %rdi
callq 0x36b0
cmpl $0x0, %eax
je 0x31a5
movl $0x1, %edi
callq 0x2370
jmp 0x31a7
cmpl $0x0, -0x74(%rbp)
je 0x310c
movq -0x38(%rbp), %rdi
callq 0x4550
movq -0x30(%rbp), %rdi
callq 0x4950
movq -0x28(%rbp), %rdi
callq 0x53e0
movq -0x20(%rbp), %rdi
callq 0xf940
movq -0x20(%rbp), %rdi
callq 0xf980
movq -0x18(%rbp), %rdi
callq 0xf940
movq -0x18(%rbp), %rdi
callq 0xf980
movl -0x4c(%rbp), %edi
callq 0x21d0
cmpl $0x0, %eax
je 0x3236
jmp 0x31ff
callq 0x20a0
cmpl $0x0, (%rax)
je 0x3224
leaq 0x11004(%rip), %rdi     # 0x14214
movb $0x0, %al
callq 0xd010
callq 0x20a0
movl $0x0, (%rax)
jmp 0x3232
leaq 0x10fe9(%rip), %rdi     # 0x14214
movb $0x0, %al
callq 0xd260
jmp 0x3234
jmp 0x3236
movl -0x48(%rbp), %edi
callq 0x21d0
cmpl $0x0, %eax
je 0x327c
jmp 0x3245
callq 0x20a0
cmpl $0x0, (%rax)
je 0x326a
leaq 0x10fbe(%rip), %rdi     # 0x14214
movb $0x0, %al
callq 0xd010
callq 0x20a0
movl $0x0, (%rax)
jmp 0x3278
leaq 0x10fa3(%rip), %rdi     # 0x14214
movb $0x0, %al
callq 0xd260
jmp 0x327a
jmp 0x327c
movl -0x44(%rbp), %edi
callq 0x21d0
cmpl $0x0, %eax
je 0x32c2
jmp 0x328b
callq 0x20a0
cmpl $0x0, (%rax)
je 0x32b0
leaq 0x10f78(%rip), %rdi     # 0x14214
movb $0x0, %al
callq 0xd010
callq 0x20a0
movl $0x0, (%rax)
jmp 0x32be
leaq 0x10f5d(%rip), %rdi     # 0x14214
movb $0x0, %al
callq 0xd260
jmp 0x32c0
jmp 0x32c2
movq -0x90(%rbp), %rdi
callq 0xbfd0
movq -0x88(%rbp), %rdi
callq 0xbfd0
movq -0x80(%rbp), %rdi
callq 0xbfd0
movq -0x58(%rbp), %rdi
callq 0x2040
movq -0x70(%rbp), %rdi
callq 0x2040
movq -0x68(%rbp), %rdi
callq 0x2040
movq -0x60(%rbp), %rdi
callq 0x2040
xorl %edi, %edi
callq 0x2370
movq -0x100(%rbp), %rax
jmpq *%rax
nopw (%rax,%rax)