#define NULL ((void *)0)
typedef unsigned long size_t; // Customize by platform.
typedef long intptr_t;
typedef unsigned long uintptr_t;
typedef long scalar_t__; // Either arithmetic or pointer type.
/* By default, we understand bool (as a convenience). */
typedef int bool;
#define false 0
#define true 1

/* Forward declarations */

/* Type definitions */

/* Variables and functions */
int /*<<< orphan*/ _expect_true(int, char *);
int az_clock_mod(int, int, int);
void test_clock_mod(void) {
  _expect_true(az_clock_mod(5, 3, 0) == 0, "az_clock_mod(5, 3, 0) == 0");
  _expect_true(az_clock_mod(5, 3, 1) == 0, "az_clock_mod(5, 3, 1) == 0");
  _expect_true(az_clock_mod(5, 3, 2) == 0, "az_clock_mod(5, 3, 2) == 0");
  _expect_true(az_clock_mod(5, 3, 3) == 1, "az_clock_mod(5, 3, 3) == 1");
  _expect_true(az_clock_mod(5, 3, 4) == 1, "az_clock_mod(5, 3, 4) == 1");
  _expect_true(az_clock_mod(5, 3, 5) == 1, "az_clock_mod(5, 3, 5) == 1");
  _expect_true(az_clock_mod(5, 3, 6) == 2, "az_clock_mod(5, 3, 6) == 2");
  _expect_true(az_clock_mod(5, 3, 7) == 2, "az_clock_mod(5, 3, 7) == 2");
  _expect_true(az_clock_mod(5, 3, 8) == 2, "az_clock_mod(5, 3, 8) == 2");
  _expect_true(az_clock_mod(5, 3, 9) == 3, "az_clock_mod(5, 3, 9) == 3");
  _expect_true(az_clock_mod(5, 3, 10) == 3, "az_clock_mod(5, 3, 10) == 3");
  _expect_true(az_clock_mod(5, 3, 11) == 3, "az_clock_mod(5, 3, 11) == 3");
  _expect_true(az_clock_mod(5, 3, 12) == 4, "az_clock_mod(5, 3, 12) == 4");
  _expect_true(az_clock_mod(5, 3, 13) == 4, "az_clock_mod(5, 3, 13) == 4");
  _expect_true(az_clock_mod(5, 3, 14) == 4, "az_clock_mod(5, 3, 14) == 4");
  _expect_true(az_clock_mod(5, 3, 15) == 0, "az_clock_mod(5, 3, 15) == 0");
  _expect_true(az_clock_mod(5, 3, 16) == 0, "az_clock_mod(5, 3, 16) == 0");
  _expect_true(az_clock_mod(5, 3, 17) == 0, "az_clock_mod(5, 3, 17) == 0");
  _expect_true(az_clock_mod(5, 3, 18) == 1, "az_clock_mod(5, 3, 18) == 1");
  _expect_true(az_clock_mod(5, 3, 19) == 1, "az_clock_mod(5, 3, 19) == 1");
  _expect_true(az_clock_mod(5, 3, 20) == 1, "az_clock_mod(5, 3, 20) == 1");
  _expect_true(az_clock_mod(5, 3, 21) == 2, "az_clock_mod(5, 3, 21) == 2");
}


