// File: /workspace/github_c_makefile_star2_O3/felipelouza[P]egap/./blocks.h
// Function: skip
static void skip(solidBlock *this, g_data *g)
{
  if(g->extMem && g->fmergeColor!=NULL) {// this is because merge8 supports extMem but not extMem colors 
    fseek(g->fmergeColor,(this->endsAt-this->beginsAt)*sizeof(palette),SEEK_CUR);
    assert(ftell(g->fmergeColor)==this->endsAt*sizeof(palette));
  }
  if(this->endsAt - this->beginsAt <= SMALLSOLID_LIMIT){
    // skip in bwt array 
    for (int col = 0; col < g->numBwt; col++) 
      if(this->smallOcc[col]>0) {
        g->inCnt[col] += this->smallOcc[col];    //skipping this
        if(g->extMem) fseek(g->bwf[col], this->smallOcc[col]*sizeof(symbol), SEEK_CUR);
      }
    // skip in new_merge array  
    for (int c = 0; c < g->sizeOfAlpha; ++c)
      if(this->smallOcc[g->numBwt+c]>0) {
        g->F[c]+= this->smallOcc[g->numBwt+c];
        if(g->extMem && c>0 && g->fnewMergeColor!=NULL) {
          cwriter_skip(&g->fnewMergeColor[c],this->smallOcc[g->numBwt+c]);
          assert(cwriter_tell(&g->fnewMergeColor[c])==g->F[c]*sizeof(palette));
        }
      }
  } 
  else { 
    for (int col = 0; col < g->numBwt; col++) 
      if(this->occ[col]>0) {
        g->inCnt[col] += this->occ[col];        //skipping this
        if(g->extMem) fseek(g->bwf[col], this->occ[col]*sizeof(symbol), SEEK_CUR);
      }
    for (int c = 0; c < g->sizeOfAlpha; ++c) 
      if(this->occ[g->numBwt+c]>0) {
        g->F[c] += this->occ[g->numBwt+c];
        if(g->extMem && c>0 && g->fnewMergeColor!=NULL) {
          cwriter_skip(&g->fnewMergeColor[c],this->occ[g->numBwt+c]);
          assert(cwriter_tell(&g->fnewMergeColor[c])==g->F[c]*sizeof(palette));
        }
      }
  }
}

// Assembly:
pushq %r15
pushq %r14
pushq %r12
pushq %rbx
pushq %rax
movq %rsi, %rbx
movq %rdi, %r14
cmpb $0x1, 0x69(%rsi)
jne 0xba33
movq 0x50c8(%rbx), %rdi
testq %rdi, %rdi
je 0xba33
movq 0x8(%r14), %rsi
subq (%r14), %rsi
movl $0x1, %edx
callq 0x2260
movq 0x8(%r14), %rcx
subq (%r14), %rcx
movl 0x20(%rbx), %eax
cmpq $0x10000, %rcx          # imm = 0x10000
jae 0xbb0a
testl %eax, %eax
jle 0xba9c
xorl %r15d, %r15d
movq 0x10(%r14), %rcx
movzwl (%rcx,%r15,2), %ecx
testq %rcx, %rcx
je 0xba91
movq 0x5118(%rbx), %rdx
addq %rcx, (%rdx,%r15,8)
cmpb $0x1, 0x69(%rbx)
jne 0xba91
movq 0x50a0(%rbx), %rax
movq (%rax,%r15,8), %rdi
movq 0x10(%r14), %rax
movzwl (%rax,%r15,2), %esi
movl $0x1, %edx
callq 0x2260
movl 0x20(%rbx), %eax
incq %r15
movslq %eax, %rcx
cmpq %rcx, %r15
jl 0xba51
movl 0x38(%rbx), %eax
testl %eax, %eax
jle 0xbbbf
xorl %r15d, %r15d
xorl %r12d, %r12d
movq 0x10(%r14), %rdx
movslq 0x20(%rbx), %rcx
addq %r12, %rcx
movzwl (%rdx,%rcx,2), %edx
testq %rdx, %rdx
je 0xbaf6
movq 0x5110(%rbx), %rsi
addq %rdx, (%rsi,%r12,8)
testq %r12, %r12
je 0xbaf6
cmpb $0x0, 0x69(%rbx)
je 0xbaf6
movq 0x50d0(%rbx), %rdi
testq %rdi, %rdi
je 0xbaf6
addq %r15, %rdi
movq 0x10(%r14), %rax
movzwl (%rax,%rcx,2), %esi
callq 0x5feb
movl 0x38(%rbx), %eax
incq %r12
movslq %eax, %rcx
addq $0x20, %r15
cmpq %rcx, %r12
jl 0xbaad
jmp 0xbbbf
testl %eax, %eax
jle 0xbb5a
xorl %r15d, %r15d
movq 0x10(%r14), %rcx
movq (%rcx,%r15,8), %rcx
testq %rcx, %rcx
je 0xbb4f
movq 0x5118(%rbx), %rdx
addq %rcx, (%rdx,%r15,8)
cmpb $0x1, 0x69(%rbx)
jne 0xbb4f
movq 0x50a0(%rbx), %rax
movq (%rax,%r15,8), %rdi
movq 0x10(%r14), %rax
movq (%rax,%r15,8), %rsi
movl $0x1, %edx
callq 0x2260
movl 0x20(%rbx), %eax
incq %r15
movslq %eax, %rcx
cmpq %rcx, %r15
jl 0xbb11
movl 0x38(%rbx), %eax
testl %eax, %eax
jle 0xbbbf
xorl %r15d, %r15d
xorl %r12d, %r12d
movq 0x10(%r14), %rdx
movslq 0x20(%rbx), %rcx
addq %r12, %rcx
movq (%rdx,%rcx,8), %rdx
testq %rdx, %rdx
je 0xbbb0
movq 0x5110(%rbx), %rsi
addq %rdx, (%rsi,%r12,8)
testq %r12, %r12
je 0xbbb0
cmpb $0x0, 0x69(%rbx)
je 0xbbb0
movq 0x50d0(%rbx), %rdi
testq %rdi, %rdi
je 0xbbb0
addq %r15, %rdi
movq 0x10(%r14), %rax
movq (%rax,%rcx,8), %rsi
callq 0x5feb
movl 0x38(%rbx), %eax
incq %r12
movslq %eax, %rcx
addq $0x20, %r15
cmpq %rcx, %r12
jl 0xbb67
addq $0x8, %rsp
popq %rbx
popq %r12
popq %r14
popq %r15
retq