// File: /workspace/github_c_makefile_star2_O1/Oric4ever[P]lcc65/6502/build/../src/stmt.c
// Function: statement
void statement(loop, swp, lev) int loop,lev; struct swtch *swp; {
	int lab, ref = refinc;

	if (Aflag >= 2 && lev == 15)
		warning("more than 15 levels of nested statements\n");
	switch (t) {
	case IF:
		ifstmt(genlabel(2), loop, swp, lev + 1);
		break;
	case WHILE:
		whilestmt(genlabel(3), swp, lev + 1);
		break;
	case DO:
		dostmt(genlabel(3), swp, lev + 1);
		expect(';');
		break;
	case FOR:
		forstmt(genlabel(4), swp, lev + 1);
		break;
	case SWITCH:
		swstmt(loop, genlabel(2), lev + 1);
		break;
	case CASE:
		if (swp == 0)
			error("illegal case label\n");
		definelab(lab = genlabel(1));
		while (t == CASE) {
			Tree p;
			t = gettok();
			p = constexpr(':');
			if (generic(p->op) == CNST && isint(p->type)) {
				if (swp) {
					needconst++;
					p = cast(p, swp->sym->type);
					needconst--;
					caselabel(swp, p->u.v.i, lab);
				}
			} else
				error("case label must be a constant integer expression\n");
			ntree = 0;
		}
		statement(loop, swp, lev);
		break;
	case DEFAULT:
		if (swp)
			if (swp->deflab)
				error("extra default label\n");
			else {
				swp->deflab = findlabel(swp->lab);
				definelab(swp->deflab->u.l.label);
			}
		else
			error("illegal default label\n");
		t = gettok();
		expect(':');
		statement(loop, swp, lev);
		break;
	case RETURN:
		t = gettok();
		definept(0);
		if (t != ';')
			if (freturn(cfunc->type) == voidtype) {
				error("extraneous return value\n");
				expr(0);
				retcode(0, cfunc->u.f.label);
			} else
				retcode(expr(0), cfunc->u.f.label);
		else {
			if (freturn(cfunc->type) != voidtype
			&& (freturn(cfunc->type) != inttype || Aflag >= 1))
				warning("missing return value\n");
			retcode(0, cfunc->u.f.label);
		}
		expect(';');
		break;
	case BREAK:
		walk(0, 0, 0);
		if (swp && swp->lab > loop) {
			definept(0);
			branch(swp->lab + 1);
			t = gettok();
			expect(';');
			break;
		}
	case CONTINUE:
		walk(0, 0, 0);
		definept(0);
		if (loop)
			branch(loop + (t == BREAK ? 2 : 1));
		else
			error("illegal %k statement\n", t);
		t = gettok();
		expect(';');
		break;
	case '{':
		compound(loop, swp, lev + 1);
		break;
	case ';':
		definept(0);
		t = gettok();
		break;
	case GOTO:
		walk(0, 0, 0);
		definept(0);
		t = gettok();
		if (t == ID) {
			Symbol p = lookup(token, labels[0]);
			if (p == 0) {
				p = install(token, &labels[0], 0);
				p->u.l.label = genlabel(1);
				p->u.l.equatedto = p;
				p->src = src;
			}
			p->ref++;
			use(p, src);
			branch(p->u.l.label);
			t = gettok();
		} else
			error("missing label in goto\n");
		expect(';');
		break;
	case ID:
		if (getchr() == ':') {
			stmtlabel(token);
			statement(loop, swp, lev);
			break;
		}
	default:
		definept(0);
		if (kind[t] != ID) {
			error("unrecognized statement\n");
			t = gettok();
		} else {
			Tree e = expr0(0);
			listnodes(e, 0, 0);
			if (glevel > 1 || nodecount == 0 || nodecount > 200)
				walk(0, 0, 0);
			ntree = 0;
		}
		expect(';');
	}
	if (kind[t] != IF && kind[t] != ID && t != '}' && t != EOI) {
		static char follow[] = { IF, ID, '}', 0 };
		error("illegal statement termination\n");
		skipto(0, follow);
	}
	refinc = ref;
}

