// File: /workspace/github_c_makefile_star2_O0/lyda[P]tz/zic.c
// Function: outzone
static void
outzone(zpfirst, zonecount)
const struct zone * const	zpfirst;
const int			zonecount;
{
	register const struct zone *	zp;
	register struct rule *		rp;
	register int			i, j;
	register int			usestart, useuntil;
	register zic_t			starttime, untiltime;
	register long			gmtoff;
	register long			stdoff;
	register int			year;
	register long			startoff;
	register int			startttisstd;
	register int			startttisgmt;
	register int			type;
	register char *			startbuf;
	register char *			ab;
	register char *			envvar;
	register int			max_abbr_len;
	register int			max_envvar_len;
	register int			prodstic; /* all rules are min to max */

	max_abbr_len = 2 + max_format_len + max_abbrvar_len;
	max_envvar_len = 2 * max_abbr_len + 5 * 9;
	startbuf = emalloc(max_abbr_len + 1);
	ab = emalloc(max_abbr_len + 1);
	envvar = emalloc(max_envvar_len + 1);
	INITIALIZE(untiltime);
	INITIALIZE(starttime);
	/*
	** Now. . .finally. . .generate some useful data!
	*/
	timecnt = 0;
	typecnt = 0;
	charcnt = 0;
	prodstic = zonecount == 1;
	/*
	** Thanks to Earl Chew
	** for noting the need to unconditionally initialize startttisstd.
	*/
	startttisstd = FALSE;
	startttisgmt = FALSE;
	min_year = max_year = EPOCH_YEAR;
	if (leapseen) {
		updateminmax(leapminyear);
		updateminmax(leapmaxyear + (leapmaxyear < INT_MAX));
	}
	for (i = 0; i < zonecount; ++i) {
		zp = &zpfirst[i];
		if (i < zonecount - 1)
			updateminmax(zp->z_untilrule.r_loyear);
		for (j = 0; j < zp->z_nrules; ++j) {
			rp = &zp->z_rules[j];
			if (rp->r_lowasnum)
				updateminmax(rp->r_loyear);
			if (rp->r_hiwasnum)
				updateminmax(rp->r_hiyear);
			if (rp->r_lowasnum || rp->r_hiwasnum)
				prodstic = FALSE;
		}
	}
	/*
	** Generate lots of data if a rule can't cover all future times.
	*/
	stringzone(envvar, zpfirst, zonecount);
	if (noise && envvar[0] == '\0') {
		register char *	wp;

wp = ecpyalloc(_("no POSIX environment variable for zone"));
		wp = ecatalloc(wp, " ");
		wp = ecatalloc(wp, zpfirst->z_name);
		warning(wp);
		ifree(wp);
	}
	if (envvar[0] == '\0') {
		if (min_year >= INT_MIN + YEARSPERREPEAT)
			min_year -= YEARSPERREPEAT;
		else	min_year = INT_MIN;
		if (max_year <= INT_MAX - YEARSPERREPEAT)
			max_year += YEARSPERREPEAT;
		else	max_year = INT_MAX;
		/*
		** Regardless of any of the above,
		** for a "proDSTic" zone which specifies that its rules
		** always have and always will be in effect,
		** we only need one cycle to define the zone.
		*/
		if (prodstic) {
			min_year = 1900;
			max_year = min_year + YEARSPERREPEAT;
		}
	}
	/*
	** For the benefit of older systems,
	** generate data from 1900 through 2037.
	*/
	if (min_year > 1900)
		min_year = 1900;
	if (max_year < 2037)
		max_year = 2037;
	for (i = 0; i < zonecount; ++i) {
		/*
		** A guess that may well be corrected later.
		*/
		stdoff = 0;
		zp = &zpfirst[i];
		usestart = i > 0 && (zp - 1)->z_untiltime > min_time;
		useuntil = i < (zonecount - 1);
		if (useuntil && zp->z_untiltime <= min_time)
			continue;
		gmtoff = zp->z_gmtoff;
		eat(zp->z_filename, zp->z_linenum);
		*startbuf = '\0';
		startoff = zp->z_gmtoff;
		if (zp->z_nrules == 0) {
			stdoff = zp->z_stdoff;
			doabbr(startbuf, zp->z_format,
				(char *) NULL, stdoff != 0, FALSE);
			type = addtype(oadd(zp->z_gmtoff, stdoff),
				startbuf, stdoff != 0, startttisstd,
				startttisgmt);
			if (usestart) {
				addtt(starttime, type);
				usestart = FALSE;
			} else if (stdoff != 0)
				addtt(min_time, type);
		} else for (year = min_year; year <= max_year; ++year) {
			if (useuntil && year > zp->z_untilrule.r_hiyear)
				break;
			/*
			** Mark which rules to do in the current year.
			** For those to do, calculate rpytime(rp, year);
			*/
			for (j = 0; j < zp->z_nrules; ++j) {
				rp = &zp->z_rules[j];
				eats(zp->z_filename, zp->z_linenum,
					rp->r_filename, rp->r_linenum);
				rp->r_todo = year >= rp->r_loyear &&
						year <= rp->r_hiyear &&
						yearistype(year, rp->r_yrtype);
				if (rp->r_todo)
					rp->r_temp = rpytime(rp, year);
			}
			for ( ; ; ) {
				register int	k;
				register zic_t	jtime, ktime;
				register long	offset;

				INITIALIZE(ktime);
				if (useuntil) {
					/*
					** Turn untiltime into UTC
					** assuming the current gmtoff and
					** stdoff values.
					*/
					untiltime = zp->z_untiltime;
					if (!zp->z_untilrule.r_todisgmt)
						untiltime = tadd(untiltime,
							-gmtoff);
					if (!zp->z_untilrule.r_todisstd)
						untiltime = tadd(untiltime,
							-stdoff);
				}
				/*
				** Find the rule (of those to do, if any)
				** that takes effect earliest in the year.
				*/
				k = -1;
				for (j = 0; j < zp->z_nrules; ++j) {
					rp = &zp->z_rules[j];
					if (!rp->r_todo)
						continue;
					eats(zp->z_filename, zp->z_linenum,
						rp->r_filename, rp->r_linenum);
					offset = rp->r_todisgmt ? 0 : gmtoff;
					if (!rp->r_todisstd)
						offset = oadd(offset, stdoff);
					jtime = rp->r_temp;
					if (jtime == min_time ||
						jtime == max_time)
							continue;
					jtime = tadd(jtime, -offset);
					if (k < 0 || jtime < ktime) {
						k = j;
						ktime = jtime;
					}
				}
				if (k < 0)
					break;	/* go on to next year */
				rp = &zp->z_rules[k];
				rp->r_todo = FALSE;
				if (useuntil && ktime >= untiltime)
					break;
				stdoff = rp->r_stdoff;
				if (usestart && ktime == starttime)
					usestart = FALSE;
				if (usestart) {
					if (ktime < starttime) {
						startoff = oadd(zp->z_gmtoff,
							stdoff);
						doabbr(startbuf, zp->z_format,
							rp->r_abbrvar,
							rp->r_stdoff != 0,
							FALSE);
						continue;
					}
					if (*startbuf == '\0' &&
						startoff == oadd(zp->z_gmtoff,
						stdoff)) {
							doabbr(startbuf,
								zp->z_format,
								rp->r_abbrvar,
								rp->r_stdoff !=
								0,
								FALSE);
					}
				}
				eats(zp->z_filename, zp->z_linenum,
					rp->r_filename, rp->r_linenum);
				doabbr(ab, zp->z_format, rp->r_abbrvar,
					rp->r_stdoff != 0, FALSE);
				offset = oadd(zp->z_gmtoff, rp->r_stdoff);
				type = addtype(offset, ab, rp->r_stdoff != 0,
					rp->r_todisstd, rp->r_todisgmt);
				addtt(ktime, type);
			}
		}
		if (usestart) {
			if (*startbuf == '\0' &&
				zp->z_format != NULL &&
				strchr(zp->z_format, '%') == NULL &&
				strchr(zp->z_format, '/') == NULL)
					(void) strcpy(startbuf, zp->z_format);
			eat(zp->z_filename, zp->z_linenum);
			if (*startbuf == '\0')
error(_("can't determine time zone abbreviation to use just after until time"));
			else	addtt(starttime,
					addtype(startoff, startbuf,
						startoff != zp->z_gmtoff,
						startttisstd,
						startttisgmt));
		}
		/*
		** Now we may get to set starttime for the next zone line.
		*/
		if (useuntil) {
			startttisstd = zp->z_untilrule.r_todisstd;
			startttisgmt = zp->z_untilrule.r_todisgmt;
			starttime = zp->z_untiltime;
			if (!startttisstd)
				starttime = tadd(starttime, -stdoff);
			if (!startttisgmt)
				starttime = tadd(starttime, -gmtoff);
		}
	}
	writezone(zpfirst->z_name, envvar);
	ifree(startbuf);
	ifree(ab);
	ifree(envvar);
}

