// File: /workspace/github_c_makefile_star2_O0/aap[P]pdp11/kd11a.c
// Function: dati_cpu
static int
dati_cpu(KD11A *cpu)
{
	/* internal registers */
	// actually just BA without KT11
	if(PBA > 0760000){
#ifdef KT11
		if((PBA&0777760) == 0772300){
			UNIBUS_DATA = rdpdr(cpu, 8 + (PBA>>1 & 7));
			goto ok;
		}else if((PBA&0777760) == 0772340){
			UNIBUS_DATA = cpu->par[8 + (PBA>>1 & 7)];
			goto ok;
		}else if((PBA&0777760) == 0777600){
			UNIBUS_DATA = rdpdr(cpu, PBA>>1 & 7);
			goto ok;
		}else if((PBA&0777760) == 0777640){
			UNIBUS_DATA = cpu->par[PBA>>1 & 7];
			goto ok;
		}else if((PBA&~1) == 0777572){
			UNIBUS_DATA = cpu->sr0;
			goto ok;
		}else if((PBA&~1) == 0777574){
			UNIBUS_DATA = 0;
			goto ok;
		}else if((PBA&~1) == 0777576){
			UNIBUS_DATA = cpu->sr2;
			goto ok;
		}else
#endif
		if((PBA&0777400) == 0777400){
			switch(PBA&0377){
			case 0170: case 0171:
				UNIBUS_DATA = cpu->sw;
				goto ok;
#ifdef KJ11
			case 0374: case 0375:
				UNIBUS_DATA = cpu->slr;
				goto ok;
#endif
			case 0376: case 0377:
				UNIBUS_DATA = rdps(cpu);
				goto ok;
			}
		}
	}
	return 0;
ok:	return 1;
}

