// File: /workspace/github_c_makefile_star2_O0/hughbarney[P]pEmacs/buffer.c
// Function: swbuffer
int swbuffer (BUFFER *bp)
{
  WINDOW *wp;

  if (--curbp->b_nwnd == 0)
    {				/* Last use. */
      curbp->b_dotp = curwp->w_dotp;
      curbp->b_doto = curwp->w_doto;
      curbp->b_markp = curwp->w_markp;
      curbp->b_marko = curwp->w_marko;
    }
  curbp = bp;			/* Switch. */
  if (curbp->b_active != TRUE)
    {				/* buffer not active yet */
      /* read it in and activate it */
      readin (curbp->b_fname);
      curbp->b_dotp = lforw (curbp->b_linep);
      curbp->b_doto = 0;
      curbp->b_active = TRUE;
    }
  curwp->w_bufp = bp;
  curwp->w_linep = bp->b_linep;	/* For macros, ignored */
  curwp->w_flag |= WFMODE | WFFORCE | WFHARD; /* Quite nasty */
  if (bp->b_nwnd++ == 0)
    {				/* First use */
      curwp->w_dotp = bp->b_dotp;
      curwp->w_doto = bp->b_doto;
      curwp->w_markp = bp->b_markp;
      curwp->w_marko = bp->b_marko;
      return (TRUE);
    }
  wp = wheadp;			/* Look for old */
  while (wp != 0)
    {
      if (wp != curwp && wp->w_bufp == bp)
	{
	  curwp->w_dotp = wp->w_dotp;
	  curwp->w_doto = wp->w_doto;
	  curwp->w_markp = wp->w_markp;
	  curwp->w_marko = wp->w_marko;
	  break;
	}
      wp = wp->w_wndp;
    }
  return (TRUE);
}

