// File: /workspace/github_c_makefile_star2_O0/ugobas[P]tnm/dof_tnm.c
// Function: Set_side_chains
int Set_side_chains(struct axe *axes,
		    struct bond *bonds,
		    atom *atoms,
		    int natoms,
		    int *refatom,
		    int *atom_ref,
		    int Nmain,
		    int MIN_INT)
{
  int N_axes=0, ndof=0, numdof=0, sidedof=Nmain;
  int first_atom=-1, last_atom=0, last_ref=0; //first_ref=0
  int ibond, ires=-1, i;
  char type[20], aa=' ';
  struct axe *axe=axes;
  struct bond *bond;
  int iref, oldref=1;
  int last_main=0, first_side=0;
  int move_atom; // last_move_atom=0;

  for(ibond=1; ibond<(natoms-1); ibond++){
    bond=bonds+ibond;
    if(bond->atom==NULL)break;
    if(bond->previous==NULL)continue;
    if(bond->atom->res!=ires){
      // Residue start
      ires=bond->atom->res;
      aa=bond->atom->aa;
      if((aa=='G')||(aa=='A')||(aa=='P'))continue;
      // degrees of freedom
      first_side=sidedof;
      ndof=0; numdof=0;
      // Find first and last atom in side chain
      first_atom=-1;
      for(i=bond->i_atom; i<natoms; i++){
	atom *atom_i=atoms+i;
	if((atom_i->res>ires)||
	   //(strncmp(atom_i->name,"C ", 2)==0)||
	   //(strncmp(atom_i->name,"O ", 2)==0)||
	   (strncmp(atom_i->name,"OT", 2)==0)||
	   (strncmp(atom_i->name,"OX", 2)==0))
	  break;
	if((strncmp(atom_i->name,"N ", 2)==0)||
	   (strncmp(atom_i->name,"CA", 2)==0)||
	   (strncmp(atom_i->name,"CB", 2)==0))continue;
	if(first_atom<0)first_atom=i;
      }

      if(first_atom<0)continue;
      //last_move_atom=first_atom;

      last_atom=i-1;
      /*printf(" Res %c first_atom= %s %d last_atom= %s %d\n",
	     aa, atoms[first_atom].name, first_atom,
	     atoms[last_atom].name, last_atom);*/
      last_main=atoms[first_atom].last_dof_main;
      if(last_main<0)continue;
      //first_ref=refatom[first_atom];
      last_ref=refatom[last_atom];
      while(atoms[atom_ref[last_ref]].res>ires)last_ref--;
    }

    if((first_atom<0)||
       (last_main<0)||
       (bond->i_atom < first_atom)||
       (bond->i_atom > last_atom)){
      continue;
    }else if((bond->terminal)||
	     (strncmp(bond->atom->name,"N ", 2)==0)||
	     (strncmp(bond->atom->name,"CA", 2)==0)||
	     (strncmp(bond->atom->name,"C ", 2)==0)||
	     (strncmp(bond->atom->name,"O ", 2)==0)){
      continue;
    }else if((aa=='G')||(aa=='A')||(aa=='P')){
      continue;     // exit if gly, ala or pro
    }else if((strncmp(bond->atom->name,"CB", 2)==0)||
	     (strncmp(bond->atom->name,"CG", 2)==0)){
      goto test_ref;
    }else if((aa=='F')||(aa=='W')||
	     (aa=='Y')||(aa=='H')){
      continue;  // if aromatic ring, exit
    }

  test_ref:
    move_atom=(Next_bond(bond, ibond, natoms))->i_atom;
    iref=refatom[move_atom];
    if((iref<0)||(iref>last_ref)||
       (atoms[atom_ref[iref]].res!=ires))
      continue;

    sprintf(type, "%1d", numdof);
    if(Set_dof(&axe, &N_axes, type[0], bond, move_atom, &ndof,
	       &oldref, refatom, natoms, last_atom, last_ref)){
      struct axe *axe1=axe-1;
      (axe1)->type='t';
      (axe1)->last_atom=last_atom;
      (axe1)->last_kin=last_ref;
      (axe1)->last_main=last_main;
      (axe1)->first_side=first_side;
      sidedof++;
      numdof++;
    }
  }

  if(MIN_INT>0){
    // Test number of interactions
    int n=0, a;
    for(a=0; a<N_axes; a++){
      axe=axes+a;
      int num_int=0;
      for(i=axe->first_atom; i< natoms; i++){
	if(atoms[i].res!=axe->bond->atom->res)break;
	num_int+=atoms[i].N_int;
      }
      if(num_int >= MIN_INT){
	if(a!=n){axes[n]=*axe;} n++;
      }
    }
    N_axes=n;
  }

  // First and last degree of freedom for each atom
  int iatom=axes[0].first_atom, nmax=N_axes-1; ndof=0;
  for(i=0; i<natoms; i++){
    if((i >= iatom)&&(ndof < nmax)){
      ndof++; if(ndof<nmax)iatom=axes[ndof+1].first_atom;
    }
    if(axes[ndof].bond->atom->res==atoms[i].res)atoms[i].last_dof_side=ndof;
  }

  // Association between main chain degrees of freedom and bonds
  for(i=0; i<natoms; i++){
    bond=bonds+i;
    if(bond->atom==NULL)break;
    atom *atom=bond->atom;
    int n=atom->last_dof_side; if(n<0)continue;
    if((bond->previous!=NULL)&&(axes[n].bond==bond->previous)){
      if(axes[n].type=='t')bond->torsion=n;
    }
  }

  // Print degrees of freedom of side chains
  ires=-1;
  for(i=0; i<N_axes; i++){
    axe=axes+i;
    if(axe->bond->atom->res!=ires){
      ires=axe->bond->atom->res; numdof=0;
      printf("-%c%d:", axe->bond->atom->aa, ires+1);
    }
    numdof++;
    printf("%1d", numdof);
  }
  printf("\n");

  return(N_axes);
}

