// File: /workspace/github_c_makefile_star2_O0/alexgirao[P]aimant/getopt_x.c
// Function: getopt_x_prepare0
static int getopt_x_prepare0(struct getopt_x *state, int argc, char **argv, const char *optstring, struct option *longopts, const char *optreq, int verbose)
{
	int optstring_len = 0;
	int optstring0_alnum_len = 0;

	opterr = 0; /* prevent the error message */

#ifdef GETOPTX_CHECK_FUNDAMENTALS
	/* fundamental assumptions
	 */

	assert(required_argument == 1);
	assert(FD_SETSIZE == 1024);
	assert(BYTE_PLANE_0(0) == 0);
	assert(BYTE_PLANE_0(255) == 255);
	assert(BYTE_PLANE_1(0) == 256);
	assert(BYTE_PLANE_1(255) == 256+255);
	assert(BYTE_PLANE_2(0) == 512);
	assert(BYTE_PLANE_2(255) == 512+255);
	assert(BYTE_PLANE_3(0) == 768);
	assert(BYTE_PLANE_3(255) == 768+255);
	assert(BYTE_PLANE_3(255) == FD_SETSIZE-1);
#endif

	/* sanity check
	 */

	assert(longopts);

	/* initialize
	 */

	memset(state, 0, sizeof(struct getopt_x));
	/* FD_ZERO(state->optset); */

	state->argc = argc;
	state->argv = argv;
	state->optstring0 = optstring;
	state->longopts = longopts;

	state->optreq = optreq;

	state->verbose = verbose;

	/* optstring
	 */

	if (verbose) {
		DEBUG("optstring=[%s]", optstring);
		DEBUG("optreq=[%s]", optreq);
	}

	assert(optstring_len < sizeof(state->optstring)-1);
	state->optstring[optstring_len++] = '-'; /* this turn non-option arguments swap off */

	assert(optstring_len < sizeof(state->optstring)-1);
	state->optstring[optstring_len++] = ':'; /* this diferentiates error from unknown option */

	if (optstring && *optstring) {
		int prior = 0;
		const char *cp = optstring;
		assert(isalnum(*cp));
		do {
			if (isalnum(*cp)) {
				if (FD_ISSET_IS_OPT(*cp, state->optset)) {
					DEBUG("error: duplicate option '%c' in optstring", *cp);
					return -1;
				}
				FD_SET_IS_OPT(*cp, state->optset);
				if (prior && prior != ':') {
					if (verbose) DEBUG("found short option -%c, has arg? 0", prior);
					state->n_short_options++;
				}

				assert(optstring0_alnum_len < sizeof(state->optstring0_alnum)-1);
				state->optstring0_alnum[optstring0_alnum_len++] = *cp;
			} else if (*cp == ':') {
				if (prior == ':') {
					/* optional arguments not allowed here, use
					 * ':' in return of getopt
					 */
					DEBUG("error: optional arguments not allowed in optstring");
					return -1;
				} else {
					if (verbose) DEBUG("found short option -%c, has arg? 1", prior);
					FD_SET_HAS_ARG(prior, state->optset);
					state->n_short_options++;
				}
			} else {
				if (isprint(*cp)) {
					DEBUG("error: invalid char '%c' (byte %i) in optstring", *cp, *cp);
				} else {
					DEBUG("error: invalid byte %i in optstring", *cp);
				}
				return -1;
			}

			assert(optstring_len < sizeof(state->optstring)-1);
			state->optstring[optstring_len++] = *cp;

			prior = *cp;
		} while (*++cp);

		if (verbose) {
			if (prior != ':') {
				DEBUG("found short option -%c, has arg? 0", prior);
				state->n_short_options++;
			}
		}
	}

	/* close state->optstring0_alnum
	 */

	state->optstring0_alnum[optstring0_alnum_len++] = 0;

	/* DEBUG("state->optstring0_alnum=[%s]", state->optstring0_alnum);
	 */

	/* state->longopts
	 */

	state->n_all_options = state->n_short_options;

	if (state->longopts->name) {
		struct option *opt = state->longopts;
		do {
			int namelen;
			if ((namelen = strlen(opt->name)) > state->longest_name_option) {
				state->longest_name_option = namelen;
			}
			if (opt->val) {
				assert(isalnum(opt->val));
				if (verbose) DEBUG("found long option -%c/--%s, has arg? %i", opt->val, opt->name, !!opt->has_arg);
				if (FD_ISSET_IS_OPT(opt->val, state->optset)) {
					DEBUG("error: duplicate option -%c/--%s in longopts", opt->val, opt->name);
					return -1;
				}
				FD_SET_IS_OPT(opt->val, state->optset);
				assert(optstring_len < sizeof(state->optstring)-1);
				state->optstring[optstring_len++] = opt->val;
				if (opt->has_arg) {
					assert(opt->has_arg == 1); /* optional arguments not allowed */
					assert(optstring_len < sizeof(state->optstring)-1);
					state->optstring[optstring_len++] = ':';
					FD_SET_HAS_ARG(opt->val, state->optset);
				}
			} else {
				if (opt->has_arg) {
					assert(opt->has_arg == 1); /* optional arguments not allowed */
				}
				if (verbose) DEBUG("found long option --%s, has arg? %i", opt->name, !!opt->has_arg);
			}
			state->n_all_options++;
			opt++;
		} while (opt->name);
	}

	/* close state->optstring
	 */

	state->optstring[optstring_len++] = 0;

	/* optreq
	 */

	if (optreq && *optreq) {
		const char *cp = optreq;
		do {
			if (isalnum(*cp)) {
				if (!FD_ISSET_IS_OPT(*cp, state->optset)) {
					DEBUG("error: unknown option '%c' in optstring", *cp);
					return -1;
				}
				if (FD_ISSET_IS_REQUIRED(*cp, state->optset)) {
					DEBUG("error: duplicate option '%c' in optreq", *cp);
					return -1;
				}
				FD_SET_IS_REQUIRED(*cp, state->optset);
			} else {
				if (isprint(*cp)) {
					DEBUG("error: invalid char '%c' (byte %i) in optreq", *cp, *cp);
				} else {
					DEBUG("error: invalid byte %i in optreq", *cp);
				}
				return -1;
			}
		} while (*++cp);
	}

	{
		int i = state->longest_name_option + 4;
		snprintf(state->fmt_both, sizeof(state->fmt_both), ", --%%-%is", i + 6);
		snprintf(state->fmt_long, sizeof(state->fmt_long), "--%%-%is", i + 8);
		snprintf(state->fmt_short, sizeof(state->fmt_short), " %%-%is", i + 9);
	}

	/*
	 */

	if (verbose) DEBUG("state->optstring=[%s]", state->optstring);

#ifdef OPTSET_VERIFY
	optset_verify(state->optset);
#endif
	return 0;
}

