// File: /workspace/github_c_makefile_star2_O3/jsh58[P]Genrich/Genrich.c
// Function: addFrac
void addFrac(int16_t* cov, uint8_t* frac, uint8_t count) {
  switch (count) {
    case 8:
      if ((*frac & 0x7) == 0x7) {
        (*cov)++;
        *frac &= 0xF8;
      } else
        (*frac)++;
      break;
    case 4:
      if ((*frac & 0x6) == 0x6) {
        (*cov)++;
        *frac &= 0xF9;
      } else
        *frac += 0x2;
      break;
    case 2:
      if (*frac & 0x4) {
        (*cov)++;
        *frac &= 0xFB;
      } else
        *frac |= 0x4;
      break;
    case 6:
      if (*frac & 0x10) {
        if (*frac & 0x4) {
          (*cov)++;
          *frac &= 0xEB;
        } else {
          *frac |= 0x4;
          *frac &= 0xEF;
        }
      } else
        *frac += 0x8;
      break;
    case 3:
      if (*frac & 0x8) {
        if (*frac & 0x4) {
          (*cov)++;
          *frac &= 0xF3;
        } else {
          *frac |= 0x4;
          *frac &= 0xF7;
        }
      } else if (*frac & 0x10) {
        if (*frac & 0x4) {
          (*cov)++;
          *frac &= 0xEB;
        } else {
          *frac |= 0x4;
          *frac &= 0xEF;
        }
        *frac |= 0x8;
      } else
        *frac |= 0x10;
      break;
    case 10:
      if (*frac & 0x80) {
        if (*frac & 0x4) {
          (*cov)++;
          *frac &= 0x7B;
        } else {
          *frac |= 0x4;
          *frac &= 0x7F;
        }
      } else
        *frac += 0x20;
      break;
    case 5:
      if (*frac & 0x80) {
        if (*frac & 0x4) {
          (*cov)++;
          *frac &= 0x7B;
        } else {
          *frac |= 0x4;
          *frac &= 0x7F;
        }
        *frac += 0x20;
      } else if ((*frac & 0x60) == 0x60) {
        if (*frac & 0x4) {
          (*cov)++;
          *frac &= 0x9B;
        } else {
          *frac |= 0x4;
          *frac &= 0x9F;
        }
      } else
        *frac += 0x40;
      break;
    default: ;
      char msg[MAX_ALNS];
      sprintf(msg, "%s (%d)", errMsg[ERRALNS], count);
      exit(error(msg, ERRISSUE));
  }
}

// Assembly:
leal -0x2(%rdx), %eax
cmpl $0x8, %eax
ja 0x879e
leaq 0x9c86(%rip), %rcx      # 0x12320
movslq (%rcx,%rax,4), %rax
addq %rcx, %rax
jmpq *%rax
movb (%rsi), %al
testb $0x4, %al
je 0x873f
incw (%rdi)
movb (%rsi), %al
andb $-0x5, %al
jmp 0x879b
movzbl (%rsi), %eax
testb $0x10, %al
jne 0x8731
addb $0x8, %al
jmp 0x879b
movzbl (%rsi), %eax
testb $0x8, %al
jne 0x8739
testb $0x10, %al
jne 0x8762
orb $0x10, %al
jmp 0x879b
movb (%rsi), %al
movl %eax, %ecx
notb %cl
testb $0x7, %cl
jne 0x8743
incw (%rdi)
movb (%rsi), %al
andb $-0x8, %al
jmp 0x879b
movb (%rsi), %al
movl %eax, %ecx
notb %cl
testb $0x6, %cl
jne 0x8747
incw (%rdi)
movb (%rsi), %al
andb $-0x7, %al
jmp 0x879b
movzbl (%rsi), %eax
testb %al, %al
js 0x874b
movl %eax, %ecx
notl %ecx
testb $0x60, %cl
jne 0x8755
testb $0x4, %al
jne 0x8789
andb $0x1b, %al
jmp 0x873f
movb (%rsi), %al
testb %al, %al
jns 0x877c
testb $0x4, %al
jne 0x8780
andb $0x7b, %al
jmp 0x873f
testb $0x4, %al
jne 0x8759
andb $-0x15, %al
jmp 0x873f
testb $0x4, %al
jne 0x876c
andb $-0xd, %al
orb $0x4, %al
jmp 0x879b
incb %al
jmp 0x879b
addb $0x2, %al
jmp 0x879b
testb $0x4, %al
jne 0x8775
andb $0x7b, %al
orb $0x4, %al
jmp 0x877c
addb $0x40, %al
jmp 0x879b
incw (%rdi)
movb (%rsi), %al
andb $-0x15, %al
jmp 0x879b
testb $0x4, %al
jne 0x8792
andb $-0x15, %al
orb $0x4, %al
jmp 0x8799
incw (%rdi)
movb (%rsi), %al
andb $-0xd, %al
jmp 0x879b
incw (%rdi)
movb (%rsi), %al
andb $0x7b, %al
addb $0x20, %al
jmp 0x879b
incw (%rdi)
movb (%rsi), %al
andb $0x7b, %al
jmp 0x879b
incw (%rdi)
movb (%rsi), %al
andb $-0x65, %al
jmp 0x879b
incw (%rdi)
movb (%rsi), %al
andb $-0x15, %al
orb $0x8, %al
movb %al, (%rsi)
retq
subq $0x88, %rsp
movzbl %dl, %edi
movq %rsp, %rsi
callq 0x2d98