// File: /workspace/github_c_makefile_star2_O0/canboat[P]canboat/analyzer/print.c
// Function: extractNumberNotEmpty
static bool extractNumberNotEmpty(const Field   *field,
                                  const char    *fieldName,
                                  const uint8_t *data,
                                  size_t         dataLen,
                                  size_t         startBit,
                                  size_t         bits,
                                  int64_t       *value,
                                  int64_t       *maxValue)
{
  int64_t reserved;

  if (!extractNumber(field, data, dataLen, startBit, bits, value, maxValue))
  {
    return false;
  }

  if (*maxValue >= 7)
  {
    reserved = 2; /* DATAFIELD_ERROR and DATAFIELD_UNKNOWN */
  }
  else if (*maxValue > 1)
  {
    reserved = 1; /* DATAFIELD_UNKNOWN */
  }
  else
  {
    reserved = 0;
  }

  if (field->pgn != NULL && field->pgn->repeatingField1 == field->order)
  {
    logDebug("The first repeating fieldset repeats %" PRId64 " times\n", *value);
    g_variableFieldRepeat[0] = *value;
  }

  if (field->pgn != NULL && field->pgn->repeatingField2 == field->order)
  {
    logDebug("The second repeating fieldset repeats %" PRId64 " times\n", *value);
    g_variableFieldRepeat[1] = *value;
  }

  g_previousFieldValue = *value;

  if (*value > *maxValue - reserved)
  {
    printEmpty(fieldName, *value - *maxValue);
    return false;
  }

  return true;
}

// Assembly:
pushq %rbp
movq %rsp, %rbp
subq $0x50, %rsp
movq 0x18(%rbp), %rax
movq 0x10(%rbp), %rax
movq %rdi, -0x10(%rbp)
movq %rsi, -0x18(%rbp)
movq %rdx, -0x20(%rbp)
movq %rcx, -0x28(%rbp)
movq %r8, -0x30(%rbp)
movq %r9, -0x38(%rbp)
movq -0x10(%rbp), %rdi
movq -0x20(%rbp), %rsi
movq -0x28(%rbp), %rdx
movq -0x30(%rbp), %rcx
movq -0x38(%rbp), %r8
movq 0x10(%rbp), %r9
movq 0x18(%rbp), %rax
movq %rax, (%rsp)
callq 0x1b150
testb $0x1, %al
jne 0x1b7ca
movb $0x0, -0x1(%rbp)
jmp 0x1b8e9
movq 0x18(%rbp), %rax
cmpq $0x7, (%rax)
jl 0x1b7de
movq $0x2, -0x40(%rbp)
jmp 0x1b7fc
movq 0x18(%rbp), %rax
cmpq $0x1, (%rax)
jle 0x1b7f2
movq $0x1, -0x40(%rbp)
jmp 0x1b7fa
movq $0x0, -0x40(%rbp)
jmp 0x1b7fc
movq -0x10(%rbp), %rax
cmpq $0x0, 0x90(%rax)
je 0x1b84f
movq -0x10(%rbp), %rax
movq 0x90(%rax), %rax
movzbl 0x15ef(%rax), %eax
movq -0x10(%rbp), %rcx
movzbl 0x4b(%rcx), %ecx
cmpl %ecx, %eax
jne 0x1b84f
movq 0x10(%rbp), %rax
movq (%rax), %rsi
leaq 0x15925(%rip), %rdi     # 0x3115b
movb $0x0, %al
callq 0x1f670
movq 0x10(%rbp), %rax
movq (%rax), %rax
movl %eax, %ecx
leaq 0x75e53(%rip), %rax     # 0x916a0
movl %ecx, (%rax)
movq -0x10(%rbp), %rax
cmpq $0x0, 0x90(%rax)
je 0x1b8a3
movq -0x10(%rbp), %rax
movq 0x90(%rax), %rax
movzbl 0x15f0(%rax), %eax
movq -0x10(%rbp), %rcx
movzbl 0x4b(%rcx), %ecx
cmpl %ecx, %eax
jne 0x1b8a3
movq 0x10(%rbp), %rax
movq (%rax), %rsi
leaq 0x15902(%rip), %rdi     # 0x3118b
movb $0x0, %al
callq 0x1f670
movq 0x10(%rbp), %rax
movq (%rax), %rax
movl %eax, %ecx
leaq 0x75e00(%rip), %rax     # 0x916a0
movl %ecx, 0x4(%rax)
movq 0x10(%rbp), %rax
movq (%rax), %rax
movq %rax, 0x77f17(%rip)     # 0x937c8
movq 0x10(%rbp), %rax
movq (%rax), %rax
movq 0x18(%rbp), %rcx
movq (%rcx), %rcx
subq -0x40(%rbp), %rcx
cmpq %rcx, %rax
jle 0x1b8e5
movq -0x18(%rbp), %rdi
movq 0x10(%rbp), %rax
movq (%rax), %rsi
movq 0x18(%rbp), %rax
subq (%rax), %rsi
callq 0x1b5f0
movb $0x0, -0x1(%rbp)
jmp 0x1b8e9
movb $0x1, -0x1(%rbp)
movb -0x1(%rbp), %al
andb $0x1, %al
addq $0x50, %rsp
popq %rbp
retq
nopw %cs:(%rax,%rax)