// File: /workspace/github_c_makefile_star2_O2/Oric4ever[P]lcc65/6502/build/../src/decl.c
// Function: type
static Type type(int lev, int *sclass) {
	int cls, cons, *p, sign, size, tt, type, vol;
	Type ty = 0;

	if (sclass == 0)
		cls = AUTO;
	else
		*sclass = 0;
	for (vol = cons = sign = size = type = 0;;) {
		p = &type;
		tt = t;
		switch (t) {
		case AUTO: case REGISTER: case STATIC:
		case EXTERN: case TYPEDEF:
			p = sclass ? sclass : &cls;
			break;
		case CONST:
			p = &cons;
			break;
		case VOLATILE:
			p = &vol;
			break;
		case SIGNED: case UNSIGNED:
			p = &sign;
			break;
		case LONG: case SHORT:
			p = &size;
			break;
		case VOID: case CHAR: case INT: case FLOAT: case DOUBLE:
			ty = tsym->type;
			break;
		case ENUM:
			ty = enumdecl();
			break;
		case STRUCT: case UNION:
			ty = structdcl(t);
			break;
		case ID:
			if (tsym && tsym->sclass == TYPEDEF
			&& type == 0 && size == 0 && sign == 0) {
				use(tsym, src);
				ty = tsym->type;
				t = tt = ty->op;
				break;
			}
			/* fall through */
		default:
			p = 0;
		}
		if (p == 0)
			break;
		if (*p)
			error("invalid use of `%k'\n", tt);
		*p = tt;
		if (t == tt)
			t = gettok();
	}
	if (sclass && *sclass
	&& (lev == 0
	||  lev == PARAM  && *sclass != REGISTER
	||  lev == GLOBAL && *sclass == REGISTER))
		error("invalid use of `%k'\n", *sclass);
	if (type == 0) {
		type = INT;
		ty = inttype;
	}
	if (size == SHORT && type != INT
	||  size == LONG  && type != INT && type != DOUBLE
	||  sign && type != INT && type != CHAR)
		error("invalid type specification\n");
	if (type == CHAR && sign)
		ty = sign == UNSIGNED ? unsignedchar : signedchar;
	else if (size == SHORT)
		ty = sign == UNSIGNED ? unsignedshort : shorttype;
	else if (size == LONG && type == DOUBLE)
		ty = longdouble;
	else if (size == LONG)
		ty = sign == UNSIGNED ? unsignedlong : longtype;
	else if (sign == UNSIGNED && type == INT)
		ty = unsignedtype;
	if (cons == CONST)
		ty = qual(CONST, ty);
	if (vol == VOLATILE)
		ty = qual(VOLATILE, ty);
	return ty;
}

