// File: /workspace/github_c_makefile_star2_O2/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 0x7292
leaq 0x90e2(%rip), %rcx      # 0x10270
movslq (%rcx,%rax,4), %rax
addq %rcx, %rax
jmpq *%rax
movb (%rsi), %al
testb $0x4, %al
je 0x7233
incw (%rdi)
movb (%rsi), %al
andb $-0x5, %al
jmp 0x728f
movzbl (%rsi), %eax
testb $0x10, %al
jne 0x7225
addb $0x8, %al
jmp 0x728f
movzbl (%rsi), %eax
testb $0x8, %al
jne 0x722d
testb $0x10, %al
jne 0x7256
orb $0x10, %al
jmp 0x728f
movb (%rsi), %al
movl %eax, %ecx
notb %cl
testb $0x7, %cl
jne 0x7237
incw (%rdi)
movb (%rsi), %al
andb $-0x8, %al
jmp 0x728f
movb (%rsi), %al
movl %eax, %ecx
notb %cl
testb $0x6, %cl
jne 0x723b
incw (%rdi)
movb (%rsi), %al
andb $-0x7, %al
jmp 0x728f
movzbl (%rsi), %eax
testb %al, %al
js 0x723f
movl %eax, %ecx
notl %ecx
testb $0x60, %cl
jne 0x7249
testb $0x4, %al
jne 0x727d
andb $0x1b, %al
jmp 0x7233
movb (%rsi), %al
testb %al, %al
jns 0x7270
testb $0x4, %al
jne 0x7274
andb $0x7b, %al
jmp 0x7233
testb $0x4, %al
jne 0x724d
andb $-0x15, %al
jmp 0x7233
testb $0x4, %al
jne 0x7260
andb $-0xd, %al
orb $0x4, %al
jmp 0x728f
incb %al
jmp 0x728f
addb $0x2, %al
jmp 0x728f
testb $0x4, %al
jne 0x7269
andb $0x7b, %al
orb $0x4, %al
jmp 0x7270
addb $0x40, %al
jmp 0x728f
incw (%rdi)
movb (%rsi), %al
andb $-0x15, %al
jmp 0x728f
testb $0x4, %al
jne 0x7286
andb $-0x15, %al
orb $0x4, %al
jmp 0x728d
incw (%rdi)
movb (%rsi), %al
andb $-0xd, %al
jmp 0x728f
incw (%rdi)
movb (%rsi), %al
andb $0x7b, %al
addb $0x20, %al
jmp 0x728f
incw (%rdi)
movb (%rsi), %al
andb $0x7b, %al
jmp 0x728f
incw (%rdi)
movb (%rsi), %al
andb $-0x65, %al
jmp 0x728f
incw (%rdi)
movb (%rsi), %al
andb $-0x15, %al
orb $0x8, %al
movb %al, (%rsi)
retq
pushq %rbx
subq $0x80, %rsp
movzbl %dl, %ecx
movq 0xffec(%rip), %rdx      # 0x17290
leaq 0xa613(%rip), %rsi      # 0x118be
movq %rsp, %rbx
movq %rbx, %rdi
xorl %eax, %eax
callq 0x2290
pushq $0x21
popq %rsi
movq %rbx, %rdi
callq 0x2724
pushq $0x1
popq %rdi
callq 0x22a0