// File: /workspace/github_c_makefile_star2_O3/lyda[P]tz/zic.c
// Function: inzsub
static int
inzsub(fields, nfields, iscont)
register char ** const	fields;
const int		nfields;
const int		iscont;
{
	register char *		cp;
	static struct zone	z;
	register int		i_gmtoff, i_rule, i_format;
	register int		i_untilyear, i_untilmonth;
	register int		i_untilday, i_untiltime;
	register int		hasuntil;

	if (iscont) {
		i_gmtoff = ZFC_GMTOFF;
		i_rule = ZFC_RULE;
		i_format = ZFC_FORMAT;
		i_untilyear = ZFC_TILYEAR;
		i_untilmonth = ZFC_TILMONTH;
		i_untilday = ZFC_TILDAY;
		i_untiltime = ZFC_TILTIME;
		z.z_name = NULL;
	} else {
		i_gmtoff = ZF_GMTOFF;
		i_rule = ZF_RULE;
		i_format = ZF_FORMAT;
		i_untilyear = ZF_TILYEAR;
		i_untilmonth = ZF_TILMONTH;
		i_untilday = ZF_TILDAY;
		i_untiltime = ZF_TILTIME;
		z.z_name = ecpyalloc(fields[ZF_NAME]);
	}
	z.z_filename = filename;
	z.z_linenum = linenum;
	z.z_gmtoff = gethms(fields[i_gmtoff], _("invalid UTC offset"), TRUE);
	if ((cp = strchr(fields[i_format], '%')) != 0) {
		if (*++cp != 's' || strchr(cp, '%') != 0) {
			error(_("invalid abbreviation format"));
			return FALSE;
		}
	}
	z.z_rule = ecpyalloc(fields[i_rule]);
	z.z_format = ecpyalloc(fields[i_format]);
	if (max_format_len < strlen(z.z_format))
		max_format_len = strlen(z.z_format);
	hasuntil = nfields > i_untilyear;
	if (hasuntil) {
		z.z_untilrule.r_filename = filename;
		z.z_untilrule.r_linenum = linenum;
		rulesub(&z.z_untilrule,
			fields[i_untilyear],
			"only",
			"",
			(nfields > i_untilmonth) ?
			fields[i_untilmonth] : "Jan",
			(nfields > i_untilday) ? fields[i_untilday] : "1",
			(nfields > i_untiltime) ? fields[i_untiltime] : "0");
		z.z_untiltime = rpytime(&z.z_untilrule,
			z.z_untilrule.r_loyear);
		if (iscont && nzones > 0 &&
			z.z_untiltime > min_time &&
			z.z_untiltime < max_time &&
			zones[nzones - 1].z_untiltime > min_time &&
			zones[nzones - 1].z_untiltime < max_time &&
			zones[nzones - 1].z_untiltime >= z.z_untiltime) {
				error(_(
"Zone continuation line end time is not after end time of previous line"
					));
				return FALSE;
		}
	}
	zones = (struct zone *) (void *) erealloc((char *) zones,
		(int) ((nzones + 1) * sizeof *zones));
	zones[nzones++] = z;
	/*
	** If there was an UNTIL field on this line,
	** there's more information about the zone on the next line.
	*/
	return hasuntil;
}