// Assembly:
pushq %rbp
movq %rsp, %rbp
subq $0x20, %rsp
movq %rdi, -0x10(%rbp)
leaq 0xdce5(%rip), %rax      # 0x10a48
movq (%rax), %rcx
movb 0x31(%rcx), %al
addb $-0x1, %al
movb %al, 0x31(%rcx)
movsbl %al, %eax
cmpl $0x0, %eax
jne 0x2de6
leaq 0xdcdb(%rip), %rax      # 0x10a58
movq (%rax), %rax
movq 0x18(%rax), %rcx
leaq 0xdcbd(%rip), %rax      # 0x10a48
movq (%rax), %rax
movq %rcx, 0x8(%rax)
leaq 0xdcbf(%rip), %rax      # 0x10a58
movq (%rax), %rax
movq 0x20(%rax), %rcx
leaq 0xdca1(%rip), %rax      # 0x10a48
movq (%rax), %rax
movq %rcx, 0x10(%rax)
leaq 0xdca3(%rip), %rax      # 0x10a58
movq (%rax), %rax
movq 0x28(%rax), %rcx
leaq 0xdc85(%rip), %rax      # 0x10a48
movq (%rax), %rax
movq %rcx, 0x18(%rax)
leaq 0xdc87(%rip), %rax      # 0x10a58
movq (%rax), %rax
movq 0x30(%rax), %rcx
leaq 0xdc69(%rip), %rax      # 0x10a48
movq (%rax), %rax
movq %rcx, 0x20(%rax)
movq -0x10(%rbp), %rcx
leaq 0xdc57(%rip), %rax      # 0x10a48
movq %rcx, (%rax)
leaq 0xdc4d(%rip), %rax      # 0x10a48
movq (%rax), %rax
movsbl 0x30(%rax), %eax
cmpl $0x1, %eax
je 0x2e59
leaq 0xdc3a(%rip), %rax      # 0x10a48
movq (%rax), %rdi
addq $0x33, %rdi
callq 0x6270
leaq 0xdc27(%rip), %rax      # 0x10a48
movq (%rax), %rax
movq 0x28(%rax), %rax
movq (%rax), %rcx
leaq 0xdc16(%rip), %rax      # 0x10a48
movq (%rax), %rax
movq %rcx, 0x8(%rax)
leaq 0xdc08(%rip), %rax      # 0x10a48
movq (%rax), %rax
movq $0x0, 0x10(%rax)
leaq 0xdbf6(%rip), %rax      # 0x10a48
movq (%rax), %rax
movb $0x1, 0x30(%rax)
movq -0x10(%rbp), %rcx
leaq 0xdbf4(%rip), %rax      # 0x10a58
movq (%rax), %rax
movq %rcx, 0x8(%rax)
movq -0x10(%rbp), %rax
movq 0x28(%rax), %rcx
leaq 0xdbde(%rip), %rax      # 0x10a58
movq (%rax), %rax
movq %rcx, 0x10(%rax)
leaq 0xdbd0(%rip), %rax      # 0x10a58
movq (%rax), %rax
movsbl 0x3b(%rax), %ecx
orl $0x19, %ecx
movb %cl, 0x3b(%rax)
movq -0x10(%rbp), %rcx
movb 0x31(%rcx), %al
movb %al, %dl
addb $0x1, %dl
movb %dl, 0x31(%rcx)
movsbl %al, %eax
cmpl $0x0, %eax
jne 0x2f10
movq -0x10(%rbp), %rax
movq 0x8(%rax), %rcx
leaq 0xdb9d(%rip), %rax      # 0x10a58
movq (%rax), %rax
movq %rcx, 0x18(%rax)
movq -0x10(%rbp), %rax
movq 0x10(%rax), %rcx
leaq 0xdb87(%rip), %rax      # 0x10a58
movq (%rax), %rax
movq %rcx, 0x20(%rax)
movq -0x10(%rbp), %rax
movq 0x18(%rax), %rcx
leaq 0xdb71(%rip), %rax      # 0x10a58
movq (%rax), %rax
movq %rcx, 0x28(%rax)
movq -0x10(%rbp), %rax
movq 0x20(%rax), %rcx
leaq 0xdb5b(%rip), %rax      # 0x10a58
movq (%rax), %rax
movq %rcx, 0x30(%rax)
movl $0x1, -0x4(%rbp)
jmp 0x2fb8
leaq 0xdb59(%rip), %rax      # 0x10a70
movq (%rax), %rax
movq %rax, -0x18(%rbp)
cmpq $0x0, -0x18(%rbp)
je 0x2fb1
movq -0x18(%rbp), %rax
leaq 0xdb24(%rip), %rcx      # 0x10a58
cmpq (%rcx), %rax
je 0x2fa1
movq -0x18(%rbp), %rax
movq 0x8(%rax), %rax
cmpq -0x10(%rbp), %rax
jne 0x2fa1
movq -0x18(%rbp), %rax
movq 0x18(%rax), %rcx
leaq 0xdb02(%rip), %rax      # 0x10a58
movq (%rax), %rax
movq %rcx, 0x18(%rax)
movq -0x18(%rbp), %rax
movq 0x20(%rax), %rcx
leaq 0xdaec(%rip), %rax      # 0x10a58
movq (%rax), %rax
movq %rcx, 0x20(%rax)
movq -0x18(%rbp), %rax
movq 0x28(%rax), %rcx
leaq 0xdad6(%rip), %rax      # 0x10a58
movq (%rax), %rax
movq %rcx, 0x28(%rax)
movq -0x18(%rbp), %rax
movq 0x30(%rax), %rcx
leaq 0xdac0(%rip), %rax      # 0x10a58
movq (%rax), %rax
movq %rcx, 0x30(%rax)
jmp 0x2fb1
movq -0x18(%rbp), %rax
movq (%rax), %rax
movq %rax, -0x18(%rbp)
jmp 0x2f1e
movl $0x1, -0x4(%rbp)
movl -0x4(%rbp), %eax
addq $0x20, %rsp
popq %rbp
retq
nopw %cs:(%rax,%rax)