x86 assembly (clang, -O0):
<test_clock_mod>:
push   %rbp
mov    %rsp,%rbp
mov    $0x5,%edi
mov    $0x3,%esi
xor    %edx,%edx
call   1040 <az_clock_mod@plt>
cmp    $0x0,%eax
sete   %al
and    $0x1,%al
movzbl %al,%edi
lea    0xeb9(%rip),%rsi
call   1030 <_expect_true@plt>
mov    $0x5,%edi
mov    $0x3,%esi
mov    $0x1,%edx
call   1040 <az_clock_mod@plt>
cmp    $0x0,%eax
sete   %al
and    $0x1,%al
movzbl %al,%edi
lea    0xea9(%rip),%rsi
call   1030 <_expect_true@plt>
mov    $0x5,%edi
mov    $0x3,%esi
mov    $0x2,%edx
call   1040 <az_clock_mod@plt>
cmp    $0x0,%eax
sete   %al
and    $0x1,%al
movzbl %al,%edi
lea    0xe99(%rip),%rsi
call   1030 <_expect_true@plt>
mov    $0x5,%edi
mov    $0x3,%edx
mov    %edx,%esi
call   1040 <az_clock_mod@plt>
cmp    $0x1,%eax
sete   %al
and    $0x1,%al
movzbl %al,%edi
lea    0xe8c(%rip),%rsi
call   1030 <_expect_true@plt>
mov    $0x5,%edi
mov    $0x3,%esi
mov    $0x4,%edx
call   1040 <az_clock_mod@plt>
cmp    $0x1,%eax
sete   %al
and    $0x1,%al
movzbl %al,%edi
lea    0xe7c(%rip),%rsi
call   1030 <_expect_true@plt>
mov    $0x5,%edx
mov    $0x3,%esi
mov    %edx,%edi
call   1040 <az_clock_mod@plt>
cmp    $0x1,%eax
sete   %al
and    $0x1,%al
movzbl %al,%edi
lea    0xe6f(%rip),%rsi
call   1030 <_expect_true@plt>
mov    $0x5,%edi
mov    $0x3,%esi
mov    $0x6,%edx
call   1040 <az_clock_mod@plt>
cmp    $0x2,%eax
sete   %al
and    $0x1,%al
movzbl %al,%edi
lea    0xe5f(%rip),%rsi
call   1030 <_expect_true@plt>
mov    $0x5,%edi
mov    $0x3,%esi
mov    $0x7,%edx
call   1040 <az_clock_mod@plt>
cmp    $0x2,%eax
sete   %al
and    $0x1,%al
movzbl %al,%edi
lea    0xe4f(%rip),%rsi
call   1030 <_expect_true@plt>
mov    $0x5,%edi
mov    $0x3,%esi
mov    $0x8,%edx
call   1040 <az_clock_mod@plt>
cmp    $0x2,%eax
sete   %al
and    $0x1,%al
movzbl %al,%edi
lea    0xe3f(%rip),%rsi
call   1030 <_expect_true@plt>
mov    $0x5,%edi
mov    $0x3,%esi
mov    $0x9,%edx
call   1040 <az_clock_mod@plt>
cmp    $0x3,%eax
sete   %al
and    $0x1,%al
movzbl %al,%edi
lea    0xe2f(%rip),%rsi
call   1030 <_expect_true@plt>
mov    $0x5,%edi
mov    $0x3,%esi
mov    $0xa,%edx
call   1040 <az_clock_mod@plt>
cmp    $0x3,%eax
sete   %al
and    $0x1,%al
movzbl %al,%edi
lea    0xe1f(%rip),%rsi
call   1030 <_expect_true@plt>
mov    $0x5,%edi
mov    $0x3,%esi
mov    $0xb,%edx
call   1040 <az_clock_mod@plt>
cmp    $0x3,%eax
sete   %al
and    $0x1,%al
movzbl %al,%edi
lea    0xe10(%rip),%rsi
call   1030 <_expect_true@plt>
mov    $0x5,%edi
mov    $0x3,%esi
mov    $0xc,%edx
call   1040 <az_clock_mod@plt>
cmp    $0x4,%eax
sete   %al
and    $0x1,%al
movzbl %al,%edi
lea    0xe01(%rip),%rsi
call   1030 <_expect_true@plt>
mov    $0x5,%edi
mov    $0x3,%esi
mov    $0xd,%edx
call   1040 <az_clock_mod@plt>
cmp    $0x4,%eax
sete   %al
and    $0x1,%al
movzbl %al,%edi
lea    0xdf2(%rip),%rsi
call   1030 <_expect_true@plt>
mov    $0x5,%edi
mov    $0x3,%esi
mov    $0xe,%edx
call   1040 <az_clock_mod@plt>
cmp    $0x4,%eax
sete   %al
and    $0x1,%al
movzbl %al,%edi
lea    0xde3(%rip),%rsi
call   1030 <_expect_true@plt>
mov    $0x5,%edi
mov    $0x3,%esi
mov    $0xf,%edx
call   1040 <az_clock_mod@plt>
cmp    $0x0,%eax
sete   %al
and    $0x1,%al
movzbl %al,%edi
lea    0xdd4(%rip),%rsi
call   1030 <_expect_true@plt>
mov    $0x5,%edi
mov    $0x3,%esi
mov    $0x10,%edx
call   1040 <az_clock_mod@plt>
cmp    $0x0,%eax
sete   %al
and    $0x1,%al
movzbl %al,%edi
lea    0xdc5(%rip),%rsi
call   1030 <_expect_true@plt>
mov    $0x5,%edi
mov    $0x3,%esi
mov    $0x11,%edx
call   1040 <az_clock_mod@plt>
cmp    $0x0,%eax
sete   %al
and    $0x1,%al
movzbl %al,%edi
lea    0xdb6(%rip),%rsi
call   1030 <_expect_true@plt>
mov    $0x5,%edi
mov    $0x3,%esi
mov    $0x12,%edx
call   1040 <az_clock_mod@plt>
cmp    $0x1,%eax
sete   %al
and    $0x1,%al
movzbl %al,%edi
lea    0xda7(%rip),%rsi
call   1030 <_expect_true@plt>
mov    $0x5,%edi
mov    $0x3,%esi
mov    $0x13,%edx
call   1040 <az_clock_mod@plt>
cmp    $0x1,%eax
sete   %al
and    $0x1,%al
movzbl %al,%edi
lea    0xd98(%rip),%rsi
call   1030 <_expect_true@plt>
mov    $0x5,%edi
mov    $0x3,%esi
mov    $0x14,%edx
call   1040 <az_clock_mod@plt>
cmp    $0x1,%eax
sete   %al
and    $0x1,%al
movzbl %al,%edi
lea    0xd89(%rip),%rsi
call   1030 <_expect_true@plt>
mov    $0x5,%edi
mov    $0x3,%esi
mov    $0x15,%edx
call   1040 <az_clock_mod@plt>
cmp    $0x2,%eax
sete   %al
and    $0x1,%al
movzbl %al,%edi
lea    0xd7a(%rip),%rsi
call   1030 <_expect_true@plt>
pop    %rbp
ret