// Assembly:
pushq %rbp
movq %rsp, %rbp
subq $0x100, %rsp            # imm = 0x100
movl 0x10(%rbp), %eax
movq %rdi, -0x10(%rbp)
movl %esi, -0x14(%rbp)
movq %rdx, -0x20(%rbp)
movq %rcx, -0x28(%rbp)
movq %r8, -0x30(%rbp)
movq %r9, -0x38(%rbp)
movl $0x0, -0x3c(%rbp)
movl $0x0, -0x40(%rbp)
leaq 0x6dd6(%rip), %rax      # 0xb6e0
movl $0x0, (%rax)
cmpq $0x0, -0x30(%rbp)
je 0x4919
jmp 0x4938
leaq 0x46a6(%rip), %rdi      # 0x8fc6
leaq 0x4173(%rip), %rsi      # 0x8a9a
movl $0x6f, %edx
leaq 0x4465(%rip), %rcx      # 0x8d98
callq 0x2140
movq -0x10(%rbp), %rdi
xorl %esi, %esi
movl $0x208, %edx            # imm = 0x208
callq 0x2170
movl -0x14(%rbp), %ecx
movq -0x10(%rbp), %rax
movl %ecx, (%rax)
movq -0x20(%rbp), %rcx
movq -0x10(%rbp), %rax
movq %rcx, 0x8(%rax)
movq -0x28(%rbp), %rcx
movq -0x10(%rbp), %rax
movq %rcx, 0x10(%rax)
movq -0x30(%rbp), %rcx
movq -0x10(%rbp), %rax
movq %rcx, 0x18(%rax)
movq -0x38(%rbp), %rcx
movq -0x10(%rbp), %rax
movq %rcx, 0x20(%rax)
movl 0x10(%rbp), %ecx
movq -0x10(%rbp), %rax
movl %ecx, 0x110(%rax)
cmpl $0x0, 0x10(%rbp)
je 0x49d6
jmp 0x4996
movq -0x28(%rbp), %rcx
leaq 0x40f9(%rip), %rdi      # 0x8a9a
movl $0x84, %esi
leaq 0x470f(%rip), %rdx      # 0x90bc
movb $0x0, %al
callq 0x7000
jmp 0x49b6
movq -0x38(%rbp), %rcx
leaq 0x40d9(%rip), %rdi      # 0x8a9a
movl $0x85, %esi
leaq 0x4439(%rip), %rdx      # 0x8e06
movb $0x0, %al
callq 0x7000
jmp 0x49d6
movslq -0x3c(%rbp), %rax
cmpq $0x63, %rax
jae 0x49e2
jmp 0x4a01
leaq 0x4429(%rip), %rdi      # 0x8e12
leaq 0x40aa(%rip), %rsi      # 0x8a9a
movl $0x88, %edx
leaq 0x439c(%rip), %rcx      # 0x8d98
callq 0x2140
movq -0x10(%rbp), %rax
movl -0x3c(%rbp), %ecx
movl %ecx, %edx
addl $0x1, %edx
movl %edx, -0x3c(%rbp)
movslq %ecx, %rcx
movb $0x2d, 0x28(%rax,%rcx)
movslq -0x3c(%rbp), %rax
cmpq $0x63, %rax
jae 0x4a24
jmp 0x4a43
leaq 0x43e7(%rip), %rdi      # 0x8e12
leaq 0x4068(%rip), %rsi      # 0x8a9a
movl $0x8b, %edx
leaq 0x435a(%rip), %rcx      # 0x8d98
callq 0x2140
movq -0x10(%rbp), %rax
movl -0x3c(%rbp), %ecx
movl %ecx, %edx
addl $0x1, %edx
movl %edx, -0x3c(%rbp)
movslq %ecx, %rcx
movb $0x3a, 0x28(%rax,%rcx)
cmpq $0x0, -0x28(%rbp)
je 0x4e84
movq -0x28(%rbp), %rax
movsbl (%rax), %eax
cmpl $0x0, %eax
je 0x4e84
movl $0x0, -0x44(%rbp)
movq -0x28(%rbp), %rax
movq %rax, -0x50(%rbp)
callq 0x2270
movq (%rax), %rax
movq -0x50(%rbp), %rcx
movsbl (%rcx), %ecx
movslq %ecx, %rcx
movzwl (%rax,%rcx,2), %eax
andl $0x8, %eax
cmpl $0x0, %eax
je 0x4aa4
jmp 0x4ac3
leaq 0x4392(%rip), %rdi      # 0x8e3d
leaq 0x3fe8(%rip), %rsi      # 0x8a9a
movl $0x91, %edx
leaq 0x42da(%rip), %rcx      # 0x8d98
callq 0x2140
jmp 0x4ac5
callq 0x2270
movq (%rax), %rax
movq -0x50(%rbp), %rcx
movsbl (%rcx), %ecx
movslq %ecx, %rcx
movzwl (%rax,%rcx,2), %eax
andl $0x8, %eax
cmpl $0x0, %eax
je 0x4c73
movq -0x10(%rbp), %rax
movq %rax, -0x80(%rbp)
movq -0x50(%rbp), %rax
movsbl (%rax), %eax
andl $0xff, %eax
movl $0x40, %ecx
cltd
idivl %ecx
movl %eax, %ecx
movq -0x80(%rbp), %rax
movslq %ecx, %rcx
movq 0x90(%rax,%rcx,8), %rax
movq %rax, -0x78(%rbp)
movq -0x50(%rbp), %rax
movsbl (%rax), %eax
andl $0xff, %eax
movl $0x40, %ecx
cltd
idivl %ecx
movq -0x78(%rbp), %rax
movl %edx, %ecx
movl $0x1, %edx
shlq %cl, %rdx
movq %rdx, %rcx
andq %rcx, %rax
cmpq $0x0, %rax
je 0x4b75
jmp 0x4b48
movq -0x50(%rbp), %rax
movsbl (%rax), %ecx
leaq 0x3f44(%rip), %rdi      # 0x8a9a
movl $0x95, %esi
leaq 0x42e8(%rip), %rdx      # 0x8e4a
movb $0x0, %al
callq 0x7000
movl $0xffffffff, -0x4(%rbp) # imm = 0xFFFFFFFF
jmp 0x55cf
movq -0x50(%rbp), %rax
movsbl (%rax), %eax
andl $0xff, %eax
movl $0x40, %ecx
cltd
idivl %ecx
movl %edx, %eax
movl %eax, %ecx
movl $0x1, %eax
shlq %cl, %rax
movq %rax, -0x90(%rbp)
movq -0x10(%rbp), %rax
movq %rax, -0x88(%rbp)
movq -0x50(%rbp), %rax
movsbl (%rax), %eax
andl $0xff, %eax
movl $0x40, %ecx
cltd
idivl %ecx
movq -0x90(%rbp), %rdx
movl %eax, %ecx
movq -0x88(%rbp), %rax
movslq %ecx, %rcx
orq 0x90(%rax,%rcx,8), %rdx
movq %rdx, 0x90(%rax,%rcx,8)
cmpl $0x0, -0x44(%rbp)
je 0x4c24
cmpl $0x3a, -0x44(%rbp)
je 0x4c24
cmpl $0x0, 0x10(%rbp)
je 0x4c11
jmp 0x4bf2
movl -0x44(%rbp), %ecx
leaq 0x3e9e(%rip), %rdi      # 0x8a9a
movl $0x9a, %esi
leaq 0x426c(%rip), %rdx      # 0x8e74
movb $0x0, %al
callq 0x7000
jmp 0x4c11
movq -0x10(%rbp), %rax
movl 0x180(%rax), %ecx
addl $0x1, %ecx
movl %ecx, 0x180(%rax)
movslq -0x40(%rbp), %rax
cmpq $0x63, %rax
jae 0x4c30
jmp 0x4c4f
leaq 0x4260(%rip), %rdi      # 0x8e97
leaq 0x3e5c(%rip), %rsi      # 0x8a9a
movl $0x9e, %edx
leaq 0x414e(%rip), %rcx      # 0x8d98
callq 0x2140
movq -0x50(%rbp), %rax
movb (%rax), %dl
movq -0x10(%rbp), %rax
movl -0x40(%rbp), %ecx
movl %ecx, %esi
addl $0x1, %esi
movl %esi, -0x40(%rbp)
movslq %ecx, %rcx
movb %dl, 0x11c(%rax,%rcx)
jmp 0x4dd8
movq -0x50(%rbp), %rax
movsbl (%rax), %eax
cmpl $0x3a, %eax
jne 0x4d58
cmpl $0x3a, -0x44(%rbp)
jne 0x4cb1
jmp 0x4c8b
leaq 0x3e08(%rip), %rdi      # 0x8a9a
movl $0xa5, %esi
leaq 0x4232(%rip), %rdx      # 0x8ed0
movb $0x0, %al
callq 0x7000
movl $0xffffffff, -0x4(%rbp) # imm = 0xFFFFFFFF
jmp 0x55cf
cmpl $0x0, 0x10(%rbp)
je 0x4cd8
jmp 0x4cb9
movl -0x44(%rbp), %ecx
leaq 0x3dd7(%rip), %rdi      # 0x8a9a
movl $0xa8, %esi
leaq 0x4234(%rip), %rdx      # 0x8f03
movb $0x0, %al
callq 0x7000
jmp 0x4cd8
movl -0x44(%rbp), %eax
andl $0xff, %eax
addl $0x100, %eax            # imm = 0x100
movl $0x40, %ecx
cltd
idivl %ecx
movl %edx, %eax
movl %eax, %ecx
movl $0x1, %eax
shlq %cl, %rax
movq %rax, -0xa0(%rbp)
movq -0x10(%rbp), %rax
movq %rax, -0x98(%rbp)
movl -0x44(%rbp), %eax
andl $0xff, %eax
addl $0x100, %eax            # imm = 0x100
movl $0x40, %ecx
cltd
idivl %ecx
movq -0xa0(%rbp), %rdx
movl %eax, %ecx
movq -0x98(%rbp), %rax
movslq %ecx, %rcx
orq 0x90(%rax,%rcx,8), %rdx
movq %rdx, 0x90(%rax,%rcx,8)
movq -0x10(%rbp), %rax
movl 0x180(%rax), %ecx
addl $0x1, %ecx
movl %ecx, 0x180(%rax)
jmp 0x4dd6
callq 0x2270
movq (%rax), %rax
movq -0x50(%rbp), %rcx
movsbl (%rcx), %ecx
movslq %ecx, %rcx
movzwl (%rax,%rcx,2), %eax
andl $0x4000, %eax           # imm = 0x4000
cmpl $0x0, %eax
je 0x4da5
jmp 0x4d7a
movq -0x50(%rbp), %rax
movsbl (%rax), %ecx
movq -0x50(%rbp), %rax
movsbl (%rax), %r8d
leaq 0x3d0a(%rip), %rdi      # 0x8a9a
movl $0xae, %esi
leaq 0x418a(%rip), %rdx      # 0x8f26
movb $0x0, %al
callq 0x7000
jmp 0x4dca
jmp 0x4da7
movq -0x50(%rbp), %rax
movsbl (%rax), %ecx
leaq 0x3ce5(%rip), %rdi      # 0x8a9a
movl $0xb0, %esi
leaq 0x4195(%rip), %rdx      # 0x8f56
movb $0x0, %al
callq 0x7000
jmp 0x4dca
movl $0xffffffff, -0x4(%rbp) # imm = 0xFFFFFFFF
jmp 0x55cf
jmp 0x4dd8
movslq -0x3c(%rbp), %rax
cmpq $0x63, %rax
jae 0x4de4
jmp 0x4e03
leaq 0x4027(%rip), %rdi      # 0x8e12
leaq 0x3ca8(%rip), %rsi      # 0x8a9a
movl $0xb5, %edx
leaq 0x3f9a(%rip), %rcx      # 0x8d98
callq 0x2140
movq -0x50(%rbp), %rax
movb (%rax), %dl
movq -0x10(%rbp), %rax
movl -0x3c(%rbp), %ecx
movl %ecx, %esi
addl $0x1, %esi
movl %esi, -0x3c(%rbp)
movslq %ecx, %rcx
movb %dl, 0x28(%rax,%rcx)
movq -0x50(%rbp), %rax
movsbl (%rax), %eax
movl %eax, -0x44(%rbp)
movq -0x50(%rbp), %rax
movq %rax, %rcx
addq $0x1, %rcx
movq %rcx, -0x50(%rbp)
cmpb $0x0, 0x1(%rax)
jne 0x4ac5
cmpl $0x0, 0x10(%rbp)
je 0x4e82
cmpl $0x3a, -0x44(%rbp)
je 0x4e80
jmp 0x4e50
movl -0x44(%rbp), %ecx
leaq 0x3c40(%rip), %rdi      # 0x8a9a
movl $0xbd, %esi
leaq 0x400e(%rip), %rdx      # 0x8e74
movb $0x0, %al
callq 0x7000
movq -0x10(%rbp), %rax
movl 0x180(%rax), %ecx
addl $0x1, %ecx
movl %ecx, 0x180(%rax)
jmp 0x4e82
jmp 0x4e84
movq -0x10(%rbp), %rax
movl -0x40(%rbp), %ecx
movl %ecx, %edx
addl $0x1, %edx
movl %edx, -0x40(%rbp)
movslq %ecx, %rcx
movb $0x0, 0x11c(%rax,%rcx)
movq -0x10(%rbp), %rax
movl 0x180(%rax), %ecx
movq -0x10(%rbp), %rax
movl %ecx, 0x184(%rax)
movq -0x10(%rbp), %rax
movq 0x18(%rax), %rax
cmpq $0x0, (%rax)
je 0x5276
movq -0x10(%rbp), %rax
movq 0x18(%rax), %rax
movq %rax, -0x58(%rbp)
movq -0x58(%rbp), %rax
movq (%rax), %rdi
callq 0x20e0
movl %eax, -0x5c(%rbp)
movq -0x10(%rbp), %rcx
cmpl 0x188(%rcx), %eax
jle 0x4ef8
movl -0x5c(%rbp), %ecx
movq -0x10(%rbp), %rax
movl %ecx, 0x188(%rax)
movq -0x58(%rbp), %rax
cmpl $0x0, 0x18(%rax)
je 0x51ce
callq 0x2270
movq (%rax), %rax
movq -0x58(%rbp), %rcx
movslq 0x18(%rcx), %rcx
movzwl (%rax,%rcx,2), %eax
andl $0x8, %eax
cmpl $0x0, %eax
je 0x4f24
jmp 0x4f43
leaq 0x3c92(%rip), %rdi      # 0x8bbd
leaq 0x3b68(%rip), %rsi      # 0x8a9a
movl $0xd8, %edx
leaq 0x3e5a(%rip), %rcx      # 0x8d98
callq 0x2140
cmpl $0x0, 0x10(%rbp)
je 0x4f8a
jmp 0x4f4b
movq -0x58(%rbp), %rax
movl 0x18(%rax), %ecx
movq -0x58(%rbp), %rax
movq (%rax), %r8
movq -0x58(%rbp), %rax
cmpl $0x0, 0x8(%rax)
setne %al
xorb $-0x1, %al
xorb $-0x1, %al
andb $0x1, %al
movzbl %al, %r9d
leaq 0x3b25(%rip), %rdi      # 0x8a9a
movl $0xd9, %esi
leaq 0x3ff9(%rip), %rdx      # 0x8f7a
movb $0x0, %al
callq 0x7000
jmp 0x4f8a
movq -0x10(%rbp), %rax
movq %rax, -0xb0(%rbp)
movq -0x58(%rbp), %rax
movl 0x18(%rax), %eax
andl $0xff, %eax
movl $0x40, %ecx
cltd
idivl %ecx
movl %eax, %ecx
movq -0xb0(%rbp), %rax
movslq %ecx, %rcx
movq 0x90(%rax,%rcx,8), %rax
movq %rax, -0xa8(%rbp)
movq -0x58(%rbp), %rax
movl 0x18(%rax), %eax
andl $0xff, %eax
movl $0x40, %ecx
cltd
idivl %ecx
movq -0xa8(%rbp), %rax
movl %edx, %ecx
movl $0x1, %edx
shlq %cl, %rdx
movq %rdx, %rcx
andq %rcx, %rax
cmpq $0x0, %rax
je 0x502b
jmp 0x4ff7
movq -0x58(%rbp), %rax
movl 0x18(%rax), %ecx
movq -0x58(%rbp), %rax
movq (%rax), %r8
leaq 0x3a8e(%rip), %rdi      # 0x8a9a
movl $0xdb, %esi
leaq 0x3f8a(%rip), %rdx      # 0x8fa2
movb $0x0, %al
callq 0x7000
movl $0xffffffff, -0x4(%rbp) # imm = 0xFFFFFFFF
jmp 0x55cf
movq -0x58(%rbp), %rax
movl 0x18(%rax), %eax
andl $0xff, %eax
movl $0x40, %ecx
cltd
idivl %ecx
movl %edx, %eax
movl %eax, %ecx
movl $0x1, %eax
shlq %cl, %rax
movq %rax, -0xc0(%rbp)
movq -0x10(%rbp), %rax
movq %rax, -0xb8(%rbp)
movq -0x58(%rbp), %rax
movl 0x18(%rax), %eax
andl $0xff, %eax
movl $0x40, %ecx
cltd
idivl %ecx
movq -0xc0(%rbp), %rdx
movl %eax, %ecx
movq -0xb8(%rbp), %rax
movslq %ecx, %rcx
orq 0x90(%rax,%rcx,8), %rdx
movq %rdx, 0x90(%rax,%rcx,8)
movslq -0x3c(%rbp), %rax
cmpq $0x63, %rax
jae 0x50a0
jmp 0x50bf
leaq 0x3d6b(%rip), %rdi      # 0x8e12
leaq 0x39ec(%rip), %rsi      # 0x8a9a
movl $0xdf, %edx
leaq 0x3cde(%rip), %rcx      # 0x8d98
callq 0x2140
movq -0x58(%rbp), %rax
movl 0x18(%rax), %eax
movb %al, %dl
movq -0x10(%rbp), %rax
movl -0x3c(%rbp), %ecx
movl %ecx, %esi
addl $0x1, %esi
movl %esi, -0x3c(%rbp)
movslq %ecx, %rcx
movb %dl, 0x28(%rax,%rcx)
movq -0x58(%rbp), %rax
cmpl $0x0, 0x8(%rax)
je 0x51cc
movq -0x58(%rbp), %rax
cmpl $0x1, 0x8(%rax)
jne 0x50f8
jmp 0x5117
leaq 0x3ed0(%rip), %rdi      # 0x8fcf
leaq 0x3994(%rip), %rsi      # 0x8a9a
movl $0xe2, %edx
leaq 0x3c86(%rip), %rcx      # 0x8d98
callq 0x2140
movslq -0x3c(%rbp), %rax
cmpq $0x63, %rax
jae 0x5123
jmp 0x5142
leaq 0x3ce8(%rip), %rdi      # 0x8e12
leaq 0x3969(%rip), %rsi      # 0x8a9a
movl $0xe3, %edx
leaq 0x3c5b(%rip), %rcx      # 0x8d98
callq 0x2140
movq -0x10(%rbp), %rax
movl -0x3c(%rbp), %ecx
movl %ecx, %edx
addl $0x1, %edx
movl %edx, -0x3c(%rbp)
movslq %ecx, %rcx
movb $0x3a, 0x28(%rax,%rcx)
movq -0x58(%rbp), %rax
movl 0x18(%rax), %eax
andl $0xff, %eax
addl $0x100, %eax            # imm = 0x100
movl $0x40, %ecx
cltd
idivl %ecx
movl %edx, %eax
movl %eax, %ecx
movl $0x1, %eax
shlq %cl, %rax
movq %rax, -0xd0(%rbp)
movq -0x10(%rbp), %rax
movq %rax, -0xc8(%rbp)
movq -0x58(%rbp), %rax
movl 0x18(%rax), %eax
andl $0xff, %eax
addl $0x100, %eax            # imm = 0x100
movl $0x40, %ecx
cltd
idivl %ecx
movq -0xd0(%rbp), %rdx
movl %eax, %ecx
movq -0xc8(%rbp), %rax
movslq %ecx, %rcx
orq 0x90(%rax,%rcx,8), %rdx
movq %rdx, 0x90(%rax,%rcx,8)
jmp 0x5247
movq -0x58(%rbp), %rax
cmpl $0x0, 0x8(%rax)
je 0x5205
movq -0x58(%rbp), %rax
cmpl $0x1, 0x8(%rax)
jne 0x51e4
jmp 0x5203
leaq 0x3de4(%rip), %rdi      # 0x8fcf
leaq 0x38a8(%rip), %rsi      # 0x8a9a
movl $0xe9, %edx
leaq 0x3b9a(%rip), %rcx      # 0x8d98
callq 0x2140
jmp 0x5205
cmpl $0x0, 0x10(%rbp)
je 0x5245
jmp 0x520d
movq -0x58(%rbp), %rax
movq (%rax), %rcx
movq -0x58(%rbp), %rax
cmpl $0x0, 0x8(%rax)
setne %al
xorb $-0x1, %al
xorb $-0x1, %al
andb $0x1, %al
movzbl %al, %r8d
leaq 0x386a(%rip), %rdi      # 0x8a9a
movl $0xeb, %esi
leaq 0x3da5(%rip), %rdx      # 0x8fe1
movb $0x0, %al
callq 0x7000
jmp 0x5245
jmp 0x5247
movq -0x10(%rbp), %rax
movl 0x184(%rax), %ecx
addl $0x1, %ecx
movl %ecx, 0x184(%rax)
movq -0x58(%rbp), %rax
addq $0x20, %rax
movq %rax, -0x58(%rbp)
movq -0x58(%rbp), %rax
cmpq $0x0, (%rax)
jne 0x4ed0
jmp 0x5276
movq -0x10(%rbp), %rax
movl -0x3c(%rbp), %ecx
movl %ecx, %edx
addl $0x1, %edx
movl %edx, -0x3c(%rbp)
movslq %ecx, %rcx
movb $0x0, 0x28(%rax,%rcx)
cmpq $0x0, -0x38(%rbp)
je 0x5520
movq -0x38(%rbp), %rax
movsbl (%rax), %eax
cmpl $0x0, %eax
je 0x5520
movq -0x38(%rbp), %rax
movq %rax, -0x68(%rbp)
callq 0x2270
movq (%rax), %rax
movq -0x68(%rbp), %rcx
movsbl (%rcx), %ecx
movslq %ecx, %rcx
movzwl (%rax,%rcx,2), %eax
andl $0x8, %eax
cmpl $0x0, %eax
je 0x5485
movq -0x10(%rbp), %rax
movq %rax, -0xe0(%rbp)
movq -0x68(%rbp), %rax
movsbl (%rax), %eax
andl $0xff, %eax
movl $0x40, %ecx
cltd
idivl %ecx
movl %eax, %ecx
movq -0xe0(%rbp), %rax
movslq %ecx, %rcx
movq 0x90(%rax,%rcx,8), %rax
movq %rax, -0xd8(%rbp)
movq -0x68(%rbp), %rax
movsbl (%rax), %eax
andl $0xff, %eax
movl $0x40, %ecx
cltd
idivl %ecx
movq -0xd8(%rbp), %rax
movl %edx, %ecx
movl $0x1, %edx
shlq %cl, %rdx
movq %rdx, %rcx
andq %rcx, %rax
cmpq $0x0, %rax
jne 0x536c
jmp 0x533f
movq -0x68(%rbp), %rax
movsbl (%rax), %ecx
leaq 0x374d(%rip), %rdi      # 0x8a9a
movl $0xff, %esi
leaq 0x3cac(%rip), %rdx      # 0x9005
movb $0x0, %al
callq 0x7000
movl $0xffffffff, -0x4(%rbp) # imm = 0xFFFFFFFF
jmp 0x55cf
movq -0x10(%rbp), %rax
movq %rax, -0xf0(%rbp)
movq -0x68(%rbp), %rax
movsbl (%rax), %eax
andl $0xff, %eax
addl $0x200, %eax            # imm = 0x200
movl $0x40, %ecx
cltd
idivl %ecx
movl %eax, %ecx
movq -0xf0(%rbp), %rax
movslq %ecx, %rcx
movq 0x90(%rax,%rcx,8), %rax
movq %rax, -0xe8(%rbp)
movq -0x68(%rbp), %rax
movsbl (%rax), %eax
andl $0xff, %eax
addl $0x200, %eax            # imm = 0x200
movl $0x40, %ecx
cltd
idivl %ecx
movq -0xe8(%rbp), %rax
movl %edx, %ecx
movl $0x1, %edx
shlq %cl, %rdx
movq %rdx, %rcx
andq %rcx, %rax
cmpq $0x0, %rax
je 0x5410
jmp 0x53e3
movq -0x68(%rbp), %rax
movsbl (%rax), %ecx
leaq 0x36a9(%rip), %rdi      # 0x8a9a
movl $0x103, %esi            # imm = 0x103
leaq 0x3c30(%rip), %rdx      # 0x902d
movb $0x0, %al
callq 0x7000
movl $0xffffffff, -0x4(%rbp) # imm = 0xFFFFFFFF
jmp 0x55cf
movq -0x68(%rbp), %rax
movsbl (%rax), %eax
andl $0xff, %eax
addl $0x200, %eax            # imm = 0x200
movl $0x40, %ecx
cltd
idivl %ecx
movl %edx, %eax
movl %eax, %ecx
movl $0x1, %eax
shlq %cl, %rax
movq %rax, -0x100(%rbp)
movq -0x10(%rbp), %rax
movq %rax, -0xf8(%rbp)
movq -0x68(%rbp), %rax
movsbl (%rax), %eax
andl $0xff, %eax
addl $0x200, %eax            # imm = 0x200
movl $0x40, %ecx
cltd
idivl %ecx
movq -0x100(%rbp), %rdx
movl %eax, %ecx
movq -0xf8(%rbp), %rax
movslq %ecx, %rcx
orq 0x90(%rax,%rcx,8), %rdx
movq %rdx, 0x90(%rax,%rcx,8)
jmp 0x5503
callq 0x2270
movq (%rax), %rax
movq -0x68(%rbp), %rcx
movsbl (%rcx), %ecx
movslq %ecx, %rcx
movzwl (%rax,%rcx,2), %eax
andl $0x4000, %eax           # imm = 0x4000
cmpl $0x0, %eax
je 0x54d2
jmp 0x54a7
movq -0x68(%rbp), %rax
movsbl (%rax), %ecx
movq -0x68(%rbp), %rax
movsbl (%rax), %r8d
leaq 0x35dd(%rip), %rdi      # 0x8a9a
movl $0x109, %esi            # imm = 0x109
leaq 0x3b8b(%rip), %rdx      # 0x9054
movb $0x0, %al
callq 0x7000
jmp 0x54f7
jmp 0x54d4
movq -0x68(%rbp), %rax
movsbl (%rax), %ecx
leaq 0x35b8(%rip), %rdi      # 0x8a9a
movl $0x10b, %esi            # imm = 0x10B
leaq 0x3b93(%rip), %rdx      # 0x9081
movb $0x0, %al
callq 0x7000
jmp 0x54f7
movl $0xffffffff, -0x4(%rbp) # imm = 0xFFFFFFFF
jmp 0x55cf
jmp 0x5505
movq -0x68(%rbp), %rax
movq %rax, %rcx
addq $0x1, %rcx
movq %rcx, -0x68(%rbp)
cmpb $0x0, 0x1(%rax)
jne 0x52b0
jmp 0x5520
movq -0x10(%rbp), %rax
movl 0x188(%rax), %eax
addl $0x4, %eax
movl %eax, -0x6c(%rbp)
movq -0x10(%rbp), %rdi
addq $0x1b4, %rdi            # imm = 0x1B4
movl -0x6c(%rbp), %ecx
addl $0x6, %ecx
movl $0x28, %esi
leaq 0x3b55(%rip), %rdx      # 0x90a2
movb $0x0, %al
callq 0x2110
movq -0x10(%rbp), %rdi
addq $0x18c, %rdi            # imm = 0x18C
movl -0x6c(%rbp), %ecx
addl $0x8, %ecx
movl $0x28, %esi
leaq 0x3b33(%rip), %rdx      # 0x90a4
movb $0x0, %al
callq 0x2110
movq -0x10(%rbp), %rdi
addq $0x1dc, %rdi            # imm = 0x1DC
movl -0x6c(%rbp), %ecx
addl $0x9, %ecx
movl $0x28, %esi
leaq 0x3b18(%rip), %rdx      # 0x90ad
movb $0x0, %al
callq 0x2110
cmpl $0x0, 0x10(%rbp)
je 0x55c8
jmp 0x55a4
movq -0x10(%rbp), %rcx
addq $0x28, %rcx
leaq 0x34e7(%rip), %rdi      # 0x8a9a
movl $0x11c, %esi            # imm = 0x11C
leaq 0x3af6(%rip), %rdx      # 0x90b5
movb $0x0, %al
callq 0x7000
jmp 0x55c8
movl $0x0, -0x4(%rbp)
movl -0x4(%rbp), %eax
addq $0x100, %rsp            # imm = 0x100
popq %rbp
retq
nopl (%rax,%rax)