// File: /workspace/github_c_makefile_star2_O3/Tarsnap[P]kivaloo/lbs/main.c
// Function: main
int
main(int argc, char * argv[])
{
	/* State variables. */
	struct storage_state * S;
	struct dispatch_state * D;
	int s;

	/* Command-line parameters. */
	char * opt_s = NULL;
	char * opt_d = NULL;
	size_t opt_b = (size_t)(-1);
	size_t opt_n = 16;
	char * opt_p = NULL;
	int opt_1 = 0;
	long opt_l = 0;
	int opt_L = 0;

	/* Working variables. */
	struct sock_addr ** sas;
	const char * ch;

	WARNP_INIT;

	/* Parse the command line. */
	while ((ch = GETOPT(argc, argv)) != NULL) {
		GETOPT_SWITCH(ch) {
		GETOPT_OPTARG("-b"):
			if (opt_b != (size_t)(-1))
				usage();
			if (PARSENUM(&opt_b, optarg, 512, 128 * 1024)) {
				warn0("Block size must be in [2^9, 2^17]");
				goto err1;
			}
			break;
		GETOPT_OPTARG("-d"):
			if (opt_d != NULL)
				usage();
			if ((opt_d = strdup(optarg)) == NULL)
				OPT_EPARSE(ch, optarg);
			break;
		GETOPT_OPTARG("-l"):
			if (opt_l != 0)
				usage();
			if (PARSENUM(&opt_l, optarg, 0, 999999999)) {
				warn0("Read latency must be in [0, 10^9) ns");
				goto err1;
			}
			break;
		GETOPT_OPT("-L"):
			if (opt_L != 0)
				usage();
			opt_L = 1;
			break;
		GETOPT_OPTARG("-n"):
			if (opt_n != 16)
				usage();
			if (PARSENUM(&opt_n, optarg, 1, 1000)) {
				warn0("Number of readers must be in [1, 1000]");
				goto err1;
			}
			break;
		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_OPT("--version"):
			fprintf(stderr, "kivaloo-lbs @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_d == NULL)
		usage();
	if (opt_b == (size_t)(-1))
		usage();

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

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

	/* Initialize the storage back-end. */
	if ((S = storage_init(opt_d, opt_b, opt_l, opt_L)) == NULL) {
		warnp("Error initializing storage directory: %s", opt_d);
		goto err3;
	}

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

	/* Initialize the dispatcher. */
	if ((D = dispatch_init(S, opt_b, opt_n)) == NULL) {
		warnp("Error initializing work dispatcher");
		goto err4;
	}

	/* Handle connections, one at once. */
	do {
		/* Get a connection and perform associated initialization. */
		if (dispatch_accept(D, s)) {
			warnp("Error accepting new connection");
			goto err5;
		}

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

		/* Clean up the connection. */
		if (dispatch_close(D))
			goto err5;
	} while (opt_1 == 0);

	if (dispatch_done(D)) {
		warnp("Failed to shut down dispatcher");
		goto err4;
	}

	/* We're done with the storage state. */
	storage_done(S);

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

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

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

	/* Success! */
	exit(0);

err5:
	dispatch_done(D);
err4:
	storage_done(S);
err3:
	if (close(s))
		warnp("close");
err2:
	sock_addr_freelist(sas);
err1:
	free(opt_s);
	free(opt_p);
	free(opt_d);

	/* Failure! */
	exit(1);
}

// Assembly:
pushq %rbp
pushq %r15
pushq %r14
pushq %r13
pushq %r12
pushq %rbx
subq $0x68, %rsp
movl %edi, %ebx
movq $0x0, 0x20(%rsp)
movq %rsi, 0x58(%rsp)
movq (%rsi), %rdi
testq %rdi, %rdi
je 0x2b57
callq 0xac58
movl %ebx, %edi
movq 0x58(%rsp), %rsi
callq 0x8e98
testq %rax, %rax
jne 0x2b76
leaq 0x11a69(%rip), %rax     # 0x145d8
cmpl %ebx, (%rax)
callq 0x35f2
movq %rax, %rbp
movl %ebx, 0x48(%rsp)
movq $-0x1, 0x30(%rsp)
movl $0x10, %eax
movq %rax, 0x50(%rsp)
movq $0x0, 0x18(%rsp)
leaq 0x21c78(%rip), %r15     # 0x24818
leaq 0xa48a(%rip), %r13      # 0xd031
leaq 0xa521(%rip), %r12      # 0xd0cf
leaq 0xa51d(%rip), %rbx      # 0xd0d2
leaq 0xa537(%rip), %r14      # 0xd0f3
movl $0x0, 0x28(%rsp)
movq $0x0, 0x38(%rsp)
movl $0x0, 0x2c(%rsp)
movq $0x0, 0x8(%rsp)
movq $0x3d, 0x10(%rsp)
movq 0x10(%rsp), %rax
decq %rax
movq %rax, 0x60(%rsp)
movl $0x0, 0x4c(%rsp)
cmpl $0x0, (%r15)
je 0x2c11
movq %rbp, %rdi
callq 0x91df
addq 0x10(%rsp), %rax
jmp 0x2c1f
movq 0x60(%rsp), %rax
leaq 0x1(%rax), %rcx
movq %rcx, 0x60(%rsp)
cmpq $0x60, %rax
jle 0x2c65
cmpq $0x6f, %rax
jg 0x2ca9
cmpq $0x61, %rax
je 0x2d80
cmpq $0x67, %rax
je 0x2d27
cmpq $0x6d, %rax
jne 0x2dcd
cmpl $0x0, (%r15)
jne 0x30e7
movl $0x6d, %esi
subq 0x10(%rsp), %rsi
movq %rbx, %rdi
jmp 0x2d74
cmpq $0x4b, %rax
jle 0x2cdb
cmpq $0x4c, %rax
je 0x2d9d
cmpq $0x54, %rax
je 0x2d40
cmpq $0x59, %rax
jne 0x2dcd
cmpl $0x0, (%r15)
jne 0x2fd6
movl $0x59, %esi
subq 0x10(%rsp), %rsi
leaq 0xa3fe(%rip), %rdi      # 0xd0a2
jmp 0x2db8
cmpq $0x70, %rax
je 0x2d5d
cmpq $0x75, %rax
jne 0x2dc7
cmpl $0x0, (%r15)
jne 0x3117
movl $0x75, %edi
subq 0x10(%rsp), %rdi
callq 0x93ad
jmp 0x2bfc
cmpq $0x3e, %rax
je 0x2d0b
cmpq $0x46, %rax
jne 0x2dcd
cmpl $0x0, (%r15)
jne 0x2e0a
movl $0x46, %esi
subq 0x10(%rsp), %rsi
leaq 0xa350(%rip), %rdi      # 0xd056
jmp 0x2db8
cmpl $0x0, (%r15)
jne 0x2e3b
movl $0x3e, %esi
subq 0x10(%rsp), %rsi
movq %r13, %rdi
jmp 0x2db8
cmpl $0x0, (%r15)
jne 0x2ebe
movl $0x67, %esi
subq 0x10(%rsp), %rsi
movq %r12, %rdi
jmp 0x2db8
cmpl $0x0, (%r15)
jne 0x2fa6
movl $0x54, %esi
subq 0x10(%rsp), %rsi
leaq 0xa344(%rip), %rdi      # 0xd09f
jmp 0x2d74
cmpl $0x0, (%r15)
jne 0x2fbe
movl $0x70, %esi
subq 0x10(%rsp), %rsi
movq %r14, %rdi
xorl %edx, %edx
callq 0x929c
jmp 0x2bfc
cmpl $0x0, (%r15)
jne 0x2eec
movl $0x61, %esi
subq 0x10(%rsp), %rsi
leaq 0xa331(%rip), %rdi      # 0xd0cc
jmp 0x2db8
cmpl $0x0, (%r15)
jne 0x2f26
movl $0x4c, %esi
subq 0x10(%rsp), %rsi
leaq 0xa2bf(%rip), %rdi      # 0xd077
movl $0x1, %edx
callq 0x929c
jmp 0x2bfc
cmpq $0x78, %rax
je 0x2dfe
cmpl $0x0, (%r15)
jne 0x310e
cmpl $0x0, 0x4c(%rsp)
jne 0x2bfc
movl $0x78, %edi
subq 0x10(%rsp), %rdi
callq 0x93ed
movl $0x1, 0x4c(%rsp)
jmp 0x2bfc
movl $0x1, (%r15)
jmp 0x3054
leaq 0x219ff(%rip), %rax     # 0x24810
movq (%rax), %r13
testq %r13, %r13
je 0x31bb
cmpq $0x0, 0x8(%rsp)
jne 0x2b71
movq %r13, %rdi
callq 0x2510
movq %rax, 0x8(%rsp)
jmp 0x2f18
leaq 0x219ce(%rip), %rax     # 0x24810
movq (%rax), %rbp
testq %rbp, %rbp
je 0x31da
cmpq $-0x1, 0x30(%rsp)
jne 0x2b71
callq 0x20a0
movq %rax, %r13
movl $0x0, (%rax)
movq %rbp, %rdi
leaq 0x40(%rsp), %rsi
xorl %edx, %edx
callq 0x2480
movq %rax, 0x30(%rsp)
movq 0x40(%rsp), %rcx
movl $0x16, %eax
cmpq %rbp, %rcx
je 0x2eaa
cmpb $0x0, (%rcx)
jne 0x2eaa
movq 0x30(%rsp), %rax
leaq -0x20001(%rax), %rcx
movl $0x22, %eax
cmpq $-0x1fe02, %rcx         # imm = 0xFFFE01FE
ja 0x2eae
movl %eax, (%r13)
cmpl $0x0, (%r13)
je 0x3054
jmp 0x3237
leaq 0x2194b(%rip), %rax     # 0x24810
movq (%rax), %r13
testq %r13, %r13
je 0x31f9
cmpq $0x0, 0x18(%rsp)
jne 0x2b71
movq %r13, %rdi
callq 0x2510
movq %rax, 0x18(%rsp)
jmp 0x2f18
leaq 0x2191d(%rip), %rax     # 0x24810
movq (%rax), %r13
testq %r13, %r13
je 0x317d
cmpq $0x0, 0x20(%rsp)
jne 0x2b71
movq %r13, %rdi
callq 0x2510
movq %rax, 0x20(%rsp)
testq %rax, %rax
jne 0x3054
jmp 0x3138
leaq 0x218e3(%rip), %rax     # 0x24810
movq (%rax), %r13
testq %r13, %r13
je 0x319c
cmpq $0x0, 0x38(%rsp)
jne 0x2b71
callq 0x20a0
movq %rax, %rbp
movl $0x0, (%rax)
movq %r13, %rdi
leaq 0x40(%rsp), %rsi
xorl %edx, %edx
callq 0x2050
movq %rax, 0x38(%rsp)
movq 0x40(%rsp), %rcx
movl $0x16, %eax
cmpq %r13, %rcx
je 0x2f94
cmpb $0x0, (%rcx)
jne 0x2f94
cmpq $0x3b9aca00, 0x38(%rsp) # imm = 0x3B9ACA00
jb 0x2f97
movl $0x22, %eax
movq $0x0, 0x38(%rsp)
movl %eax, (%rbp)
cmpl $0x0, (%rbp)
je 0x3054
jmp 0x3240
cmpl $0x0, 0x28(%rsp)
movl $0x1, 0x28(%rsp)
je 0x3054
jmp 0x2b71
cmpl $0x0, 0x2c(%rsp)
movl $0x1, 0x2c(%rsp)
je 0x3054
jmp 0x2b71
leaq 0x21833(%rip), %rax     # 0x24810
movq (%rax), %rbp
testq %rbp, %rbp
je 0x3218
cmpq $0x10, 0x50(%rsp)
jne 0x2b71
callq 0x20a0
movq %rax, %r13
movl $0x0, (%rax)
movq %rbp, %rdi
leaq 0x40(%rsp), %rsi
xorl %edx, %edx
callq 0x2480
movq %rax, 0x50(%rsp)
movq 0x40(%rsp), %rcx
movl $0x16, %eax
cmpq %rbp, %rcx
je 0x3045
cmpb $0x0, (%rcx)
jne 0x3045
movq 0x50(%rsp), %rax
movq $-0x3e9, %rdx           # imm = 0xFC17
leaq (%rax,%rdx), %rcx
movl $0x22, %eax
cmpq %rdx, %rcx
ja 0x3049
movl %eax, (%r13)
cmpl $0x0, (%r13)
jne 0x3257
movl 0x48(%rsp), %edi
movq 0x58(%rsp), %rsi
callq 0x8e98
movq %rax, %rbp
testq %rax, %rax
leaq 0x9fc2(%rip), %r13      # 0xd031
jne 0x2bde
leaq 0x1155c(%rip), %rax     # 0x145d8
movl 0x48(%rsp), %ecx
cmpl %ecx, (%rax)
jne 0x2b71
cmpq $0x0, 0x18(%rsp)
je 0x2b71
movq 0x8(%rsp), %r15
testq %r15, %r15
je 0x2b71
cmpq $-0x1, 0x30(%rsp)
je 0x2b71
movq 0x18(%rsp), %rdi
callq 0x9c54
testq %rax, %rax
jne 0x3298
callq 0x20a0
cmpl $0x0, (%rax)
jne 0x32c6
leaq 0xa04c(%rip), %rdi      # 0xd122
movq 0x18(%rsp), %rsi
xorl %eax, %eax
callq 0xadf7
jmp 0x3272
movq 0x10f0a(%rip), %rax     # 0x13ff8
movq (%rax), %rcx
leaq 0x9fe4(%rip), %rdi      # 0xd0dc
movl $0x16, %esi
movl $0x1, %edx
callq 0x24e0
xorl %edi, %edi
callq 0x24c0
leaq 0x9ff8(%rip), %rdi      # 0xd10d
jmp 0x311e
leaq 0x9fd8(%rip), %rdi      # 0xd0f6
movq %rbp, %rsi
xorl %eax, %eax
callq 0xadf7
callq 0x20a0
movl $0x0, (%rax)
callq 0x35f2
callq 0x20a0
cmpl $0x0, (%rax)
jne 0x315b
leaq 0x9f10(%rip), %rdi      # 0xd059
movq %rbp, %rsi
movq %r13, %rdx
xorl %eax, %eax
callq 0xadf7
jmp 0x328e
movq %rax, %rbx
leaq 0x9ef4(%rip), %rdi      # 0xd059
movq %rbp, %rsi
movq %r13, %rdx
xorl %eax, %eax
callq 0xacd8
movl $0x0, (%rbx)
jmp 0x328e
leaq 0x9e80(%rip), %rdi      # 0xd004
leaq 0x9e88(%rip), %rsi      # 0xd013
leaq 0x9e88(%rip), %rcx      # 0xd01a
movl $0x61, %edx
callq 0x2220
leaq 0x9e61(%rip), %rdi      # 0xd004
leaq 0x9e69(%rip), %rsi      # 0xd013
leaq 0x9e69(%rip), %rcx      # 0xd01a
movl $0x4c, %edx
callq 0x2220
leaq 0x9e42(%rip), %rdi      # 0xd004
leaq 0x9e4a(%rip), %rsi      # 0xd013
leaq 0x9e4a(%rip), %rcx      # 0xd01a
movl $0x46, %edx
callq 0x2220
leaq 0x9e23(%rip), %rdi      # 0xd004
leaq 0x9e2b(%rip), %rsi      # 0xd013
leaq 0x9e2b(%rip), %rcx      # 0xd01a
movl $0x3e, %edx
callq 0x2220
leaq 0x9e04(%rip), %rdi      # 0xd004
leaq 0x9e0c(%rip), %rsi      # 0xd013
leaq 0x9e0c(%rip), %rcx      # 0xd01a
movl $0x67, %edx
callq 0x2220
leaq 0x9de5(%rip), %rdi      # 0xd004
leaq 0x9ded(%rip), %rsi      # 0xd013
leaq 0x9ded(%rip), %rcx      # 0xd01a
movl $0x59, %edx
callq 0x2220
leaq 0x9df6(%rip), %rdi      # 0xd034
jmp 0x325e
leaq 0x9e33(%rip), %rdi      # 0xd07a
xorl %eax, %eax
callq 0xadf7
movl $0x0, (%rbp)
jmp 0x326d
leaq 0x9e47(%rip), %rdi      # 0xd0a5
xorl %eax, %eax
callq 0xadf7
movl $0x0, (%r13)
movq 0x8(%rsp), %r15
movq 0x18(%rsp), %rdi
callq 0x2040
movq 0x20(%rsp), %rdi
callq 0x2040
movq %r15, %rdi
callq 0x2040
movl $0x1, %edi
callq 0x24c0
movq %rax, %rbx
movq (%rax), %rdi
testq %rdi, %rdi
jne 0x32e4
leaq 0x9e9b(%rip), %rdi      # 0xd145
movq 0x18(%rsp), %rsi
xorl %eax, %eax
callq 0xadf7
callq 0x20a0
movl $0x0, (%rax)
jmp 0x3558
movq %rax, %rbx
leaq 0x9e52(%rip), %rdi      # 0xd122
movq 0x18(%rsp), %rsi
xorl %eax, %eax
callq 0xacd8
movl $0x0, (%rbx)
jmp 0x3272
cmpq $0x0, 0x8(%rbx)
je 0x330c
leaq 0x9e6d(%rip), %rdi      # 0xd15f
movq 0x18(%rsp), %rsi
xorl %eax, %eax
callq 0xadf7
callq 0x20a0
movl $0x0, (%rax)
movq (%rbx), %rdi
callq 0xa3aa
cmpl $-0x1, %eax
je 0x3558
movl %eax, %ebp
movq %r15, %rdi
movq 0x30(%rsp), %rsi
movq 0x38(%rsp), %rdx
movl 0x28(%rsp), %ecx
callq 0x4c38
testq %rax, %rax
jne 0x3357
callq 0x20a0
cmpl $0x0, (%rax)
jne 0x3398
leaq 0x9e4d(%rip), %rdi      # 0xd195
movq %r15, %rsi
xorl %eax, %eax
callq 0xadf7
jmp 0x351b
movq %rax, %r14
movq 0x20(%rsp), %rdi
testq %rdi, %rdi
jne 0x33bd
leaq 0x9e53(%rip), %rsi      # 0xd1be
leaq 0x20(%rsp), %rdi
movq 0x18(%rsp), %rdx
xorl %eax, %eax
callq 0x8ba4
cmpl $-0x1, %eax
jne 0x33b8
callq 0x20a0
cmpl $0x0, (%rax)
jne 0x34c7
leaq 0x9e2f(%rip), %rdi      # 0xd1c5
jmp 0x3409
movq %rax, %r14
leaq 0x9df3(%rip), %rdi      # 0xd195
movq %r15, %rsi
xorl %eax, %eax
callq 0xacd8
movl $0x0, (%r14)
jmp 0x351b
movq 0x20(%rsp), %rdi
callq 0x8ca8
testl %eax, %eax
jne 0x33f4
movq %r14, %rdi
movq 0x30(%rsp), %rsi
movq 0x50(%rsp), %rdx
callq 0x3638
testq %rax, %rax
jne 0x3415
callq 0x20a0
cmpl $0x0, (%rax)
jne 0x34d3
leaq 0x9df0(%rip), %rdi      # 0xd1e2
jmp 0x3409
callq 0x20a0
cmpl $0x0, (%rax)
jne 0x34a1
leaq 0x9dc5(%rip), %rdi      # 0xd1ce
xorl %eax, %eax
callq 0xadf7
jmp 0x350e
movq %rax, %r15
movl 0x2c(%rsp), %r12d
movq %r15, %rdi
movl %ebp, %esi
callq 0x3b38
testl %eax, %eax
jne 0x3565
callq 0x6500
testl %eax, %eax
jne 0x34ad
movq %r15, %rdi
callq 0x3d4c
testl %eax, %eax
jne 0x342f
movq %r15, %rdi
callq 0x3d6a
testl %eax, %eax
jne 0x3506
testl %r12d, %r12d
je 0x341d
movq %r15, %rdi
callq 0x3e1d
testl %eax, %eax
jne 0x358a
movq %r14, %rdi
callq 0x5349
movl %ebp, %edi
callq 0x2240
testl %eax, %eax
je 0x35c7
callq 0x20a0
cmpl $0x0, (%rax)
jne 0x35af
leaq 0xaf97(%rip), %rdi      # 0xe42c
xorl %eax, %eax
callq 0xadf7
jmp 0x35c7
movq %rax, %r15
leaq 0x9d23(%rip), %rdi      # 0xd1ce
jmp 0x34dd
callq 0x20a0
cmpl $0x0, (%rax)
jne 0x34ed
leaq 0x9d66(%rip), %rdi      # 0xd224
xorl %eax, %eax
callq 0xadf7
jmp 0x3506
movq %rax, %r15
leaq 0x9cf4(%rip), %rdi      # 0xd1c5
jmp 0x34dd
movq %rax, %r15
leaq 0x9d05(%rip), %rdi      # 0xd1e2
xorl %eax, %eax
callq 0xacd8
movl $0x0, (%r15)
jmp 0x350e
movq %rax, %r12
leaq 0x9d2d(%rip), %rdi      # 0xd224
xorl %eax, %eax
callq 0xacd8
movl $0x0, (%r12)
movq %r15, %rdi
callq 0x3e1d
movq 0x8(%rsp), %r15
movq %r14, %rdi
callq 0x5349
movl %ebp, %edi
callq 0x2240
testl %eax, %eax
je 0x3558
callq 0x20a0
cmpl $0x0, (%rax)
jne 0x3540
leaq 0xaef5(%rip), %rdi      # 0xe42c
xorl %eax, %eax
callq 0xadf7
jmp 0x3558
movq %rax, %r14
leaq 0xaee2(%rip), %rdi      # 0xe42c
xorl %eax, %eax
callq 0xacd8
movl $0x0, (%r14)
movq %rbx, %rdi
callq 0xa366
jmp 0x3272
callq 0x20a0
cmpl $0x0, (%rax)
jne 0x357b
leaq 0x9c8f(%rip), %rdi      # 0xd205
jmp 0x34be
movq %rax, %r12
leaq 0x9c80(%rip), %rdi      # 0xd205
jmp 0x34f7
callq 0x20a0
cmpl $0x0, (%rax)
jne 0x35a0
leaq 0x9ca2(%rip), %rdi      # 0xd23d
jmp 0x3409
movq %rax, %r15
leaq 0x9c93(%rip), %rdi      # 0xd23d
jmp 0x34dd
movq %rax, %r14
leaq 0xae73(%rip), %rdi      # 0xe42c
xorl %eax, %eax
callq 0xacd8
movl $0x0, (%r14)
movq %rbx, %rdi
callq 0xa366
movq 0x18(%rsp), %rdi
callq 0x2040
movq 0x20(%rsp), %rdi
callq 0x2040
movq 0x8(%rsp), %rdi
callq 0x2040
jmp 0x3107