// File: /workspace/github_c_makefile_star2_O0/hughbarney[P]pEmacs/region.c
// Function: getregion
int getregion (REGION *rp)
{
  LINE *flp, *blp;
  int fsize, bsize;

  if (curwp->w_markp == (struct LINE*)0)
    {
      mlwrite ("No mark set in this window");
      return (FALSE);
    }
  if (curwp->w_dotp == curwp->w_markp)
    {
      rp->r_linep = curwp->w_dotp;
      if (curwp->w_doto < curwp->w_marko)
	{
	  rp->r_offset = curwp->w_doto;
	  rp->r_size = curwp->w_marko - curwp->w_doto;
	}
      else
	{
	  rp->r_offset = curwp->w_marko;
	  rp->r_size = curwp->w_doto - curwp->w_marko;
	}
      return (TRUE);
    }
  blp = curwp->w_dotp;
  bsize = curwp->w_doto;
  flp = curwp->w_dotp;
  fsize = llength (flp) - curwp->w_doto + 1;
  while (flp != curbp->b_linep || lback (blp) != curbp->b_linep)
    {
      if (flp != curbp->b_linep)
	{
	  flp = lforw (flp);
	  if (flp == curwp->w_markp)
	    {
	      rp->r_linep = curwp->w_dotp;
	      rp->r_offset = curwp->w_doto;
	      rp->r_size = fsize + curwp->w_marko;
	      return (TRUE);
	    }
	  fsize += llength (flp) + 1;
	}
      if (lback (blp) != curbp->b_linep)
	{
	  blp = lback (blp);
	  bsize += llength (blp) + 1;
	  if (blp == curwp->w_markp)
	    {
	      rp->r_linep = blp;
	      rp->r_offset = curwp->w_marko;
	      rp->r_size = bsize - curwp->w_marko;
	      return (TRUE);
	    }
	}
    }
  mlwrite ("Bug: lost mark");
  return (FALSE);
}