// Assembly:
pushq %rbp
pushq %r15
pushq %r14
pushq %r13
pushq %r12
pushq %rbx
subq $0x68, %rsp
testq %rsi, %rsi
movl %edi, 0x28(%rsp)
movq %rsi, 0x58(%rsp)
je 0x64a4
andl $0x0, (%rsi)
movq %rsi, 0x50(%rsp)
jmp 0x64b4
leaq 0x64(%rsp), %rax
movq %rax, 0x50(%rsp)
movl $0x43, (%rax)
leaq 0x4(%rsp), %rax
andl $0x0, (%rax)
leaq 0x1c(%rsp), %rax
andl $0x0, (%rax)
leaq 0x14(%rsp), %rax
andl $0x0, (%rax)
leaq 0x24(%rsp), %rax
andl $0x0, (%rax)
leaq 0x20(%rsp), %rax
andl $0x0, (%rax)
leaq 0x254fd(%rip), %rbp     # 0x2b9e0
movl (%rbp), %esi
leaq 0x2bacb(%rip), %rax     # 0x31fb8
movq %rax, 0x48(%rsp)
leaq 0x2bab7(%rip), %rax     # 0x31fb0
movq %rax, 0x40(%rsp)
xorl %r13d, %r13d
leal -0x1(%rsi), %eax
cmpl $0x1f, %eax
ja 0x6531
leaq 0x15de8(%rip), %rcx     # 0x1c2f8
movslq (%rcx,%rax,4), %rax
addq %rcx, %rax
jmpq *%rax
leaq 0x25430(%rip), %rax     # 0x2b950
movq (%rax), %rax
movq 0x20(%rax), %r13
leaq 0x4(%rsp), %rbx
jmp 0x7046
leal -0x43(%rsi), %eax
cmpl $0x10, %eax
ja 0x707d
movl $0x14881, %ecx          # imm = 0x14881
btl %eax, %ecx
jae 0x6596
movq 0x50(%rsp), %rbx
jmp 0x7046
movq %rsi, 0x8(%rsp)
callq 0xd3c9
movl %eax, (%rbp)
cmpl $0x20, %eax
jne 0x665e
leaq 0x253da(%rip), %rax     # 0x2b948
movq (%rax), %r14
leaq 0x253c0(%rip), %rax     # 0x2b938
movq (%rax), %r15
movq 0x8(%rax), %rbx
callq 0xd3c9
movl %eax, (%rbp)
jmp 0x6670
leaq 0x1c(%rsp), %rbx
jmp 0x7046
cmpl $0xd, %eax
jne 0x707d
leaq 0x14(%rsp), %rbx
jmp 0x7046
leaq 0x20(%rsp), %rbx
jmp 0x7046
callq 0xd3c9
movl %eax, (%rbp)
cmpl $0x20, %eax
jne 0x6c16
leaq 0x2537d(%rip), %rax     # 0x2b948
movq (%rax), %r14
leaq 0x25363(%rip), %rax     # 0x2b938
movq (%rax), %r15
movq 0x8(%rax), %rbx
callq 0xd3c9
movl %eax, (%rbp)
jmp 0x6c28
leaq 0x25360(%rip), %rax     # 0x2b950
movq (%rax), %rdi
testq %rdi, %rdi
je 0x707d
cmpb $0x53, 0x1a(%rdi)
jne 0x707d
cmpl $0x0, 0x4(%rsp)
jne 0x707d
cmpl $0x0, 0x1c(%rsp)
jne 0x707d
cmpl $0x0, 0x14(%rsp)
jne 0x707d
leaq 0x2530a(%rip), %rax     # 0x2b938
movq (%rax), %rsi
movq 0x8(%rax), %rdx
callq 0x163c8
leaq 0x2530f(%rip), %rax     # 0x2b950
movq (%rax), %rax
movq 0x20(%rax), %r13
movl (%r13), %esi
movl %esi, (%rbp)
jmp 0x6527
leaq 0x24(%rsp), %rbx
jmp 0x7046
leaq 0x17530(%rip), %rdi     # 0x1db95
callq 0x157b6
movq %rax, %r14
movl (%rbp), %eax
cmpl $0x7b, %eax
movq 0x8(%rsp), %rdi
jne 0x693f
movq %r14, %rsi
callq 0x181e8
movq %rax, %r13
cmpb $0x0, (%r14)
je 0x669b
movq 0x18(%r13), %rax
movq %r15, 0x28(%rax)
movq %rbx, 0x30(%rax)
callq 0xd3c9
movl %eax, (%rbp)
movl %eax, %ecx
leaq 0x21ed4(%rip), %rdx     # 0x28580
movb (%rdx,%rcx), %cl
cmpb $0x3, %cl
jne 0x6e8b
xorl %ebx, %ebx
cmpb $0x3, %cl
je 0x66e5
cmpl $0x20, %eax
jne 0x69c7
leaq 0x25281(%rip), %rax     # 0x2b950
movq (%rax), %rax
testq %rax, %rax
je 0x69c7
cmpb $0x53, 0x1a(%rax)
jne 0x69c7
xorl %edi, %edi
xorl %esi, %esi
callq 0x647e
movq %rax, %r15
andq $0x0, 0x30(%rsp)
movq %r15, %rdi
leaq 0x30(%rsp), %rsi
pushq $0x1
popq %rdx
callq 0x71eb
movq %rax, %r12
testq %rax, %rax
cmoveq %r15, %r12
leaq 0x25340(%rip), %rax     # 0x2ba58
cmpl $0x0, (%rax)
jle 0x6737
movq %r12, %rdi
callq 0x1805b
testl %eax, %eax
jne 0x6737
leaq 0x15caf(%rip), %rdi     # 0x1c3df
xorl %eax, %eax
callq 0x9239
movq 0x30(%rsp), %rdi
movq %r13, %rsi
movq %r12, %rdx
callq 0x180d7
movq %rax, %r14
cmpl $0x3a, (%rbp)
jne 0x6831
movl (%r12), %eax
cmpl $0xf, %eax
jb 0x6772
movq 0x10(%r12), %r12
movl (%r12), %eax
cmpl $0xf, %eax
jb 0x6772
movq 0x10(%r12), %rax
movl (%rax), %eax
cmpl $0xd, %eax
jne 0x677c
movq 0x10(%r12), %r12
leaq 0x2b815(%rip), %rax     # 0x31f98
cmpq (%rax), %r12
je 0x67b4
leaq 0x2b849(%rip), %rax     # 0x31fd8
cmpq (%rax), %r12
je 0x67b4
movq 0x8(%r14), %rsi
leaq 0x16242(%rip), %rdi     # 0x1c9e1
xorl %eax, %eax
callq 0x8dd4
leaq 0x2b7eb(%rip), %rax     # 0x31f98
movq (%rax), %rax
movq %rax, 0x8(%r14)
callq 0xd3c9
movl %eax, (%rbp)
xorl %edi, %edi
xorl %esi, %esi
callq 0xa80a
movw %ax, 0x16(%r14)
movswl %ax, %esi
testl %esi, %esi
js 0x6855
leaq 0x2b7bc(%rip), %rcx     # 0x31f98
movq (%rcx), %rcx
movl 0x8(%rcx), %ecx
shll $0x3, %ecx
cmpl %ecx, %esi
jg 0x6855
movl %eax, %ecx
shll $0x10, %ecx
sete %cl
movq 0x30(%rsp), %rdx
testq %rdx, %rdx
setne %sil
andb %cl, %sil
cmpb $0x1, %sil
jne 0x6873
movq 0x8(%r14), %rsi
leaq 0x16216(%rip), %rdi     # 0x1ca27
xorl %eax, %eax
callq 0x9239
pushq $0x1
popq %rdi
callq 0x1616e
movl %eax, %edi
callq 0x159ba
movq %rax, (%r14)
movzwl 0x16(%r14), %eax
jmp 0x6873
movq 0x30(%rsp), %rdx
movq 0x8(%r14), %rsi
testq %rdx, %rdx
je 0x687c
cmpl $0x0, 0x8(%rsi)
jne 0x68a1
leaq 0x16263(%rip), %rdi     # 0x1caaf
xorl %eax, %eax
callq 0x8dd4
jmp 0x68a1
leaq 0x161a8(%rip), %rdi     # 0x1ca04
xorl %eax, %eax
callq 0x8dd4
leaq 0x2b72e(%rip), %rax     # 0x31f98
movq (%rax), %rax
movl 0x8(%rax), %eax
shll $0x3, %eax
incl %eax
movw %ax, 0x16(%r14)
jmp 0x68a1
movl (%rsi), %eax
cmpl $0xf, %eax
jb 0x6889
movq 0x10(%rsi), %rax
movl (%rax), %eax
cmpl $0x9, %eax
je 0x68e5
cmpl $0xa, %eax
je 0x68e5
leaq 0x16201(%rip), %rdi     # 0x1ca9b
xorl %eax, %eax
callq 0x8dd4
incl %ebx
leaq 0x251ae(%rip), %rax     # 0x2ba58
cmpl $0x2, (%rax)
jl 0x68cd
cmpl $0x80, %ebx
jne 0x68cd
leaq 0x16213(%rip), %rdi     # 0x1cad1
movq %r13, %rsi
xorl %eax, %eax
callq 0x9239
movl $0x80, %ebx
cmpl $0x2c, (%rbp)
jne 0x691e
callq 0xd3c9
movl %eax, (%rbp)
testl %eax, %eax
jne 0x66f1
jmp 0x691e
leaq 0x2516c(%rip), %rax     # 0x2ba58
cmpl $0x2, (%rax)
jl 0x6906
leaq 0x1615d(%rip), %rdi     # 0x1ca55
movq %r13, %rsi
xorl %eax, %eax
callq 0x9239
movq 0x8(%r14), %rsi
cmpl $0x0, 0x8(%rsi)
jne 0x691a
leaq 0x16169(%rip), %rdi     # 0x1ca7c
xorl %eax, %eax
callq 0x8dd4
andq $0x0, (%r14)
pushq $0x3b
popq %rdi
leaq 0x21821(%rip), %rsi     # 0x28149
callq 0x9201
movl (%rbp), %eax
leaq 0x21c49(%rip), %rcx     # 0x28580
movb (%rcx,%rax), %cl
jmp 0x66ba
cmpb $0x0, (%r14)
je 0x6ee8
leaq 0x22dc0(%rip), %rax     # 0x29710
movq (%rax), %rsi
movq %r14, %rdi
callq 0x15ec0
movq 0x8(%rsp), %rsi
testq %rax, %rax
je 0x6ee2
movq %rax, %r12
movq 0x20(%rax), %rax
cmpl %esi, (%rax)
jne 0x6ee2
cmpl $0x3b, (%rbp)
jne 0x699e
movzwl 0x18(%r12), %eax
leaq 0x283a5(%rip), %rcx     # 0x2ed30
cmpl %eax, (%rcx)
jle 0x699e
movl %esi, %edi
movq %r14, %rsi
callq 0x181e8
movq 0x8(%rsp), %rsi
leaq 0x2508f(%rip), %rax     # 0x2ba34
cmpl $0x0, (%rax)
je 0x69bd
movq %r12, %rdi
movq %r15, %rsi
movq %rbx, %rdx
callq 0x163c8
movq 0x8(%rsp), %rsi
movq 0x20(%r12), %r13
jmp 0x6527
movw $0x1, 0x4(%r13)
movq 0x18(%r13), %r8
addq $0x58, %r8
xorl %ecx, %ecx
xorl %edi, %edi
xorl %esi, %esi
movq %r8, %r9
movq (%r8), %r8
testq %r8, %r8
je 0x6b81
movq 0x8(%r8), %r10
movl 0x4(%r10), %eax
cmpw $0x1, %ax
adcl $0x0, %eax
movswl %ax, %r14d
movl (%r13), %r11d
cmpl $0xa, %r11d
jne 0x6a2c
movzwl 0x16(%r8), %ebx
xorl %ecx, %ecx
testw %bx, %bx
je 0x6ab1
leaq 0x2b5b9(%rip), %rax     # 0x31fd8
movq (%rax), %rax
movswl 0x4(%rax), %r14d
jmp 0x6ab3
movzwl 0x16(%r8), %ebx
testl %ecx, %ecx
je 0x6a7c
cmpw $0x2, %bx
jl 0x6a57
movzwl %bx, %eax
addl %ecx, %eax
addl $-0x2, %eax
leaq 0x2b58e(%rip), %rdx     # 0x31fd8
movq (%rdx), %rdx
movl 0x8(%rdx), %edx
shll $0x3, %edx
cmpl %edx, %eax
jle 0x6ab3
addl $0x6, %ecx
movl %ecx, %eax
cltd
pushq $0x8
popq %rcx
idivl %ecx
movl %eax, %ecx
xorl $0x7fffffff, %ecx       # imm = 0x7FFFFFFF
cmpl %ecx, %edi
pushq $0x1
popq %rcx
cmovgl %ecx, %esi
movl $0x0, %ecx
cmovgl %ecx, %eax
addl %eax, %edi
testw %bx, %bx
je 0x6a90
leaq 0x2b550(%rip), %rax     # 0x31fd8
movq (%rax), %rax
movswl 0x4(%rax), %r14d
movl $0x80000000, %eax       # imm = 0x80000000
subl %r14d, %eax
cmpl %eax, %edi
pushq $0x1
popq %rax
cmovgl %eax, %esi
leal (%rdi,%r14), %eax
decl %eax
movl %r14d, %edi
negl %edi
andl %eax, %edi
xorl %ecx, %ecx
jmp 0x6ab3
xorl %ebx, %ebx
movswl 0x4(%r13), %eax
cmpl %eax, %r14d
jle 0x6ac2
movw %r14w, 0x4(%r13)
movl %edi, 0x10(%r8)
testw %bx, %bx
je 0x6b05
cmpl $0x1, %ecx
movl %ecx, %eax
adcl $0x0, %eax
leal -0x1(%rax), %ecx
leal (%rax,%rbx), %edx
addl $-0x2, %edx
movswl %dx, %edx
movswl %cx, %ebx
movw %bx, 0x14(%r8)
movw %dx, 0x16(%r8)
movl %edx, %ecx
subl %ebx, %ecx
addl %eax, %ecx
cmpl $0xa, %r11d
jne 0x6b37
leal 0x6(%rcx), %eax
cltd
pushq $0x8
popq %r11
idivl %r11d
jmp 0x6b2d
movl 0x8(%r10), %eax
cmpl $0x9, %r11d
jne 0x6b2d
movl %eax, %edx
xorl $0x7fffffff, %edx       # imm = 0x7FFFFFFF
cmpl %edx, %edi
pushq $0x1
popq %rdx
cmovgl %edx, %esi
movl $0x0, %edx
cmovgl %edx, %eax
addl %edi, %eax
movl %eax, %edi
jmp 0x6b37
cmpl 0x8(%r13), %eax
jle 0x6b37
movl %eax, 0x8(%r13)
movl (%r10), %eax
movl %eax, %edx
orl $0x10, %edx
cmpl $0x1f, %edx
jne 0x6b52
movq 0x18(%r13), %rax
orb $0x1, 0x48(%rax)
movq 0x8(%r8), %rax
movl (%rax), %eax
cmpl $0x1f, %eax
je 0x6b5c
cmpl $0x10, %eax
jne 0x6b64
movq 0x18(%r13), %rax
orb $0x2, 0x48(%rax)
movq (%r8), %rax
testq %rax, %rax
je 0x6b71
cmpb $0x3a, (%rax)
jl 0x6b78
movq %r8, (%r9)
leaq 0x18(%r8), %r9
addq $0x18, %r8
jmp 0x69df
andq $0x0, (%r9)
testl %ecx, %ecx
je 0x6bb0
addl $0x6, %ecx
movl %ecx, %eax
cltd
pushq $0x8
popq %rcx
idivl %ecx
movl %eax, %ecx
xorl $0x7fffffff, %ecx       # imm = 0x7FFFFFFF
cmpl %ecx, %edi
pushq $0x1
popq %rcx
cmovgl %ecx, %esi
movl $0x0, %ecx
cmovgl %ecx, %eax
addl %edi, %eax
movl %eax, %edi
cmpl $0x9, (%r13)
je 0x6bc2
movl 0x8(%r13), %eax
cmpl %eax, %edi
cmovgl %edi, %eax
movl %eax, %edi
movswl 0x4(%r13), %eax
movl $0x80000000, %ecx       # imm = 0x80000000
subl %eax, %ecx
leal (%rdi,%rax), %edx
decl %edx
negl %eax
andl %edx, %eax
movl %eax, 0x8(%r13)
cmpl %ecx, %edi
jg 0x6be3
testl %esi, %esi
je 0x6c09
leaq 0x15f05(%rip), %rdi     # 0x1caef
movq %r13, %rsi
movl $0x7fffffff, %edx       # imm = 0x7FFFFFFF
xorl %eax, %eax
callq 0x8dd4
movswl 0x4(%r13), %eax
negl %eax
andl $0x7fffffff, %eax       # imm = 0x7FFFFFFF
movl %eax, 0x8(%r13)
movq %r13, %rdi
callq 0x174d5
jmp 0x6ec9
leaq 0x16f78(%rip), %rdi     # 0x1db95
callq 0x157b6
movq %rax, %r14
movl (%rbp), %eax
cmpl $0x7b, %eax
jne 0x6deb
pushq $0xd
popq %rdi
movq %r14, %rsi
callq 0x181e8
movq %rax, %r13
callq 0xd3c9
movl %eax, %ecx
movl %eax, (%rbp)
pushq $0x20
popq %rax
cmpl $0x20, %ecx
je 0x6c62
leaq 0x15c92(%rip), %rdi     # 0x1c8ea
xorl %eax, %eax
callq 0x8dd4
movl (%rbp), %eax
pushq $0x7f
popq %rbx
pushq $-0x1
popq %r14
xorl %r12d, %r12d
cmpl $0x20, %eax
jne 0x6e54
movl %ebx, 0x2c(%rsp)
movq %r12, %rbx
leaq 0x24cc5(%rip), %rax     # 0x2b948
movq (%rax), %r12
leaq 0x24cc3(%rip), %rax     # 0x2b950
movq (%rax), %rdx
testq %rdx, %rdx
je 0x6cb9
movzwl 0x18(%rdx), %eax
leaq 0x28090(%rip), %rcx     # 0x2ed30
cmpl %eax, (%rcx)
jne 0x6cb9
addq $0x28, %rdx
leaq 0x15817(%rip), %rdi     # 0x1c4c6
movq %r12, %rsi
xorl %eax, %eax
callq 0x8dd4
leaq 0x24c78(%rip), %rax     # 0x2b938
movups (%rax), %xmm0
movaps %xmm0, 0x30(%rsp)
callq 0xd3c9
movl %eax, (%rbp)
cmpl $0x3d, %eax
jne 0x6ceb
callq 0xd3c9
movl %eax, (%rbp)
xorl %edi, %edi
xorl %esi, %esi
callq 0xa80a
movl %eax, %r14d
jmp 0x6d09
cmpl $0x7fffffff, %r14d      # imm = 0x7FFFFFFF
jne 0x6d06
movq 0x10(%r15), %rsi
leaq 0x15c0f(%rip), %rdi     # 0x1c90e
xorl %eax, %eax
callq 0x8dd4
incl %r14d
movl 0x8(%rsp), %eax
movl 0x18(%rsp), %ecx
cmpl %ecx, %r14d
cmovll %r14d, %ecx
cmpl %eax, %r14d
cmovgl %r14d, %eax
testq %rbx, %rbx
cmovel %r14d, %ecx
movl %ecx, 0x18(%rsp)
cmovel %r14d, %eax
movl %eax, 0x8(%rsp)
xorl %edx, %edx
leaq 0x27ff5(%rip), %rax     # 0x2ed30
cmpl $0x5, (%rax)
setl %dl
movq %r12, %rdi
leaq 0x2259d(%rip), %rsi     # 0x292e8
callq 0x15f13
movq %rax, %r15
movaps 0x30(%rsp), %xmm0
movups %xmm0, 0x28(%rax)
movq %r13, 0x20(%rax)
movb $0xd, 0x1a(%rax)
movl %r14d, 0x48(%rax)
movq %rax, %rdi
movq %rbx, %rsi
callq 0x156a0
movq %rax, %r12
leaq 0x24cdb(%rip), %rax     # 0x2ba58
cmpl $0x2, (%rax)
setge %al
movl 0x2c(%rsp), %ebx
subl $0x1, %ebx
setb %cl
andb %al, %cl
cmpb $0x1, %cl
jne 0x6da5
leaq 0x15ba4(%rip), %rdi     # 0x1c93f
movq %r13, %rsi
xorl %eax, %eax
callq 0x9239
cmpl $0x2c, (%rbp)
jne 0x6e54
callq 0xd3c9
movl %eax, (%rbp)
leaq 0x24c9a(%rip), %rcx     # 0x2ba58
cmpl $0x2, (%rcx)
setge %cl
cmpl $0x7d, %eax
sete %dl
andb %cl, %dl
cmpb $0x1, %dl
jne 0x6c6c
leaq 0x15b90(%rip), %rdi     # 0x1c96c
xorl %eax, %eax
callq 0x9239
movl (%rbp), %eax
jmp 0x6c6c
leaq 0x2291e(%rip), %rax     # 0x29710
movq (%rax), %rsi
movq %r14, %rdi
callq 0x15ec0
testq %rax, %rax
je 0x6f3d
movq %rax, %r12
movq 0x20(%rax), %r13
cmpl $0xd, (%r13)
jne 0x6f3d
cmpb $0x0, (%r14)
je 0x703c
movq %rbx, %rdx
leaq 0x24c08(%rip), %rax     # 0x2ba34
cmpl $0x0, (%rax)
leaq 0x4(%rsp), %rbx
pushq $0xd
popq %rax
movl %eax, %esi
je 0x7046
movq %r12, %rdi
movq %r15, %rsi
callq 0x163c8
movq 0x20(%r12), %r13
jmp 0x703c
pushq $0x7d
popq %rdi
leaq 0x212e6(%rip), %rsi     # 0x28144
callq 0x9201
movl 0x18(%rsp), %edx
testl %edx, %edx
movl 0x8(%rsp), %ecx
js 0x6f7b
cmpl $0xff, %ecx
jg 0x6f7b
leaq 0x2b13a(%rip), %rax     # 0x31fc0
jmp 0x6fd1
cmpl $0x20, %eax
sete %sil
leaq 0x24ab7(%rip), %rdx     # 0x2b950
movq (%rdx), %rdx
testq %rdx, %rdx
setne %dil
andb %sil, %dil
cmpb $0x1, %dil
jne 0x6eb6
cmpb $0x53, 0x1a(%rdx)
je 0x66b8
leaq 0x15af5(%rip), %rdi     # 0x1c9b2
movq 0x8(%rsp), %rsi
xorl %eax, %eax
callq 0x8dd4
pushq $0x7d
popq %rdi
leaq 0x21273(%rip), %rsi     # 0x28146
callq 0x9201
movq 0x18(%r13), %rax
orb $0x1, 0x1b(%rax)
jmp 0x6f2e
cmpb $0x0, (%r14)
jne 0x6f00
leaq 0x15ae2(%rip), %rdi     # 0x1c9d1
movq 0x8(%rsp), %rsi
xorl %eax, %eax
callq 0x8dd4
movq 0x8(%rsp), %rsi
movl %esi, %edi
movq %r14, %rsi
callq 0x181e8
movq %rax, %r13
cmpb $0x0, (%r14)
je 0x6f2e
leaq 0x24b1a(%rip), %rax     # 0x2ba34
cmpl $0x0, (%rax)
je 0x6f2e
movq 0x18(%r13), %rdi
movq %r15, %rsi
movq %rbx, %rdx
callq 0x163c8
leaq 0x4(%rsp), %rbx
movq 0x8(%rsp), %rsi
jmp 0x7046
leaq 0x15a54(%rip), %rdi     # 0x1c998
movq %r14, %rsi
xorl %eax, %eax
callq 0x8dd4
pushq $0xd
popq %r15
movl %r15d, %edi
movq %r14, %rsi
callq 0x181e8
movq %rax, %r13
leaq 0x2b031(%rip), %rax     # 0x31f98
movq (%rax), %rax
movq %rax, 0x10(%r13)
leaq 0x4(%rsp), %rbx
movl %r15d, %esi
jmp 0x7046
cmpl $-0x80, %edx
jl 0x6f8e
cmpl $0x7f, %ecx
jg 0x6f8e
leaq 0x2b02c(%rip), %rax     # 0x31fb8
jmp 0x6fd1
testl %edx, %edx
js 0x6faa
cmpl $0xffff, %ecx           # imm = 0xFFFF
jg 0x6faa
leaq 0x2b02f(%rip), %rax     # 0x31fd0
movq (%rax), %rax
cmpl $0x1, 0x8(%rax)
jg 0x6fd4
cmpl $0xffff8000, %edx       # imm = 0xFFFF8000
jl 0x6fca
cmpl $0x7fff, %ecx           # imm = 0x7FFF
jg 0x6fca
leaq 0x2afef(%rip), %rax     # 0x31fb0
movq (%rax), %rax
cmpl $0x1, 0x8(%rax)
jg 0x6fd4
leaq 0x2afc7(%rip), %rax     # 0x31f98
movq (%rax), %rax
movq %rax, 0x10(%r13)
movl 0x8(%rax), %ecx
movl %ecx, 0x8(%r13)
movzwl 0x4(%rax), %eax
movw %ax, 0x4(%r13)
movq %r12, %rdi
callq 0x1571b
leal 0x8(,%rax,8), %edi
leaq 0x22772(%rip), %rdx     # 0x29770
movq (%rdx), %rax
movl %edi, (%rax)
movq 0x8(%rax), %rsi
movslq %edi, %rcx
addq %rsi, %rcx
cmpq 0x10(%rax), %rcx
jae 0x7019
movq %rcx, 0x8(%rax)
jmp 0x7024
movq %rdx, %rsi
callq 0x16438
movq %rax, %rsi
movq %r12, %rdi
callq 0x15731
movq 0x18(%r13), %rcx
movq %rax, 0x48(%rcx)
movq 0x18(%r13), %rax
orb $0x1, 0x1b(%rax)
leaq 0x4(%rsp), %rbx
pushq $0xd
popq %rax
movl %eax, %esi
cmpl $0x0, (%rbx)
je 0x705f
leaq 0x15867(%rip), %rdi     # 0x1c8b9
movq %rsi, %r14
xorl %eax, %eax
callq 0x8dd4
movq %r14, %rsi
movl %esi, (%rbx)
movl (%rbp), %eax
cmpl %esi, %eax
movl %eax, %esi
jne 0x6501
callq 0xd3c9
movl %eax, %esi
movl %eax, (%rbp)
jmp 0x6501
movq 0x58(%rsp), %rcx
testq %rcx, %rcx
movl 0x28(%rsp), %eax
je 0x70b9
movl (%rcx), %esi
testl %esi, %esi
je 0x70b9
testl %eax, %eax
je 0x70ab
cmpl $0x3, %eax
je 0x70a6
cmpl $0x4, %eax
jne 0x70b9
cmpl $0x4e, %esi
jne 0x70ab
jmp 0x70b9
cmpl $0x4e, %esi
jne 0x70b9
leaq 0x15807(%rip), %rdi     # 0x1c8b9
xorl %eax, %eax
callq 0x8dd4
movl 0x4(%rsp), %ebx
testl %ebx, %ebx
jne 0x70d6
movl $0x5, 0x4(%rsp)
leaq 0x2aec8(%rip), %rax     # 0x31f98
movq (%rax), %r13
pushq $0x5
popq %rbx
movl 0x1c(%rsp), %ebp
cmpl $0x4, %ebp
sete %al
cmpl $0x5, %ebx
setne %cl
testb %al, %cl
je 0x7126
leaq 0x157dd(%rip), %rdi     # 0x1c8ce
xorl %eax, %eax
callq 0x8dd4
movl 0x14(%rsp), %eax
cmpl $0x3, %ebx
sete %cl
testl %eax, %eax
setne %dl
andb %cl, %dl
cmpb $0x1, %dl
jne 0x714b
cmpl $0x6, %eax
jne 0x711f
leaq 0x2aea6(%rip), %rax     # 0x31fc0
movq %rax, 0x48(%rsp)
movq 0x48(%rsp), %rax
jmp 0x717d
cmpl $0xe, %ebp
jne 0x7135
cmpl $0x5, %ebx
je 0x7135
cmpl $0x2, %ebx
jne 0x70ea
movl 0x14(%rsp), %eax
testl %eax, %eax
je 0x7149
cmpl $0x3, %ebx
je 0x70fc
cmpl $0x5, %ebx
je 0x70fc
jmp 0x70ea
xorl %eax, %eax
cmpl $0x4, %ebp
jne 0x7168
cmpl $0x6, %eax
jne 0x7161
leaq 0x2ae74(%rip), %rax     # 0x31fd0
movq %rax, 0x40(%rsp)
movq 0x40(%rsp), %rax
jmp 0x717d
movl %ebp, %ecx
xorl $0xe, %ecx
movl %ebx, %edx
xorl $0x2, %edx
orl %ecx, %edx
jne 0x71bc
leaq 0x2ae23(%rip), %rax     # 0x31fa0
movq (%rax), %r13
cmpl $0xf, 0x24(%rsp)
jne 0x7195
pushq $0xf
popq %rdi
movq %r13, %rsi
callq 0x178ba
movq %rax, %r13
cmpl $0x10, 0x20(%rsp)
jne 0x71aa
pushq $0x10
popq %rdi
movq %r13, %rsi
callq 0x178ba
movq %rax, %r13
movq %r13, %rax
addq $0x68, %rsp
popq %rbx
popq %r12
popq %r13
popq %r14
popq %r15
popq %rbp
retq
cmpl $0xe, %ebp
jne 0x71cf
cmpl $0x6, %eax
jne 0x71e2
leaq 0x2adfb(%rip), %rax     # 0x31fc8
jmp 0x717d
xorl $0x6, %eax
xorl $0x5, %ebx
orl %eax, %ebx
jne 0x7180
leaq 0x2adf8(%rip), %rax     # 0x31fd8
jmp 0x717d
leaq 0x2adbf(%rip), %rax     # 0x31fa8
jmp 0x717d