// Assembly:
pushq %rbp
movq %rsp, %rbp
subq $0xe0, %rsp
movq %rdi, -0x8(%rbp)
movl %esi, -0xc(%rbp)
movl 0xf098(%rip), %eax      # 0x12310
addl $0x2, %eax
addl 0xf107(%rip), %eax      # 0x12388
movl %eax, -0x8c(%rbp)
movl -0x8c(%rbp), %eax
shll %eax
addl $0x2d, %eax
movl %eax, -0x90(%rbp)
movl -0x8c(%rbp), %edi
addl $0x1, %edi
callq 0xcfb0
movq %rax, %rdi
callq 0x40b0
movq %rax, -0x78(%rbp)
movl -0x8c(%rbp), %edi
addl $0x1, %edi
callq 0xcfb0
movq %rax, %rdi
callq 0x40b0
movq %rax, -0x80(%rbp)
movl -0x90(%rbp), %edi
addl $0x1, %edi
callq 0xcfb0
movq %rax, %rdi
callq 0x40b0
movq %rax, -0x88(%rbp)
movq $0x0, -0x40(%rbp)
movq $0x0, -0x38(%rbp)
movl $0x0, 0xf401(%rip)      # 0x12704
movl $0x0, 0xf3fb(%rip)      # 0x12708
movl $0x0, 0xf3f5(%rip)      # 0x1270c
cmpl $0x1, -0xc(%rbp)
sete %al
andb $0x1, %al
movzbl %al, %eax
movl %eax, -0x94(%rbp)
movl $0x0, -0x64(%rbp)
movl $0x0, -0x68(%rbp)
movl $0x7b2, 0xf3cf(%rip)    # imm = 0x7B2
movl $0x7b2, 0xf3c9(%rip)    # imm = 0x7B2
cmpl $0x0, 0xf046(%rip)      # 0x12398
je 0x337e
movl 0xf046(%rip), %edi      # 0x123a0
callq 0x6810
movl 0xf037(%rip), %edi      # 0x1239c
cmpl $0x7fffffff, 0xf02d(%rip) # imm = 0x7FFFFFFF
setl %al
andb $0x1, %al
movzbl %al, %eax
addl %eax, %edi
callq 0x6810
movl $0x0, -0x24(%rbp)
movl -0x24(%rbp), %eax
cmpl -0xc(%rbp), %eax
jge 0x3451
movq -0x8(%rbp), %rax
movslq -0x24(%rbp), %rcx
imulq $0xc0, %rcx, %rcx
addq %rcx, %rax
movq %rax, -0x18(%rbp)
movl -0x24(%rbp), %eax
movl -0xc(%rbp), %ecx
subl $0x1, %ecx
cmpl %ecx, %eax
jge 0x33c0
movq -0x18(%rbp), %rax
movl 0x60(%rax), %edi
callq 0x6810
movl $0x0, -0x28(%rbp)
movl -0x28(%rbp), %eax
movq -0x18(%rbp), %rcx
cmpl 0x40(%rcx), %eax
jge 0x3441
movq -0x18(%rbp), %rax
movq 0x38(%rax), %rax
movslq -0x28(%rbp), %rcx
imulq $0x70, %rcx, %rcx
addq %rcx, %rax
movq %rax, -0x20(%rbp)
movq -0x20(%rbp), %rax
cmpl $0x0, 0x28(%rax)
je 0x3400
movq -0x20(%rbp), %rax
movl 0x18(%rax), %edi
callq 0x6810
movq -0x20(%rbp), %rax
cmpl $0x0, 0x2c(%rax)
je 0x3416
movq -0x20(%rbp), %rax
movl 0x1c(%rax), %edi
callq 0x6810
movq -0x20(%rbp), %rax
cmpl $0x0, 0x28(%rax)
jne 0x342a
movq -0x20(%rbp), %rax
cmpl $0x0, 0x2c(%rax)
je 0x3434
movl $0x0, -0x94(%rbp)
jmp 0x3436
movl -0x28(%rbp), %eax
addl $0x1, %eax
movl %eax, -0x28(%rbp)
jmp 0x33c7
jmp 0x3443
movl -0x24(%rbp), %eax
addl $0x1, %eax
movl %eax, -0x24(%rbp)
jmp 0x3385
movq -0x88(%rbp), %rdi
movq -0x8(%rbp), %rsi
movl -0xc(%rbp), %edx
callq 0x6850
cmpl $0x0, 0xed75(%rip)      # 0x121e0
je 0x34f8
movq -0x88(%rbp), %rax
movsbl (%rax), %eax
cmpl $0x0, %eax
jne 0x34f8
leaq 0xb713(%rip), %rdi      # 0xeb9a
callq 0xd140
movq %rax, %rdi
callq 0x40b0
movq %rax, -0xa0(%rbp)
movq -0xa0(%rbp), %rdi
leaq 0xaf2c(%rip), %rsi      # 0xe3d5
callq 0xd090
movq %rax, %rdi
callq 0x40b0
movq %rax, -0xa0(%rbp)
movq -0xa0(%rbp), %rdi
movq -0x8(%rbp), %rax
movq 0x10(%rax), %rsi
callq 0xd090
movq %rax, %rdi
callq 0x40b0
movq %rax, -0xa0(%rbp)
movq -0xa0(%rbp), %rdi
callq 0x4000
movq -0xa0(%rbp), %rdi
callq 0xd160
movq -0x88(%rbp), %rax
movsbl (%rax), %eax
cmpl $0x0, %eax
jne 0x357f
cmpl $0x80000190, 0xf203(%rip) # imm = 0x80000190
jl 0x3526
movl 0xf1fb(%rip), %eax      # 0x12714
subl $0x190, %eax            # imm = 0x190
movl %eax, 0xf1f0(%rip)      # 0x12714
jmp 0x3530
movl $0x80000000, 0xf1e4(%rip) # imm = 0x80000000
cmpl $0x7ffffe6f, 0xf1d6(%rip) # imm = 0x7FFFFE6F
jg 0x354f
movl 0xf1ce(%rip), %eax      # 0x12710
addl $0x190, %eax            # imm = 0x190
movl %eax, 0xf1c3(%rip)      # 0x12710
jmp 0x3559
movl $0x7fffffff, 0xf1b7(%rip) # imm = 0x7FFFFFFF
cmpl $0x0, -0x94(%rbp)
je 0x357d
movl $0x76c, 0xf1a8(%rip)    # imm = 0x76C
movl 0xf1a2(%rip), %eax      # 0x12714
addl $0x190, %eax            # imm = 0x190
movl %eax, 0xf193(%rip)      # 0x12710
jmp 0x357f
cmpl $0x76c, 0xf18b(%rip)    # imm = 0x76C
jle 0x3595
movl $0x76c, 0xf17f(%rip)    # imm = 0x76C
cmpl $0x7f5, 0xf171(%rip)    # imm = 0x7F5
jge 0x35ab
movl $0x7f5, 0xf165(%rip)    # imm = 0x7F5
movl $0x0, -0x24(%rbp)
movl -0x24(%rbp), %eax
cmpl -0xc(%rbp), %eax
jge 0x3d16
movq $0x0, -0x50(%rbp)
movq -0x8(%rbp), %rax
movslq -0x24(%rbp), %rcx
imulq $0xc0, %rcx, %rcx
addq %rcx, %rax
movq %rax, -0x18(%rbp)
xorl %eax, %eax
cmpl $0x0, -0x24(%rbp)
movb %al, -0xc1(%rbp)
jle 0x3602
movq -0x18(%rbp), %rax
movq -0x8(%rax), %rax
cmpq 0xec2f(%rip), %rax      # 0x12228
setg %al
movb %al, -0xc1(%rbp)
movb -0xc1(%rbp), %al
andb $0x1, %al
movzbl %al, %eax
movl %eax, -0x2c(%rbp)
movl -0x24(%rbp), %eax
movl -0xc(%rbp), %ecx
subl $0x1, %ecx
cmpl %ecx, %eax
setl %al
andb $0x1, %al
movzbl %al, %eax
movl %eax, -0x30(%rbp)
cmpl $0x0, -0x30(%rbp)
je 0x3645
movq -0x18(%rbp), %rax
movq 0xb8(%rax), %rax
cmpq 0xebea(%rip), %rax      # 0x12228
jg 0x3645
jmp 0x3d08
movq -0x18(%rbp), %rax
movq 0x18(%rax), %rax
movq %rax, -0x48(%rbp)
movq -0x18(%rbp), %rax
movq (%rax), %rdi
movq -0x18(%rbp), %rax
movl 0x8(%rax), %esi
callq 0x3d60
movq -0x78(%rbp), %rax
movb $0x0, (%rax)
movq -0x18(%rbp), %rax
movq 0x18(%rax), %rax
movq %rax, -0x60(%rbp)
movq -0x18(%rbp), %rax
cmpl $0x0, 0x40(%rax)
jne 0x3722
movq -0x18(%rbp), %rax
movq 0x30(%rax), %rax
movq %rax, -0x50(%rbp)
movq -0x78(%rbp), %rdi
movq -0x18(%rbp), %rax
movq 0x28(%rax), %rsi
cmpq $0x0, -0x50(%rbp)
setne %al
andb $0x1, %al
movzbl %al, %ecx
xorl %eax, %eax
movl %eax, %edx
xorl %r8d, %r8d
callq 0x6b90
movq -0x18(%rbp), %rax
movq 0x18(%rax), %rdi
movq -0x50(%rbp), %rsi
callq 0x4600
movq %rax, %rdi
movq -0x78(%rbp), %rsi
cmpq $0x0, -0x50(%rbp)
setne %al
andb $0x1, %al
movzbl %al, %edx
movl -0x64(%rbp), %ecx
movl -0x68(%rbp), %r8d
callq 0x6d30
movl %eax, -0x6c(%rbp)
cmpl $0x0, -0x2c(%rbp)
je 0x3705
movq -0x38(%rbp), %rdi
movl -0x6c(%rbp), %esi
callq 0x6f80
movl $0x0, -0x2c(%rbp)
jmp 0x371d
cmpq $0x0, -0x50(%rbp)
je 0x371b
movq 0xeb15(%rip), %rdi      # 0x12228
movl -0x6c(%rbp), %esi
callq 0x6f80
jmp 0x371d
jmp 0x3bcd
movl 0xefec(%rip), %eax      # 0x12714
movl %eax, -0x54(%rbp)
movl -0x54(%rbp), %eax
cmpl 0xefdc(%rip), %eax      # 0x12710
jg 0x3bcb
cmpl $0x0, -0x30(%rbp)
je 0x3751
movl -0x54(%rbp), %eax
movq -0x18(%rbp), %rcx
cmpl 0x64(%rcx), %eax
jle 0x3751
jmp 0x3bcb
movl $0x0, -0x28(%rbp)
movl -0x28(%rbp), %eax
movq -0x18(%rbp), %rcx
cmpl 0x40(%rcx), %eax
jge 0x3827
movq -0x18(%rbp), %rax
movq 0x38(%rax), %rax
movslq -0x28(%rbp), %rcx
imulq $0x70, %rcx, %rcx
addq %rcx, %rax
movq %rax, -0x20(%rbp)
movq -0x18(%rbp), %rax
movq (%rax), %rdi
movq -0x18(%rbp), %rax
movl 0x8(%rax), %esi
movq -0x20(%rbp), %rax
movq (%rax), %rdx
movq -0x20(%rbp), %rax
movl 0x8(%rax), %ecx
callq 0x4070
movl -0x54(%rbp), %ecx
movq -0x20(%rbp), %rdx
xorl %eax, %eax
cmpl 0x18(%rdx), %ecx
movb %al, -0xc2(%rbp)
jl 0x37e4
movl -0x54(%rbp), %ecx
movq -0x20(%rbp), %rdx
xorl %eax, %eax
cmpl 0x1c(%rdx), %ecx
movb %al, -0xc2(%rbp)
jg 0x37e4
movl -0x54(%rbp), %edi
movq -0x20(%rbp), %rax
movq 0x20(%rax), %rsi
callq 0x70f0
cmpl $0x0, %eax
setne %al
movb %al, -0xc2(%rbp)
movb -0xc2(%rbp), %al
andb $0x1, %al
movzbl %al, %ecx
movq -0x20(%rbp), %rax
movl %ecx, 0x60(%rax)
movq -0x20(%rbp), %rax
cmpl $0x0, 0x60(%rax)
je 0x3817
movq -0x20(%rbp), %rdi
movl -0x54(%rbp), %esi
callq 0x5f00
movq %rax, %rcx
movq -0x20(%rbp), %rax
movq %rcx, 0x68(%rax)
jmp 0x3819
movl -0x28(%rbp), %eax
addl $0x1, %eax
movl %eax, -0x28(%rbp)
jmp 0x3758
jmp 0x3829
movq $0x0, -0xb8(%rbp)
cmpl $0x0, -0x30(%rbp)
je 0x388f
movq -0x18(%rbp), %rax
movq 0xb8(%rax), %rax
movq %rax, -0x40(%rbp)
movq -0x18(%rbp), %rax
cmpl $0x0, 0x94(%rax)
jne 0x386b
movq -0x40(%rbp), %rdi
xorl %eax, %eax
movl %eax, %esi
subq -0x48(%rbp), %rsi
callq 0x6440
movq %rax, -0x40(%rbp)
movq -0x18(%rbp), %rax
cmpl $0x0, 0x90(%rax)
jne 0x388d
movq -0x40(%rbp), %rdi
xorl %eax, %eax
movl %eax, %esi
subq -0x50(%rbp), %rsi
callq 0x6440
movq %rax, -0x40(%rbp)
jmp 0x388f
movl $0xffffffff, -0xa4(%rbp) # imm = 0xFFFFFFFF
movl $0x0, -0x28(%rbp)
movl -0x28(%rbp), %eax
movq -0x18(%rbp), %rcx
cmpl 0x40(%rcx), %eax
jge 0x39d5
movq -0x18(%rbp), %rax
movq 0x38(%rax), %rax
movslq -0x28(%rbp), %rcx
imulq $0x70, %rcx, %rcx
addq %rcx, %rax
movq %rax, -0x20(%rbp)
movq -0x20(%rbp), %rax
cmpl $0x0, 0x60(%rax)
jne 0x38d6
jmp 0x39c7
movq -0x18(%rbp), %rax
movq (%rax), %rdi
movq -0x18(%rbp), %rax
movl 0x8(%rax), %esi
movq -0x20(%rbp), %rax
movq (%rax), %rdx
movq -0x20(%rbp), %rax
movl 0x8(%rax), %ecx
callq 0x4070
movq -0x20(%rbp), %rax
cmpl $0x0, 0x4c(%rax)
je 0x390c
xorl %eax, %eax
movq %rax, -0xd0(%rbp)
jmp 0x3917
movq -0x48(%rbp), %rax
movq %rax, -0xd0(%rbp)
movq -0xd0(%rbp), %rax
movq %rax, -0xc0(%rbp)
movq -0x20(%rbp), %rax
cmpl $0x0, 0x48(%rax)
jne 0x3946
movq -0xc0(%rbp), %rdi
movq -0x50(%rbp), %rsi
callq 0x4600
movq %rax, -0xc0(%rbp)
movq -0x20(%rbp), %rax
movq 0x68(%rax), %rax
movq %rax, -0xb0(%rbp)
movq -0xb0(%rbp), %rax
cmpq 0xe8c5(%rip), %rax      # 0x12228
je 0x3975
movq -0xb0(%rbp), %rax
cmpq 0xe8bd(%rip), %rax      # 0x12230
jne 0x3977
jmp 0x39c7
movq -0xb0(%rbp), %rdi
xorl %eax, %eax
movl %eax, %esi
subq -0xc0(%rbp), %rsi
callq 0x6440
movq %rax, -0xb0(%rbp)
cmpl $0x0, -0xa4(%rbp)
jl 0x39ae
movq -0xb0(%rbp), %rax
cmpq -0xb8(%rbp), %rax
jge 0x39c5
movl -0x28(%rbp), %eax
movl %eax, -0xa4(%rbp)
movq -0xb0(%rbp), %rax
movq %rax, -0xb8(%rbp)
jmp 0x39c7
movl -0x28(%rbp), %eax
addl $0x1, %eax
movl %eax, -0x28(%rbp)
jmp 0x38a0
cmpl $0x0, -0xa4(%rbp)
jge 0x39e3
jmp 0x3bbb
movq -0x18(%rbp), %rax
movq 0x38(%rax), %rax
movslq -0xa4(%rbp), %rcx
imulq $0x70, %rcx, %rcx
addq %rcx, %rax
movq %rax, -0x20(%rbp)
movq -0x20(%rbp), %rax
movl $0x0, 0x60(%rax)
cmpl $0x0, -0x30(%rbp)
je 0x3a20
movq -0xb8(%rbp), %rax
cmpq -0x40(%rbp), %rax
jl 0x3a20
jmp 0x3bbb
movq -0x20(%rbp), %rax
movq 0x50(%rax), %rax
movq %rax, -0x50(%rbp)
cmpl $0x0, -0x2c(%rbp)
je 0x3a46
movq -0xb8(%rbp), %rax
cmpq -0x38(%rbp), %rax
jne 0x3a46
movl $0x0, -0x2c(%rbp)
cmpl $0x0, -0x2c(%rbp)
je 0x3b0a
movq -0xb8(%rbp), %rax
cmpq -0x38(%rbp), %rax
jge 0x3aa4
movq -0x18(%rbp), %rax
movq 0x18(%rax), %rdi
movq -0x50(%rbp), %rsi
callq 0x4600
movq %rax, -0x60(%rbp)
movq -0x78(%rbp), %rdi
movq -0x18(%rbp), %rax
movq 0x28(%rax), %rsi
movq -0x20(%rbp), %rax
movq 0x58(%rax), %rdx
movq -0x20(%rbp), %rax
cmpq $0x0, 0x50(%rax)
setne %al
andb $0x1, %al
movzbl %al, %ecx
xorl %r8d, %r8d
callq 0x6b90
jmp 0x3829
movq -0x78(%rbp), %rax
movsbl (%rax), %eax
cmpl $0x0, %eax
jne 0x3b08
movq -0x60(%rbp), %rax
movq %rax, -0xd8(%rbp)
movq -0x18(%rbp), %rax
movq 0x18(%rax), %rdi
movq -0x50(%rbp), %rsi
callq 0x4600
movq %rax, %rcx
movq -0xd8(%rbp), %rax
cmpq %rcx, %rax
jne 0x3b08
movq -0x78(%rbp), %rdi
movq -0x18(%rbp), %rax
movq 0x28(%rax), %rsi
movq -0x20(%rbp), %rax
movq 0x58(%rax), %rdx
movq -0x20(%rbp), %rax
cmpq $0x0, 0x50(%rax)
setne %al
andb $0x1, %al
movzbl %al, %ecx
xorl %r8d, %r8d
callq 0x6b90
jmp 0x3b0a
movq -0x18(%rbp), %rax
movq (%rax), %rdi
movq -0x18(%rbp), %rax
movl 0x8(%rax), %esi
movq -0x20(%rbp), %rax
movq (%rax), %rdx
movq -0x20(%rbp), %rax
movl 0x8(%rax), %ecx
callq 0x4070
movq -0x80(%rbp), %rdi
movq -0x18(%rbp), %rax
movq 0x28(%rax), %rsi
movq -0x20(%rbp), %rax
movq 0x58(%rax), %rdx
movq -0x20(%rbp), %rax
cmpq $0x0, 0x50(%rax)
setne %al
andb $0x1, %al
movzbl %al, %ecx
xorl %r8d, %r8d
callq 0x6b90
movq -0x18(%rbp), %rax
movq 0x18(%rax), %rdi
movq -0x20(%rbp), %rax
movq 0x50(%rax), %rsi
callq 0x4600
movq %rax, -0xc0(%rbp)
movq -0xc0(%rbp), %rdi
movq -0x80(%rbp), %rsi
movq -0x20(%rbp), %rax
cmpq $0x0, 0x50(%rax)
setne %al
andb $0x1, %al
movzbl %al, %edx
movq -0x20(%rbp), %rax
movl 0x48(%rax), %ecx
movq -0x20(%rbp), %rax
movl 0x4c(%rax), %r8d
callq 0x6d30
movl %eax, -0x6c(%rbp)
movq -0xb8(%rbp), %rdi
movl -0x6c(%rbp), %esi
callq 0x6f80
jmp 0x3829
jmp 0x3bbd
movl -0x54(%rbp), %eax
addl $0x1, %eax
movl %eax, -0x54(%rbp)
jmp 0x372b
jmp 0x3bcd
cmpl $0x0, -0x2c(%rbp)
je 0x3c9f
movq -0x78(%rbp), %rax
movsbl (%rax), %eax
cmpl $0x0, %eax
jne 0x3c2f
movq -0x18(%rbp), %rax
cmpq $0x0, 0x28(%rax)
je 0x3c2f
movq -0x18(%rbp), %rax
movq 0x28(%rax), %rdi
movl $0x25, %esi
callq 0x20f0
cmpq $0x0, %rax
jne 0x3c2f
movq -0x18(%rbp), %rax
movq 0x28(%rax), %rdi
movl $0x2f, %esi
callq 0x20f0
cmpq $0x0, %rax
jne 0x3c2f
movq -0x78(%rbp), %rdi
movq -0x18(%rbp), %rax
movq 0x28(%rax), %rsi
callq 0x2080
movq -0x18(%rbp), %rax
movq (%rax), %rdi
movq -0x18(%rbp), %rax
movl 0x8(%rax), %esi
callq 0x3d60
movq -0x78(%rbp), %rax
movsbl (%rax), %eax
cmpl $0x0, %eax
jne 0x3c5c
leaq 0xaf6c(%rip), %rdi      # 0xebc1
callq 0x4110
jmp 0x3c9d
movq -0x38(%rbp), %rax
movq %rax, -0xe0(%rbp)
movq -0x60(%rbp), %rdi
movq -0x78(%rbp), %rsi
movq -0x60(%rbp), %rax
movq -0x18(%rbp), %rcx
cmpq 0x18(%rcx), %rax
setne %al
andb $0x1, %al
movzbl %al, %edx
movl -0x64(%rbp), %ecx
movl -0x68(%rbp), %r8d
callq 0x6d30
movq -0xe0(%rbp), %rdi
movl %eax, %esi
callq 0x6f80
jmp 0x3c9f
cmpl $0x0, -0x30(%rbp)
je 0x3d06
movq -0x18(%rbp), %rax
movl 0x90(%rax), %eax
movl %eax, -0x64(%rbp)
movq -0x18(%rbp), %rax
movl 0x94(%rax), %eax
movl %eax, -0x68(%rbp)
movq -0x18(%rbp), %rax
movq 0xb8(%rax), %rax
movq %rax, -0x38(%rbp)
cmpl $0x0, -0x64(%rbp)
jne 0x3ce9
movq -0x38(%rbp), %rdi
xorl %eax, %eax
movl %eax, %esi
subq -0x50(%rbp), %rsi
callq 0x6440
movq %rax, -0x38(%rbp)
cmpl $0x0, -0x68(%rbp)
jne 0x3d04
movq -0x38(%rbp), %rdi
xorl %eax, %eax
movl %eax, %esi
subq -0x48(%rbp), %rsi
callq 0x6440
movq %rax, -0x38(%rbp)
jmp 0x3d06
jmp 0x3d08
movl -0x24(%rbp), %eax
addl $0x1, %eax
movl %eax, -0x24(%rbp)
jmp 0x35b2
movq -0x8(%rbp), %rax
movq 0x10(%rax), %rdi
movq -0x88(%rbp), %rsi
callq 0x7220
movq -0x78(%rbp), %rdi
callq 0xd160
movq -0x80(%rbp), %rdi
callq 0xd160
movq -0x88(%rbp), %rdi
callq 0xd160
addq $0xe0, %rsp
popq %rbp
retq
nopw %cs:(%rax,%rax)