// File: /workspace/github_c_makefile_star2_O0/genometools[P]genometools/src/core/safearith.c
// Function: gt_safearith_example
int gt_safearith_example(GT_UNUSED GtError *err)
{
  GtUword ulong;
  GtWord slong;
  unsigned int a, b, c;
  gt_error_check(err);

  /* safe assignments */
  slong = 256;
  gt_safe_assign(ulong, slong);
  gt_assert(ulong = 256);

  /* safe additions */
  a = 256;
  b = 1;
  gt_safe_add(c, a, b);
  gt_assert(c == 257);

  /* safe subtractions */
  a = 256;
  b = 1;
  gt_safe_sub(c, a, b);
  gt_assert(c == 255);

  /* safe absolutes */
  gt_assert(gt_safe_abs(-256) == 256);

  return 0;
}

// Assembly:
subq $0xb8, %rsp
movq %rdi, 0xb0(%rsp)
cmpq $0x0, 0xb0(%rsp)
je 0x966c5
movq 0xb0(%rsp), %rdi
callq 0xc270
testb $0x1, %al
jne 0x9668d
jmp 0x966c5
movq 0x11d944(%rip), %rax    # 0x1b3fd8
movq (%rax), %rdi
leaq 0xc79c8(%rip), %rsi     # 0x15e066
leaq 0xc7fa3(%rip), %rdx     # 0x15e648
leaq 0xda11d(%rip), %rcx     # 0x1707c9
leaq 0xda12b(%rip), %r8      # 0x1707de
movl $0x9a, %r9d
movb $0x0, %al
callq 0xb890
callq 0xb2e0
jmp 0x966c7
movq $0x100, 0xa0(%rsp) # imm = 0x100
movq 0xa0(%rsp), %rax
movq %rax, 0x88(%rsp)
movq 0x88(%rsp), %rax
movq %rax, 0x80(%rsp)
movq 0x88(%rsp), %rax
cmpq 0x80(%rsp), %rax
jne 0x96744
cmpq $0x1, 0x88(%rsp)
setl %al
andb $0x1, %al
movzbl %al, %eax
cmpq $0x1, 0x80(%rsp)
setb %cl
andb $0x1, %cl
movzbl %cl, %ecx
cmpl %ecx, %eax
jne 0x96744
movq 0x80(%rsp), %rax
movq %rax, 0xa8(%rsp)
xorl %eax, %eax
movl %eax, 0x30(%rsp)
jmp 0x9674f
movl $0x1, %eax
movl %eax, 0x30(%rsp)
jmp 0x9674f
movl 0x30(%rsp), %eax
movl %eax, 0x7c(%rsp)
cmpl $0x0, 0x7c(%rsp)
je 0x9678c
movq 0x11d873(%rip), %rax    # 0x1b3fd8
movq (%rax), %rdi
leaq 0xda084(%rip), %rsi     # 0x1707f3
leaq 0xda068(%rip), %rdx     # 0x1707de
movl $0x9e, %ecx
movb $0x0, %al
callq 0xb890
movl $0x1, %edi
callq 0xb780
jmp 0x9678e
jmp 0x96790
movq $0x100, 0xa8(%rsp) # imm = 0x100
movb $0x1, %al
testb $0x1, %al
jne 0x967da
movq 0x11d82f(%rip), %rax    # 0x1b3fd8
movq (%rax), %rdi
leaq 0xc78b3(%rip), %rsi     # 0x15e066
leaq 0xda05b(%rip), %rdx     # 0x170815
leaq 0xda008(%rip), %rcx     # 0x1707c9
leaq 0xda016(%rip), %r8      # 0x1707de
movl $0x9f, %r9d
movb $0x0, %al
callq 0xb890
callq 0xb2e0
jmp 0x967dc
movl $0x100, 0x9c(%rsp) # imm = 0x100
movl $0x1, 0x98(%rsp)
movl 0x9c(%rsp), %eax
movl %eax, 0x78(%rsp)
movl 0x98(%rsp), %eax
movl %eax, 0x74(%rsp)
cmpl $0x1, 0x74(%rsp)
jae 0x968a4
xorl %eax, %eax
subl 0x74(%rsp), %eax
cmpl 0x78(%rsp), %eax
ja 0x9688c
movl 0x78(%rsp), %eax
addl 0x74(%rsp), %eax
movl %eax, 0x6c(%rsp)
movl 0x6c(%rsp), %eax
movl %eax, 0x68(%rsp)
movl 0x6c(%rsp), %eax
cmpl 0x68(%rsp), %eax
jne 0x9686f
cmpl $0x1, 0x6c(%rsp)
setb %al
andb $0x1, %al
movzbl %al, %eax
cmpl $0x1, 0x68(%rsp)
setb %cl
andb $0x1, %cl
movzbl %cl, %ecx
cmpl %ecx, %eax
jne 0x9686f
movl 0x68(%rsp), %eax
movl %eax, 0x94(%rsp)
xorl %eax, %eax
movl %eax, 0x2c(%rsp)
jmp 0x9687a
movl $0x1, %eax
movl %eax, 0x2c(%rsp)
jmp 0x9687a
movl 0x2c(%rsp), %eax
movl %eax, 0x64(%rsp)
movl 0x64(%rsp), %eax
movl %eax, 0x28(%rsp)
jmp 0x96897
movl $0x1, %eax
movl %eax, 0x28(%rsp)
jmp 0x96897
movl 0x28(%rsp), %eax
movl %eax, 0x24(%rsp)
jmp 0x96933
movl $0xffffffff, %eax       # imm = 0xFFFFFFFF
subl 0x74(%rsp), %eax
cmpl 0x78(%rsp), %eax
jb 0x96920
movl 0x78(%rsp), %eax
addl 0x74(%rsp), %eax
movl %eax, 0x60(%rsp)
movl 0x60(%rsp), %eax
movl %eax, 0x5c(%rsp)
movl 0x60(%rsp), %eax
cmpl 0x5c(%rsp), %eax
jne 0x96903
cmpl $0x1, 0x60(%rsp)
setb %al
andb $0x1, %al
movzbl %al, %eax
cmpl $0x1, 0x5c(%rsp)
setb %cl
andb $0x1, %cl
movzbl %cl, %ecx
cmpl %ecx, %eax
jne 0x96903
movl 0x5c(%rsp), %eax
movl %eax, 0x94(%rsp)
xorl %eax, %eax
movl %eax, 0x20(%rsp)
jmp 0x9690e
movl $0x1, %eax
movl %eax, 0x20(%rsp)
jmp 0x9690e
movl 0x20(%rsp), %eax
movl %eax, 0x58(%rsp)
movl 0x58(%rsp), %eax
movl %eax, 0x1c(%rsp)
jmp 0x9692b
movl $0x1, %eax
movl %eax, 0x1c(%rsp)
jmp 0x9692b
movl 0x1c(%rsp), %eax
movl %eax, 0x24(%rsp)
movl 0x24(%rsp), %eax
movl %eax, 0x70(%rsp)
cmpl $0x0, 0x70(%rsp)
je 0x96970
movq 0x11d68f(%rip), %rax    # 0x1b3fd8
movq (%rax), %rdi
leaq 0xd6be3(%rip), %rsi     # 0x16d536
leaq 0xd9e84(%rip), %rdx     # 0x1707de
movl $0xa4, %ecx
movb $0x0, %al
callq 0xb890
movl $0x1, %edi
callq 0xb780
jmp 0x96972
jmp 0x96974
cmpl $0x101, 0x94(%rsp) # imm = 0x101
je 0x969b9
movq 0x11d650(%rip), %rax    # 0x1b3fd8
movq (%rax), %rdi
leaq 0xc76d4(%rip), %rsi     # 0x15e066
leaq 0xd9e88(%rip), %rdx     # 0x170821
leaq 0xd9e29(%rip), %rcx     # 0x1707c9
leaq 0xd9e37(%rip), %r8      # 0x1707de
movl $0xa5, %r9d
movb $0x0, %al
callq 0xb890
callq 0xb2e0
jmp 0x969bb
movl $0x100, 0x9c(%rsp) # imm = 0x100
movl $0x1, 0x98(%rsp)
movl 0x9c(%rsp), %eax
movl %eax, 0x54(%rsp)
movl 0x98(%rsp), %eax
movl %eax, 0x50(%rsp)
cmpl $0x1, 0x50(%rsp)
jae 0x96a86
movl 0x50(%rsp), %eax
addl $0xffffffff, %eax       # imm = 0xFFFFFFFF
cmpl 0x54(%rsp), %eax
jb 0x96a6e
movl 0x54(%rsp), %eax
subl 0x50(%rsp), %eax
movl %eax, 0x48(%rsp)
movl 0x48(%rsp), %eax
movl %eax, 0x44(%rsp)
movl 0x48(%rsp), %eax
cmpl 0x44(%rsp), %eax
jne 0x96a51
cmpl $0x1, 0x48(%rsp)
setb %al
andb $0x1, %al
movzbl %al, %eax
cmpl $0x1, 0x44(%rsp)
setb %cl
andb $0x1, %cl
movzbl %cl, %ecx
cmpl %ecx, %eax
jne 0x96a51
movl 0x44(%rsp), %eax
movl %eax, 0x94(%rsp)
xorl %eax, %eax
movl %eax, 0x18(%rsp)
jmp 0x96a5c
movl $0x1, %eax
movl %eax, 0x18(%rsp)
jmp 0x96a5c
movl 0x18(%rsp), %eax
movl %eax, 0x40(%rsp)
movl 0x40(%rsp), %eax
movl %eax, 0x14(%rsp)
jmp 0x96a79
movl $0x1, %eax
movl %eax, 0x14(%rsp)
jmp 0x96a79
movl 0x14(%rsp), %eax
movl %eax, 0x10(%rsp)
jmp 0x96b13
movl 0x50(%rsp), %eax
addl $0x0, %eax
cmpl 0x54(%rsp), %eax
ja 0x96b00
movl 0x54(%rsp), %eax
subl 0x50(%rsp), %eax
movl %eax, 0x3c(%rsp)
movl 0x3c(%rsp), %eax
movl %eax, 0x38(%rsp)
movl 0x3c(%rsp), %eax
cmpl 0x38(%rsp), %eax
jne 0x96ae3
cmpl $0x1, 0x3c(%rsp)
setb %al
andb $0x1, %al
movzbl %al, %eax
cmpl $0x1, 0x38(%rsp)
setb %cl
andb $0x1, %cl
movzbl %cl, %ecx
cmpl %ecx, %eax
jne 0x96ae3
movl 0x38(%rsp), %eax
movl %eax, 0x94(%rsp)
xorl %eax, %eax
movl %eax, 0xc(%rsp)
jmp 0x96aee
movl $0x1, %eax
movl %eax, 0xc(%rsp)
jmp 0x96aee
movl 0xc(%rsp), %eax
movl %eax, 0x34(%rsp)
movl 0x34(%rsp), %eax
movl %eax, 0x8(%rsp)
jmp 0x96b0b
movl $0x1, %eax
movl %eax, 0x8(%rsp)
jmp 0x96b0b
movl 0x8(%rsp), %eax
movl %eax, 0x10(%rsp)
movl 0x10(%rsp), %eax
movl %eax, 0x4c(%rsp)
cmpl $0x0, 0x4c(%rsp)
je 0x96b50
movq 0x11d4af(%rip), %rax    # 0x1b3fd8
movq (%rax), %rdi
leaq 0xd9cf7(%rip), %rsi     # 0x17082a
leaq 0xd9ca4(%rip), %rdx     # 0x1707de
movl $0xaa, %ecx
movb $0x0, %al
callq 0xb890
movl $0x1, %edi
callq 0xb780
jmp 0x96b52
jmp 0x96b54
cmpl $0xff, 0x94(%rsp)
je 0x96b99
movq 0x11d470(%rip), %rax    # 0x1b3fd8
movq (%rax), %rdi
leaq 0xc74f4(%rip), %rsi     # 0x15e066
leaq 0xd9cd4(%rip), %rdx     # 0x17084d
leaq 0xd9c49(%rip), %rcx     # 0x1707c9
leaq 0xd9c57(%rip), %r8      # 0x1707de
movl $0xab, %r9d
movb $0x0, %al
callq 0xb890
callq 0xb2e0
jmp 0x96b9b
jmp 0x96b9d
movl $0xffffff00, %edi       # imm = 0xFFFFFF00
leaq 0xd9c35(%rip), %rsi     # 0x1707de
movl $0xae, %edx
leaq -0x975(%rip), %rcx      # 0x96240
xorl %eax, %eax
movl %eax, %r8d
callq 0x96280
cmpl $0x100, %eax            # imm = 0x100
je 0x96bfe
movq 0x11d40b(%rip), %rax    # 0x1b3fd8
movq (%rax), %rdi
leaq 0xc748f(%rip), %rsi     # 0x15e066
leaq 0xd9c78(%rip), %rdx     # 0x170856
leaq 0xd9be4(%rip), %rcx     # 0x1707c9
leaq 0xd9bf2(%rip), %r8      # 0x1707de
movl $0xae, %r9d
movb $0x0, %al
callq 0xb890
callq 0xb2e0
jmp 0x96c00
xorl %eax, %eax
addq $0xb8, %rsp
retq
nopw (%rax,%rax)