x86 assembly (clang, -O2):
<test_clock_mod>:
push   %rax
mov    $0x5,%edi
mov    $0x3,%esi
xor    %edx,%edx
call   1040 <az_clock_mod@plt>
xor    %edi,%edi
test   %eax,%eax
sete   %dil
lea    0xebf(%rip),%rsi
call   1030 <_expect_true@plt>
mov    $0x5,%edi
mov    $0x3,%esi
mov    $0x1,%edx
call   1040 <az_clock_mod@plt>
xor    %edi,%edi
test   %eax,%eax
sete   %dil
lea    0xeb2(%rip),%rsi
call   1030 <_expect_true@plt>
mov    $0x5,%edi
mov    $0x3,%esi
mov    $0x2,%edx
call   1040 <az_clock_mod@plt>
xor    %edi,%edi
test   %eax,%eax
sete   %dil
lea    0xea5(%rip),%rsi
call   1030 <_expect_true@plt>
mov    $0x5,%edi
mov    $0x3,%esi
mov    $0x3,%edx
call   1040 <az_clock_mod@plt>
xor    %edi,%edi
cmp    $0x1,%eax
sete   %dil
lea    0xe97(%rip),%rsi
call   1030 <_expect_true@plt>
mov    $0x5,%edi
mov    $0x3,%esi
mov    $0x4,%edx
call   1040 <az_clock_mod@plt>
xor    %edi,%edi
cmp    $0x1,%eax
sete   %dil
lea    0xe89(%rip),%rsi
call   1030 <_expect_true@plt>
mov    $0x5,%edi
mov    $0x3,%esi
mov    $0x5,%edx
call   1040 <az_clock_mod@plt>
xor    %edi,%edi
cmp    $0x1,%eax
sete   %dil
lea    0xe7b(%rip),%rsi
call   1030 <_expect_true@plt>
mov    $0x5,%edi
mov    $0x3,%esi
mov    $0x6,%edx
call   1040 <az_clock_mod@plt>
xor    %edi,%edi
cmp    $0x2,%eax
sete   %dil
lea    0xe6d(%rip),%rsi
call   1030 <_expect_true@plt>
mov    $0x5,%edi
mov    $0x3,%esi
mov    $0x7,%edx
call   1040 <az_clock_mod@plt>
xor    %edi,%edi
cmp    $0x2,%eax
sete   %dil
lea    0xe5f(%rip),%rsi
call   1030 <_expect_true@plt>
mov    $0x5,%edi
mov    $0x3,%esi
mov    $0x8,%edx
call   1040 <az_clock_mod@plt>
xor    %edi,%edi
cmp    $0x2,%eax
sete   %dil
lea    0xe51(%rip),%rsi
call   1030 <_expect_true@plt>
mov    $0x5,%edi
mov    $0x3,%esi
mov    $0x9,%edx
call   1040 <az_clock_mod@plt>
xor    %edi,%edi
cmp    $0x3,%eax
sete   %dil
lea    0xe43(%rip),%rsi
call   1030 <_expect_true@plt>
mov    $0x5,%edi
mov    $0x3,%esi
mov    $0xa,%edx
call   1040 <az_clock_mod@plt>
xor    %edi,%edi
cmp    $0x3,%eax
sete   %dil
lea    0xe35(%rip),%rsi
call   1030 <_expect_true@plt>
mov    $0x5,%edi
mov    $0x3,%esi
mov    $0xb,%edx
call   1040 <az_clock_mod@plt>
xor    %edi,%edi
cmp    $0x3,%eax
sete   %dil
lea    0xe28(%rip),%rsi
call   1030 <_expect_true@plt>
mov    $0x5,%edi
mov    $0x3,%esi
mov    $0xc,%edx
call   1040 <az_clock_mod@plt>
xor    %edi,%edi
cmp    $0x4,%eax
sete   %dil
lea    0xe1b(%rip),%rsi
call   1030 <_expect_true@plt>
mov    $0x5,%edi
mov    $0x3,%esi
mov    $0xd,%edx
call   1040 <az_clock_mod@plt>
xor    %edi,%edi
cmp    $0x4,%eax
sete   %dil
lea    0xe0e(%rip),%rsi
call   1030 <_expect_true@plt>
mov    $0x5,%edi
mov    $0x3,%esi
mov    $0xe,%edx
call   1040 <az_clock_mod@plt>
xor    %edi,%edi
cmp    $0x4,%eax
sete   %dil
lea    0xe01(%rip),%rsi
call   1030 <_expect_true@plt>
mov    $0x5,%edi
mov    $0x3,%esi
mov    $0xf,%edx
call   1040 <az_clock_mod@plt>
xor    %edi,%edi
test   %eax,%eax
sete   %dil
lea    0xdf5(%rip),%rsi
call   1030 <_expect_true@plt>
mov    $0x5,%edi
mov    $0x3,%esi
mov    $0x10,%edx
call   1040 <az_clock_mod@plt>
xor    %edi,%edi
test   %eax,%eax
sete   %dil
lea    0xde9(%rip),%rsi
call   1030 <_expect_true@plt>
mov    $0x5,%edi
mov    $0x3,%esi
mov    $0x11,%edx
call   1040 <az_clock_mod@plt>
xor    %edi,%edi
test   %eax,%eax
sete   %dil
lea    0xddd(%rip),%rsi
call   1030 <_expect_true@plt>
mov    $0x5,%edi
mov    $0x3,%esi
mov    $0x12,%edx
call   1040 <az_clock_mod@plt>
xor    %edi,%edi
cmp    $0x1,%eax
sete   %dil
lea    0xdd0(%rip),%rsi
call   1030 <_expect_true@plt>
mov    $0x5,%edi
mov    $0x3,%esi
mov    $0x13,%edx
call   1040 <az_clock_mod@plt>
xor    %edi,%edi
cmp    $0x1,%eax
sete   %dil
lea    0xdc3(%rip),%rsi
call   1030 <_expect_true@plt>
mov    $0x5,%edi
mov    $0x3,%esi
mov    $0x14,%edx
call   1040 <az_clock_mod@plt>
xor    %edi,%edi
cmp    $0x1,%eax
sete   %dil
lea    0xdb6(%rip),%rsi
call   1030 <_expect_true@plt>
mov    $0x5,%edi
mov    $0x3,%esi
mov    $0x15,%edx
call   1040 <az_clock_mod@plt>
xor    %edi,%edi
cmp    $0x2,%eax
sete   %dil
lea    0xda9(%rip),%rsi
pop    %rax
jmp    1030 <_expect_true@plt>

