// File: /workspace/github_c_makefile_star2_O0/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:
subq $0xa8, %rsp
movb %dl, %al
movq %rdi, 0xa0(%rsp)
movq %rsi, 0x98(%rsp)
movb %al, 0x97(%rsp)
movzbl 0x97(%rsp), %eax
addl $-0x2, %eax
movl %eax, %ecx
movq %rcx, 0x8(%rsp)
subl $0x8, %eax
ja 0xb19b
movq 0x8(%rsp), %rax
leaq 0x13479(%rip), %rcx     # 0x1e200
movslq (%rcx,%rax,4), %rax
addq %rcx, %rax
jmpq *%rax
movq 0x98(%rsp), %rax
movzbl (%rax), %eax
andl $0x7, %eax
cmpl $0x7, %eax
jne 0xadca
movq 0xa0(%rsp), %rax
movw (%rax), %cx
addw $0x1, %cx
movw %cx, (%rax)
movq 0x98(%rsp), %rax
movzbl (%rax), %ecx
andl $0xf8, %ecx
movb %cl, (%rax)
jmp 0xadd9
movq 0x98(%rsp), %rax
movb (%rax), %cl
addb $0x1, %cl
movb %cl, (%rax)
jmp 0xb1d3
movq 0x98(%rsp), %rax
movzbl (%rax), %eax
andl $0x6, %eax
cmpl $0x6, %eax
jne 0xae18
movq 0xa0(%rsp), %rax
movw (%rax), %cx
addw $0x1, %cx
movw %cx, (%rax)
movq 0x98(%rsp), %rax
movzbl (%rax), %ecx
andl $0xf9, %ecx
movb %cl, (%rax)
jmp 0xae28
movq 0x98(%rsp), %rax
movzbl (%rax), %ecx
addl $0x2, %ecx
movb %cl, (%rax)
jmp 0xb1d3
movq 0x98(%rsp), %rax
movzbl (%rax), %eax
andl $0x4, %eax
cmpl $0x0, %eax
je 0xae67
movq 0xa0(%rsp), %rax
movw (%rax), %cx
addw $0x1, %cx
movw %cx, (%rax)
movq 0x98(%rsp), %rax
movzbl (%rax), %ecx
andl $0xfb, %ecx
movb %cl, (%rax)
jmp 0xae77
movq 0x98(%rsp), %rax
movzbl (%rax), %ecx
orl $0x4, %ecx
movb %cl, (%rax)
jmp 0xb1d3
movq 0x98(%rsp), %rax
movzbl (%rax), %eax
andl $0x10, %eax
cmpl $0x0, %eax
je 0xaeee
movq 0x98(%rsp), %rax
movzbl (%rax), %eax
andl $0x4, %eax
cmpl $0x0, %eax
je 0xaec9
movq 0xa0(%rsp), %rax
movw (%rax), %cx
addw $0x1, %cx
movw %cx, (%rax)
movq 0x98(%rsp), %rax
movzbl (%rax), %ecx
andl $0xeb, %ecx
movb %cl, (%rax)
jmp 0xaeec
movq 0x98(%rsp), %rax
movzbl (%rax), %ecx
orl $0x4, %ecx
movb %cl, (%rax)
movq 0x98(%rsp), %rax
movzbl (%rax), %ecx
andl $0xef, %ecx
movb %cl, (%rax)
jmp 0xaefe
movq 0x98(%rsp), %rax
movzbl (%rax), %ecx
addl $0x8, %ecx
movb %cl, (%rax)
jmp 0xb1d3
movq 0x98(%rsp), %rax
movzbl (%rax), %eax
andl $0x8, %eax
cmpl $0x0, %eax
je 0xaf78
movq 0x98(%rsp), %rax
movzbl (%rax), %eax
andl $0x4, %eax
cmpl $0x0, %eax
je 0xaf50
movq 0xa0(%rsp), %rax
movw (%rax), %cx
addw $0x1, %cx
movw %cx, (%rax)
movq 0x98(%rsp), %rax
movzbl (%rax), %ecx
andl $0xf3, %ecx
movb %cl, (%rax)
jmp 0xaf73
movq 0x98(%rsp), %rax
movzbl (%rax), %ecx
orl $0x4, %ecx
movb %cl, (%rax)
movq 0x98(%rsp), %rax
movzbl (%rax), %ecx
andl $0xf7, %ecx
movb %cl, (%rax)
jmp 0xb00c
movq 0x98(%rsp), %rax
movzbl (%rax), %eax
andl $0x10, %eax
cmpl $0x0, %eax
je 0xaffa
movq 0x98(%rsp), %rax
movzbl (%rax), %eax
andl $0x4, %eax
cmpl $0x0, %eax
je 0xafc5
movq 0xa0(%rsp), %rax
movw (%rax), %cx
addw $0x1, %cx
movw %cx, (%rax)
movq 0x98(%rsp), %rax
movzbl (%rax), %ecx
andl $0xeb, %ecx
movb %cl, (%rax)
jmp 0xafe8
movq 0x98(%rsp), %rax
movzbl (%rax), %ecx
orl $0x4, %ecx
movb %cl, (%rax)
movq 0x98(%rsp), %rax
movzbl (%rax), %ecx
andl $0xef, %ecx
movb %cl, (%rax)
movq 0x98(%rsp), %rax
movzbl (%rax), %ecx
orl $0x8, %ecx
movb %cl, (%rax)
jmp 0xb00a
movq 0x98(%rsp), %rax
movzbl (%rax), %ecx
orl $0x10, %ecx
movb %cl, (%rax)
jmp 0xb00c
jmp 0xb1d3
movq 0x98(%rsp), %rax
movzbl (%rax), %eax
andl $0x80, %eax
cmpl $0x0, %eax
je 0xb07f
movq 0x98(%rsp), %rax
movzbl (%rax), %eax
andl $0x4, %eax
cmpl $0x0, %eax
je 0xb05d
movq 0xa0(%rsp), %rax
movw (%rax), %cx
addw $0x1, %cx
movw %cx, (%rax)
movq 0x98(%rsp), %rax
movzbl (%rax), %ecx
andl $0x7b, %ecx
movb %cl, (%rax)
jmp 0xb07d
movq 0x98(%rsp), %rax
movzbl (%rax), %ecx
orl $0x4, %ecx
movb %cl, (%rax)
movq 0x98(%rsp), %rax
movzbl (%rax), %ecx
andl $0x7f, %ecx
movb %cl, (%rax)
jmp 0xb08f
movq 0x98(%rsp), %rax
movzbl (%rax), %ecx
addl $0x20, %ecx
movb %cl, (%rax)
jmp 0xb1d3
movq 0x98(%rsp), %rax
movzbl (%rax), %eax
andl $0x80, %eax
cmpl $0x0, %eax
je 0xb115
movq 0x98(%rsp), %rax
movzbl (%rax), %eax
andl $0x4, %eax
cmpl $0x0, %eax
je 0xb0e0
movq 0xa0(%rsp), %rax
movw (%rax), %cx
addw $0x1, %cx
movw %cx, (%rax)
movq 0x98(%rsp), %rax
movzbl (%rax), %ecx
andl $0x7b, %ecx
movb %cl, (%rax)
jmp 0xb100
movq 0x98(%rsp), %rax
movzbl (%rax), %ecx
orl $0x4, %ecx
movb %cl, (%rax)
movq 0x98(%rsp), %rax
movzbl (%rax), %ecx
andl $0x7f, %ecx
movb %cl, (%rax)
movq 0x98(%rsp), %rax
movzbl (%rax), %ecx
addl $0x20, %ecx
movb %cl, (%rax)
jmp 0xb199
movq 0x98(%rsp), %rax
movzbl (%rax), %eax
andl $0x60, %eax
cmpl $0x60, %eax
jne 0xb187
movq 0x98(%rsp), %rax
movzbl (%rax), %eax
andl $0x4, %eax
cmpl $0x0, %eax
je 0xb162
movq 0xa0(%rsp), %rax
movw (%rax), %cx
addw $0x1, %cx
movw %cx, (%rax)
movq 0x98(%rsp), %rax
movzbl (%rax), %ecx
andl $0x9b, %ecx
movb %cl, (%rax)
jmp 0xb185
movq 0x98(%rsp), %rax
movzbl (%rax), %ecx
orl $0x4, %ecx
movb %cl, (%rax)
movq 0x98(%rsp), %rax
movzbl (%rax), %ecx
andl $0x9f, %ecx
movb %cl, (%rax)
jmp 0xb197
movq 0x98(%rsp), %rax
movzbl (%rax), %ecx
addl $0x40, %ecx
movb %cl, (%rax)
jmp 0xb199
jmp 0xb1d3
leaq 0x10(%rsp), %rdi
movq 0x180e9(%rip), %rdx     # 0x23290
movzbl 0x97(%rsp), %ecx
leaq 0x14938(%rip), %rsi     # 0x1faee
movb $0x0, %al
callq 0x22a0
leaq 0x10(%rsp), %rdi
movl $0x21, %esi
callq 0x2840
movl %eax, %edi
callq 0x22b0
addq $0xa8, %rsp
retq
nopl (%rax,%rax)