// File: /workspace/github_c_makefile_star2_O0/jsh58[P]Genrich/Genrich.c
// Function: subFrac
void subFrac(int16_t* cov, uint8_t* frac, uint8_t count) {
  switch (count) {
    case 8:
      if (*frac & 0x7)
        (*frac)--;
      else {
        (*cov)--;
        *frac |= 0x7;
      }
      break;
    case 4:
      if (*frac & 0x6)
        *frac -= 0x2;
      else {
        (*cov)--;
        *frac |= 0x6;
      }
      break;
    case 2:
      if (*frac & 0x4)
        *frac &= 0xFB;
      else {
        (*cov)--;
        *frac |= 0x4;
      }
      break;
    case 6:
      if (*frac & 0x18)
        *frac -= 0x8;
      else if (*frac & 0x4) {
        *frac |= 0x10;
        *frac &= 0xFB;
      } else {
        (*cov)--;
        *frac |= 0x14;
      }
      break;
    case 3:
      if (*frac & 0x10)
        *frac &= 0xEF;
      else if (*frac & 0x4) {
        *frac &= 0xFB;
        *frac += 0x8;
      } else {
        (*cov)--;
        *frac += 0xC;
      }
      break;
    case 10:
      if (*frac & 0xE0)
        *frac -= 0x20;
      else if (*frac & 0x4) {
        *frac &= 0xFB;
        *frac |= 0x80;
      } else {
        (*cov)--;
        *frac |= 0x84;
      }
      break;
    case 5:
      if (*frac & 0xC0)
        *frac -= 0x40;
      else if (*frac & 0x4) {
        *frac &= 0xFB;
        *frac += 0x60;
      } else {
        (*cov)--;
        *frac |= 0x4;
        *frac += 0x60;
      }
      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 0xb548
movq 0x8(%rsp), %rax
leaq 0x12ffd(%rip), %rcx     # 0x1e224
movslq (%rcx,%rax,4), %rax
addq %rcx, %rax
jmpq *%rax
movq 0x98(%rsp), %rax
movzbl (%rax), %eax
andl $0x7, %eax
cmpl $0x0, %eax
je 0xb254
movq 0x98(%rsp), %rax
movb (%rax), %cl
addb $-0x1, %cl
movb %cl, (%rax)
jmp 0xb276
movq 0xa0(%rsp), %rax
movw (%rax), %cx
addw $-0x1, %cx
movw %cx, (%rax)
movq 0x98(%rsp), %rax
movzbl (%rax), %ecx
orl $0x7, %ecx
movb %cl, (%rax)
jmp 0xb580
movq 0x98(%rsp), %rax
movzbl (%rax), %eax
andl $0x6, %eax
cmpl $0x0, %eax
je 0xb2a0
movq 0x98(%rsp), %rax
movzbl (%rax), %ecx
subl $0x2, %ecx
movb %cl, (%rax)
jmp 0xb2c2
movq 0xa0(%rsp), %rax
movw (%rax), %cx
addw $-0x1, %cx
movw %cx, (%rax)
movq 0x98(%rsp), %rax
movzbl (%rax), %ecx
orl $0x6, %ecx
movb %cl, (%rax)
jmp 0xb580
movq 0x98(%rsp), %rax
movzbl (%rax), %eax
andl $0x4, %eax
cmpl $0x0, %eax
je 0xb2ef
movq 0x98(%rsp), %rax
movzbl (%rax), %ecx
andl $0xfb, %ecx
movb %cl, (%rax)
jmp 0xb311
movq 0xa0(%rsp), %rax
movw (%rax), %cx
addw $-0x1, %cx
movw %cx, (%rax)
movq 0x98(%rsp), %rax
movzbl (%rax), %ecx
orl $0x4, %ecx
movb %cl, (%rax)
jmp 0xb580
movq 0x98(%rsp), %rax
movzbl (%rax), %eax
andl $0x18, %eax
cmpl $0x0, %eax
je 0xb33b
movq 0x98(%rsp), %rax
movzbl (%rax), %ecx
subl $0x8, %ecx
movb %cl, (%rax)
jmp 0xb397
movq 0x98(%rsp), %rax
movzbl (%rax), %eax
andl $0x4, %eax
cmpl $0x0, %eax
je 0xb373
movq 0x98(%rsp), %rax
movzbl (%rax), %ecx
orl $0x10, %ecx
movb %cl, (%rax)
movq 0x98(%rsp), %rax
movzbl (%rax), %ecx
andl $0xfb, %ecx
movb %cl, (%rax)
jmp 0xb395
movq 0xa0(%rsp), %rax
movw (%rax), %cx
addw $-0x1, %cx
movw %cx, (%rax)
movq 0x98(%rsp), %rax
movzbl (%rax), %ecx
orl $0x14, %ecx
movb %cl, (%rax)
jmp 0xb397
jmp 0xb580
movq 0x98(%rsp), %rax
movzbl (%rax), %eax
andl $0x10, %eax
cmpl $0x0, %eax
je 0xb3c4
movq 0x98(%rsp), %rax
movzbl (%rax), %ecx
andl $0xef, %ecx
movb %cl, (%rax)
jmp 0xb420
movq 0x98(%rsp), %rax
movzbl (%rax), %eax
andl $0x4, %eax
cmpl $0x0, %eax
je 0xb3fc
movq 0x98(%rsp), %rax
movzbl (%rax), %ecx
andl $0xfb, %ecx
movb %cl, (%rax)
movq 0x98(%rsp), %rax
movzbl (%rax), %ecx
addl $0x8, %ecx
movb %cl, (%rax)
jmp 0xb41e
movq 0xa0(%rsp), %rax
movw (%rax), %cx
addw $-0x1, %cx
movw %cx, (%rax)
movq 0x98(%rsp), %rax
movzbl (%rax), %ecx
addl $0xc, %ecx
movb %cl, (%rax)
jmp 0xb420
jmp 0xb580
movq 0x98(%rsp), %rax
movzbl (%rax), %eax
andl $0xe0, %eax
cmpl $0x0, %eax
je 0xb44c
movq 0x98(%rsp), %rax
movzbl (%rax), %ecx
subl $0x20, %ecx
movb %cl, (%rax)
jmp 0xb4ae
movq 0x98(%rsp), %rax
movzbl (%rax), %eax
andl $0x4, %eax
cmpl $0x0, %eax
je 0xb487
movq 0x98(%rsp), %rax
movzbl (%rax), %ecx
andl $0xfb, %ecx
movb %cl, (%rax)
movq 0x98(%rsp), %rax
movzbl (%rax), %ecx
orl $0x80, %ecx
movb %cl, (%rax)
jmp 0xb4ac
movq 0xa0(%rsp), %rax
movw (%rax), %cx
addw $-0x1, %cx
movw %cx, (%rax)
movq 0x98(%rsp), %rax
movzbl (%rax), %ecx
orl $0x84, %ecx
movb %cl, (%rax)
jmp 0xb4ae
jmp 0xb580
movq 0x98(%rsp), %rax
movzbl (%rax), %eax
andl $0xc0, %eax
cmpl $0x0, %eax
je 0xb4da
movq 0x98(%rsp), %rax
movzbl (%rax), %ecx
subl $0x40, %ecx
movb %cl, (%rax)
jmp 0xb546
movq 0x98(%rsp), %rax
movzbl (%rax), %eax
andl $0x4, %eax
cmpl $0x0, %eax
je 0xb512
movq 0x98(%rsp), %rax
movzbl (%rax), %ecx
andl $0xfb, %ecx
movb %cl, (%rax)
movq 0x98(%rsp), %rax
movzbl (%rax), %ecx
addl $0x60, %ecx
movb %cl, (%rax)
jmp 0xb544
movq 0xa0(%rsp), %rax
movw (%rax), %cx
addw $-0x1, %cx
movw %cx, (%rax)
movq 0x98(%rsp), %rax
movzbl (%rax), %ecx
orl $0x4, %ecx
movb %cl, (%rax)
movq 0x98(%rsp), %rax
movzbl (%rax), %ecx
addl $0x60, %ecx
movb %cl, (%rax)
jmp 0xb546
jmp 0xb580
leaq 0x10(%rsp), %rdi
movq 0x17d3c(%rip), %rdx     # 0x23290
movzbl 0x97(%rsp), %ecx
leaq 0x1458b(%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)