// Assembly:
pushq %rbp
movq %rsp, %rbp
pushq %r14
pushq %rbx
subq $0x100, %rsp            # imm = 0x100
movl 0x18(%rbp), %eax
movl 0x10(%rbp), %eax
movq %rdi, -0x18(%rbp)
movq %rsi, -0x20(%rbp)
movq %rdx, -0x28(%rbp)
movl %ecx, -0x2c(%rbp)
movq %r8, -0x38(%rbp)
movq %r9, -0x40(%rbp)
movl $0x0, -0x44(%rbp)
movl $0x0, -0x48(%rbp)
movl $0x0, -0x4c(%rbp)
movl 0x10(%rbp), %eax
movl %eax, -0x50(%rbp)
movl $0xffffffff, -0x54(%rbp) # imm = 0xFFFFFFFF
movl $0x0, -0x58(%rbp)
movl $0x0, -0x5c(%rbp)
movl $0xffffffff, -0x64(%rbp) # imm = 0xFFFFFFFF
movb $0x20, -0x81(%rbp)
movq -0x18(%rbp), %rax
movq %rax, -0x90(%rbp)
movl $0x1, -0xa0(%rbp)
movl $0x0, -0xa4(%rbp)
movl $0x0, -0xa8(%rbp)
movl $0x1, -0x60(%rbp)
movl -0x60(%rbp), %eax
movl -0x2c(%rbp), %ecx
subl $0x1, %ecx
cmpl %ecx, %eax
jge 0x1b92f
movq -0x20(%rbp), %rax
movslq -0x60(%rbp), %rcx
imulq $0xc0, %rcx, %rcx
addq %rcx, %rax
movq %rax, -0x98(%rbp)
movq -0x98(%rbp), %rax
cmpq $0x0, (%rax)
jne 0x1b445
jmp 0x1b92f
movq -0x98(%rbp), %rax
cmpq $0x0, 0x28(%rax)
jne 0x1b458
jmp 0x1b921
movq -0x98(%rbp), %rax
movq (%rax), %rax
movl 0x64(%rax), %eax
cmpl -0x64(%rbp), %eax
je 0x1b652
movq -0x98(%rbp), %rax
movq (%rax), %rax
movl 0x64(%rax), %eax
movl %eax, -0x64(%rbp)
movq -0x98(%rbp), %rax
movq (%rax), %rax
movb 0x68(%rax), %al
movb %al, -0x81(%rbp)
movsbl -0x81(%rbp), %eax
cmpl $0x47, %eax
je 0x1b4b5
movsbl -0x81(%rbp), %eax
cmpl $0x41, %eax
je 0x1b4b5
movsbl -0x81(%rbp), %eax
cmpl $0x50, %eax
jne 0x1b4ba
jmp 0x1b921
movl -0x50(%rbp), %eax
movl %eax, -0xa8(%rbp)
movl $0x0, -0x48(%rbp)
movl $0x0, -0x4c(%rbp)
movl $0xffffffff, -0x54(%rbp) # imm = 0xFFFFFFFF
movq -0x98(%rbp), %rax
movl 0x20(%rax), %eax
movl %eax, -0x68(%rbp)
movl -0x68(%rbp), %eax
cmpl -0x2c(%rbp), %eax
jge 0x1b5de
movq -0x28(%rbp), %rax
movslq -0x68(%rbp), %rcx
imulq $0x70, %rcx, %rcx
addq %rcx, %rax
movq %rax, -0xb8(%rbp)
movq -0xb8(%rbp), %rax
movl 0x64(%rax), %eax
cmpl -0x64(%rbp), %eax
jg 0x1b558
movq -0xb8(%rbp), %rdi
addq $0x18, %rdi
leaq 0x5fb0e(%rip), %rsi     # 0x7b036
movl $0x2, %edx
callq 0x1050
cmpl $0x0, %eax
je 0x1b558
movq -0xb8(%rbp), %rdi
addq $0x18, %rdi
leaq 0x5faf0(%rip), %rsi     # 0x7b039
movl $0x2, %edx
callq 0x1050
cmpl $0x0, %eax
jne 0x1b55d
jmp 0x1b5de
movq -0xb8(%rbp), %rdi
addq $0x18, %rdi
leaq 0x5fabe(%rip), %rsi     # 0x7b02d
movl $0x2, %edx
callq 0x1050
cmpl $0x0, %eax
je 0x1b5c0
movq -0xb8(%rbp), %rdi
addq $0x18, %rdi
leaq 0x5ad78(%rip), %rsi     # 0x76308
movl $0x2, %edx
callq 0x1050
cmpl $0x0, %eax
je 0x1b5c0
movq -0xb8(%rbp), %rdi
addq $0x18, %rdi
leaq 0x5ad98(%rip), %rsi     # 0x76349
movl $0x2, %edx
callq 0x1050
cmpl $0x0, %eax
jne 0x1b5c2
jmp 0x1b5d0
cmpl $0x0, -0x54(%rbp)
jge 0x1b5ce
movl -0x68(%rbp), %eax
movl %eax, -0x54(%rbp)
jmp 0x1b5d0
movl -0x68(%rbp), %eax
addl $0x1, %eax
movl %eax, -0x68(%rbp)
jmp 0x1b4e5
cmpl $0x0, -0x54(%rbp)
jge 0x1b5e9
jmp 0x1b921
movl -0x68(%rbp), %eax
subl $0x1, %eax
movl %eax, -0x58(%rbp)
movq -0x28(%rbp), %rax
movslq -0x54(%rbp), %rcx
imulq $0x70, %rcx, %rcx
addq %rcx, %rax
movl 0x58(%rax), %eax
movl %eax, -0xa4(%rbp)
cmpl $0x0, -0xa4(%rbp)
jge 0x1b618
jmp 0x1b921
movq -0x38(%rbp), %rax
movslq -0x58(%rbp), %rcx
movl (%rax,%rcx,4), %eax
movl %eax, -0x5c(%rbp)
movq -0x28(%rbp), %rax
movq -0x40(%rbp), %rcx
movslq -0x5c(%rbp), %rdx
movslq (%rcx,%rdx,4), %rcx
imulq $0x70, %rcx, %rcx
addq %rcx, %rax
movl 0x64(%rax), %eax
cmpl -0x64(%rbp), %eax
jle 0x1b650
movl -0x5c(%rbp), %eax
addl $-0x1, %eax
movl %eax, -0x5c(%rbp)
jmp 0x1b626
jmp 0x1b652
cmpl $0x0, -0x54(%rbp)
jl 0x1b67f
cmpl $0x0, -0xa4(%rbp)
jl 0x1b67f
movq -0x98(%rbp), %rax
movl 0x20(%rax), %eax
cmpl -0x54(%rbp), %eax
jl 0x1b67f
movq -0x98(%rbp), %rax
movl 0x20(%rax), %eax
cmpl -0x58(%rbp), %eax
jle 0x1b684
jmp 0x1b921
movq -0x98(%rbp), %rax
cmpl $0x0, 0x30(%rax)
jne 0x1b725
movq -0x98(%rbp), %rax
movq (%rax), %rdi
addq $0x18, %rdi
leaq 0x5f983(%rip), %rsi     # 0x7b02d
movl $0x2, %edx
callq 0x1050
cmpl $0x0, %eax
je 0x1b725
movq -0x98(%rbp), %rax
movq (%rax), %rdi
addq $0x18, %rdi
leaq 0x5ac3a(%rip), %rsi     # 0x76308
movl $0x2, %edx
callq 0x1050
cmpl $0x0, %eax
je 0x1b725
movq -0x98(%rbp), %rax
movq (%rax), %rdi
addq $0x18, %rdi
leaq 0x5f93e(%rip), %rsi     # 0x7b030
movl $0x2, %edx
callq 0x1050
cmpl $0x0, %eax
je 0x1b725
movq -0x98(%rbp), %rax
movq (%rax), %rdi
addq $0x18, %rdi
leaq 0x5f91d(%rip), %rsi     # 0x7b033
movl $0x2, %edx
callq 0x1050
cmpl $0x0, %eax
jne 0x1b72a
jmp 0x1b921
movsbl -0x81(%rbp), %eax
cmpl $0x47, %eax
je 0x1b74e
movsbl -0x81(%rbp), %eax
cmpl $0x41, %eax
je 0x1b74e
movsbl -0x81(%rbp), %eax
cmpl $0x50, %eax
jne 0x1b753
jmp 0x1b921
movq -0x98(%rbp), %rax
movq (%rax), %rdi
addq $0x18, %rdi
leaq 0x5abe1(%rip), %rsi     # 0x76349
movl $0x2, %edx
callq 0x1050
cmpl $0x0, %eax
je 0x1b79b
movq -0x98(%rbp), %rax
movq (%rax), %rdi
addq $0x18, %rdi
leaq 0x5f980(%rip), %rsi     # 0x7b10c
movl $0x2, %edx
callq 0x1050
cmpl $0x0, %eax
jne 0x1b79d
jmp 0x1b7dc
movsbl -0x81(%rbp), %eax
cmpl $0x46, %eax
je 0x1b7cd
movsbl -0x81(%rbp), %eax
cmpl $0x57, %eax
je 0x1b7cd
movsbl -0x81(%rbp), %eax
cmpl $0x59, %eax
je 0x1b7cd
movsbl -0x81(%rbp), %eax
cmpl $0x48, %eax
jne 0x1b7d2
jmp 0x1b921
jmp 0x1b7d4
jmp 0x1b7d6
jmp 0x1b7d8
jmp 0x1b7da
jmp 0x1b7dc
movq -0x98(%rbp), %rdi
movl -0x60(%rbp), %esi
movl -0x2c(%rbp), %edx
callq 0x1af00
movl 0x20(%rax), %eax
movl %eax, -0xac(%rbp)
movq -0x38(%rbp), %rax
movslq -0xac(%rbp), %rcx
movl (%rax,%rcx,4), %eax
movl %eax, -0x9c(%rbp)
cmpl $0x0, -0x9c(%rbp)
jl 0x1b841
movl -0x9c(%rbp), %eax
cmpl -0x5c(%rbp), %eax
jg 0x1b841
movq -0x28(%rbp), %rax
movq -0x40(%rbp), %rcx
movslq -0x9c(%rbp), %rdx
movslq (%rcx,%rdx,4), %rcx
imulq $0x70, %rcx, %rcx
addq %rcx, %rax
movl 0x64(%rax), %eax
cmpl -0x64(%rbp), %eax
je 0x1b846
jmp 0x1b921
leaq -0x80(%rbp), %rdi
movl -0x4c(%rbp), %edx
leaq 0x6018c(%rip), %rsi     # 0x7b9e0
movb $0x0, %al
callq 0x1200
movb -0x80(%rbp), %dl
movq -0x98(%rbp), %rcx
movl -0xac(%rbp), %r8d
movq -0x38(%rbp), %rbx
movl -0x2c(%rbp), %r11d
movl -0x58(%rbp), %r10d
movl -0x5c(%rbp), %eax
leaq -0x90(%rbp), %rdi
leaq -0x44(%rbp), %rsi
leaq -0x48(%rbp), %r9
leaq -0xa0(%rbp), %r14
movsbl %dl, %edx
movq %r14, (%rsp)
movq %rbx, 0x8(%rsp)
movl %r11d, 0x10(%rsp)
movl %r10d, 0x18(%rsp)
movl %eax, 0x20(%rsp)
callq 0x1a3e0
cmpl $0x0, %eax
je 0x1b91f
movq -0x90(%rbp), %rax
addq $-0x158, %rax           # imm = 0xFEA8
movq %rax, -0xc0(%rbp)
movq -0xc0(%rbp), %rax
movb $0x74, (%rax)
movl -0x58(%rbp), %ecx
movq -0xc0(%rbp), %rax
movl %ecx, 0x14(%rax)
movl -0x5c(%rbp), %ecx
movq -0xc0(%rbp), %rax
movl %ecx, 0x1c(%rax)
movl -0xa4(%rbp), %ecx
movq -0xc0(%rbp), %rax
movl %ecx, 0x24(%rax)
movl -0xa8(%rbp), %ecx
movq -0xc0(%rbp), %rax
movl %ecx, 0x28(%rax)
movl -0x50(%rbp), %eax
addl $0x1, %eax
movl %eax, -0x50(%rbp)
movl -0x4c(%rbp), %eax
addl $0x1, %eax
movl %eax, -0x4c(%rbp)
jmp 0x1b921
movl -0x60(%rbp), %eax
addl $0x1, %eax
movl %eax, -0x60(%rbp)
jmp 0x1b409
cmpl $0x0, 0x18(%rbp)
jle 0x1ba54
movl $0x0, -0xc4(%rbp)
movl $0x0, -0xc8(%rbp)
movl -0xc8(%rbp), %eax
cmpl -0x44(%rbp), %eax
jge 0x1ba4b
movq -0x18(%rbp), %rax
movslq -0xc8(%rbp), %rcx
imulq $0x158, %rcx, %rcx      # imm = 0x158
addq %rcx, %rax
movq %rax, -0x90(%rbp)
movl $0x0, -0xcc(%rbp)
movq -0x90(%rbp), %rax
movl 0x10(%rax), %eax
movl %eax, -0x68(%rbp)
movl -0x68(%rbp), %eax
cmpl -0x2c(%rbp), %eax
jge 0x1b9e7
movq -0x28(%rbp), %rax
movslq -0x68(%rbp), %rcx
imulq $0x70, %rcx, %rcx
addq %rcx, %rax
movl 0x64(%rax), %eax
movq -0x90(%rbp), %rcx
movq 0x8(%rcx), %rcx
movq (%rcx), %rcx
cmpl 0x64(%rcx), %eax
je 0x1b9be
jmp 0x1b9e7
movq -0x28(%rbp), %rax
movslq -0x68(%rbp), %rcx
imulq $0x70, %rcx, %rcx
addq %rcx, %rax
movl 0x60(%rax), %eax
addl -0xcc(%rbp), %eax
movl %eax, -0xcc(%rbp)
movl -0x68(%rbp), %eax
addl $0x1, %eax
movl %eax, -0x68(%rbp)
jmp 0x1b98f
movl -0xcc(%rbp), %eax
cmpl 0x18(%rbp), %eax
jl 0x1ba35
movl -0xc8(%rbp), %eax
cmpl -0xc4(%rbp), %eax
je 0x1ba26
movq -0x18(%rbp), %rdi
movslq -0xc4(%rbp), %rax
imulq $0x158, %rax, %rax      # imm = 0x158
addq %rax, %rdi
movq -0x90(%rbp), %rsi
movl $0x158, %edx            # imm = 0x158
callq 0x1160
movl -0xc4(%rbp), %eax
addl $0x1, %eax
movl %eax, -0xc4(%rbp)
jmp 0x1ba37
movl -0xc8(%rbp), %eax
addl $0x1, %eax
movl %eax, -0xc8(%rbp)
jmp 0x1b94d
movl -0xc4(%rbp), %eax
movl %eax, -0x44(%rbp)
movq -0x18(%rbp), %rax
movl 0x10(%rax), %eax
movl %eax, -0xd0(%rbp)
movl -0x44(%rbp), %eax
subl $0x1, %eax
movl %eax, -0xd4(%rbp)
movl $0x0, -0x48(%rbp)
movl $0x0, -0x68(%rbp)
movl -0x68(%rbp), %eax
cmpl -0x2c(%rbp), %eax
jge 0x1bb28
movl -0x68(%rbp), %eax
cmpl -0xd0(%rbp), %eax
jl 0x1bad3
movl -0x48(%rbp), %eax
cmpl -0xd4(%rbp), %eax
jge 0x1bad3
movl -0x48(%rbp), %eax
addl $0x1, %eax
movl %eax, -0x48(%rbp)
movl -0x48(%rbp), %eax
cmpl -0xd4(%rbp), %eax
jge 0x1bad1
movq -0x18(%rbp), %rax
movl -0x48(%rbp), %ecx
addl $0x1, %ecx
movslq %ecx, %rcx
imulq $0x158, %rcx, %rcx      # imm = 0x158
addq %rcx, %rax
movl 0x10(%rax), %eax
movl %eax, -0xd0(%rbp)
jmp 0x1bad3
movq -0x18(%rbp), %rax
movslq -0x48(%rbp), %rcx
imulq $0x158, %rcx, %rcx      # imm = 0x158
addq %rcx, %rax
movq 0x8(%rax), %rax
movq (%rax), %rax
movl 0x64(%rax), %eax
movq -0x28(%rbp), %rcx
movslq -0x68(%rbp), %rdx
imulq $0x70, %rdx, %rdx
addq %rdx, %rcx
cmpl 0x64(%rcx), %eax
jne 0x1bb18
movl -0x48(%rbp), %ecx
movq -0x28(%rbp), %rax
movslq -0x68(%rbp), %rdx
imulq $0x70, %rdx, %rdx
addq %rdx, %rax
movl %ecx, 0x5c(%rax)
jmp 0x1bb1a
movl -0x68(%rbp), %eax
addl $0x1, %eax
movl %eax, -0x68(%rbp)
jmp 0x1ba7b
movl $0x0, -0x68(%rbp)
movl -0x68(%rbp), %eax
cmpl -0x2c(%rbp), %eax
jge 0x1bc05
movq -0x20(%rbp), %rax
movslq -0x68(%rbp), %rcx
imulq $0xc0, %rcx, %rcx
addq %rcx, %rax
movq %rax, -0x98(%rbp)
movq -0x98(%rbp), %rax
cmpq $0x0, (%rax)
jne 0x1bb66
jmp 0x1bc05
movq -0x98(%rbp), %rax
movq (%rax), %rax
movq %rax, -0xe0(%rbp)
movq -0xe0(%rbp), %rax
movl 0x5c(%rax), %eax
movl %eax, -0xe4(%rbp)
cmpl $0x0, -0xe4(%rbp)
jge 0x1bb92
jmp 0x1bbf7
movq -0x98(%rbp), %rax
cmpq $0x0, 0x28(%rax)
je 0x1bbf5
movq -0x18(%rbp), %rax
movslq -0xe4(%rbp), %rcx
imulq $0x158, %rcx, %rcx      # imm = 0x158
addq %rcx, %rax
movq 0x8(%rax), %rax
movq -0x98(%rbp), %rcx
cmpq 0x28(%rcx), %rax
jne 0x1bbf5
movq -0x18(%rbp), %rax
movslq -0xe4(%rbp), %rcx
imulq $0x158, %rcx, %rcx      # imm = 0x158
addq %rcx, %rax
movsbl (%rax), %eax
cmpl $0x74, %eax
jne 0x1bbf3
movl -0xe4(%rbp), %ecx
movq -0x98(%rbp), %rax
movl %ecx, 0x3c(%rax)
jmp 0x1bbf5
jmp 0x1bbf7
movl -0x68(%rbp), %eax
addl $0x1, %eax
movl %eax, -0x68(%rbp)
jmp 0x1bb2f
movl $0xffffffff, -0x64(%rbp) # imm = 0xFFFFFFFF
movl $0x0, -0x68(%rbp)
movl -0x68(%rbp), %eax
cmpl -0x44(%rbp), %eax
jge 0x1bcb7
movq -0x18(%rbp), %rax
movslq -0x68(%rbp), %rcx
imulq $0x158, %rcx, %rcx      # imm = 0x158
addq %rcx, %rax
movq %rax, -0x90(%rbp)
movq -0x90(%rbp), %rax
movq 0x8(%rax), %rax
movq (%rax), %rax
movl 0x64(%rax), %eax
cmpl -0x64(%rbp), %eax
je 0x1bc8f
movq -0x90(%rbp), %rax
movq 0x8(%rax), %rax
movq (%rax), %rax
movl 0x64(%rax), %eax
movl %eax, -0x64(%rbp)
movl $0x0, -0x4c(%rbp)
movq -0x90(%rbp), %rax
movq 0x8(%rax), %rax
movq (%rax), %rax
movsbl 0x68(%rax), %esi
movl -0x64(%rbp), %edx
addl $0x1, %edx
leaq 0x5fd5c(%rip), %rdi     # 0x7b9e4
movb $0x0, %al
callq 0x10d0
movl -0x4c(%rbp), %eax
addl $0x1, %eax
movl %eax, -0x4c(%rbp)
movl -0x4c(%rbp), %esi
leaq 0x5fd3e(%rip), %rdi     # 0x7b9e0
movb $0x0, %al
callq 0x10d0
movl -0x68(%rbp), %eax
addl $0x1, %eax
movl %eax, -0x68(%rbp)
jmp 0x1bc13
leaq 0x623ba(%rip), %rdi     # 0x7e078
movb $0x0, %al
callq 0x10d0
movl -0x44(%rbp), %eax
addq $0x100, %rsp            # imm = 0x100
popq %rbx
popq %r14
popq %rbp
retq
nopw %cs:(%rax,%rax)
nop