LLVM IR (-O0):
@.str = [27 x i8] c"az_clock_mod(5, 3, 0) == 0\00"
@.str.1 = [27 x i8] c"az_clock_mod(5, 3, 1) == 0\00"
@.str.2 = [27 x i8] c"az_clock_mod(5, 3, 2) == 0\00"
@.str.3 = [27 x i8] c"az_clock_mod(5, 3, 3) == 1\00"
@.str.4 = [27 x i8] c"az_clock_mod(5, 3, 4) == 1\00"
@.str.5 = [27 x i8] c"az_clock_mod(5, 3, 5) == 1\00"
@.str.6 = [27 x i8] c"az_clock_mod(5, 3, 6) == 2\00"
@.str.7 = [27 x i8] c"az_clock_mod(5, 3, 7) == 2\00"
@.str.8 = [27 x i8] c"az_clock_mod(5, 3, 8) == 2\00"
@.str.9 = [27 x i8] c"az_clock_mod(5, 3, 9) == 3\00"
@.str.10 = [28 x i8] c"az_clock_mod(5, 3, 10) == 3\00"
@.str.11 = [28 x i8] c"az_clock_mod(5, 3, 11) == 3\00"
@.str.12 = [28 x i8] c"az_clock_mod(5, 3, 12) == 4\00"
@.str.13 = [28 x i8] c"az_clock_mod(5, 3, 13) == 4\00"
@.str.14 = [28 x i8] c"az_clock_mod(5, 3, 14) == 4\00"
@.str.15 = [28 x i8] c"az_clock_mod(5, 3, 15) == 0\00"
@.str.16 = [28 x i8] c"az_clock_mod(5, 3, 16) == 0\00"
@.str.17 = [28 x i8] c"az_clock_mod(5, 3, 17) == 0\00"
@.str.18 = [28 x i8] c"az_clock_mod(5, 3, 18) == 1\00"
@.str.19 = [28 x i8] c"az_clock_mod(5, 3, 19) == 1\00"
@.str.20 = [28 x i8] c"az_clock_mod(5, 3, 20) == 1\00"
@.str.21 = [28 x i8] c"az_clock_mod(5, 3, 21) == 2\00"
define void @test_clock_mod() {
%1 = call i32 @az_clock_mod(i32 5, i32 3, i32 0)
%2 = icmp eq i32 %1, 0
%3 = zext i1 %2 to i32
%4 = call i32 @_expect_true(i32 %3, i8* getelementptr inbounds ([27 x i8], [27 x i8]* @.str, i64 0, i64 0))
%5 = call i32 @az_clock_mod(i32 5, i32 3, i32 1)
%6 = icmp eq i32 %5, 0
%7 = zext i1 %6 to i32
%8 = call i32 @_expect_true(i32 %7, i8* getelementptr inbounds ([27 x i8], [27 x i8]* @.str.1, i64 0, i64 0))
%9 = call i32 @az_clock_mod(i32 5, i32 3, i32 2)
%10 = icmp eq i32 %9, 0
%11 = zext i1 %10 to i32
%12 = call i32 @_expect_true(i32 %11, i8* getelementptr inbounds ([27 x i8], [27 x i8]* @.str.2, i64 0, i64 0))
%13 = call i32 @az_clock_mod(i32 5, i32 3, i32 3)
%14 = icmp eq i32 %13, 1
%15 = zext i1 %14 to i32
%16 = call i32 @_expect_true(i32 %15, i8* getelementptr inbounds ([27 x i8], [27 x i8]* @.str.3, i64 0, i64 0))
%17 = call i32 @az_clock_mod(i32 5, i32 3, i32 4)
%18 = icmp eq i32 %17, 1
%19 = zext i1 %18 to i32
%20 = call i32 @_expect_true(i32 %19, i8* getelementptr inbounds ([27 x i8], [27 x i8]* @.str.4, i64 0, i64 0))
%21 = call i32 @az_clock_mod(i32 5, i32 3, i32 5)
%22 = icmp eq i32 %21, 1
%23 = zext i1 %22 to i32
%24 = call i32 @_expect_true(i32 %23, i8* getelementptr inbounds ([27 x i8], [27 x i8]* @.str.5, i64 0, i64 0))
%25 = call i32 @az_clock_mod(i32 5, i32 3, i32 6)
%26 = icmp eq i32 %25, 2
%27 = zext i1 %26 to i32
%28 = call i32 @_expect_true(i32 %27, i8* getelementptr inbounds ([27 x i8], [27 x i8]* @.str.6, i64 0, i64 0))
%29 = call i32 @az_clock_mod(i32 5, i32 3, i32 7)
%30 = icmp eq i32 %29, 2
%31 = zext i1 %30 to i32
%32 = call i32 @_expect_true(i32 %31, i8* getelementptr inbounds ([27 x i8], [27 x i8]* @.str.7, i64 0, i64 0))
%33 = call i32 @az_clock_mod(i32 5, i32 3, i32 8)
%34 = icmp eq i32 %33, 2
%35 = zext i1 %34 to i32
%36 = call i32 @_expect_true(i32 %35, i8* getelementptr inbounds ([27 x i8], [27 x i8]* @.str.8, i64 0, i64 0))
%37 = call i32 @az_clock_mod(i32 5, i32 3, i32 9)
%38 = icmp eq i32 %37, 3
%39 = zext i1 %38 to i32
%40 = call i32 @_expect_true(i32 %39, i8* getelementptr inbounds ([27 x i8], [27 x i8]* @.str.9, i64 0, i64 0))
%41 = call i32 @az_clock_mod(i32 5, i32 3, i32 10)
%42 = icmp eq i32 %41, 3
%43 = zext i1 %42 to i32
%44 = call i32 @_expect_true(i32 %43, i8* getelementptr inbounds ([28 x i8], [28 x i8]* @.str.10, i64 0, i64 0))
%45 = call i32 @az_clock_mod(i32 5, i32 3, i32 11)
%46 = icmp eq i32 %45, 3
%47 = zext i1 %46 to i32
%48 = call i32 @_expect_true(i32 %47, i8* getelementptr inbounds ([28 x i8], [28 x i8]* @.str.11, i64 0, i64 0))
%49 = call i32 @az_clock_mod(i32 5, i32 3, i32 12)
%50 = icmp eq i32 %49, 4
%51 = zext i1 %50 to i32
%52 = call i32 @_expect_true(i32 %51, i8* getelementptr inbounds ([28 x i8], [28 x i8]* @.str.12, i64 0, i64 0))
%53 = call i32 @az_clock_mod(i32 5, i32 3, i32 13)
%54 = icmp eq i32 %53, 4
%55 = zext i1 %54 to i32
%56 = call i32 @_expect_true(i32 %55, i8* getelementptr inbounds ([28 x i8], [28 x i8]* @.str.13, i64 0, i64 0))
%57 = call i32 @az_clock_mod(i32 5, i32 3, i32 14)
%58 = icmp eq i32 %57, 4
%59 = zext i1 %58 to i32
%60 = call i32 @_expect_true(i32 %59, i8* getelementptr inbounds ([28 x i8], [28 x i8]* @.str.14, i64 0, i64 0))
%61 = call i32 @az_clock_mod(i32 5, i32 3, i32 15)
%62 = icmp eq i32 %61, 0
%63 = zext i1 %62 to i32
%64 = call i32 @_expect_true(i32 %63, i8* getelementptr inbounds ([28 x i8], [28 x i8]* @.str.15, i64 0, i64 0))
%65 = call i32 @az_clock_mod(i32 5, i32 3, i32 16)
%66 = icmp eq i32 %65, 0
%67 = zext i1 %66 to i32
%68 = call i32 @_expect_true(i32 %67, i8* getelementptr inbounds ([28 x i8], [28 x i8]* @.str.16, i64 0, i64 0))
%69 = call i32 @az_clock_mod(i32 5, i32 3, i32 17)
%70 = icmp eq i32 %69, 0
%71 = zext i1 %70 to i32
%72 = call i32 @_expect_true(i32 %71, i8* getelementptr inbounds ([28 x i8], [28 x i8]* @.str.17, i64 0, i64 0))
%73 = call i32 @az_clock_mod(i32 5, i32 3, i32 18)
%74 = icmp eq i32 %73, 1
%75 = zext i1 %74 to i32
%76 = call i32 @_expect_true(i32 %75, i8* getelementptr inbounds ([28 x i8], [28 x i8]* @.str.18, i64 0, i64 0))
%77 = call i32 @az_clock_mod(i32 5, i32 3, i32 19)
%78 = icmp eq i32 %77, 1
%79 = zext i1 %78 to i32
%80 = call i32 @_expect_true(i32 %79, i8* getelementptr inbounds ([28 x i8], [28 x i8]* @.str.19, i64 0, i64 0))
%81 = call i32 @az_clock_mod(i32 5, i32 3, i32 20)
%82 = icmp eq i32 %81, 1
%83 = zext i1 %82 to i32
%84 = call i32 @_expect_true(i32 %83, i8* getelementptr inbounds ([28 x i8], [28 x i8]* @.str.20, i64 0, i64 0))
%85 = call i32 @az_clock_mod(i32 5, i32 3, i32 21)
%86 = icmp eq i32 %85, 2
%87 = zext i1 %86 to i32
%88 = call i32 @_expect_true(i32 %87, i8* getelementptr inbounds ([28 x i8], [28 x i8]* @.str.21, i64 0, i64 0))
ret void
}

