// File: /workspace/github_c_makefile_star2_O0/ohkimur[P]the-c-programming-language-2nd-edition-solutions/chapter_2/exercise_2_01/types_ranges.c
// Function: main
int main(void)
{
  printf("#################### CHAR #####################\n");
  printf("bits: %d\n", CHAR_BIT);
  printf("unsigned char max: %d\n", UCHAR_MAX);
  printf("signed char min: %d\n", SCHAR_MIN);
  printf("signed char max: %d\n", SCHAR_MAX);
  printf("\n");

  printf("##################### INT #####################\n");
  printf("unsigned int max: %u\n", UINT_MAX);
  printf("signed int min: %d\n", INT_MIN);
  printf("signed int max: %d\n", INT_MAX);
  printf("\n");

  printf("################## SHORT INT ##################\n");
  printf("unsigned short int max: %u\n", USHRT_MAX);
  printf("signed short int min: %d\n", SHRT_MIN);
  printf("signed short int max: %d\n", SHRT_MAX);
  printf("\n");

  printf("################## LONG INT ###################\n");
  printf("unsigned long int max: %lu\n", ULONG_MAX);
  printf("signed long int min: %ld\n", LONG_MIN);
  printf("signed long int max: %ld\n", LONG_MAX);
  printf("\n");

  printf("################ LONG LONG INT #################\n");
  printf("unsigned long long int max: %llu\n", ULLONG_MAX);
  printf("signed long long int min: %lld\n", LLONG_MIN);
  printf("signed long long int max: %lld\n", LLONG_MAX);
  printf("\n");

  return 0;
}

// Assembly:
pushq %rbp
movq %rsp, %rbp
subq $0x10, %rsp
movl $0x0, -0x4(%rbp)
leaq 0xeae(%rip), %rdi       # 0x2004
movb $0x0, %al
callq 0x1030
leaq 0xed1(%rip), %rdi       # 0x2035
movl $0x8, %esi
movb $0x0, %al
callq 0x1030
leaq 0xec8(%rip), %rdi       # 0x203f
movl $0xff, %esi
movb $0x0, %al
callq 0x1030
leaq 0xecc(%rip), %rdi       # 0x2056
movl $0xffffff80, %esi       # imm = 0xFFFFFF80
movb $0x0, %al
callq 0x1030
leaq 0xea4(%rip), %rdi       # 0x2041
movl $0x7f, %esi
movb $0x0, %al
callq 0x1030
leaq 0x105c(%rip), %rdi      # 0x220c
movb $0x0, %al
callq 0x1030
leaq 0xead(%rip), %rdi       # 0x206b
movb $0x0, %al
callq 0x1030
leaq 0xed0(%rip), %rdi       # 0x209c
movl $0xffffffff, %esi       # imm = 0xFFFFFFFF
movb $0x0, %al
callq 0x1030
leaq 0xed3(%rip), %rdi       # 0x20b2
movl $0x80000000, %esi       # imm = 0x80000000
movb $0x0, %al
callq 0x1030
leaq 0xed4(%rip), %rdi       # 0x20c6
movl $0x7fffffff, %esi       # imm = 0x7FFFFFFF
movb $0x0, %al
callq 0x1030
leaq 0x1007(%rip), %rdi      # 0x220c
movb $0x0, %al
callq 0x1030
leaq 0xec7(%rip), %rdi       # 0x20da
movb $0x0, %al
callq 0x1030
leaq 0xeea(%rip), %rdi       # 0x210b
movl $0xffff, %esi           # imm = 0xFFFF
movb $0x0, %al
callq 0x1030
leaq 0xef3(%rip), %rdi       # 0x2127
movl $0xffff8000, %esi       # imm = 0xFFFF8000
movb $0x0, %al
callq 0x1030
leaq 0xefa(%rip), %rdi       # 0x2141
movl $0x7fff, %esi           # imm = 0x7FFF
movb $0x0, %al
callq 0x1030
leaq 0xfb2(%rip), %rdi       # 0x220c
movb $0x0, %al
callq 0x1030
leaq 0xef3(%rip), %rdi       # 0x215b
movb $0x0, %al
callq 0x1030
leaq 0xf16(%rip), %rdi       # 0x218c
movq $-0x1, %rsi
movb $0x0, %al
callq 0x1030
leaq 0xf1d(%rip), %rdi       # 0x21a8
movabsq $-0x8000000000000000, %rsi # imm = 0x8000000000000000
movb $0x0, %al
callq 0x1030
leaq 0xf1f(%rip), %rdi       # 0x21c2
movabsq $0x7fffffffffffffff, %rsi # imm = 0x7FFFFFFFFFFFFFFF
movb $0x0, %al
callq 0x1030
leaq 0xf51(%rip), %rdi       # 0x220c
movb $0x0, %al
callq 0x1030
leaq 0xf13(%rip), %rdi       # 0x21dc
movb $0x0, %al
callq 0x1030
leaq 0xf37(%rip), %rdi       # 0x220e
movq $-0x1, %rsi
movb $0x0, %al
callq 0x1030
leaq 0xf44(%rip), %rdi       # 0x2230
movabsq $-0x8000000000000000, %rsi # imm = 0x8000000000000000
movb $0x0, %al
callq 0x1030
leaq 0xf4c(%rip), %rdi       # 0x2250
movabsq $0x7fffffffffffffff, %rsi # imm = 0x7FFFFFFFFFFFFFFF
movb $0x0, %al
callq 0x1030
leaq 0xef0(%rip), %rdi       # 0x220c
movb $0x0, %al
callq 0x1030
xorl %eax, %eax
addq $0x10, %rsp
popq %rbp
retq