// Assembly:
pushq %rbp
pushq %r15
pushq %r14
pushq %r13
pushq %r12
pushq %rbx
subq $0x68, %rsp
movl %edx, %ebx
movq %rsi, %r14
movl %edi, %r12d
movl 0x13032(%rip), %r13d    # 0x28684
leaq 0x163ff(%rip), %rbp     # 0x2ba58
cmpl $0xf, %edx
jne 0x15672
cmpl $0x2, (%rbp)
jl 0x15672
leaq 0xaef4(%rip), %rdi      # 0x2055f
xorl %eax, %eax
callq 0x9be3
leaq 0x16367(%rip), %r15     # 0x2b9e0
movl (%r15), %eax
leal -0x3b(%rax), %ecx
cmpl $0x19, %ecx
ja 0x156a8
leaq 0xada9(%rip), %rax      # 0x20434
movslq (%rax,%rcx,4), %rcx
addq %rax, %rcx
jmpq *%rcx
xorl %edi, %edi
callq 0x15027
callq 0xe1c6
movl %eax, (%r15)
jmp 0x165a8
cmpl $0x20, %eax
je 0x15e73
cmpl $0x7b, %eax
jne 0x15f34
incl %ebx
movl %r12d, %edi
movq %r14, %rsi
movl %ebx, %edx
callq 0x5098
jmp 0x165a8
callq 0xe1c6
movl %eax, (%r15)
xorl %edi, %edi
callq 0x15027
movl (%r15), %ebx
leaq 0x14191(%rip), %r14     # 0x29878
movq (%r14), %rax
movq 0x20(%rax), %rdi
callq 0x197d4
leaq 0x1c8e6(%rip), %rcx     # 0x31fe0
movq (%rcx), %rcx
cmpl $0x3b, %ebx
jne 0x15fc6
cmpq %rcx, %rax
je 0x15731
movq (%r14), %rax
movq 0x20(%rax), %rdi
callq 0x197d4
leaq 0x1c87a(%rip), %rcx     # 0x31f98
cmpq (%rcx), %rax
jne 0x16580
cmpl $0x0, (%rbp)
jg 0x16580
xorl %ebx, %ebx
jmp 0x16590
movl %r13d, 0xc(%rsp)
movl $0x4, %edi
callq 0x1769a
movq %r15, %r12
movl %eax, %r15d
callq 0xe1c6
movl %eax, (%r12)
movl $0x28, %edi
callq 0x983d
xorl %edi, %edi
callq 0x15027
movl (%r12), %eax
leaq 0x12e0e(%rip), %r13     # 0x28580
cmpb $0x20, (%r13,%rax)
jne 0x15fde
movl $0x3b, %edi
callq 0xafaa
jmp 0x15fea
movl $0x3, %edi
callq 0x1769a
movq %r15, %rbp
movl %eax, %r15d
incl %ebx
movl 0x12edf(%rip), %eax     # 0x28684
addl %eax, %eax
leal (%rax,%rax,4), %eax
movl %eax, 0x12ed4(%rip)     # 0x28684
callq 0xe1c6
movq %rbp, %r12
movl %eax, (%rbp)
movl %r15d, %edi
callq 0x14f70
movl %r15d, %edi
movq %r14, %rsi
movl %ebx, %edx
callq 0x15635
leal 0x1(%r15), %edi
callq 0x14f70
movl $0x54, %edi
callq 0x983d
movl $0x28, %edi
callq 0x983d
xorl %edi, %edi
callq 0x15027
movl $0x29, %edi
callq 0xad42
movq %rax, %rdi
movl %r15d, %esi
xorl %edx, %edx
callq 0x3941
addl $0x2, %r15d
movl %r15d, %edi
callq 0x17383
cmpl $0x0, 0x1c(%rax)
je 0x15825
movl %r15d, %edi
callq 0x14f70
movl $0x3b, %edi
callq 0x983d
movq %r12, %r15
jmp 0x165a8
xorl %edi, %edi
xorl %esi, %esi
xorl %edx, %edx
callq 0x3941
xorl %edi, %edi
callq 0x15027
callq 0xe1c6
movl %eax, (%r15)
cmpl $0x20, %eax
jne 0x161d4
leaq 0x160e7(%rip), %r14     # 0x2b948
movq (%r14), %rdi
leaq 0x194d5(%rip), %rax     # 0x2ed40
movq (%rax), %rsi
callq 0x173d9
movq %rax, %rbx
testq %rax, %rax
jne 0x158ae
movq (%r14), %rdi
leaq 0x194bb(%rip), %rsi     # 0x2ed40
xorl %edx, %edx
callq 0x17429
movq %rax, %rbx
movl $0x1, %edi
callq 0x1769a
movl %eax, 0x48(%rbx)
movq %rbx, 0x50(%rbx)
leaq 0x16091(%rip), %rax     # 0x2b938
movups (%rax), %xmm0
movups %xmm0, 0x28(%rbx)
incl 0x1c(%rbx)
leaq 0x16080(%rip), %rax     # 0x2b938
movq (%rax), %rsi
movq 0x8(%rax), %rdx
movq %rbx, %rdi
callq 0x17906
movl 0x48(%rbx), %edi
jmp 0x1591d
xorl %edi, %edi
xorl %esi, %esi
xorl %edx, %edx
callq 0x3941
testq %r14, %r14
je 0x158f1
cmpl %r12d, 0x8(%r14)
jle 0x158f1
xorl %edi, %edi
callq 0x15027
movl 0x8(%r14), %edi
incl %edi
jmp 0x1591d
xorl %edi, %edi
xorl %esi, %esi
xorl %edx, %edx
callq 0x3941
xorl %edi, %edi
callq 0x15027
movl (%r15), %esi
testl %r12d, %r12d
je 0x15fab
xorl %eax, %eax
cmpl $0x44, %esi
sete %al
leal (%rax,%r12), %edi
incl %edi
callq 0x15554
jmp 0x15fb9
testq %r14, %r14
jne 0x1593a
leaq 0xac56(%rip), %rdi      # 0x20589
xorl %eax, %eax
callq 0x9720
movl $0x1, %edi
callq 0x1769a
movl %eax, 0x1c(%rsp)
movl %eax, %edi
callq 0x14f70
cmpl $0x45, (%r15)
jne 0x1651e
movl %r13d, 0xc(%rsp)
movq %r12, 0x10(%rsp)
callq 0xe1c6
movl %eax, (%r15)
movl $0x3a, %edi
callq 0xaea6
movl (%rax), %ecx
andl $-0x10, %ecx
cmpl $0x10, %ecx
jne 0x15a0f
movq 0x8(%rax), %rcx
movl (%rcx), %edx
movq %rcx, %rsi
cmpl $0xf, %edx
jb 0x15995
movq 0x10(%rcx), %rsi
cmpl $0x3, (%rsi)
jb 0x15a0f
cmpl $0xf, %edx
jb 0x159a3
movq 0x10(%rcx), %rcx
cmpl $0x6, (%rcx)
ja 0x15a0f
testq %r14, %r14
je 0x15a1d
leaq 0x17344(%rip), %r15     # 0x2ccf8
incl (%r15)
movq (%r14), %rcx
movq 0x20(%rcx), %rsi
movq %rax, %rdi
callq 0xa341
decl (%r15)
movl 0x28(%rax), %r12d
movl 0x1c(%r14), %edi
cmpl %edi, 0x18(%r14)
leaq 0x13d9c(%rip), %rsi     # 0x29778
jl 0x15aaf
movq 0x20(%r14), %r15
movq 0x28(%r14), %r13
leal (%rdi,%rdi), %eax
movl %eax, 0x1c(%r14)
shll $0x3, %edi
movq (%rsi), %rcx
movl %edi, (%rcx)
movq 0x8(%rcx), %rax
movslq %edi, %rdx
addq %rax, %rdx
cmpq 0x10(%rcx), %rdx
jae 0x15a39
movq %rdx, 0x8(%rcx)
jmp 0x15a4c
leaq 0xab87(%rip), %rdi      # 0x2059d
xorl %eax, %eax
callq 0x9720
leaq 0x19354(%rip), %rax     # 0x2ed78
movl $0x0, (%rax)
cmpl $0x45, (%r15)
je 0x15963
jmp 0x1651e
leaq 0x13d38(%rip), %rsi     # 0x29778
callq 0x17978
leaq 0x13d2c(%rip), %rsi     # 0x29778
movq %rax, 0x20(%r14)
movl 0x1c(%r14), %edi
shll $0x3, %edi
movq (%rsi), %rcx
movl %edi, (%rcx)
movq 0x8(%rcx), %rax
movslq %edi, %rdx
addq %rax, %rdx
cmpq 0x10(%rcx), %rdx
jae 0x15a72
movq %rdx, 0x8(%rcx)
jmp 0x15a7e
leaq 0x13cff(%rip), %rsi     # 0x29778
callq 0x17978
movq %rax, 0x28(%r14)
cmpl $0x0, 0x18(%r14)
jle 0x15aaf
xorl %eax, %eax
movl (%r15,%rax,4), %ecx
movq 0x20(%r14), %rdx
movl %ecx, (%rdx,%rax,4)
movq (%r13,%rax,8), %rcx
movq 0x28(%r14), %rdx
movq %rcx, (%rdx,%rax,8)
incq %rax
movslq 0x18(%r14), %rcx
cmpq %rcx, %rax
jl 0x15a8b
movslq 0x18(%r14), %rax
testq %rax, %rax
jle 0x15ae4
movq 0x20(%r14), %rcx
movl -0x4(%rcx,%rax,4), %edx
cmpl %r12d, %edx
jl 0x15ae4
movl %edx, (%rcx,%rax,4)
movq 0x28(%r14), %rcx
movq -0x8(%rcx,%rax,8), %rdx
movq %rdx, (%rcx,%rax,8)
decq %rax
leaq 0x1(%rax), %rcx
cmpq $0x1, %rcx
jg 0x15ab8
xorl %eax, %eax
movslq %eax, %r15
cmpl 0x18(%r14), %eax
movl 0xc(%rsp), %r13d
jge 0x15b0d
movq 0x20(%r14), %rax
cmpl %r12d, (%rax,%r15,4)
jne 0x15b0d
leaq 0xab75(%rip), %rdi      # 0x20678
movl %r12d, %esi
xorl %eax, %eax
callq 0x9720
movq 0x20(%r14), %rax
movl %r12d, (%rax,%r15,4)
movl 0x1c(%rsp), %edi
callq 0x17383
movq 0x28(%r14), %rcx
movq %rax, (%rcx,%r15,8)
movl 0x18(%r14), %eax
incl %eax
movl %eax, 0x18(%r14)
cmpl $0x2, (%rbp)
setge %cl
cmpl $0x102, %eax            # imm = 0x102
sete %al
andb %cl, %al
cmpb $0x1, %al
leaq 0x15e96(%rip), %r15     # 0x2b9e0
movq 0x10(%rsp), %r12
jne 0x15a1d
leaq 0xab37(%rip), %rdi      # 0x20693
xorl %eax, %eax
callq 0x9be3
jmp 0x15a1d
movq %r12, 0x10(%rsp)
movl $0x2, %edi
callq 0x1769a
movl %eax, %r14d
callq 0xe1c6
movl %eax, (%r15)
movl $0x28, %edi
callq 0x983d
xorl %edi, %edi
callq 0x15027
movl $0x29, %edi
callq 0xadbc
movq %rax, %r12
movq 0x8(%rax), %rsi
movl (%rsi), %eax
movq %rsi, %rcx
cmpl $0xf, %eax
jb 0x15bb2
movq 0x10(%rsi), %rcx
cmpl $0x3, (%rcx)
jb 0x15bc8
movq %rsi, %rcx
cmpl $0xf, %eax
jb 0x15bc3
movq 0x10(%rsi), %rcx
cmpl $0x7, (%rcx)
jb 0x15beb
leaq 0xab24(%rip), %rdi      # 0x206f3
xorl %eax, %eax
callq 0x9720
leaq 0x1c3bb(%rip), %rax     # 0x31f98
movq (%rax), %rsi
movq %r12, %rdi
callq 0x17ca2
movq %rax, %r12
movl %r14d, %ebp
movq 0x8(%r12), %rdi
callq 0xacd9
movq %r12, %rdi
movq %rax, %rsi
callq 0xa341
movq %rax, %r12
movl (%rax), %eax
andl $-0x10, %eax
cmpl $0x40, %eax
movl %r13d, 0xc(%rsp)
jne 0x15c49
movq 0x10(%r12), %rax
movl $0xfffffef9, %ecx       # imm = 0xFFFFFEF9
addl (%rax), %ecx
cmpl $0x20, %ecx
ja 0x15c49
movabsq $0x100010001, %rdx      # imm = 0x100010001
btq %rcx, %rdx
jae 0x15c49
movq 0x28(%rax), %rax
movq 0x20(%rax), %rcx
cmpq 0x8(%r12), %rcx
je 0x165ff
movq 0x8(%r12), %rsi
leaq 0x190db(%rip), %rax     # 0x2ed30
movl (%rax), %edx
movl $0x4e, %edi
callq 0x175a8
movq %rax, 0x20(%rsp)
movq %rax, %rdi
callq 0x343c
movq 0x20(%rsp), %rdi
movq %r12, %rsi
callq 0x9efb
movq %rax, %rdi
xorl %esi, %esi
xorl %edx, %edx
callq 0x3941
movl $0xa, %edi
callq 0x3468
leaq 0x124a0(%rip), %rax     # 0x28138
movq (%rax), %r13
movl %ebp, %r15d
movl %ebp, 0x28(%rsp)
movq $0x0, 0x30(%rsp)
movabsq $0x20000000000, %rax    # imm = 0x20000000000
movq %rax, 0x38(%rsp)
leaq 0x13ab7(%rip), %rbp     # 0x29778
movq (%rbp), %rcx
movl $0x800, (%rcx)          # imm = 0x800
movq 0x8(%rcx), %rax
leaq 0x800(%rax), %rdx
cmpq 0x10(%rcx), %rdx
jae 0x161e7
movq %rdx, 0x8(%rcx)
jmp 0x161f8
movl $0x2, %edi
callq 0x1769a
movl %eax, %ebp
incl %ebx
callq 0xe1c6
movl %eax, (%r15)
movl $0x28, %edi
callq 0x983d
xorl %edi, %edi
callq 0x15027
movl $0x29, %edi
callq 0xad42
movq %rax, %rdi
xorl %esi, %esi
movl %ebp, %edx
callq 0x3941
movl 0x12958(%rip), %eax     # 0x28684
movl %eax, %ecx
shrl $0x1f, %ecx
addl %eax, %ecx
sarl %ecx
incl %eax
cmpl $0x3, %eax
movl $0x1, %eax
cmovael %ecx, %eax
movl %eax, 0x1293c(%rip)     # 0x28684
movl %r12d, %edi
movq %r14, %rsi
movl %ebx, %edx
callq 0x15635
cmpl $0x49, (%r15)
jne 0x16307
movq %r12, 0x10(%rsp)
movl %ebp, %r12d
incl %r12d
movl %r12d, %edi
callq 0x15554
callq 0xe1c6
movl %eax, (%r15)
movl %ebp, %edi
callq 0x14f70
movq 0x10(%rsp), %rdi
movq %r14, %rsi
movl %ebx, %edx
callq 0x15635
movl %r12d, %edi
callq 0x17383
cmpl $0x0, 0x1c(%rax)
je 0x165a8
movl %r12d, %edi
jmp 0x16309
testq %r14, %r14
je 0x16356
cmpq $0x0, 0x10(%r14)
je 0x164f7
leaq 0xa80a(%rip), %rdi      # 0x205cf
jmp 0x1635d
movl $0x3, %edi
callq 0x1769a
movq %r15, %r12
movl %eax, %r15d
incl %ebx
movl 0x128a2(%rip), %eax     # 0x28684
addl %eax, %eax
leal (%rax,%rax,4), %eax
movl %eax, 0x12897(%rip)     # 0x28684
callq 0xe1c6
movl %eax, (%r12)
movl $0x28, %edi
callq 0x983d
xorl %edi, %edi
xorl %esi, %esi
xorl %edx, %edx
callq 0x3941
leaq 0x15b26(%rip), %rax     # 0x2b938
movups (%rax), %xmm0
movaps %xmm0, 0x20(%rsp)
leaq -0xb0df(%rip), %rdi     # 0xad42
movl $0x29, %esi
callq 0x17f1f
movq %rax, %r12
movl (%rax), %eax
andl $-0x10, %eax
cmpl $0x10, %eax
je 0x16313
leaq 0x15bed(%rip), %rax     # 0x2ba30
cmpl $0x2, (%rax)
je 0x16313
leal 0x1(%r15), %ebp
movl %ebp, %edi
callq 0x15554
movl %r15d, %edi
callq 0x14f70
movl %r15d, %edi
movq %r14, %rsi
movl %ebx, %edx
callq 0x15635
movl %ebp, %edi
jmp 0x16499
callq 0xe158
cmpl $0x3a, %eax
jne 0x15f34
movq %r12, %rbp
movl %r13d, 0xc(%rsp)
leaq 0x15ab8(%rip), %rax     # 0x2b948
movq (%rax), %r12
leaq 0x18ea6(%rip), %rax     # 0x2ed40
movq (%rax), %rsi
movq %r12, %rdi
callq 0x173d9
movq %rax, %r13
testq %rax, %rax
jne 0x15ed3
leaq 0x18e8c(%rip), %rsi     # 0x2ed40
movq %r12, %rdi
xorl %edx, %edx
callq 0x17429
movq %rax, %r13
movl $0x1, %edi
callq 0x1769a
movl %eax, 0x48(%r13)
movq %r13, 0x50(%r13)
testb $0x1, 0x1b(%r13)
je 0x15eef
leaq 0x28(%r13), %rdx
leaq 0xa7d9(%rip), %rdi      # 0x206be
movq %r12, %rsi
xorl %eax, %eax
callq 0x9720
orb $0x1, 0x1b(%r13)
leaq 0x15a3d(%rip), %rax     # 0x2b938
movups (%rax), %xmm0
movups %xmm0, 0x28(%r13)
movl 0x48(%r13), %edi
callq 0x14f70
callq 0xe1c6
movl %eax, (%r15)
movl $0x3a, %edi
callq 0x983d
movl %ebp, %edi
movq %r14, %rsi
movl %ebx, %edx
callq 0x15635
movl 0xc(%rsp), %r13d
jmp 0x165a8
xorl %edi, %edi
callq 0x15027
movl (%r15), %eax
leaq 0x1263b(%rip), %rcx     # 0x28580
cmpb $0x20, (%rcx,%rax)
jne 0x15f9b
xorl %edi, %edi
callq 0xafaa
movq %rax, %rdi
xorl %esi, %esi
xorl %edx, %edx
callq 0x3a2a
leaq 0x15acb(%rip), %rax     # 0x2ba30
cmpl $0x1, (%rax)
jg 0x15f7e
leaq 0x138ff(%rip), %rax     # 0x29870
movl (%rax), %eax
testl %eax, %eax
je 0x15f7e
cmpl $0xc9, %eax
jl 0x15f89
xorl %edi, %edi
xorl %esi, %esi
xorl %edx, %edx
callq 0x3941
leaq 0x18de8(%rip), %rax     # 0x2ed78
movl $0x0, (%rax)
jmp 0x1659e
leaq 0xa69f(%rip), %rdi      # 0x20641
xorl %eax, %eax
callq 0x9720
jmp 0x15fb9
leaq 0xa662(%rip), %rdi      # 0x20614
xorl %eax, %eax
callq 0x9720
callq 0xe1c6
movl %eax, (%r15)
jmp 0x1659e
cmpq %rcx, %rax
je 0x1652d
xorl %edi, %edi
callq 0xadbc
movq %rax, %rbx
jmp 0x16590
movl $0x3b, %edi
callq 0x983d
xorl %eax, %eax
movq %rax, 0x10(%rsp)
movq %rax, %rdi
xorl %esi, %esi
xorl %edx, %edx
callq 0x3941
leaq 0x15936(%rip), %rbp     # 0x2b938
movups (%rbp), %xmm0
movaps %xmm0, 0x20(%rsp)
movl 0x12673(%rip), %eax     # 0x28684
addl %eax, %eax
leal (%rax,%rax,4), %eax
movl %eax, 0x12668(%rip)     # 0x28684
leaq 0x159bd(%rip), %rax     # 0x2b9e0
movl (%rax), %eax
cmpb $0x20, (%r13,%rax)
jne 0x16043
leaq -0xb2f2(%rip), %rdi     # 0xad42
movl $0x3b, %esi
callq 0x17f1f
movq %rax, %r12
jmp 0x16050
movl $0x3b, %edi
callq 0x983d
xorl %r12d, %r12d
movups (%rbp), %xmm0
movaps %xmm0, 0x50(%rsp)
leaq 0x15980(%rip), %rax     # 0x2b9e0
movl (%rax), %eax
cmpb $0x20, (%r13,%rax)
jne 0x16080
leaq -0xb0c7(%rip), %rdi     # 0xafaa
movl $0x29, %esi
callq 0x17f1f
movq %rax, %r13
jmp 0x16094
leaq 0x12605(%rip), %rsi     # 0x2868c
movl $0x29, %edi
callq 0x9bab
xorl %r13d, %r13d
incl %ebx
leaq 0x15993(%rip), %rax     # 0x2ba30
cmpl $0x2, (%rax)
movq 0x10(%rsp), %rsi
jne 0x16106
movl %r15d, %edi
callq 0x14f70
leaq 0x20(%rsp), %rdi
callq 0x15027
testq %r12, %r12
je 0x160cc
leal 0x2(%r15), %edx
movq %r12, %rdi
xorl %esi, %esi
callq 0x3941
movl %r15d, %edi
movq %r14, %rsi
movl %ebx, %edx
callq 0x15635
leal 0x1(%r15), %edi
callq 0x14f70
leaq 0x50(%rsp), %rdi
callq 0x15027
testq %r13, %r13
je 0x16550
movq %r13, %rdi
xorl %esi, %esi
xorl %edx, %edx
callq 0x3941
jmp 0x16550
movb $0x1, %bpl
testq %r12, %r12
je 0x16449
testq %rsi, %rsi
je 0x16440
movl (%rsi), %eax
andl $-0x10, %eax
cmpl $0x30, %eax
jne 0x16440
movq 0x10(%rsi), %rax
movl $0xfffffef9, %ecx       # imm = 0xFFFFFEF9
addl (%rax), %ecx
cmpl $0x20, %ecx
ja 0x16440
movabsq $0x100010001, %rdx      # imm = 0x100010001
btq %rcx, %rdx
jae 0x16440
movq 0x18(%rsi), %rdx
movl (%rdx), %esi
movl %esi, %ecx
andl $-0x10, %ecx
cmpl $0x10, %ecx
jne 0x16440
movl (%r12), %edi
leal -0x1e0(%rdi), %ecx
cmpl $0x5f, %ecx
ja 0x16440
movq 0x10(%r12), %rcx
movl (%rcx), %r8d
andl $-0x10, %r8d
cmpl $0x40, %r8d
jne 0x16440
movq 0x28(%rax), %rax
movq 0x10(%rcx), %rcx
cmpq %rax, 0x28(%rcx)
jne 0x16440
movq 0x18(%r12), %rcx
cmpl %esi, (%rcx)
jne 0x16440
andl $-0x10, %edi
movq 0x8(%r12), %rsi
callq 0x12653
cmpl $0x15, (%rax)
jne 0x16440
cmpl $0x0, 0x28(%rax)
je 0x16440
xorl %ebp, %ebp
jmp 0x16449
leaq 0xa44f(%rip), %rdi      # 0x2062a
xorl %eax, %eax
callq 0x9720
jmp 0x1659e
leaq 0x1358a(%rip), %rsi     # 0x29778
movl $0x800, %edi            # imm = 0x800
callq 0x17978
incl %ebx
movq %rax, 0x40(%rsp)
movq (%rbp), %rcx
movl $0x1000, (%rcx)         # imm = 0x1000
movq 0x8(%rcx), %rax
leaq 0x1000(%rax), %rdx
cmpq 0x10(%rcx), %rdx
jae 0x16220
movq %rdx, 0x8(%rcx)
jmp 0x16231
leaq 0x13551(%rip), %rsi     # 0x29778
movl $0x1000, %edi           # imm = 0x1000
callq 0x17978
leaq 0x20(%rsp), %r12
movq %rax, 0x28(%r12)
movslq 0x12442(%rip), %rax     # 0x28684
imulq $0x66666667, %rax, %rcx # imm = 0x66666667
movq %rcx, %rdx
shrq $0x3f, %rdx
sarq $0x22, %rcx
addl %edx, %ecx
addl $0x9, %eax
cmpl $0x13, %eax
movl $0x1, %eax
cmovael %ecx, %eax
movl %eax, 0x1241a(%rip)     # 0x28684
movq 0x10(%rsp), %rdi
movq %r12, %rsi
movl %ebx, %edx
callq 0x15635
cmpq $0x0, 0x10(%r12)
jne 0x162ab
movl %r15d, %edi
callq 0x17383
movq %rax, 0x30(%rsp)
movl %r15d, %edi
callq 0x14f70
cmpl $0x0, 0x38(%rsp)
jne 0x162ab
leaq 0xa477(%rip), %rdi      # 0x2071b
xorl %eax, %eax
callq 0x9be3
incl %r14d
movl %r14d, %edi
callq 0x17383
cmpl $0x0, 0x1c(%rax)
je 0x162c4
movl %r14d, %edi
callq 0x14f70
leaq 0x11e6d(%rip), %r14     # 0x28138
movq (%r14), %rbx
movq 0x8(%r13), %rax
movq %rax, (%r14)
movl 0x38(%rsp), %eax
testl %eax, %eax
je 0x164d3
leal 0xb(,%rax,4), %edi
andl $-0x8, %edi
movq (%rbp), %rax
movl %edi, (%rax)
movq 0x8(%rax), %rsi
movslq %edi, %rcx
addq %rsi, %rcx
cmpq 0x10(%rax), %rcx
jae 0x16369
movq %rcx, 0x8(%rax)
jmp 0x16378
movl %ebp, %edi
callq 0x14f70
jmp 0x165a8
movl %r15d, %edi
callq 0x14f70
leal 0x1(%r15), %edi
callq 0x14f70
leaq 0x20(%rsp), %rdi
callq 0x15027
leal 0x2(%r15), %edx
movq %r12, %rdi
xorl %esi, %esi
callq 0x3941
movl %r15d, %edi
movq %r14, %rsi
movl %ebx, %edx
callq 0x15635
movl %r15d, %edi
callq 0x15554
jmp 0x1655d
leaq 0xa287(%rip), %rdi      # 0x205e4
xorl %eax, %eax
callq 0x9720
jmp 0x1650c
leaq 0x13408(%rip), %rsi     # 0x29778
callq 0x17978
movq %rax, %rsi
movl 0x38(%rsp), %edi
testl %edi, %edi
jle 0x164ba
movq 0x40(%rsp), %rax
xorl %edx, %edx
xorl %ecx, %ecx
movq %rdx, %rdi
movslq %ecx, %rdx
movl %edi, (%rsi,%rdx,4)
leaq 0x1(%rdi), %rdx
movss 0x122de(%rip), %xmm0    # 0x28680
movslq 0x38(%rsp), %r8
decq %r8
leal 0x2(%rdi), %r9d
movl %ecx, %r10d
testl %r10d, %r10d
jle 0x1642b
leal -0x1(%r10), %ecx
movslq (%rsi,%rcx,4), %r11
movl %edx, %ebp
subl %r11d, %ebp
xorps %xmm1, %xmm1
cvtsi2ss %ebp, %xmm1
movl (%rax,%rdi,4), %ebp
subl (%rax,%r11,4), %ebp
incl %ebp
xorps %xmm2, %xmm2
cvtsi2ss %ebp, %xmm2
divss %xmm2, %xmm1
ucomiss %xmm1, %xmm0
jbe 0x163eb
xorl %r11d, %r11d
movl %r10d, %ecx
jmp 0x16421
cmpq %r8, %rdi
jge 0x1641e
movl %r10d, %r11d
movslq (%rsi,%r11,4), %r11
movl %r9d, %ebp
subl %r11d, %ebp
xorps %xmm2, %xmm2
cvtsi2ss %ebp, %xmm2
movl 0x4(%rax,%rdi,4), %ebp
subl (%rax,%r11,4), %ebp
incl %ebp
xorps %xmm3, %xmm3
cvtsi2ss %ebp, %xmm3
divss %xmm3, %xmm2
ucomiss %xmm1, %xmm2
ja 0x163e3
movb $0x1, %r11b
movl %ecx, %r10d
testb %r11b, %r11b
jne 0x163b1
jmp 0x1642e
movl %r10d, %ecx
incl %ecx
movslq 0x38(%rsp), %rdi
cmpq %rdi, %rdx
jl 0x1638d
jmp 0x164bc
leal 0x3(%r15), %edi
callq 0x15554
movl %r15d, %edi
callq 0x14f70
movl %r15d, %edi
movq %r14, %rsi
movl %ebx, %edx
callq 0x15635
leal 0x1(%r15), %edi
callq 0x14f70
leaq 0x50(%rsp), %rdi
callq 0x15027
testq %r13, %r13
je 0x16482
movq %r13, %rdi
xorl %esi, %esi
xorl %edx, %edx
callq 0x3941
testq %r12, %r12
je 0x16546
testb %bpl, %bpl
movl 0xc(%rsp), %r13d
je 0x1649e
leal 0x3(%r15), %edi
callq 0x14f70
leaq 0x20(%rsp), %rdi
callq 0x15027
movq %r12, %rdi
movl %r15d, %esi
xorl %edx, %edx
callq 0x3941
jmp 0x1655d
xorl %ecx, %ecx
movslq %ecx, %rax
decl %ecx
movl %edi, (%rsi,%rax,4)
leaq 0x20(%rsp), %rdi
xorl %edx, %edx
movl %ecx, %r8d
callq 0x1661f
movl %r15d, %edi
callq 0x15554
movq (%r14), %rax
movq 0x10(%r13), %rcx
movq %rax, 0x8(%rcx)
movq %rcx, 0x10(%rax)
movq %rbx, (%r14)
movl 0xc(%rsp), %r13d
jmp 0x16577
movl 0x8(%r14), %edi
callq 0x17383
movq %rax, 0x10(%r14)
movl 0x48(%rax), %edi
callq 0x14f70
callq 0xe1c6
movl %eax, (%r15)
movl $0x3a, %edi
callq 0x983d
movl %r12d, %edi
movq %r14, %rsi
movl %ebx, %edx
callq 0x15635
jmp 0x165a8
leaq 0xa0c7(%rip), %rdi      # 0x205fb
xorl %ebx, %ebx
xorl %eax, %eax
callq 0x9720
xorl %edi, %edi
callq 0xadbc
jmp 0x16590
leaq 0x20(%rsp), %rdi
callq 0x15027
movl %r15d, %edi
callq 0x15554
movl 0xc(%rsp), %r13d
addl $0x2, %r15d
movl %r15d, %edi
callq 0x17383
cmpl $0x0, 0x1c(%rax)
je 0x16577
movl %r15d, %edi
callq 0x14f70
leaq 0x15462(%rip), %r15     # 0x2b9e0
jmp 0x165a8
leaq 0x813b(%rip), %rdi      # 0x1e6c2
xorl %ebx, %ebx
xorl %eax, %eax
callq 0x9be3
movq (%r14), %rax
movl 0x78(%rax), %esi
movq %rbx, %rdi
callq 0x151e7
movl $0x3b, %edi
callq 0x983d
movl (%r15), %eax
leaq 0x11fce(%rip), %rcx     # 0x28580
movb (%rcx,%rax), %cl
cmpb $0x4d, %cl
je 0x165e9
cmpb $0x20, %cl
sete %cl
andl $-0x3, %eax
cmpl $0x7d, %eax
sete %al
orb %cl, %al
jne 0x165e9
leaq 0xa085(%rip), %rdi      # 0x20659
xorl %eax, %eax
callq 0x9720
leaq 0x120a6(%rip), %rsi     # 0x28688
xorl %edi, %edi
callq 0x9a79
movl %r13d, 0x12094(%rip)    # 0x28684
addq $0x68, %rsp
popq %rbx
popq %r12
popq %r13
popq %r14
popq %r15
popq %rbp
retq
movl (%rcx), %ecx
cmpl $0x10, %ecx
je 0x15c49
cmpl $0x1f, %ecx
je 0x15c49
movq %rax, 0x20(%rsp)
xorl %edi, %edi
jmp 0x15c7e