// File: /workspace/github_c_makefile_star2_O2/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, %ebp
movq %rdi, %r14
movl %edx, 0x14(%rsp)
testl %edx, %edx
je 0x56ea
pushq $0x6
popq %rax
movl %eax, 0x10(%rsp)
pushq $0x5
popq %rax
movl %eax, 0x8(%rsp)
pushq $0x4
popq %rax
movl %eax, 0xc(%rsp)
pushq $0x3
popq %r13
pushq $0x2
popq %r12
pushq $0x1
popq %rbx
xorl %r15d, %r15d
xorl %eax, %eax
jmp 0x5721
movq 0x8(%r14), %rdi
callq 0x8d51
movq %rax, %r15
movq %rax, %rdi
callq 0x5211
pushq $0x8
popq %rax
movl %eax, 0x10(%rsp)
pushq $0x7
popq %rax
movl %eax, 0x8(%rsp)
pushq $0x6
popq %rax
movl %eax, 0xc(%rsp)
pushq $0x5
popq %r13
pushq $0x4
popq %r12
pushq $0x3
popq %rbx
pushq $0x2
popq %rax
movq %r15, 0x7b40(%rip)      # 0xd268
movq 0x7ae9(%rip), %rcx      # 0xd218
movq %rcx, 0x7b22(%rip)      # 0xd258
movl 0x7ae4(%rip), %ecx      # 0xd220
movl %ecx, 0x7b1e(%rip)      # 0xd260
movq (%r14,%rax,8), %rdi
leaq 0x3e7c(%rip), %rsi      # 0x95c9
pushq $0x1
popq %rdx
callq 0x53df
movq %rax, 0x7b14(%rip)      # 0xd270
movq (%r14,%r12,8), %rdi
pushq $0x25
popq %rsi
callq 0x2100
testq %rax, %rax
je 0x579a
cmpb $0x73, 0x1(%rax)
jne 0x5786
incq %rax
pushq $0x25
popq %rsi
movq %rax, %rdi
callq 0x2100
testq %rax, %rax
je 0x579a
leaq 0x3e4f(%rip), %rdi      # 0x95dc
callq 0x5251
xorl %r15d, %r15d
jmp 0x5973
movq (%r14,%rbx,8), %rdi
callq 0x8d51
movq %rax, %r15
movq %rax, %rdi
callq 0x5211
movq %r15, 0x7ac3(%rip)      # 0xd278
movq (%r14,%r12,8), %rdi
callq 0x8d51
movq %rax, %r15
movq %rax, %rdi
callq 0x5211
movq %r15, 0x7ab0(%rip)      # 0xd280
movslq 0x7b41(%rip), %rbx      # 0xd318
movq %r15, %rdi
callq 0x20e0
cmpq %rbx, %rax
jbe 0x57ea
movl %eax, 0x7b2e(%rip)      # 0xd318
xorl %r15d, %r15d
cmpl %ebp, %r13d
setl %r12b
jge 0x5823
movq 0x7a1b(%rip), %rax      # 0xd218
movq %rax, 0x7a9c(%rip)      # 0xd2a0
movl 0x7a16(%rip), %eax      # 0xd220
movl %eax, 0x7a98(%rip)      # 0xd2a8
movl %r13d, %eax
movl 0xc(%rsp), %ecx
cmpl %ebp, %ecx
jae 0x582e
movl %ecx, %ecx
movq (%r14,%rcx,8), %r8
jmp 0x5835
movl 0x79cf(%rip), %ecx      # 0xd1f8
jmp 0x591b
leaq 0x3dc8(%rip), %r8       # 0x95fd
movl 0x8(%rsp), %ecx
cmpl %ebp, %ecx
jae 0x5845
movl %ecx, %ecx
movq (%r14,%rcx,8), %r9
jmp 0x584c
leaq 0x3db5(%rip), %r9       # 0x9601
movq (%r14,%rax,8), %rsi
movl 0x10(%rsp), %eax
cmpl %ebp, %eax
jae 0x5860
movl %eax, %eax
movq (%r14,%rax,8), %rax
jmp 0x5867
leaq 0x45b2(%rip), %rax      # 0x9e19
cmpl $0x0, 0x14(%rsp)
setne %bpl
movq %rax, (%rsp)
leaq 0x7a25(%rip), %rbx      # 0xd2a0
leaq 0x3d76(%rip), %rdx      # 0x95f8
leaq 0x3a71(%rip), %rcx      # 0x92fa
movq %rbx, %rdi
callq 0x5991
movl 0x7a21(%rip), %esi      # 0xd2b8
movq %rbx, %rdi
callq 0x5cf0
movq %rax, 0x7a6a(%rip)      # 0xd310
movl 0x794c(%rip), %ecx      # 0xd1f8
testl %ecx, %ecx
setg %dl
andb %bpl, %dl
cmpb $0x1, %dl
jne 0x591b
movabsq $0x7fffffffffffffff, %rsi # imm = 0x7FFFFFFFFFFFFFFF
xorl %edx, %edx
cmpb $0x0, 0x796c(%rip)      # 0xd238
leaq 0x1(%rsi), %rdi
cmovneq %rdi, %rdx
cmpq %rdx, %rax
jle 0x591b
xorl %edi, %edi
cmpb $0x0, 0x795e(%rip)      # 0xd240
cmovneq %rsi, %rdi
cmpq %rdi, %rax
jge 0x591b
movl %ecx, %esi
movq 0x790c(%rip), %r8       # 0xd200
imulq $0xc0, %rsi, %rsi
movq -0x8(%r8,%rsi), %rsi
cmpq %rdx, %rsi
setle %dl
cmpq %rdi, %rsi
setge %dil
orb %dl, %dil
cmpq %rax, %rsi
setl %al
orb %dil, %al
je 0x5985
movb %r12b, %r15b
movq 0x78db(%rip), %rdi      # 0xd200
imull $0xc0, %ecx, %esi
addl $0xc0, %esi
callq 0x8cbc
movq %rax, %rbx
movq %rax, %rdi
callq 0x5211
movq %rbx, 0x78b8(%rip)      # 0xd200
movslq 0x78a9(%rip), %rax      # 0xd1f8
leal 0x1(%rax), %ecx
movl %ecx, 0x78a0(%rip)      # 0xd1f8
imulq $0xc0, %rax, %rdi
addq %rbx, %rdi
leaq 0x78ef(%rip), %rsi      # 0xd258
movl $0xc0, %edx
callq 0x21d0
movl %r15d, %eax
addq $0x18, %rsp
popq %rbx
popq %r12
popq %r13
popq %r14
popq %r15
popq %rbp
retq
leaq 0x3c77(%rip), %rdi      # 0x9603
jmp 0x578d