// Assembly:
pushq %rbp
movq %rsp, %rbp
subq $0x30, %rsp
movq %rdi, -0x10(%rbp)
leaq 0x7c15(%rip), %rax      # 0x10a58
movq (%rax), %rax
cmpq $0x0, 0x28(%rax)
jne 0x8e67
leaq 0x3796(%rip), %rdi      # 0xc5ea
movb $0x0, %al
callq 0x56d0
movl $0x0, -0x4(%rbp)
jmp 0x9111
leaq 0x7bea(%rip), %rax      # 0x10a58
movq (%rax), %rax
movq 0x18(%rax), %rax
leaq 0x7bdc(%rip), %rcx      # 0x10a58
movq (%rcx), %rcx
cmpq 0x28(%rcx), %rax
jne 0x8f3e
leaq 0x7bc8(%rip), %rax      # 0x10a58
movq (%rax), %rax
movq 0x18(%rax), %rcx
movq -0x10(%rbp), %rax
movq %rcx, (%rax)
leaq 0x7bb3(%rip), %rax      # 0x10a58
movq (%rax), %rax
movq 0x20(%rax), %rax
leaq 0x7ba5(%rip), %rcx      # 0x10a58
movq (%rcx), %rcx
cmpq 0x30(%rcx), %rax
jge 0x8ef8
leaq 0x7b95(%rip), %rax      # 0x10a58
movq (%rax), %rax
movq 0x20(%rax), %rcx
movq -0x10(%rbp), %rax
movq %rcx, 0x8(%rax)
leaq 0x7b7f(%rip), %rax      # 0x10a58
movq (%rax), %rax
movq 0x30(%rax), %rcx
leaq 0x7b71(%rip), %rax      # 0x10a58
movq (%rax), %rax
subq 0x20(%rax), %rcx
movq -0x10(%rbp), %rax
movq %rcx, 0x10(%rax)
jmp 0x8f32
leaq 0x7b59(%rip), %rax      # 0x10a58
movq (%rax), %rax
movq 0x30(%rax), %rcx
movq -0x10(%rbp), %rax
movq %rcx, 0x8(%rax)
leaq 0x7b43(%rip), %rax      # 0x10a58
movq (%rax), %rax
movq 0x20(%rax), %rcx
leaq 0x7b35(%rip), %rax      # 0x10a58
movq (%rax), %rax
subq 0x30(%rax), %rcx
movq -0x10(%rbp), %rax
movq %rcx, 0x10(%rax)
movl $0x1, -0x4(%rbp)
jmp 0x9111
leaq 0x7b13(%rip), %rax      # 0x10a58
movq (%rax), %rax
movq 0x18(%rax), %rax
movq %rax, -0x20(%rbp)
leaq 0x7b01(%rip), %rax      # 0x10a58
movq (%rax), %rax
movq 0x20(%rax), %rax
movl %eax, -0x28(%rbp)
leaq 0x7af0(%rip), %rax      # 0x10a58
movq (%rax), %rax
movq 0x18(%rax), %rax
movq %rax, -0x18(%rbp)
movq -0x18(%rbp), %rax
movslq 0x14(%rax), %rax
leaq 0x7ad6(%rip), %rcx      # 0x10a58
movq (%rcx), %rcx
subq 0x20(%rcx), %rax
addq $0x1, %rax
movl %eax, -0x24(%rbp)
movq -0x18(%rbp), %rcx
leaq 0x7aad(%rip), %rax      # 0x10a48
movq (%rax), %rdx
movb $0x1, %al
cmpq 0x28(%rdx), %rcx
movb %al, -0x29(%rbp)
jne 0x8fc5
movq -0x20(%rbp), %rax
movq 0x8(%rax), %rax
leaq 0x7a90(%rip), %rcx      # 0x10a48
movq (%rcx), %rcx
cmpq 0x28(%rcx), %rax
setne %al
movb %al, -0x29(%rbp)
movb -0x29(%rbp), %al
testb $0x1, %al
jne 0x8fd1
jmp 0x90fc
movq -0x18(%rbp), %rax
leaq 0x7a6c(%rip), %rcx      # 0x10a48
movq (%rcx), %rcx
cmpq 0x28(%rcx), %rax
je 0x9069
movq -0x18(%rbp), %rax
movq (%rax), %rax
movq %rax, -0x18(%rbp)
movq -0x18(%rbp), %rax
leaq 0x7a59(%rip), %rcx      # 0x10a58
movq (%rcx), %rcx
cmpq 0x28(%rcx), %rax
jne 0x9059
leaq 0x7a49(%rip), %rax      # 0x10a58
movq (%rax), %rax
movq 0x18(%rax), %rcx
movq -0x10(%rbp), %rax
movq %rcx, (%rax)
leaq 0x7a34(%rip), %rax      # 0x10a58
movq (%rax), %rax
movq 0x20(%rax), %rcx
movq -0x10(%rbp), %rax
movq %rcx, 0x8(%rax)
movslq -0x24(%rbp), %rcx
leaq 0x7a1a(%rip), %rax      # 0x10a58
movq (%rax), %rax
addq 0x30(%rax), %rcx
movq -0x10(%rbp), %rax
movq %rcx, 0x10(%rax)
movl $0x1, -0x4(%rbp)
jmp 0x9111
movq -0x18(%rbp), %rax
movl 0x14(%rax), %eax
addl $0x1, %eax
addl -0x24(%rbp), %eax
movl %eax, -0x24(%rbp)
movq -0x20(%rbp), %rax
movq 0x8(%rax), %rax
leaq 0x79d0(%rip), %rcx      # 0x10a48
movq (%rcx), %rcx
cmpq 0x28(%rcx), %rax
je 0x90f7
movq -0x20(%rbp), %rax
movq 0x8(%rax), %rax
movq %rax, -0x20(%rbp)
movq -0x20(%rbp), %rax
movl 0x14(%rax), %eax
addl $0x1, %eax
addl -0x28(%rbp), %eax
movl %eax, -0x28(%rbp)
movq -0x20(%rbp), %rax
leaq 0x79b0(%rip), %rcx      # 0x10a58
movq (%rcx), %rcx
cmpq 0x28(%rcx), %rax
jne 0x90f5
movq -0x20(%rbp), %rcx
movq -0x10(%rbp), %rax
movq %rcx, (%rax)
leaq 0x7995(%rip), %rax      # 0x10a58
movq (%rax), %rax
movq 0x30(%rax), %rcx
movq -0x10(%rbp), %rax
movq %rcx, 0x8(%rax)
movslq -0x28(%rbp), %rcx
leaq 0x797b(%rip), %rax      # 0x10a58
movq (%rax), %rax
subq 0x30(%rax), %rcx
movq -0x10(%rbp), %rax
movq %rcx, 0x10(%rax)
movl $0x1, -0x4(%rbp)
jmp 0x9111
jmp 0x90f7
jmp 0x8f90
leaq 0x3502(%rip), %rdi      # 0xc605
movb $0x0, %al
callq 0x56d0
movl $0x0, -0x4(%rbp)
movl -0x4(%rbp), %eax
addq $0x30, %rsp
popq %rbp
retq
nopw (%rax,%rax)