// File: /workspace/github_c_makefile_star2_O0/aap[P]rx-0/pdp1/mach.c
// Function: cycle0
static void
cycle0(PDP1 *pdp)
{
	switch(pdp->cychack) {
	default:
	// TP0
	if(IR_SHRO && (MB & B12)) shro(pdp);
	MA |= PC;

	// TP1
	if(IR_SHRO && (MB & B11)) shro(pdp);
	// emc = 0

	// TP2
	if(IR_SHRO && (MB & B10)) shro(pdp);
	PC = (PC+1) & ADDRMASK;
	if(IR_IOT) pdp->ioc = !pdp->ioh && !pdp->ihs;
	pdp->ihs = 0;

	// TP3
	if(IR_SHRO && (MB & B9)) shro(pdp);
	MB = 0;

	case 4:
	// TP4
	MB |= pdp->core[MA];
	pdp->core[MA] = 0;
	IR = 0;

	// TP5
	IR |= MB>>13;

	// TP6
	if((MB & B5) && !IR_SHRO && !IR_SKIP &&
	                !IR_LAW && !IR_OPR && !IR_IOT && !IR_CALJDA)
		pdp->df1 = 1;

	// TP6a
	if(IR_IOT && !(MB & B5) && pdp->ioh) {
		pdp->ioc = 1;
		pdp->ihs = 1;
		pdp->ioh = 0;
	}

	// TP7
	if(IR_SHRO && (MB & B17)) shro(pdp);
	if(IR_JSP && !pdp->df1 || IR_LAW || IR_OPR && (MB & B10)) AC = 0;
	if(IR_OPR && (MB & B6)) IO = 0;
	if(IR_IOT) {
		if((MB & B5) && !pdp->ioh && !pdp->ihs) pdp->ioh = 1;
// TODO: IOT pulse 7
	}

	// TP8
	if(!pdp->df1) {
		if(IR_JSP) AC |= PC, PC = 0;
		if(IR_JMP) PC = 0;
	}
	if(IR_SKIP) {
		int skip = 0;
		if((MB & B7) && !(IO&B0)) skip = 1;
		if((MB & B8) && !pdp->ov1) skip = 1;
		if((MB & B9) && (AC&B0)) skip = 1;
		if((MB & B10) && !(AC&B0)) skip = 1;
		if((MB & B11) && AC==0) skip = 1;
		if((MB&070) && !(pdp->ss&decflg(MB>>3))) skip = 1;
		if((MB&007) && !(pdp->pf&decflg(MB))) skip = 1;
		if(MB & B5) skip = !skip;
		if(skip) PC = (PC+1) & ADDRMASK;
	}
	if(IR_SHRO && (MB & B16)) shro(pdp);
	if(IR_LAW) AC |= MB & 0007777;
	if(IR_OPR) {
		if(MB & B7) AC |= pdp->tw;
		if(MB & B11) AC |= PC;
		if(MB & B14) pdp->pf |= decflg(MB);
		else pdp->pf &= ~decflg(MB);
	}

	// TP9
	pdp->core[MA] = MB;	// approximate
	if(!pdp->df1 && (IR_JMP || IR_JSP)) PC |= MB & ADDRMASK;
	if(IR_SKIP && (MB & B8)) pdp->ov1 = 0;
	if(IR_SHRO && (MB & B15)) shro(pdp);
	if(IR_OPR && (MB & B8) || IR_LAW && (MB & B5)) AC ^= 0777777;
	if(IR_IOT && !pdp->ihs && pdp->ios) pdp->ioh = 0;
	if(IR_OPR && (MB & B9) ||
	   IR_INCORR ||
	   pdp->single_cyc_sw ||
	   pdp->single_inst_sw && !pdp->df1 && pdp->ir >= 030 ||
	   !pdp->run_enable)
		pdp->run = 0;

	// TP9A
	if(IR_SHRO && (MB & B14)) shro(pdp);
	if(IR_IOT && pdp->ioh) PC = (PC-1) & ADDRMASK, pdp->df1 = pdp->df2 = 0;

	// TP10
	if(pdp->run) MA = 0;
	if(pdp->df1 || pdp->ir < 030) pdp->cyc = 1;
	if(IR_SHRO && (MB & B13)) shro(pdp);
	if(IR_IOT) {
		if(pdp->ihs) pdp->ioh = 1;
		else if(!pdp->ioh) pdp->ios = 0;
// TODO: IOT pulse 10
	}
	}

	pdp->cychack = 0;
}

