// File: /workspace/github_c_makefile_star2_O2/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 %rbp
pushq %r15
pushq %r14
pushq %r12
pushq %rbx
movq %rsi, %rbx
movq %rdi, %r14
cmpb $0x1, 0x69(%rsi)
jne 0xb070
movq 0x50c8(%rbx), %rdi
testq %rdi, %rdi
je 0xb070
movq 0x8(%r14), %rsi
subq (%r14), %rsi
pushq $0x1
popq %rdx
callq 0x2260
movq 0x8(%r14), %rax
subq (%r14), %rax
xorl %r15d, %r15d
pushq $0x1
popq %rbp
cmpq $0x10000, %rax          # imm = 0x10000
jb 0xb110
movslq 0x20(%rbx), %rax
cmpq %rax, %r15
jge 0xb17b
movq 0x10(%r14), %rax
movq (%rax,%r15,8), %rax
testq %rax, %rax
je 0xb0ce
movq 0x5118(%rbx), %rcx
addq %rax, (%rcx,%r15,8)
cmpb $0x1, 0x69(%rbx)
jne 0xb0ce
movq 0x50a0(%rbx), %rax
movq (%rax,%r15,8), %rdi
movq 0x10(%r14), %rax
movq (%rax,%r15,8), %rsi
movl %ebp, %edx
callq 0x2260
incq %r15
jmp 0xb089
movq 0x10(%r14), %rax
movzwl (%rax,%r15,2), %eax
testq %rax, %rax
je 0xb10d
movq 0x5118(%rbx), %rcx
addq %rax, (%rcx,%r15,8)
cmpb $0x1, 0x69(%rbx)
jne 0xb10d
movq 0x50a0(%rbx), %rax
movq (%rax,%r15,8), %rdi
movq 0x10(%r14), %rax
movzwl (%rax,%r15,2), %esi
movl %ebp, %edx
callq 0x2260
incq %r15
movslq 0x20(%rbx), %rax
cmpq %rax, %r15
jl 0xb0d3
xorl %r15d, %r15d
xorl %r12d, %r12d
movslq 0x38(%rbx), %rax
cmpq %rax, %r12
jge 0xb1d9
movq 0x10(%r14), %rcx
movslq 0x20(%rbx), %rax
addq %r12, %rax
movzwl (%rcx,%rax,2), %ecx
testq %rcx, %rcx
je 0xb172
movq 0x5110(%rbx), %rdx
addq %rcx, (%rdx,%r12,8)
testq %r12, %r12
je 0xb172
cmpb $0x0, 0x69(%rbx)
je 0xb172
movq 0x50d0(%rbx), %rdi
testq %rdi, %rdi
je 0xb172
addq %r15, %rdi
movq 0x10(%r14), %rcx
movzwl (%rcx,%rax,2), %esi
callq 0x5a7b
incq %r12
addq $0x20, %r15
jmp 0xb11f
xorl %r15d, %r15d
xorl %r12d, %r12d
movslq 0x38(%rbx), %rax
cmpq %rax, %r12
jge 0xb1d9
movq 0x10(%r14), %rcx
movslq 0x20(%rbx), %rax
addq %r12, %rax
movq (%rcx,%rax,8), %rcx
testq %rcx, %rcx
je 0xb1d0
movq 0x5110(%rbx), %rdx
addq %rcx, (%rdx,%r12,8)
testq %r12, %r12
je 0xb1d0
cmpb $0x0, 0x69(%rbx)
je 0xb1d0
movq 0x50d0(%rbx), %rdi
testq %rdi, %rdi
je 0xb1d0
addq %r15, %rdi
movq 0x10(%r14), %rcx
movq (%rcx,%rax,8), %rsi
callq 0x5a7b
incq %r12
addq $0x20, %r15
jmp 0xb181
popq %rbx
popq %r12
popq %r14
popq %r15
popq %rbp
retq