// Assembly:
pushq %rbp
movq %rsp, %rbp
subq $0x20, %rsp
movq %rdi, -0x10(%rbp)
movq -0x10(%rbp), %rax
movq 0x28(%rax), %rax
cmpl $0x3e000, 0x8(%rax)     # imm = 0x3E000
jbe 0x9ab5
movq -0x10(%rbp), %rax
movq 0x28(%rax), %rax
movl 0x8(%rax), %eax
andl $0x3fff0, %eax          # imm = 0x3FFF0
cmpl $0x3f4c0, %eax          # imm = 0x3F4C0
jne 0x98a8
movq -0x10(%rbp), %rdi
movq -0x10(%rbp), %rax
movq 0x28(%rax), %rax
movl 0x8(%rax), %esi
shrl %esi
andl $0x7, %esi
addl $0x8, %esi
callq 0x9bd0
movw %ax, %cx
movq -0x10(%rbp), %rax
movq 0x28(%rax), %rax
movw %cx, 0xc(%rax)
jmp 0x9abe
movq -0x10(%rbp), %rax
movq 0x28(%rax), %rax
movl 0x8(%rax), %eax
andl $0x3fff0, %eax          # imm = 0x3FFF0
cmpl $0x3f4e0, %eax          # imm = 0x3F4E0
jne 0x98f1
movq -0x10(%rbp), %rax
movq -0x10(%rbp), %rcx
movq 0x28(%rcx), %rcx
movl 0x8(%rcx), %ecx
shrl %ecx
andl $0x7, %ecx
addl $0x8, %ecx
movl %ecx, %ecx
movw 0x8c(%rax,%rcx,2), %cx
movq -0x10(%rbp), %rax
movq 0x28(%rax), %rax
movw %cx, 0xc(%rax)
jmp 0x9abe
movq -0x10(%rbp), %rax
movq 0x28(%rax), %rax
movl 0x8(%rax), %eax
andl $0x3fff0, %eax          # imm = 0x3FFF0
cmpl $0x3ff80, %eax          # imm = 0x3FF80
jne 0x9935
movq -0x10(%rbp), %rdi
movq -0x10(%rbp), %rax
movq 0x28(%rax), %rax
movl 0x8(%rax), %esi
shrl %esi
andl $0x7, %esi
callq 0x9bd0
movw %ax, %cx
movq -0x10(%rbp), %rax
movq 0x28(%rax), %rax
movw %cx, 0xc(%rax)
jmp 0x9abe
movq -0x10(%rbp), %rax
movq 0x28(%rax), %rax
movl 0x8(%rax), %eax
andl $0x3fff0, %eax          # imm = 0x3FFF0
cmpl $0x3ffa0, %eax          # imm = 0x3FFA0
jne 0x997b
movq -0x10(%rbp), %rax
movq -0x10(%rbp), %rcx
movq 0x28(%rcx), %rcx
movl 0x8(%rcx), %ecx
shrl %ecx
andl $0x7, %ecx
movl %ecx, %ecx
movw 0x8c(%rax,%rcx,2), %cx
movq -0x10(%rbp), %rax
movq 0x28(%rax), %rax
movw %cx, 0xc(%rax)
jmp 0x9abe
movq -0x10(%rbp), %rax
movq 0x28(%rax), %rax
movl 0x8(%rax), %eax
andl $-0x2, %eax
cmpl $0x3ff7a, %eax          # imm = 0x3FF7A
jne 0x99ac
movq -0x10(%rbp), %rax
movw 0x138(%rax), %cx
movq -0x10(%rbp), %rax
movq 0x28(%rax), %rax
movw %cx, 0xc(%rax)
jmp 0x9abe
movq -0x10(%rbp), %rax
movq 0x28(%rax), %rax
movl 0x8(%rax), %eax
andl $-0x2, %eax
cmpl $0x3ff7c, %eax          # imm = 0x3FF7C
jne 0x99d4
movq -0x10(%rbp), %rax
movq 0x28(%rax), %rax
movw $0x0, 0xc(%rax)
jmp 0x9abe
movq -0x10(%rbp), %rax
movq 0x28(%rax), %rax
movl 0x8(%rax), %eax
andl $-0x2, %eax
cmpl $0x3ff7e, %eax          # imm = 0x3FF7E
jne 0x9a05
movq -0x10(%rbp), %rax
movw 0x13a(%rax), %cx
movq -0x10(%rbp), %rax
movq 0x28(%rax), %rax
movw %cx, 0xc(%rax)
jmp 0x9abe
movq -0x10(%rbp), %rax
movq 0x28(%rax), %rax
movl 0x8(%rax), %eax
andl $0x3ff00, %eax          # imm = 0x3FF00
cmpl $0x3ff00, %eax          # imm = 0x3FF00
jne 0x9aa5
movq -0x10(%rbp), %rax
movq 0x28(%rax), %rax
movzbl 0x8(%rax), %eax
movl %eax, -0x14(%rbp)
addl $-0x78, %eax
subl $0x2, %eax
jb 0x9a57
jmp 0x9a39
movl -0x14(%rbp), %eax
addl $0xffffff04, %eax       # imm = 0xFFFFFF04
subl $0x2, %eax
jb 0x9a70
jmp 0x9a48
movl -0x14(%rbp), %eax
addl $0xffffff02, %eax       # imm = 0xFFFFFF02
subl $0x2, %eax
jb 0x9a89
jmp 0x9aa3
movq -0x10(%rbp), %rax
movw 0x80(%rax), %cx
movq -0x10(%rbp), %rax
movq 0x28(%rax), %rax
movw %cx, 0xc(%rax)
jmp 0x9abe
movq -0x10(%rbp), %rax
movw 0x82(%rax), %cx
movq -0x10(%rbp), %rax
movq 0x28(%rax), %rax
movw %cx, 0xc(%rax)
jmp 0x9abe
movq -0x10(%rbp), %rdi
callq 0x8c50
movw %ax, %cx
movq -0x10(%rbp), %rax
movq 0x28(%rax), %rax
movw %cx, 0xc(%rax)
jmp 0x9abe
jmp 0x9aa5
jmp 0x9aa7
jmp 0x9aa9
jmp 0x9aab
jmp 0x9aad
jmp 0x9aaf
jmp 0x9ab1
jmp 0x9ab3
jmp 0x9ab5
movl $0x0, -0x4(%rbp)
jmp 0x9ac5
movl $0x1, -0x4(%rbp)
movl -0x4(%rbp), %eax
addq $0x20, %rsp
popq %rbp
retq
nop