// File: /workspace/github_c_makefile_star2_O3/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 $0x58, %rsp
movl %edx, %ebx
movq %rsi, %r14
movl %edi, %r12d
movl 0x1417b(%rip), %r13d    # 0x29684
leaq 0x17548(%rip), %rbp     # 0x2ca58
cmpl $0xf, %edx
jne 0x15529
cmpl $0x2, (%rbp)
jl 0x15529
leaq 0xb0bd(%rip), %rdi      # 0x205df
xorl %eax, %eax
callq 0x9bfd
leaq 0x174b0(%rip), %r15     # 0x2c9e0
movl (%r15), %eax
leal -0x3b(%rax), %ecx
cmpl $0x19, %ecx
ja 0x1555f
leaq 0xaf72(%rip), %rax      # 0x204b4
movslq (%rax,%rcx,4), %rcx
addq %rax, %rcx
jmpq *%rcx
xorl %edi, %edi
callq 0x14ee1
callq 0xe195
movl %eax, (%r15)
jmp 0x164c0
cmpl $0x20, %eax
je 0x15c2c
cmpl $0x7b, %eax
jne 0x15cf1
incl %ebx
movl %r12d, %edi
movq %r14, %rsi
movl %ebx, %edx
callq 0x50d4
jmp 0x164c0
callq 0xe195
movl %eax, (%r15)
xorl %edi, %edi
callq 0x14ee1
movl (%r15), %ebx
leaq 0x152da(%rip), %r14     # 0x2a878
movq (%r14), %rax
movq 0x20(%rax), %rdi
callq 0x195c1
leaq 0x1da2f(%rip), %rcx     # 0x32fe0
movq (%rcx), %rcx
cmpl $0x3b, %ebx
jne 0x15d83
cmpq %rcx, %rax
je 0x155e8
movq (%r14), %rax
movq 0x20(%rax), %rdi
callq 0x195c1
leaq 0x1d9c3(%rip), %rcx     # 0x32f98
cmpq (%rcx), %rax
jne 0x16498
cmpl $0x0, (%rbp)
jg 0x16498
xorl %ebx, %ebx
jmp 0x164a8
movl %r13d, (%rsp)
movl $0x4, %edi
callq 0x17522
movq %r15, %r12
movl %eax, %r15d
callq 0xe195
movl %eax, (%r12)
movl $0x28, %edi
callq 0x9869
xorl %edi, %edi
callq 0x14ee1
movl (%r12), %eax
leaq 0x13f58(%rip), %r13     # 0x29580
cmpb $0x20, (%r13,%rax)
jne 0x15d9b
movl $0x3b, %edi
callq 0xaf7b
jmp 0x15da7
movl $0x3, %edi
callq 0x17522
movq %r15, %r12
movl %eax, %r15d
incl %ebx
movl 0x14029(%rip), %eax     # 0x29684
addl %eax, %eax
leal (%rax,%rax,4), %eax
movl %eax, 0x1401e(%rip)     # 0x29684
callq 0xe195
movl %eax, (%r12)
movl %r15d, %edi
callq 0x14e24
movl %r15d, %edi
movq %r14, %rsi
movl %ebx, %edx
callq 0x154ec
leal 0x1(%r15), %edi
callq 0x14e24
movl $0x54, %edi
callq 0x9869
movl $0x28, %edi
callq 0x9869
xorl %edi, %edi
callq 0x14ee1
movl $0x29, %edi
callq 0xad16
movq %rax, %rdi
movl %r15d, %esi
xorl %edx, %edx
callq 0x394a
addl $0x2, %r15d
movl %r15d, %edi
callq 0x17238
cmpl $0x0, 0x1c(%rax)
je 0x156d9
movl %r15d, %edi
callq 0x14e24
movl $0x3b, %edi
callq 0x9869
jmp 0x1648f
xorl %edi, %edi
xorl %esi, %esi
xorl %edx, %edx
callq 0x394a
xorl %edi, %edi
callq 0x14ee1
callq 0xe195
movl %eax, (%r15)
cmpl $0x20, %eax
jne 0x15f91
leaq 0x17236(%rip), %r14     # 0x2c948
movq (%r14), %rdi
leaq 0x1a624(%rip), %rax     # 0x2fd40
movq (%rax), %rsi
callq 0x1728e
movq %rax, %rbx
testq %rax, %rax
jne 0x1575f
movq (%r14), %rdi
leaq 0x1a60a(%rip), %rsi     # 0x2fd40
xorl %edx, %edx
callq 0x172de
movq %rax, %rbx
movl $0x1, %edi
callq 0x17522
movl %eax, 0x48(%rbx)
movq %rbx, 0x50(%rbx)
leaq 0x171e0(%rip), %rax     # 0x2c938
movups (%rax), %xmm0
movups %xmm0, 0x28(%rbx)
incl 0x1c(%rbx)
leaq 0x171cf(%rip), %rax     # 0x2c938
movq (%rax), %rsi
movq 0x8(%rax), %rdx
movq %rbx, %rdi
callq 0x1778e
movl 0x48(%rbx), %edi
jmp 0x157ce
xorl %edi, %edi
xorl %esi, %esi
xorl %edx, %edx
callq 0x394a
testq %r14, %r14
je 0x157a2
cmpl %r12d, 0x8(%r14)
jle 0x157a2
xorl %edi, %edi
callq 0x14ee1
movl 0x8(%r14), %edi
incl %edi
jmp 0x157ce
xorl %edi, %edi
xorl %esi, %esi
xorl %edx, %edx
callq 0x394a
xorl %edi, %edi
callq 0x14ee1
movl (%r15), %esi
testl %r12d, %r12d
je 0x15d68
xorl %eax, %eax
cmpl $0x44, %esi
sete %al
leal (%rax,%r12), %edi
incl %edi
callq 0x15402
jmp 0x15d76
testq %r14, %r14
jne 0x157eb
leaq 0xae25(%rip), %rdi      # 0x20609
xorl %eax, %eax
callq 0x974c
movl $0x1, %edi
callq 0x17522
movl %eax, 0x4(%rsp)
movl %eax, %edi
callq 0x14e24
cmpl $0x45, (%r15)
jne 0x16437
movl %r13d, (%rsp)
movq %r12, 0x8(%rsp)
callq 0xe195
movl %eax, (%r15)
movl $0x3a, %edi
callq 0xae7e
movl (%rax), %ecx
andl $-0x10, %ecx
cmpl $0x10, %ecx
jne 0x158c2
movq 0x8(%rax), %rdx
movl (%rdx), %ecx
cmpl $0xf, %ecx
jb 0x1584b
movq 0x10(%rdx), %rcx
movl (%rcx), %ecx
cmpl $0x2, %ecx
ja 0x15850
jmp 0x158c2
cmpl $0x3, %ecx
jb 0x158c2
cmpl $0x6, %ecx
ja 0x158c2
testq %r14, %r14
je 0x158d0
leaq 0x18497(%rip), %r15     # 0x2dcf8
incl (%r15)
movq (%r14), %rcx
movq 0x20(%rcx), %rsi
movq %rax, %rdi
callq 0xa2f7
decl (%r15)
movl 0x28(%rax), %r12d
movl 0x18(%r14), %eax
movl 0x1c(%r14), %edx
cmpl %edx, %eax
jl 0x15966
movq 0x20(%r14), %r13
movq 0x28(%r14), %r15
leal (%rdx,%rdx), %edi
movl %edi, 0x1c(%r14)
shll $0x3, %edx
leaq 0x14ed5(%rip), %rsi     # 0x2a778
movq (%rsi), %r9
movl %edx, (%r9)
movq 0x8(%r9), %rcx
movq 0x10(%r9), %r8
movslq %edx, %rax
addq %rcx, %rax
cmpq %r8, %rax
jae 0x158ec
movq %rax, 0x8(%r9)
jmp 0x1590c
leaq 0xad54(%rip), %rdi      # 0x2061d
xorl %eax, %eax
callq 0x974c
leaq 0x1a4a1(%rip), %rax     # 0x2fd78
movl $0x0, (%rax)
cmpl $0x45, (%r15)
je 0x15813
jmp 0x16437
movl %edx, %edi
callq 0x17800
movq %rax, %rcx
movl 0x1c(%r14), %edi
leaq 0x14e77(%rip), %rsi     # 0x2a778
movq (%rsi), %r9
movq 0x8(%r9), %rax
movq 0x10(%r9), %r8
movq %rcx, 0x20(%r14)
shll $0x3, %edi
movl %edi, (%r9)
movslq %edi, %rcx
addq %rax, %rcx
cmpq %r8, %rcx
jae 0x15927
movq %rcx, 0x8(%r9)
jmp 0x1592c
callq 0x17800
movq %rax, 0x28(%r14)
movl 0x18(%r14), %eax
testl %eax, %eax
jle 0x159c2
xorl %ecx, %ecx
movl (%r13,%rcx,4), %eax
movq 0x20(%r14), %rdx
movl %eax, (%rdx,%rcx,4)
movq (%r15,%rcx,8), %rax
movq 0x28(%r14), %rdx
movq %rax, (%rdx,%rcx,8)
incq %rcx
movslq 0x18(%r14), %rax
cmpq %rax, %rcx
jl 0x1593e
movl (%rsp), %r13d
testl %eax, %eax
jle 0x159c2
movl %eax, %eax
movq 0x20(%r14), %rcx
movl -0x4(%rcx,%rax,4), %edx
cmpl %r12d, %edx
jl 0x1599c
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
ja 0x1596c
movq 0x20(%r14), %rcx
xorl %eax, %eax
cmpl 0x18(%r14), %eax
jge 0x159ca
movslq %eax, %r15
cmpl %r12d, (%rcx,%r15,4)
jne 0x159cd
leaq 0xad46(%rip), %rdi      # 0x206f8
movl %r12d, %esi
xorl %eax, %eax
callq 0x974c
movq 0x20(%r14), %rcx
jmp 0x159cd
movq 0x20(%r14), %rcx
movl (%rsp), %r13d
movslq %eax, %r15
movl %r12d, (%rcx,%r15,4)
movl 0x4(%rsp), %edi
callq 0x17238
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 0x16fda(%rip), %r15     # 0x2c9e0
movq 0x8(%rsp), %r12
jne 0x158d0
leaq 0xacfb(%rip), %rdi      # 0x20713
xorl %eax, %eax
callq 0x9bfd
jmp 0x158d0
movq %r12, 0x8(%rsp)
movl $0x2, %edi
callq 0x17522
movl %eax, %r14d
callq 0xe195
movl %eax, (%r15)
movl $0x28, %edi
callq 0x9869
xorl %edi, %edi
callq 0x14ee1
movl $0x29, %edi
callq 0xad94
movq %rax, %r12
movq 0x8(%rax), %rsi
movl (%rsi), %eax
cmpl $0xf, %eax
jb 0x15fa4
movq 0x10(%rsi), %rax
movl (%rax), %eax
cmpl $0x2, %eax
ja 0x15fa9
jmp 0x15fae
movl $0x2, %edi
callq 0x17522
movl %eax, %ebp
incl %ebx
callq 0xe195
movl %eax, (%r15)
movl $0x28, %edi
callq 0x9869
xorl %edi, %edi
callq 0x14ee1
movl $0x29, %edi
callq 0xad16
movq %rax, %rdi
xorl %esi, %esi
movl %ebp, %edx
callq 0x394a
movl 0x13bc2(%rip), %eax     # 0x29684
movl %eax, %ecx
shrl $0x1f, %ecx
addl %eax, %ecx
sarl %ecx
incl %eax
cmpl $0x3, %eax
movl $0x1, %eax
cmovael %ecx, %eax
movl %eax, 0x13ba6(%rip)     # 0x29684
movl %r12d, %edi
movq %r14, %rsi
movl %ebx, %edx
callq 0x154ec
cmpl $0x49, (%r15)
jne 0x1625c
movq %r12, 0x8(%rsp)
movl %ebp, %r12d
incl %r12d
movl %r12d, %edi
callq 0x15402
callq 0xe195
movl %eax, (%r15)
movl %ebp, %edi
callq 0x14e24
movq 0x8(%rsp), %rdi
movq %r14, %rsi
movl %ebx, %edx
callq 0x154ec
movl %r12d, %edi
callq 0x17238
cmpl $0x0, 0x1c(%rax)
je 0x164c0
movl %r12d, %edi
jmp 0x1625e
testq %r14, %r14
je 0x16268
cmpq $0x0, 0x10(%r14)
je 0x16410
leaq 0xaaf4(%rip), %rdi      # 0x2064f
jmp 0x1626f
movl $0x3, %edi
callq 0x17522
movq %r15, %r12
movl %eax, %r15d
incl %ebx
movl 0x13b0c(%rip), %eax     # 0x29684
addl %eax, %eax
leal (%rax,%rax,4), %eax
movl %eax, 0x13b01(%rip)     # 0x29684
callq 0xe195
movl %eax, (%r12)
movl $0x28, %edi
callq 0x9869
xorl %edi, %edi
xorl %esi, %esi
xorl %edx, %edx
callq 0x394a
leaq 0x16d90(%rip), %rax     # 0x2c938
movups (%rax), %xmm0
movaps %xmm0, 0x10(%rsp)
leaq -0xaea1(%rip), %rdi     # 0xad16
movl $0x29, %esi
callq 0x17dab
movq %rax, %r12
movl (%rax), %eax
andl $-0x10, %eax
cmpl $0x10, %eax
je 0x16202
leaq 0x16e57(%rip), %rax     # 0x2ca30
cmpl $0x2, (%rax)
je 0x16202
leal 0x1(%r15), %ebp
movl %ebp, %edi
callq 0x15402
movl %r15d, %edi
callq 0x14e24
movl %r15d, %edi
movq %r14, %rsi
movl %ebx, %edx
callq 0x154ec
movl %ebp, %edi
callq 0x14e24
leaq 0x10(%rsp), %rdi
callq 0x14ee1
movq %r12, %rdi
movl %r15d, %esi
xorl %edx, %edx
callq 0x394a
addl $0x2, %r15d
movl %r15d, %ebp
jmp 0x16244
callq 0xe128
cmpl $0x3a, %eax
jne 0x15cf1
movq %r12, %rbp
movl %r13d, (%rsp)
leaq 0x16d00(%rip), %rax     # 0x2c948
movq (%rax), %r12
leaq 0x1a0ee(%rip), %rax     # 0x2fd40
movq (%rax), %rsi
movq %r12, %rdi
callq 0x1728e
movq %rax, %r13
testq %rax, %rax
jne 0x15c8b
leaq 0x1a0d4(%rip), %rsi     # 0x2fd40
movq %r12, %rdi
xorl %edx, %edx
callq 0x172de
movq %rax, %r13
movl $0x1, %edi
callq 0x17522
movl %eax, 0x48(%r13)
movq %r13, 0x50(%r13)
movb 0x1b(%r13), %al
testb $0x1, %al
je 0x15cac
leaq 0x28(%r13), %rdx
leaq 0xaaa0(%rip), %rdi      # 0x2073e
movq %r12, %rsi
xorl %eax, %eax
callq 0x974c
movb 0x1b(%r13), %al
orb $0x1, %al
movb %al, 0x1b(%r13)
leaq 0x16c7f(%rip), %rax     # 0x2c938
movups (%rax), %xmm0
movups %xmm0, 0x28(%r13)
movl 0x48(%r13), %edi
callq 0x14e24
callq 0xe195
movl %eax, (%r15)
movl $0x3a, %edi
callq 0x9869
movl %ebp, %edi
movq %r14, %rsi
movl %ebx, %edx
callq 0x154ec
movl (%rsp), %r13d
jmp 0x164c0
xorl %edi, %edi
callq 0x14ee1
movl (%r15), %eax
leaq 0x1387e(%rip), %rcx     # 0x29580
cmpb $0x20, (%rcx,%rax)
jne 0x15d58
xorl %edi, %edi
callq 0xaf7b
movq %rax, %rdi
xorl %esi, %esi
xorl %edx, %edx
callq 0x3a33
leaq 0x16d0e(%rip), %rax     # 0x2ca30
cmpl $0x1, (%rax)
jg 0x15d3b
leaq 0x14b42(%rip), %rax     # 0x2a870
movl (%rax), %eax
testl %eax, %eax
je 0x15d3b
cmpl $0xc9, %eax
jl 0x15d46
xorl %edi, %edi
xorl %esi, %esi
xorl %edx, %edx
callq 0x394a
leaq 0x1a02b(%rip), %rax     # 0x2fd78
movl $0x0, (%rax)
jmp 0x164b6
leaq 0xa962(%rip), %rdi      # 0x206c1
xorl %eax, %eax
callq 0x974c
jmp 0x15d76
leaq 0xa925(%rip), %rdi      # 0x20694
xorl %eax, %eax
callq 0x974c
callq 0xe195
movl %eax, (%r15)
jmp 0x164b6
cmpq %rcx, %rax
je 0x16446
xorl %edi, %edi
callq 0xad94
movq %rax, %rbx
jmp 0x164a8
movl $0x3b, %edi
callq 0x9869
xorl %eax, %eax
movq %rax, 0x8(%rsp)
movq %rax, %rdi
xorl %esi, %esi
xorl %edx, %edx
callq 0x394a
leaq 0x16b79(%rip), %rbp     # 0x2c938
movups (%rbp), %xmm0
movaps %xmm0, 0x10(%rsp)
movl 0x138b6(%rip), %eax     # 0x29684
addl %eax, %eax
leal (%rax,%rax,4), %eax
movl %eax, 0x138ab(%rip)     # 0x29684
leaq 0x16c00(%rip), %rax     # 0x2c9e0
movl (%rax), %eax
cmpb $0x20, (%r13,%rax)
jne 0x15e00
leaq -0xb0db(%rip), %rdi     # 0xad16
movl $0x3b, %esi
callq 0x17dab
movq %rax, %r12
jmp 0x15e0d
movl $0x3b, %edi
callq 0x9869
xorl %r12d, %r12d
movups (%rbp), %xmm0
movaps %xmm0, 0x40(%rsp)
leaq 0x16bc3(%rip), %rax     # 0x2c9e0
movl (%rax), %eax
cmpb $0x20, (%r13,%rax)
jne 0x15e3d
leaq -0xaeb3(%rip), %rdi     # 0xaf7b
movl $0x29, %esi
callq 0x17dab
movq %rax, %r13
jmp 0x15e51
leaq 0x13848(%rip), %rsi     # 0x2968c
movl $0x29, %edi
callq 0x9bc5
xorl %r13d, %r13d
incl %ebx
leaq 0x16bd6(%rip), %rax     # 0x2ca30
cmpl $0x2, (%rax)
movq 0x8(%rsp), %rsi
jne 0x15ec3
movl %r15d, %edi
callq 0x14e24
leaq 0x10(%rsp), %rdi
callq 0x14ee1
testq %r12, %r12
je 0x15e89
leal 0x2(%r15), %edx
movq %r12, %rdi
xorl %esi, %esi
callq 0x394a
movl %r15d, %edi
movq %r14, %rsi
movl %ebx, %edx
callq 0x154ec
leal 0x1(%r15), %edi
callq 0x14e24
leaq 0x40(%rsp), %rdi
callq 0x14ee1
testq %r13, %r13
je 0x16469
movq %r13, %rdi
xorl %esi, %esi
xorl %edx, %edx
callq 0x394a
jmp 0x16469
movb $0x1, %bpl
testq %r12, %r12
je 0x16360
testq %rsi, %rsi
je 0x16357
movl (%rsi), %eax
andl $-0x10, %eax
cmpl $0x30, %eax
jne 0x16357
movq 0x10(%rsi), %rax
movl $0xfffffef9, %ecx       # imm = 0xFFFFFEF9
addl (%rax), %ecx
cmpl $0x20, %ecx
ja 0x16357
movabsq $0x100010001, %rdx      # imm = 0x100010001
btq %rcx, %rdx
jae 0x16357
movq 0x18(%rsi), %rdx
movl (%rdx), %esi
movl %esi, %ecx
andl $-0x10, %ecx
cmpl $0x10, %ecx
jne 0x16357
movl (%r12), %edi
leal -0x1e0(%rdi), %ecx
cmpl $0x5f, %ecx
ja 0x16357
movq 0x10(%r12), %rcx
movl (%rcx), %r8d
andl $-0x10, %r8d
cmpl $0x40, %r8d
jne 0x16357
movq 0x28(%rax), %rax
movq 0x10(%rcx), %rcx
cmpq %rax, 0x28(%rcx)
jne 0x16357
movq 0x18(%r12), %rcx
cmpl %esi, (%rcx)
jne 0x16357
andl $-0x10, %edi
movq 0x8(%r12), %rsi
callq 0x12443
cmpl $0x15, (%rax)
jne 0x16357
cmpl $0x0, 0x28(%rax)
je 0x16357
xorl %ebp, %ebp
jmp 0x16360
leaq 0xa712(%rip), %rdi      # 0x206aa
xorl %eax, %eax
callq 0x974c
jmp 0x164b6
cmpl $0x3, %eax
jb 0x15fae
cmpl $0x7, %eax
jb 0x15fd5
leaq 0xa7be(%rip), %rdi      # 0x20773
xorl %eax, %eax
callq 0x974c
leaq 0x1cfd5(%rip), %rax     # 0x32f98
movq (%rax), %rsi
movq %r12, %rdi
callq 0x17b29
movq %rax, %r12
movq 0x8(%rax), %rsi
movl %r13d, %r15d
movl %r14d, 0x4(%rsp)
movq %rsi, %rdi
callq 0xac7b
movq %r12, %rdi
movq %rax, %rsi
callq 0xa2f7
movq %rax, %r12
movl (%rax), %eax
andl $-0x10, %eax
cmpl $0x40, %eax
jne 0x16031
movq 0x10(%r12), %rax
movl $0xfffffef9, %ecx       # imm = 0xFFFFFEF9
addl (%rax), %ecx
cmpl $0x20, %ecx
ja 0x16031
movabsq $0x100010001, %rdx      # imm = 0x100010001
btq %rcx, %rdx
jae 0x16031
movq 0x28(%rax), %rax
movq 0x20(%rax), %rcx
cmpq 0x8(%r12), %rcx
je 0x16517
movq 0x8(%r12), %rsi
leaq 0x19cf3(%rip), %rax     # 0x2fd30
movl (%rax), %edx
movl $0x4e, %edi
callq 0x17456
movq %rax, %r13
movq %rax, 0x10(%rsp)
movq %rax, %rdi
callq 0x343c
movq %r13, %rdi
movq %r12, %rsi
callq 0x9f07
movq %rax, %rdi
xorl %esi, %esi
xorl %edx, %edx
callq 0x394a
movl $0xa, %edi
callq 0x3468
leaq 0x130b7(%rip), %rax     # 0x29138
movq (%rax), %rbp
movl 0x4(%rsp), %eax
movl %eax, 0x18(%rsp)
movq $0x0, 0x20(%rsp)
movabsq $0x20000000000, %rax    # imm = 0x20000000000
movq %rax, 0x28(%rsp)
leaq 0x146cd(%rip), %r12     # 0x2a778
movq (%r12), %rdx
movl $0x800, (%rdx)          # imm = 0x800
movq 0x8(%rdx), %rcx
movq 0x10(%rdx), %rsi
leaq 0x800(%rcx), %rax
cmpq %rsi, %rax
jae 0x160cf
movq %rax, 0x8(%rdx)
jmp 0x160eb
movl $0x800, %edi            # imm = 0x800
movq %r12, %rsi
callq 0x17800
movq %rax, %rcx
movq (%r12), %rdx
movq 0x8(%rdx), %rax
movq 0x10(%rdx), %rsi
incl %ebx
movq %rcx, 0x30(%rsp)
movl $0x1000, (%rdx)         # imm = 0x1000
leaq 0x1000(%rax), %rcx
cmpq %rsi, %rcx
jae 0x1610a
movq %rcx, 0x8(%rdx)
jmp 0x1611b
leaq 0x14667(%rip), %rsi     # 0x2a778
movl $0x1000, %edi           # imm = 0x1000
callq 0x17800
leaq 0x10(%rsp), %r13
movq %rax, 0x28(%r13)
movslq 0x13559(%rip), %rax     # 0x29684
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, 0x13531(%rip)     # 0x29684
movq 0x8(%rsp), %rdi
movq %r13, %rsi
movl %ebx, %edx
callq 0x154ec
cmpq $0x0, 0x10(%r13)
jne 0x16195
movl 0x4(%rsp), %ebx
movl %ebx, %edi
callq 0x17238
movq %rax, 0x20(%rsp)
movl %ebx, %edi
callq 0x14e24
cmpl $0x0, 0x28(%rsp)
jne 0x16195
leaq 0xa60d(%rip), %rdi      # 0x2079b
xorl %eax, %eax
callq 0x9bfd
incl %r14d
movl %r14d, %edi
callq 0x17238
cmpl $0x0, 0x1c(%rax)
movl %r15d, %r13d
je 0x161b1
movl %r14d, %edi
callq 0x14e24
leaq 0x12f80(%rip), %rcx     # 0x29138
movq (%rcx), %rbx
movq 0x8(%rbp), %rax
movq %rax, (%rcx)
movl 0x28(%rsp), %eax
testl %eax, %eax
leaq 0x16811(%rip), %r15     # 0x2c9e0
je 0x163e9
leal 0xb(,%rax,4), %edi
andl $-0x8, %edi
movq (%r12), %rcx
movl %edi, (%rcx)
movq 0x8(%rcx), %rsi
movslq %edi, %rdx
addq %rsi, %rdx
cmpq 0x10(%rcx), %rdx
jae 0x1627b
movq %rdx, 0x8(%rcx)
jmp 0x1628e
movl %r15d, %edi
callq 0x14e24
leal 0x1(%r15), %edi
callq 0x14e24
leaq 0x10(%rsp), %rdi
callq 0x14ee1
movl %r15d, %ebp
addl $0x2, %ebp
movq %r12, %rdi
xorl %esi, %esi
movl %ebp, %edx
callq 0x394a
movl %r15d, %edi
movq %r14, %rsi
movl %ebx, %edx
callq 0x154ec
movl %r15d, %edi
callq 0x15402
movl %ebp, %edi
callq 0x17238
cmpl $0x0, 0x1c(%rax)
leaq 0x1678a(%rip), %r15     # 0x2c9e0
je 0x164c0
movl %ebp, %edi
callq 0x14e24
jmp 0x164c0
leaq 0xa3f5(%rip), %rdi      # 0x20664
xorl %eax, %eax
callq 0x974c
jmp 0x16425
leaq 0x144f6(%rip), %rsi     # 0x2a778
callq 0x17800
movq %rax, %rsi
movl 0x28(%rsp), %eax
testl %eax, %eax
jle 0x163d0
movq 0x30(%rsp), %rdx
xorl %edi, %edi
movss 0x133db(%rip), %xmm0    # 0x29680
xorl %ecx, %ecx
movq %rdi, %r9
movslq %ecx, %r10
movl %r9d, (%rsi,%r10,4)
incq %rdi
movl 0x28(%rsp), %eax
movslq %eax, %r8
testl %r10d, %r10d
jle 0x1634a
movl (%rdx,%r9,4), %r10d
incl %r10d
movl %ecx, %ecx
leal 0x2(%r9), %r11d
leaq -0x1(%r8), %r14
movslq -0x4(%rsi,%rcx,4), %r15
movl %edi, %r12d
subl %r15d, %r12d
xorps %xmm1, %xmm1
cvtsi2ss %r12d, %xmm1
movl %r10d, %r12d
subl (%rdx,%r15,4), %r12d
xorps %xmm2, %xmm2
cvtsi2ss %r12d, %xmm2
divss %xmm2, %xmm1
ucomiss %xmm1, %xmm0
ja 0x16343
cmpq %r14, %r9
jge 0x16334
movslq (%rsi,%rcx,4), %r15
movl %r11d, %r12d
subl %r15d, %r12d
xorps %xmm2, %xmm2
cvtsi2ss %r12d, %xmm2
movl 0x4(%rdx,%r9,4), %r12d
subl (%rdx,%r15,4), %r12d
incl %r12d
xorps %xmm3, %xmm3
cvtsi2ss %r12d, %xmm3
divss %xmm3, %xmm2
ucomiss %xmm1, %xmm2
ja 0x16343
decq %rcx
leaq 0x1(%rcx), %r15
cmpq $0x1, %r15
ja 0x162d5
xorl %ecx, %ecx
leaq 0x16696(%rip), %r15     # 0x2c9e0
incl %ecx
cmpq %r8, %rdi
jl 0x162a7
jmp 0x163d2
leal 0x3(%r15), %edi
callq 0x15402
movl %r15d, %edi
callq 0x14e24
movl %r15d, %edi
movq %r14, %rsi
movl %ebx, %edx
callq 0x154ec
leal 0x1(%r15), %edi
callq 0x14e24
leaq 0x40(%rsp), %rdi
callq 0x14ee1
testq %r13, %r13
je 0x16399
movq %r13, %rdi
xorl %esi, %esi
xorl %edx, %edx
callq 0x394a
testq %r12, %r12
je 0x1645f
testb %bpl, %bpl
movl (%rsp), %r13d
je 0x163b4
leal 0x3(%r15), %edi
callq 0x14e24
leaq 0x10(%rsp), %rdi
callq 0x14ee1
movq %r12, %rdi
movl %r15d, %esi
xorl %edx, %edx
callq 0x394a
jmp 0x16475
xorl %ecx, %ecx
movslq %ecx, %rdx
decl %ecx
movl %eax, (%rsi,%rdx,4)
leaq 0x10(%rsp), %rdi
xorl %edx, %edx
movl %ecx, %r8d
callq 0x16537
movl 0x4(%rsp), %edi
callq 0x15402
leaq 0x12d3f(%rip), %rdx     # 0x29138
movq (%rdx), %rax
movq 0x10(%rbp), %rcx
movq %rax, 0x8(%rcx)
movq %rcx, 0x10(%rax)
movq %rbx, (%rdx)
jmp 0x164c0
movl 0x8(%r14), %edi
callq 0x17238
movq %rax, 0x10(%r14)
movl 0x48(%rax), %edi
callq 0x14e24
callq 0xe195
movl %eax, (%r15)
movl $0x3a, %edi
callq 0x9869
movl %r12d, %edi
movq %r14, %rsi
movl %ebx, %edx
callq 0x154ec
jmp 0x164c0
leaq 0xa22e(%rip), %rdi      # 0x2067b
xorl %ebx, %ebx
xorl %eax, %eax
callq 0x974c
xorl %edi, %edi
callq 0xad94
jmp 0x164a8
leaq 0x10(%rsp), %rdi
callq 0x14ee1
movl %r15d, %edi
callq 0x15402
movl (%rsp), %r13d
addl $0x2, %r15d
movl %r15d, %edi
callq 0x17238
cmpl $0x0, 0x1c(%rax)
je 0x1648f
movl %r15d, %edi
callq 0x14e24
leaq 0x1654a(%rip), %r15     # 0x2c9e0
jmp 0x164c0
leaq 0x8223(%rip), %rdi      # 0x1e6c2
xorl %ebx, %ebx
xorl %eax, %eax
callq 0x9bfd
movq (%r14), %rax
movl 0x78(%rax), %esi
movq %rbx, %rdi
callq 0x150a1
movl $0x3b, %edi
callq 0x9869
movl (%r15), %eax
leaq 0x130b6(%rip), %rcx     # 0x29580
movb (%rcx,%rax), %cl
cmpb $0x4d, %cl
je 0x16501
cmpb $0x20, %cl
sete %cl
andl $-0x3, %eax
cmpl $0x7d, %eax
sete %al
orb %cl, %al
jne 0x16501
leaq 0xa1ed(%rip), %rdi      # 0x206d9
xorl %eax, %eax
callq 0x974c
leaq 0x1318e(%rip), %rsi     # 0x29688
xorl %edi, %edi
callq 0x9aa0
movl %r13d, 0x1317c(%rip)    # 0x29684
addq $0x58, %rsp
popq %rbx
popq %r12
popq %r13
popq %r14
popq %r15
popq %rbp
retq
movl (%rcx), %ecx
cmpl $0x10, %ecx
je 0x16031
cmpl $0x1f, %ecx
je 0x16031
movq %rax, 0x10(%rsp)
xorl %edi, %edi
jmp 0x16067