LLVM IR (-O2):
@.str = [27 x i8] c"az_clock_mod(5, 3, 0) == 0\00"
@.str.1 = [27 x i8] c"az_clock_mod(5, 3, 1) == 0\00"
@.str.2 = [27 x i8] c"az_clock_mod(5, 3, 2) == 0\00"
@.str.3 = [27 x i8] c"az_clock_mod(5, 3, 3) == 1\00"
@.str.4 = [27 x i8] c"az_clock_mod(5, 3, 4) == 1\00"
@.str.5 = [27 x i8] c"az_clock_mod(5, 3, 5) == 1\00"
@.str.6 = [27 x i8] c"az_clock_mod(5, 3, 6) == 2\00"
@.str.7 = [27 x i8] c"az_clock_mod(5, 3, 7) == 2\00"
@.str.8 = [27 x i8] c"az_clock_mod(5, 3, 8) == 2\00"
@.str.9 = [27 x i8] c"az_clock_mod(5, 3, 9) == 3\00"
@.str.10 = [28 x i8] c"az_clock_mod(5, 3, 10) == 3\00"
@.str.11 = [28 x i8] c"az_clock_mod(5, 3, 11) == 3\00"
@.str.12 = [28 x i8] c"az_clock_mod(5, 3, 12) == 4\00"
@.str.13 = [28 x i8] c"az_clock_mod(5, 3, 13) == 4\00"
@.str.14 = [28 x i8] c"az_clock_mod(5, 3, 14) == 4\00"
@.str.15 = [28 x i8] c"az_clock_mod(5, 3, 15) == 0\00"
@.str.16 = [28 x i8] c"az_clock_mod(5, 3, 16) == 0\00"
@.str.17 = [28 x i8] c"az_clock_mod(5, 3, 17) == 0\00"
@.str.18 = [28 x i8] c"az_clock_mod(5, 3, 18) == 1\00"
@.str.19 = [28 x i8] c"az_clock_mod(5, 3, 19) == 1\00"
@.str.20 = [28 x i8] c"az_clock_mod(5, 3, 20) == 1\00"
@.str.21 = [28 x i8] c"az_clock_mod(5, 3, 21) == 2\00"
define void @test_clock_mod() {
%1 = tail call i32 @az_clock_mod(i32 5, i32 3, i32 0)
%2 = icmp eq i32 %1, 0
%3 = zext i1 %2 to i32
%4 = tail call i32 @_expect_true(i32 %3, i8* getelementptr inbounds ([27 x i8], [27 x i8]* @.str, i64 0, i64 0))
%5 = tail call i32 @az_clock_mod(i32 5, i32 3, i32 1)
%6 = icmp eq i32 %5, 0
%7 = zext i1 %6 to i32
%8 = tail call i32 @_expect_true(i32 %7, i8* getelementptr inbounds ([27 x i8], [27 x i8]* @.str.1, i64 0, i64 0))
%9 = tail call i32 @az_clock_mod(i32 5, i32 3, i32 2)
%10 = icmp eq i32 %9, 0
%11 = zext i1 %10 to i32
%12 = tail call i32 @_expect_true(i32 %11, i8* getelementptr inbounds ([27 x i8], [27 x i8]* @.str.2, i64 0, i64 0))
%13 = tail call i32 @az_clock_mod(i32 5, i32 3, i32 3)
%14 = icmp eq i32 %13, 1
%15 = zext i1 %14 to i32
%16 = tail call i32 @_expect_true(i32 %15, i8* getelementptr inbounds ([27 x i8], [27 x i8]* @.str.3, i64 0, i64 0))
%17 = tail call i32 @az_clock_mod(i32 5, i32 3, i32 4)
%18 = icmp eq i32 %17, 1
%19 = zext i1 %18 to i32
%20 = tail call i32 @_expect_true(i32 %19, i8* getelementptr inbounds ([27 x i8], [27 x i8]* @.str.4, i64 0, i64 0))
%21 = tail call i32 @az_clock_mod(i32 5, i32 3, i32 5)
%22 = icmp eq i32 %21, 1
%23 = zext i1 %22 to i32
%24 = tail call i32 @_expect_true(i32 %23, i8* getelementptr inbounds ([27 x i8], [27 x i8]* @.str.5, i64 0, i64 0))
%25 = tail call i32 @az_clock_mod(i32 5, i32 3, i32 6)
%26 = icmp eq i32 %25, 2
%27 = zext i1 %26 to i32
%28 = tail call i32 @_expect_true(i32 %27, i8* getelementptr inbounds ([27 x i8], [27 x i8]* @.str.6, i64 0, i64 0))
%29 = tail call i32 @az_clock_mod(i32 5, i32 3, i32 7)
%30 = icmp eq i32 %29, 2
%31 = zext i1 %30 to i32
%32 = tail call i32 @_expect_true(i32 %31, i8* getelementptr inbounds ([27 x i8], [27 x i8]* @.str.7, i64 0, i64 0))
%33 = tail call i32 @az_clock_mod(i32 5, i32 3, i32 8)
%34 = icmp eq i32 %33, 2
%35 = zext i1 %34 to i32
%36 = tail call i32 @_expect_true(i32 %35, i8* getelementptr inbounds ([27 x i8], [27 x i8]* @.str.8, i64 0, i64 0))
%37 = tail call i32 @az_clock_mod(i32 5, i32 3, i32 9)
%38 = icmp eq i32 %37, 3
%39 = zext i1 %38 to i32
%40 = tail call i32 @_expect_true(i32 %39, i8* getelementptr inbounds ([27 x i8], [27 x i8]* @.str.9, i64 0, i64 0))
%41 = tail call i32 @az_clock_mod(i32 5, i32 3, i32 10)
%42 = icmp eq i32 %41, 3
%43 = zext i1 %42 to i32
%44 = tail call i32 @_expect_true(i32 %43, i8* getelementptr inbounds ([28 x i8], [28 x i8]* @.str.10, i64 0, i64 0))
%45 = tail call i32 @az_clock_mod(i32 5, i32 3, i32 11)
%46 = icmp eq i32 %45, 3
%47 = zext i1 %46 to i32
%48 = tail call i32 @_expect_true(i32 %47, i8* getelementptr inbounds ([28 x i8], [28 x i8]* @.str.11, i64 0, i64 0))
%49 = tail call i32 @az_clock_mod(i32 5, i32 3, i32 12)
%50 = icmp eq i32 %49, 4
%51 = zext i1 %50 to i32
%52 = tail call i32 @_expect_true(i32 %51, i8* getelementptr inbounds ([28 x i8], [28 x i8]* @.str.12, i64 0, i64 0))
%53 = tail call i32 @az_clock_mod(i32 5, i32 3, i32 13)
%54 = icmp eq i32 %53, 4
%55 = zext i1 %54 to i32
%56 = tail call i32 @_expect_true(i32 %55, i8* getelementptr inbounds ([28 x i8], [28 x i8]* @.str.13, i64 0, i64 0))
%57 = tail call i32 @az_clock_mod(i32 5, i32 3, i32 14)
%58 = icmp eq i32 %57, 4
%59 = zext i1 %58 to i32
%60 = tail call i32 @_expect_true(i32 %59, i8* getelementptr inbounds ([28 x i8], [28 x i8]* @.str.14, i64 0, i64 0))
%61 = tail call i32 @az_clock_mod(i32 5, i32 3, i32 15)
%62 = icmp eq i32 %61, 0
%63 = zext i1 %62 to i32
%64 = tail call i32 @_expect_true(i32 %63, i8* getelementptr inbounds ([28 x i8], [28 x i8]* @.str.15, i64 0, i64 0))
%65 = tail call i32 @az_clock_mod(i32 5, i32 3, i32 16)
%66 = icmp eq i32 %65, 0
%67 = zext i1 %66 to i32
%68 = tail call i32 @_expect_true(i32 %67, i8* getelementptr inbounds ([28 x i8], [28 x i8]* @.str.16, i64 0, i64 0))
%69 = tail call i32 @az_clock_mod(i32 5, i32 3, i32 17)
%70 = icmp eq i32 %69, 0
%71 = zext i1 %70 to i32
%72 = tail call i32 @_expect_true(i32 %71, i8* getelementptr inbounds ([28 x i8], [28 x i8]* @.str.17, i64 0, i64 0))
%73 = tail call i32 @az_clock_mod(i32 5, i32 3, i32 18)
%74 = icmp eq i32 %73, 1
%75 = zext i1 %74 to i32
%76 = tail call i32 @_expect_true(i32 %75, i8* getelementptr inbounds ([28 x i8], [28 x i8]* @.str.18, i64 0, i64 0))
%77 = tail call i32 @az_clock_mod(i32 5, i32 3, i32 19)
%78 = icmp eq i32 %77, 1
%79 = zext i1 %78 to i32
%80 = tail call i32 @_expect_true(i32 %79, i8* getelementptr inbounds ([28 x i8], [28 x i8]* @.str.19, i64 0, i64 0))
%81 = tail call i32 @az_clock_mod(i32 5, i32 3, i32 20)
%82 = icmp eq i32 %81, 1
%83 = zext i1 %82 to i32
%84 = tail call i32 @_expect_true(i32 %83, i8* getelementptr inbounds ([28 x i8], [28 x i8]* @.str.20, i64 0, i64 0))
%85 = tail call i32 @az_clock_mod(i32 5, i32 3, i32 21)
%86 = icmp eq i32 %85, 2
%87 = zext i1 %86 to i32
%88 = tail call i32 @_expect_true(i32 %87, i8* getelementptr inbounds ([28 x i8], [28 x i8]* @.str.21, i64 0, i64 0))
ret void
}