// File: /workspace/github_c_makefile_star2_O0/hughbarney[P]pEmacs/line.c
// Function: linsert
int linsert (int n, int c)
{
  WINDOW *wp;
  LINE *lp1, *lp2, *lp3;
  char *cp1, *cp2;
  int i, doto;

  lchange (WFEDIT);
  lp1 = curwp->w_dotp;	       /* Current line */
  if (lp1 == curbp->b_linep)
    {			       /* At the end: special */
      if (curwp->w_doto != 0)
	{
	  mlwrite ("bug: linsert");
	  return (FALSE);
	}
      if ((lp2 = lalloc (n)) == NULL)	/* Allocate new line */
	return (FALSE);
      lp3 = lp1->l_bp;	       /* Previous line */
      lp3->l_fp = lp2;	       /* Link in */
      lp2->l_fp = lp1;
      lp1->l_bp = lp2;
      lp2->l_bp = lp3;
      for (i = 0; i < n; ++i)
	lp2->l_text[i] = c;
      curwp->w_dotp = lp2;
      curwp->w_doto = n;
      return (TRUE);
    }
  doto = curwp->w_doto;	       /* Save for later */
  if (lp1->l_used + n > lp1->l_size)
    {			       /* Hard: reallocate */
      if ((lp2 = lalloc (lp1->l_used + n)) == NULL)
	return (FALSE);
      cp1 = &lp1->l_text[0];
      cp2 = &lp2->l_text[0];
      while (cp1 != &lp1->l_text[doto])
	*cp2++ = *cp1++;
      cp2 += n;
      while (cp1 != &lp1->l_text[lp1->l_used])
	*cp2++ = *cp1++;
      lp1->l_bp->l_fp = lp2;
      lp2->l_fp = lp1->l_fp;
      lp1->l_fp->l_bp = lp2;
      lp2->l_bp = lp1->l_bp;
      free ((char *) lp1);
    }
  else
    {				/* Easy: in place */
      lp2 = lp1;		/* Pretend new line */
      lp2->l_used += n;
      cp2 = &lp1->l_text[lp1->l_used];
      cp1 = cp2 - n;
      while (cp1 != &lp1->l_text[doto])
	*--cp2 = *--cp1;
    }
  for (i = 0; i < n; ++i)	/* Add the characters */
    lp2->l_text[doto + i] = c;
  wp = wheadp;		       /* Update windows */
  while (wp != NULL)
    {
      if (wp->w_linep == lp1)
	wp->w_linep = lp2;
      if (wp->w_dotp == lp1)
	{
	  wp->w_dotp = lp2;
	  if (wp == curwp || wp->w_doto > doto)
	    wp->w_doto += n;
	}
      if (wp->w_markp == lp1)
	{
	  wp->w_markp = lp2;
	  if (wp->w_marko > doto)
	    wp->w_marko += n;
	}
      wp = wp->w_wndp;
    }
  return (TRUE);
}

