// File: /workspace/github_c_makefile_star2_O1/olcaytaner[P]Isell/image.c
// Function: set_limits_automatically
void set_limits_automatically(Limits* ax)
{
 /*!Last Changed 13.09.2006*/
 /*!Last Changed 25.01.2005*/
 double difference, power;
 int digits, firstdigit, seconddigit, digitsp, digitsm;
 if (ax->max < 0)
   return;
 if (ax->min < 0)
  {
   digitsm = (int) log10(-ax->min);
   digitsp = (int) log10(ax->max);
   if (digitsp >= digitsm)
     digits = digitsp;
   else
     digits = digitsm;
   power = fpow(10, digits);
   if (((int) (ax->max / power)) * power != ax->max)
     ax->max = ((int) (ax->max / power + 1)) * power;
   if (((int) (-ax->min / power)) * power != -ax->min)
     ax->min = -(((int) (-ax->min / power + 1)) * power);
   ax->division = (int) (ax->max / power) + (int) (-ax->min / power);
   if (digits >= 0)
     ax->precision = 0;
   else
     ax->precision = abs(digits);
   return;
  }
 difference = ax->max - ax->min;
 firstdigit = (int) log10(ax->min);
 seconddigit = (int) log10(ax->max);
 digits = (int) log10(difference);
 if (firstdigit == seconddigit)
  {
   power = fpow(10, firstdigit);
   ax->min = ((int) (ax->min / power)) * power;
   if (ax->max != (int) (ax->max))
     ax->max = ((int) (ax->max / power + 1)) * power;
   else
     ax->max = ((int) (ax->max / power)) * power;
   ax->division = (int) ((ax->max - ax->min) / power);
  }
 else
  {
   ax->min = 0;
   power = fpow(10, seconddigit);
   if (((int) (ax->max / power)) * power != ax->max)
     ax->max = ((int) (ax->max / power + 1)) * power;
   ax->division = (int) (ax->max / power);
  }
 if (digits >= 0)
   ax->precision = 0;
 else
   ax->precision = abs(digits);
}

// Assembly:
movsd 0x8(%rdi), %xmm2
xorpd %xmm1, %xmm1
ucomisd %xmm2, %xmm1
ja 0x2da73
pushq %rbp
pushq %r14
pushq %rbx
subq $0x10, %rsp
movq %rdi, %rbx
movsd (%rdi), %xmm0
ucomisd %xmm0, %xmm1
jbe 0x2d954
xorpd 0x75955(%rip), %xmm0    # 0xa31d0
callq 0x38e89
cvttsd2si %xmm0, %ebp
movsd 0x8(%rbx), %xmm0
callq 0x38e89
cvttsd2si %xmm0, %eax
cmpl %ebp, %eax
cmovgl %eax, %ebp
movsd 0x77491(%rip), %xmm0    # 0xa4d30
movl %ebp, %edi
callq 0x38db2
movsd 0x8(%rbx), %xmm2
movapd %xmm2, %xmm1
divsd %xmm0, %xmm1
cvttpd2dq %xmm1, %xmm3
cvtdq2pd %xmm3, %xmm3
mulsd %xmm0, %xmm3
ucomisd %xmm2, %xmm3
jne 0x2d8c7
jnp 0x2d8e0
addsd 0x74c51(%rip), %xmm1    # 0xa2520
cvttpd2dq %xmm1, %xmm1
cvtdq2pd %xmm1, %xmm1
mulsd %xmm0, %xmm1
movsd %xmm1, 0x8(%rbx)
movsd (%rbx), %xmm2
xorpd 0x758e4(%rip), %xmm2    # 0xa31d0
movapd %xmm2, %xmm1
divsd %xmm0, %xmm1
cvttpd2dq %xmm1, %xmm3
cvtdq2pd %xmm3, %xmm3
mulsd %xmm0, %xmm3
ucomisd %xmm2, %xmm3
jne 0x2d908
jnp 0x2d92c
addsd 0x74c10(%rip), %xmm1    # 0xa2520
cvttpd2dq %xmm1, %xmm1
cvtdq2pd %xmm1, %xmm1
movapd 0x758b0(%rip), %xmm2    # 0xa31d0
xorpd %xmm0, %xmm2
mulsd %xmm1, %xmm2
movsd %xmm2, (%rbx)
movsd 0x8(%rbx), %xmm1
divsd %xmm0, %xmm1
cvttsd2si %xmm1, %ecx
movsd (%rbx), %xmm1
xorpd 0x7588b(%rip), %xmm1    # 0xa31d0
divsd %xmm0, %xmm1
cvttsd2si %xmm1, %eax
addl %ecx, %eax
jmp 0x2da5c
subsd %xmm0, %xmm2
movsd %xmm2, 0x8(%rsp)
callq 0x38e89
cvttsd2si %xmm0, %ebp
movsd 0x8(%rbx), %xmm0
callq 0x38e89
cvttsd2si %xmm0, %r14d
movsd 0x8(%rsp), %xmm0
callq 0x38e89
movsd %xmm0, 0x8(%rsp)
cmpl %r14d, %ebp
jne 0x2d9f8
movsd 0x7739c(%rip), %xmm0    # 0xa4d30
movl %ebp, %edi
callq 0x38db2
movsd (%rbx), %xmm1
movsd 0x8(%rbx), %xmm2
divsd %xmm0, %xmm1
cvttpd2dq %xmm1, %xmm1
cvtdq2pd %xmm1, %xmm3
mulsd %xmm0, %xmm3
movsd %xmm3, (%rbx)
cvttpd2dq %xmm2, %xmm1
cvtdq2pd %xmm1, %xmm1
cmpneqsd %xmm2, %xmm1
divsd %xmm0, %xmm2
movsd 0x74b4f(%rip), %xmm4    # 0xa2520
addsd %xmm2, %xmm4
andpd %xmm1, %xmm4
andnpd %xmm2, %xmm1
orpd %xmm4, %xmm1
cvttpd2dq %xmm1, %xmm1
cvtdq2pd %xmm1, %xmm1
mulsd %xmm0, %xmm1
movsd %xmm1, 0x8(%rbx)
subsd %xmm3, %xmm1
jmp 0x2da4e
movq $0x0, (%rbx)
movsd 0x77329(%rip), %xmm0    # 0xa4d30
movl %r14d, %edi
callq 0x38db2
movsd 0x8(%rbx), %xmm2
movapd %xmm2, %xmm1
divsd %xmm0, %xmm1
cvttpd2dq %xmm1, %xmm3
cvtdq2pd %xmm3, %xmm3
mulsd %xmm0, %xmm3
ucomisd %xmm2, %xmm3
jne 0x2da30
jnp 0x2da49
addsd 0x74ae8(%rip), %xmm1    # 0xa2520
cvttpd2dq %xmm1, %xmm1
cvtdq2pd %xmm1, %xmm1
mulsd %xmm0, %xmm1
movsd %xmm1, 0x8(%rbx)
movsd 0x8(%rbx), %xmm1
divsd %xmm0, %xmm1
cvttsd2si 0x8(%rsp), %ebp
cvttsd2si %xmm1, %eax
movl %eax, 0x10(%rbx)
movl %ebp, %eax
negl %eax
sarl $0x1f, %ebp
andl %eax, %ebp
movl %ebp, 0x14(%rbx)
addq $0x10, %rsp
popq %rbx
popq %r14
popq %rbp
retq