// Assembly:
pushq %rbp
movq %rsp, %rbp
subq $0x20, %rsp
movq %rdi, -0x8(%rbp)
movq -0x8(%rbp), %rax
movl 0x4080(%rax), %eax
subl $0x4, %eax
je 0x585f
jmp 0x5751
movq -0x8(%rbp), %rax
cmpl $0x1b, 0x14(%rax)
jne 0x5773
movq -0x8(%rbp), %rax
movl 0x8(%rax), %eax
andl $0x20, %eax
cmpl $0x0, %eax
je 0x5773
movq -0x8(%rbp), %rdi
callq 0x6c20
movq -0x8(%rbp), %rax
movl 0x10(%rax), %ecx
movq -0x8(%rbp), %rax
orl 0xc(%rax), %ecx
movl %ecx, 0xc(%rax)
movq -0x8(%rbp), %rax
cmpl $0x1b, 0x14(%rax)
jne 0x57a6
movq -0x8(%rbp), %rax
movl 0x8(%rax), %eax
andl $0x40, %eax
cmpl $0x0, %eax
je 0x57a6
movq -0x8(%rbp), %rdi
callq 0x6c20
movq -0x8(%rbp), %rax
cmpl $0x1b, 0x14(%rax)
jne 0x57ca
movq -0x8(%rbp), %rax
movl 0x8(%rax), %eax
andl $0x80, %eax
cmpl $0x0, %eax
je 0x57ca
movq -0x8(%rbp), %rdi
callq 0x6c20
movq -0x8(%rbp), %rax
movl 0x10(%rax), %ecx
addl $0x1, %ecx
andl $0xfff, %ecx            # imm = 0xFFF
movq -0x8(%rbp), %rax
movl %ecx, 0x10(%rax)
movq -0x8(%rbp), %rax
cmpl $0x1d, 0x14(%rax)
jne 0x5822
movq -0x8(%rbp), %rcx
xorl %eax, %eax
cmpl $0x0, 0x406c(%rcx)
movb %al, -0xd(%rbp)
jne 0x5810
movq -0x8(%rbp), %rax
cmpl $0x0, 0x4064(%rax)
setne %al
xorb $-0x1, %al
movb %al, -0xd(%rbp)
movb -0xd(%rbp), %al
andb $0x1, %al
movzbl %al, %ecx
movq -0x8(%rbp), %rax
movl %ecx, 0x4060(%rax)
movq -0x8(%rbp), %rax
movl $0x0, 0x4064(%rax)
movq -0x8(%rbp), %rax
cmpl $0x1b, 0x14(%rax)
jne 0x5854
movq -0x8(%rbp), %rax
movl 0x8(%rax), %eax
andl $0x100, %eax            # imm = 0x100
cmpl $0x0, %eax
je 0x5854
movq -0x8(%rbp), %rdi
callq 0x6c20
movq -0x8(%rbp), %rax
movl $0x0, 0x8(%rax)
movq -0x8(%rbp), %rax
movq -0x8(%rbp), %rcx
movl 0xc(%rcx), %ecx
movl 0x18(%rax,%rcx,4), %ecx
movq -0x8(%rbp), %rax
orl 0x8(%rax), %ecx
movl %ecx, 0x8(%rax)
movq -0x8(%rbp), %rax
movq -0x8(%rbp), %rcx
movl 0xc(%rcx), %ecx
movl $0x0, 0x18(%rax,%rcx,4)
movq -0x8(%rbp), %rax
movl $0x0, 0x14(%rax)
movq -0x8(%rbp), %rax
movl 0x8(%rax), %ecx
shrl $0xd, %ecx
movq -0x8(%rbp), %rax
orl 0x14(%rax), %ecx
movl %ecx, 0x14(%rax)
movq -0x8(%rbp), %rax
movl 0x8(%rax), %eax
andl $0x1000, %eax           # imm = 0x1000
cmpl $0x0, %eax
je 0x5905
movq -0x8(%rbp), %rax
cmpl $0x1b, 0x14(%rax)
je 0x5905
movq -0x8(%rbp), %rax
cmpl $0x1a, 0x14(%rax)
je 0x5905
movq -0x8(%rbp), %rax
cmpl $0x1c, 0x14(%rax)
je 0x5905
movq -0x8(%rbp), %rax
cmpl $0x1f, 0x14(%rax)
je 0x5905
movq -0x8(%rbp), %rax
cmpl $0x1d, 0x14(%rax)
je 0x5905
movq -0x8(%rbp), %rax
cmpl $0x7, 0x14(%rax)
je 0x5905
movq -0x8(%rbp), %rax
movl $0x1, 0x4040(%rax)
movq -0x8(%rbp), %rax
cmpl $0x1d, 0x14(%rax)
jne 0x5957
movq -0x8(%rbp), %rax
movl 0x8(%rax), %eax
andl $0x1000, %eax           # imm = 0x1000
cmpl $0x0, %eax
jne 0x5957
movq -0x8(%rbp), %rax
cmpl $0x0, 0x406c(%rax)
je 0x5957
movq -0x8(%rbp), %rax
movl $0x1, 0x4060(%rax)
movq -0x8(%rbp), %rax
movl $0x1, 0x4064(%rax)
movq -0x8(%rbp), %rax
movl $0x0, 0x406c(%rax)
movq -0x8(%rbp), %rax
cmpl $0x1b, 0x14(%rax)
jne 0x5979
movq -0x8(%rbp), %rax
movl 0x8(%rax), %eax
andl $0x1, %eax
cmpl $0x0, %eax
je 0x5979
movq -0x8(%rbp), %rdi
callq 0x6c20
movq -0x8(%rbp), %rax
cmpl $0x19, 0x14(%rax)
jne 0x5990
movq -0x8(%rbp), %rax
cmpl $0x0, 0x4040(%rax)
je 0x59b5
movq -0x8(%rbp), %rax
cmpl $0x1c, 0x14(%rax)
je 0x59b5
movq -0x8(%rbp), %rax
cmpl $0x1f, 0x14(%rax)
jne 0x59bf
movq -0x8(%rbp), %rax
movl 0x8(%rax), %eax
andl $0x80, %eax
cmpl $0x0, %eax
je 0x59bf
movq -0x8(%rbp), %rax
movl $0x0, (%rax)
movq -0x8(%rbp), %rax
cmpl $0x1f, 0x14(%rax)
jne 0x59e5
movq -0x8(%rbp), %rax
movl 0x8(%rax), %eax
andl $0x800, %eax            # imm = 0x800
cmpl $0x0, %eax
je 0x59e5
movq -0x8(%rbp), %rax
movl $0x0, 0x4(%rax)
movq -0x8(%rbp), %rax
cmpl $0x1d, 0x14(%rax)
jne 0x5a2a
movq -0x8(%rbp), %rax
movl 0x8(%rax), %eax
andl $0x1000, %eax           # imm = 0x1000
cmpl $0x0, %eax
je 0x5a28
movq -0x8(%rbp), %rax
cmpl $0x0, 0x406c(%rax)
jne 0x5a28
movq -0x8(%rbp), %rax
cmpl $0x0, 0x4064(%rax)
jne 0x5a28
movq -0x8(%rbp), %rax
movl $0x1, 0x406c(%rax)
jmp 0x5a2a
movq -0x8(%rbp), %rax
cmpl $0x0, 0x4040(%rax)
jne 0x5a72
movq -0x8(%rbp), %rax
cmpl $0x19, 0x14(%rax)
jne 0x5a5b
movq -0x8(%rbp), %rax
movl 0x10(%rax), %ecx
movq -0x8(%rbp), %rax
orl (%rax), %ecx
movl %ecx, (%rax)
movq -0x8(%rbp), %rax
movl $0x0, 0x10(%rax)
movq -0x8(%rbp), %rax
cmpl $0x18, 0x14(%rax)
jne 0x5a70
movq -0x8(%rbp), %rax
movl $0x0, 0x10(%rax)
jmp 0x5a72
movq -0x8(%rbp), %rax
cmpl $0x1a, 0x14(%rax)
jne 0x5bfe
movl $0x0, -0xc(%rbp)
movq -0x8(%rbp), %rax
movl 0x8(%rax), %eax
andl $0x400, %eax            # imm = 0x400
cmpl $0x0, %eax
je 0x5ab0
movq -0x8(%rbp), %rax
movl 0x4(%rax), %eax
andl $0x20000, %eax          # imm = 0x20000
cmpl $0x0, %eax
jne 0x5ab0
movl $0x1, -0xc(%rbp)
movq -0x8(%rbp), %rax
movl 0x8(%rax), %eax
andl $0x200, %eax            # imm = 0x200
cmpl $0x0, %eax
je 0x5ad5
movq -0x8(%rbp), %rax
cmpl $0x0, 0x4050(%rax)
jne 0x5ad5
movl $0x1, -0xc(%rbp)
movq -0x8(%rbp), %rax
movl 0x8(%rax), %eax
andl $0x100, %eax            # imm = 0x100
cmpl $0x0, %eax
je 0x5afd
movq -0x8(%rbp), %rax
movl (%rax), %eax
andl $0x20000, %eax          # imm = 0x20000
cmpl $0x0, %eax
je 0x5afd
movl $0x1, -0xc(%rbp)
movq -0x8(%rbp), %rax
movl 0x8(%rax), %eax
andl $0x80, %eax
cmpl $0x0, %eax
je 0x5b25
movq -0x8(%rbp), %rax
movl (%rax), %eax
andl $0x20000, %eax          # imm = 0x20000
cmpl $0x0, %eax
jne 0x5b25
movl $0x1, -0xc(%rbp)
movq -0x8(%rbp), %rax
movl 0x8(%rax), %eax
andl $0x40, %eax
cmpl $0x0, %eax
je 0x5b44
movq -0x8(%rbp), %rax
cmpl $0x0, (%rax)
jne 0x5b44
movl $0x1, -0xc(%rbp)
movq -0x8(%rbp), %rax
movl 0x8(%rax), %eax
andl $0x38, %eax
cmpl $0x0, %eax
je 0x5b82
movq -0x8(%rbp), %rax
movl 0x4070(%rax), %eax
movl %eax, -0x14(%rbp)
movq -0x8(%rbp), %rax
movl 0x8(%rax), %edi
shrl $0x3, %edi
callq 0x6ec0
movl %eax, %ecx
movl -0x14(%rbp), %eax
andl %ecx, %eax
cmpl $0x0, %eax
jne 0x5b82
movl $0x1, -0xc(%rbp)
movq -0x8(%rbp), %rax
movl 0x8(%rax), %eax
andl $0x7, %eax
cmpl $0x0, %eax
je 0x5bbd
movq -0x8(%rbp), %rax
movl 0x4074(%rax), %eax
movl %eax, -0x18(%rbp)
movq -0x8(%rbp), %rax
movl 0x8(%rax), %edi
callq 0x6ec0
movl %eax, %ecx
movl -0x18(%rbp), %eax
andl %ecx, %eax
cmpl $0x0, %eax
jne 0x5bbd
movl $0x1, -0xc(%rbp)
movq -0x8(%rbp), %rax
movl 0x8(%rax), %eax
andl $0x1000, %eax           # imm = 0x1000
cmpl $0x0, %eax
je 0x5bdf
cmpl $0x0, -0xc(%rbp)
setne %al
xorb $-0x1, %al
andb $0x1, %al
movzbl %al, %eax
movl %eax, -0xc(%rbp)
cmpl $0x0, -0xc(%rbp)
je 0x5bfc
movq -0x8(%rbp), %rax
movl 0x10(%rax), %ecx
addl $0x1, %ecx
andl $0xfff, %ecx            # imm = 0xFFF
movq -0x8(%rbp), %rax
movl %ecx, 0x10(%rax)
jmp 0x5bfe
movq -0x8(%rbp), %rax
cmpl $0x1b, 0x14(%rax)
jne 0x5c20
movq -0x8(%rbp), %rax
movl 0x8(%rax), %eax
andl $0x2, %eax
cmpl $0x0, %eax
je 0x5c20
movq -0x8(%rbp), %rdi
callq 0x6c20
movq -0x8(%rbp), %rax
cmpl $0x1c, 0x14(%rax)
jne 0x5c3f
movq -0x8(%rbp), %rax
movl 0x8(%rax), %ecx
andl $0xfff, %ecx            # imm = 0xFFF
movq -0x8(%rbp), %rax
orl (%rax), %ecx
movl %ecx, (%rax)
movq -0x8(%rbp), %rax
cmpl $0x1f, 0x14(%rax)
jne 0x5ce0
movq -0x8(%rbp), %rax
movl 0x8(%rax), %eax
andl $0x400, %eax            # imm = 0x400
cmpl $0x0, %eax
je 0x5c70
movq -0x8(%rbp), %rax
movl 0x401c(%rax), %ecx
movq -0x8(%rbp), %rax
orl (%rax), %ecx
movl %ecx, (%rax)
movq -0x8(%rbp), %rax
movl 0x8(%rax), %eax
andl $0x40, %eax
cmpl $0x0, %eax
je 0x5c8e
movq -0x8(%rbp), %rax
movl 0x10(%rax), %ecx
movq -0x8(%rbp), %rax
orl (%rax), %ecx
movl %ecx, (%rax)
movq -0x8(%rbp), %rax
movl 0x8(%rax), %eax
andl $0x8, %eax
cmpl $0x0, %eax
je 0x5cbd
movq -0x8(%rbp), %rax
movl 0x8(%rax), %edi
callq 0x6ec0
movl %eax, %ecx
movq -0x8(%rbp), %rax
orl 0x4074(%rax), %ecx
movl %ecx, 0x4074(%rax)
jmp 0x5cde
movq -0x8(%rbp), %rax
movl 0x8(%rax), %edi
callq 0x6ec0
movl %eax, %ecx
xorl $-0x1, %ecx
movq -0x8(%rbp), %rax
andl 0x4074(%rax), %ecx
movl %ecx, 0x4074(%rax)
jmp 0x5ce0
movq -0x8(%rbp), %rax
movl 0x8(%rax), %edx
movq -0x8(%rbp), %rax
movq -0x8(%rbp), %rcx
movl 0xc(%rcx), %ecx
movl %edx, 0x18(%rax,%rcx,4)
movq -0x8(%rbp), %rax
cmpl $0x0, 0x4040(%rax)
jne 0x5d2e
movq -0x8(%rbp), %rax
cmpl $0x18, 0x14(%rax)
je 0x5d17
movq -0x8(%rbp), %rax
cmpl $0x19, 0x14(%rax)
jne 0x5d2e
movq -0x8(%rbp), %rax
movl 0x8(%rax), %ecx
andl $0xfff, %ecx            # imm = 0xFFF
movq -0x8(%rbp), %rax
orl 0x10(%rax), %ecx
movl %ecx, 0x10(%rax)
movq -0x8(%rbp), %rax
cmpl $0x1a, 0x14(%rax)
jne 0x5d57
movq -0x8(%rbp), %rax
movl 0x8(%rax), %eax
andl $0x200, %eax            # imm = 0x200
cmpl $0x0, %eax
je 0x5d57
movq -0x8(%rbp), %rax
movl $0x0, 0x4050(%rax)
movq -0x8(%rbp), %rax
cmpl $0x1b, 0x14(%rax)
jne 0x5d79
movq -0x8(%rbp), %rax
movl 0x8(%rax), %eax
andl $0x4, %eax
cmpl $0x0, %eax
je 0x5d79
movq -0x8(%rbp), %rdi
callq 0x6c20
movq -0x8(%rbp), %rax
cmpl $0x1f, 0x14(%rax)
jne 0x5d94
movq -0x8(%rbp), %rax
movl 0x8(%rax), %eax
andl $0x200, %eax            # imm = 0x200
cmpl $0x0, %eax
jne 0x5daf
movq -0x8(%rbp), %rax
cmpl $0x1c, 0x14(%rax)
jne 0x5dbd
movq -0x8(%rbp), %rax
movl 0x8(%rax), %eax
andl $0x1000, %eax           # imm = 0x1000
cmpl $0x0, %eax
je 0x5dbd
movq -0x8(%rbp), %rax
movl (%rax), %ecx
xorl $0x3ffff, %ecx          # imm = 0x3FFFF
movl %ecx, (%rax)
movq -0x8(%rbp), %rax
cmpl $0x1d, 0x14(%rax)
jne 0x5def
movq -0x8(%rbp), %rax
cmpl $0x0, 0x4064(%rax)
jne 0x5def
movq -0x8(%rbp), %rax
cmpl $0x0, 0x4068(%rax)
je 0x5def
movq -0x8(%rbp), %rax
movl $0x0, 0x406c(%rax)
movq -0x8(%rbp), %rax
cmpl $0x1f, 0x14(%rax)
jne 0x5e0a
movq -0x8(%rbp), %rax
movl 0x8(%rax), %eax
andl $0x100, %eax            # imm = 0x100
cmpl $0x0, %eax
jne 0x5e7a
movq -0x8(%rbp), %rax
cmpl $0x0, 0x14(%rax)
je 0x5e7a
movq -0x8(%rbp), %rax
cmpl $0x5, 0x14(%rax)
je 0x5e7a
movq -0x8(%rbp), %rax
cmpl $0x6, 0x14(%rax)
je 0x5e7a
movq -0x8(%rbp), %rax
cmpl $0xf, 0x14(%rax)
je 0x5e7a
movq -0x8(%rbp), %rax
cmpl $0x1e, 0x14(%rax)
je 0x5e7a
movq -0x8(%rbp), %rax
cmpl $0x0, 0x4078(%rax)
jne 0x5e7a
movq -0x8(%rbp), %rax
cmpl $0x0, 0x407c(%rax)
je 0x5e6d
movq -0x8(%rbp), %rax
cmpl $0x0, 0x4040(%rax)
jne 0x5e6d
movq -0x8(%rbp), %rax
cmpl $0x18, 0x14(%rax)
jae 0x5e7a
movq -0x8(%rbp), %rax
cmpl $0x0, 0x4038(%rax)
jne 0x5e88
movq -0x8(%rbp), %rax
movl $0x0, 0x4034(%rax)
movq -0x8(%rbp), %rax
cmpl $0x1b, 0x14(%rax)
jne 0x5eaa
movq -0x8(%rbp), %rax
movl 0x8(%rax), %eax
andl $0x8, %eax
cmpl $0x0, %eax
je 0x5eaa
movq -0x8(%rbp), %rdi
callq 0x6c20
movq -0x8(%rbp), %rax
cmpl $0x1d, 0x14(%rax)
jne 0x5ef4
movq -0x8(%rbp), %rax
cmpl $0x0, 0x406c(%rax)
je 0x5ef4
movq -0x8(%rbp), %rax
movl 0x10(%rax), %ecx
subl $0x1, %ecx
andl $0xfff, %ecx            # imm = 0xFFF
movq -0x8(%rbp), %rax
movl %ecx, 0x10(%rax)
movq -0x8(%rbp), %rax
movl $0x0, 0x4044(%rax)
movq -0x8(%rbp), %rax
movl $0x0, 0x4040(%rax)
movq -0x8(%rbp), %rax
cmpl $0x0, 0x4034(%rax)
je 0x5f0c
movq -0x8(%rbp), %rax
movl $0x0, 0xc(%rax)
movq -0x8(%rbp), %rax
cmpl $0x0, 0x4040(%rax)
jne 0x5f23
movq -0x8(%rbp), %rax
cmpl $0x18, 0x14(%rax)
jae 0x5f31
movq -0x8(%rbp), %rax
movl $0x1, 0x403c(%rax)
movq -0x8(%rbp), %rax
cmpl $0x1b, 0x14(%rax)
jne 0x5f53
movq -0x8(%rbp), %rax
movl 0x8(%rax), %eax
andl $0x10, %eax
cmpl $0x0, %eax
je 0x5f53
movq -0x8(%rbp), %rdi
callq 0x6c20
movq -0x8(%rbp), %rax
cmpl $0x1d, 0x14(%rax)
jne 0x5f99
movq -0x8(%rbp), %rax
cmpl $0x0, 0x4064(%rax)
je 0x5f7a
movq -0x8(%rbp), %rax
movl $0x1, 0x406c(%rax)
jmp 0x5f97
movq -0x8(%rbp), %rax
cmpl $0x0, 0x406c(%rax)
jne 0x5f95
movq -0x8(%rbp), %rax
movl $0x0, 0x4068(%rax)
jmp 0x5f97
jmp 0x5f99
jmp 0x5f9b
movq -0x8(%rbp), %rax
movl $0x0, 0x4080(%rax)
addq $0x20, %rsp
popq %rbp
retq
nop