// Assembly:
pushq %rbp
movq %rsp, %rbp
subq $0x50, %rsp
movl %edi, -0x8(%rbp)
movl %esi, -0xc(%rbp)
movl $0x4, %edi
callq 0x6ce0
leaq 0x9cb9(%rip), %rax      # 0x10a58
movq (%rax), %rax
movq 0x18(%rax), %rax
movq %rax, -0x20(%rbp)
movq -0x20(%rbp), %rax
leaq 0x9c93(%rip), %rcx      # 0x10a48
movq (%rcx), %rcx
cmpq 0x28(%rcx), %rax
jne 0x6ea0
leaq 0x9c8f(%rip), %rax      # 0x10a58
movq (%rax), %rax
cmpq $0x0, 0x20(%rax)
je 0x6ded
leaq 0x5677(%rip), %rdi      # 0xc451
movb $0x0, %al
callq 0x56d0
movl $0x0, -0x4(%rbp)
jmp 0x7160
movl -0x8(%rbp), %edi
callq 0x6b00
movq %rax, -0x28(%rbp)
cmpq $0x0, %rax
jne 0x6e0b
movl $0x0, -0x4(%rbp)
jmp 0x7160
movq -0x20(%rbp), %rax
movq 0x8(%rax), %rax
movq %rax, -0x30(%rbp)
movq -0x28(%rbp), %rcx
movq -0x30(%rbp), %rax
movq %rcx, (%rax)
movq -0x20(%rbp), %rcx
movq -0x28(%rbp), %rax
movq %rcx, (%rax)
movq -0x28(%rbp), %rcx
movq -0x20(%rbp), %rax
movq %rcx, 0x8(%rax)
movq -0x30(%rbp), %rcx
movq -0x28(%rbp), %rax
movq %rcx, 0x8(%rax)
movl $0x0, -0x44(%rbp)
movl -0x44(%rbp), %eax
cmpl -0x8(%rbp), %eax
jge 0x6e70
movl -0xc(%rbp), %eax
movb %al, %dl
movq -0x28(%rbp), %rax
movslq -0x44(%rbp), %rcx
movb %dl, 0x18(%rax,%rcx)
movl -0x44(%rbp), %eax
addl $0x1, %eax
movl %eax, -0x44(%rbp)
jmp 0x6e4c
movq -0x28(%rbp), %rcx
leaq 0x9bdd(%rip), %rax      # 0x10a58
movq (%rax), %rax
movq %rcx, 0x18(%rax)
movslq -0x8(%rbp), %rcx
leaq 0x9bcb(%rip), %rax      # 0x10a58
movq (%rax), %rax
movq %rcx, 0x20(%rax)
movl $0x1, -0x4(%rbp)
jmp 0x7160
leaq 0x9bb1(%rip), %rax      # 0x10a58
movq (%rax), %rax
movq 0x20(%rax), %rax
movl %eax, -0x48(%rbp)
movq -0x20(%rbp), %rax
movl 0x14(%rax), %eax
addl -0x8(%rbp), %eax
movq -0x20(%rbp), %rcx
cmpl 0x10(%rcx), %eax
jle 0x6fdc
movq -0x20(%rbp), %rax
movl 0x14(%rax), %edi
addl -0x8(%rbp), %edi
callq 0x6b00
movq %rax, -0x28(%rbp)
cmpq $0x0, %rax
jne 0x6eed
movl $0x0, -0x4(%rbp)
jmp 0x7160
movq -0x20(%rbp), %rax
addq $0x18, %rax
movq %rax, -0x38(%rbp)
movq -0x28(%rbp), %rax
addq $0x18, %rax
movq %rax, -0x40(%rbp)
movq -0x38(%rbp), %rax
movq -0x20(%rbp), %rcx
addq $0x18, %rcx
movslq -0x48(%rbp), %rdx
addq %rdx, %rcx
cmpq %rcx, %rax
je 0x6f41
movq -0x38(%rbp), %rax
movq %rax, %rcx
addq $0x1, %rcx
movq %rcx, -0x38(%rbp)
movb (%rax), %cl
movq -0x40(%rbp), %rax
movq %rax, %rdx
addq $0x1, %rdx
movq %rdx, -0x40(%rbp)
movb %cl, (%rax)
jmp 0x6f05
movl -0x8(%rbp), %ecx
movq -0x40(%rbp), %rax
movslq %ecx, %rcx
addq %rcx, %rax
movq %rax, -0x40(%rbp)
movq -0x38(%rbp), %rax
movq -0x20(%rbp), %rcx
addq $0x18, %rcx
movq -0x20(%rbp), %rdx
movslq 0x14(%rdx), %rdx
addq %rdx, %rcx
cmpq %rcx, %rax
je 0x6f92
movq -0x38(%rbp), %rax
movq %rax, %rcx
addq $0x1, %rcx
movq %rcx, -0x38(%rbp)
movb (%rax), %cl
movq -0x40(%rbp), %rax
movq %rax, %rdx
addq $0x1, %rdx
movq %rdx, -0x40(%rbp)
movb %cl, (%rax)
jmp 0x6f52
movq -0x28(%rbp), %rcx
movq -0x20(%rbp), %rax
movq 0x8(%rax), %rax
movq %rcx, (%rax)
movq -0x20(%rbp), %rax
movq (%rax), %rcx
movq -0x28(%rbp), %rax
movq %rcx, (%rax)
movq -0x28(%rbp), %rcx
movq -0x20(%rbp), %rax
movq (%rax), %rax
movq %rcx, 0x8(%rax)
movq -0x20(%rbp), %rax
movq 0x8(%rax), %rcx
movq -0x28(%rbp), %rax
movq %rcx, 0x8(%rax)
movq -0x20(%rbp), %rdi
callq 0x2040
jmp 0x705c
movq -0x20(%rbp), %rax
movq %rax, -0x28(%rbp)
movl -0x8(%rbp), %ecx
movq -0x28(%rbp), %rax
addl 0x14(%rax), %ecx
movl %ecx, 0x14(%rax)
movq -0x20(%rbp), %rax
addq $0x18, %rax
movq -0x20(%rbp), %rcx
movslq 0x14(%rcx), %rcx
addq %rcx, %rax
movq %rax, -0x40(%rbp)
movq -0x40(%rbp), %rax
movslq -0x8(%rbp), %rdx
xorl %ecx, %ecx
subq %rdx, %rcx
addq %rcx, %rax
movq %rax, -0x38(%rbp)
movq -0x38(%rbp), %rax
movq -0x20(%rbp), %rcx
addq $0x18, %rcx
movslq -0x48(%rbp), %rdx
addq %rdx, %rcx
cmpq %rcx, %rax
je 0x705a
movq -0x38(%rbp), %rax
movq %rax, %rcx
addq $-0x1, %rcx
movq %rcx, -0x38(%rbp)
movb -0x1(%rax), %cl
movq -0x40(%rbp), %rax
movq %rax, %rdx
addq $-0x1, %rdx
movq %rdx, -0x40(%rbp)
movb %cl, -0x1(%rax)
jmp 0x701c
jmp 0x705c
movl $0x0, -0x44(%rbp)
movl -0x44(%rbp), %eax
cmpl -0x8(%rbp), %eax
jge 0x708c
movl -0xc(%rbp), %eax
movb %al, %dl
movq -0x28(%rbp), %rax
movl -0x48(%rbp), %ecx
addl -0x44(%rbp), %ecx
movslq %ecx, %rcx
movb %dl, 0x18(%rax,%rcx)
movl -0x44(%rbp), %eax
addl $0x1, %eax
movl %eax, -0x44(%rbp)
jmp 0x7063
leaq 0x99dd(%rip), %rax      # 0x10a70
movq (%rax), %rax
movq %rax, -0x18(%rbp)
cmpq $0x0, -0x18(%rbp)
je 0x7159
movq -0x18(%rbp), %rax
movq 0x10(%rax), %rax
cmpq -0x20(%rbp), %rax
jne 0x70bf
movq -0x28(%rbp), %rcx
movq -0x18(%rbp), %rax
movq %rcx, 0x10(%rax)
movq -0x18(%rbp), %rax
movq 0x18(%rax), %rax
cmpq -0x20(%rbp), %rax
jne 0x710c
movq -0x28(%rbp), %rcx
movq -0x18(%rbp), %rax
movq %rcx, 0x18(%rax)
movq -0x18(%rbp), %rax
leaq 0x9974(%rip), %rcx      # 0x10a58
cmpq (%rcx), %rax
je 0x70fa
movq -0x18(%rbp), %rax
movq 0x20(%rax), %rax
movslq -0x48(%rbp), %rcx
cmpq %rcx, %rax
jle 0x710a
movslq -0x8(%rbp), %rcx
movq -0x18(%rbp), %rax
addq 0x20(%rax), %rcx
movq %rcx, 0x20(%rax)
jmp 0x710c
movq -0x18(%rbp), %rax
movq 0x28(%rax), %rax
cmpq -0x20(%rbp), %rax
jne 0x7149
movq -0x28(%rbp), %rcx
movq -0x18(%rbp), %rax
movq %rcx, 0x28(%rax)
movq -0x18(%rbp), %rax
movq 0x30(%rax), %rax
movslq -0x48(%rbp), %rcx
cmpq %rcx, %rax
jle 0x7147
movslq -0x8(%rbp), %rcx
movq -0x18(%rbp), %rax
addq 0x30(%rax), %rcx
movq %rcx, 0x30(%rax)
jmp 0x7149
movq -0x18(%rbp), %rax
movq (%rax), %rax
movq %rax, -0x18(%rbp)
jmp 0x709a
movl $0x1, -0x4(%rbp)
movl -0x4(%rbp), %eax
addq $0x50, %rsp
popq %rbp
retq
nopl (%rax)