// Assembly:
pushq %rbp
pushq %r15
pushq %r14
pushq %r13
pushq %r12
pushq %rbx
subq $0x18, %rsp
movl %esi, %r15d
movq %rdi, %r14
movl %edx, 0x14(%rsp)
testl %edx, %edx
je 0x5f77
movl $0x6, 0x10(%rsp)
movl $0x5, 0x8(%rsp)
movl $0x4, 0xc(%rsp)
movl $0x3, %r13d
movl $0x2, %ebp
movl $0x1, %ebx
xorl %r12d, %r12d
xorl %eax, %eax
jmp 0x5fb8
movq 0x8(%r14), %rdi
callq 0x9d64
movq %rax, %r12
movq %rax, %rdi
callq 0x5adf
movl $0x8, 0x10(%rsp)
movl $0x7, 0x8(%rsp)
movl $0x6, 0xc(%rsp)
movl $0x5, %r13d
movl $0x4, %ebp
movl $0x3, %ebx
movl $0x2, %eax
movq %r12, 0x82b9(%rip)      # 0xe278
movq 0x8262(%rip), %rcx      # 0xe228
movq %rcx, 0x829b(%rip)      # 0xe268
movl 0x825d(%rip), %ecx      # 0xe230
movl %ecx, 0x8297(%rip)      # 0xe270
movq (%r14,%rax,8), %rdi
leaq 0x4635(%rip), %rsi      # 0xa619
movl $0x1, %edx
callq 0x5c31
movq %rax, 0x828b(%rip)      # 0xe280
movq (%r14,%rbp,8), %rdi
movl $0x25, %esi
callq 0x2100
testq %rax, %rax
je 0x602b
cmpb $0x73, 0x1(%rax)
jne 0x6219
incq %rax
movq %rax, %rdi
movl $0x25, %esi
callq 0x2100
testq %rax, %rax
jne 0x6219
movq (%r14,%rbx,8), %rdi
callq 0x9d64
movq %rax, %r12
movq %rax, %rdi
callq 0x5adf
movq %r12, 0x8242(%rip)      # 0xe288
movq (%r14,%rbp,8), %rdi
callq 0x9d64
movq %rax, %r12
movq %rax, %rdi
callq 0x5adf
movq %r12, 0x822f(%rip)      # 0xe290
movslq 0x82c0(%rip), %rbx      # 0xe328
movq %r12, %rdi
callq 0x20e0
cmpq %rbx, %rax
jbe 0x607b
movl %eax, 0x82ad(%rip)      # 0xe328
xorl %ebp, %ebp
cmpl %r15d, %r13d
setl %r12b
jge 0x60b4
movq 0x819b(%rip), %rax      # 0xe228
movq %rax, 0x821c(%rip)      # 0xe2b0
movl 0x8196(%rip), %eax      # 0xe230
movl %eax, 0x8218(%rip)      # 0xe2b8
movl %r13d, %eax
movl 0xc(%rsp), %ecx
cmpl %r15d, %ecx
jae 0x60bf
movl %ecx, %ecx
movq (%r14,%rcx,8), %r8
jmp 0x60c6
movl 0x814e(%rip), %ecx      # 0xe208
jmp 0x61af
leaq 0x4587(%rip), %r8       # 0xa64d
movl 0x8(%rsp), %ecx
cmpl %r15d, %ecx
jae 0x60d7
movl %ecx, %ecx
movq (%r14,%rcx,8), %r9
jmp 0x60de
leaq 0x4573(%rip), %r9       # 0xa651
movq (%r14,%rax,8), %rsi
movl 0x10(%rsp), %eax
cmpl %r15d, %eax
jae 0x60f3
movl %eax, %eax
movq (%r14,%rax,8), %rax
jmp 0x60fa
leaq 0x4d6f(%rip), %rax      # 0xae69
cmpl $0x0, 0x14(%rsp)
setne %r14b
movq %rax, (%rsp)
leaq 0x81a2(%rip), %rbx      # 0xe2b0
leaq 0x4533(%rip), %rdx      # 0xa648
leaq 0x422e(%rip), %rcx      # 0xa34a
movq %rbx, %rdi
callq 0x6232
movl 0x819e(%rip), %esi      # 0xe2c8
movq %rbx, %rdi
callq 0x6597
movq %rax, 0x81e7(%rip)      # 0xe320
movl 0x80c9(%rip), %ecx      # 0xe208
testl %ecx, %ecx
setg %dl
andb %r14b, %dl
cmpb $0x1, %dl
jne 0x61af
movabsq $0x7fffffffffffffff, %rdi # imm = 0x7FFFFFFFFFFFFFFF
xorl %edx, %edx
cmpb $0x0, 0x80e9(%rip)      # 0xe248
leaq 0x1(%rdi), %rsi
cmovneq %rsi, %rdx
cmpq %rdx, %rax
jle 0x61af
xorl %esi, %esi
cmpb $0x0, 0x80db(%rip)      # 0xe250
cmovneq %rdi, %rsi
cmpq %rsi, %rax
jge 0x61af
movl %ecx, %edi
movq 0x8089(%rip), %r8       # 0xe210
leaq (%rdi,%rdi,2), %rdi
shlq $0x6, %rdi
movq -0x8(%r8,%rdi), %rdi
cmpq %rdx, %rdi
setle %dl
cmpq %rsi, %rdi
setge %sil
orb %dl, %sil
cmpq %rax, %rdi
setl %al
orb %sil, %al
je 0x6229
movb %r12b, %bpl
movq 0x8057(%rip), %rdi      # 0xe210
leal (%rcx,%rcx,2), %esi
shll $0x6, %esi
addl $0xc0, %esi
callq 0x9cae
movq %rax, %rbx
movq %rax, %rdi
callq 0x5adf
movq %rbx, 0x8034(%rip)      # 0xe210
movslq 0x8025(%rip), %rax      # 0xe208
leal 0x1(%rax), %ecx
movl %ecx, 0x801c(%rip)      # 0xe208
leaq (%rax,%rax,2), %rdi
shlq $0x6, %rdi
addq %rbx, %rdi
leaq 0x806a(%rip), %rsi      # 0xe268
movl $0xc0, %edx
callq 0x21e0
movl %ebp, %eax
addq $0x18, %rsp
popq %rbx
popq %r12
popq %r13
popq %r14
popq %r15
popq %rbp
retq
leaq 0x440c(%rip), %rdi      # 0xa62c
callq 0x2300
xorl %ebp, %ebp
jmp 0x6208
leaq 0x4423(%rip), %rdi      # 0xa653
jmp 0x6220