#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*/ diod_log_init(char *);
int /*<<< orphan*/ exit(int /*<<< orphan*/);
int /*<<< orphan*/ test_rattach();
int /*<<< orphan*/ test_rauth();
int /*<<< orphan*/ test_rclunk();
int /*<<< orphan*/ test_rflush();
int /*<<< orphan*/ test_rfsync();
int /*<<< orphan*/ test_rgetattr();
int /*<<< orphan*/ test_rgetlock();
int /*<<< orphan*/ test_rlcreate();
int /*<<< orphan*/ test_rlerror();
int /*<<< orphan*/ test_rlink();
int /*<<< orphan*/ test_rlock();
int /*<<< orphan*/ test_rlopen();
int /*<<< orphan*/ test_rmkdir();
int /*<<< orphan*/ test_rmknod();
int /*<<< orphan*/ test_rread();
int /*<<< orphan*/ test_rreaddir();
int /*<<< orphan*/ test_rreadlink();
int /*<<< orphan*/ test_rremove();
int /*<<< orphan*/ test_rrename();
int /*<<< orphan*/ test_rrenameat();
int /*<<< orphan*/ test_rsetattr();
int /*<<< orphan*/ test_rstatfs();
int /*<<< orphan*/ test_rsymlink();
int /*<<< orphan*/ test_runlinkat();
int /*<<< orphan*/ test_rversion();
int /*<<< orphan*/ test_rwalk();
int /*<<< orphan*/ test_rwrite();
int /*<<< orphan*/ test_rxattrcreate();
int /*<<< orphan*/ test_rxattrwalk();
int /*<<< orphan*/ test_tattach();
int /*<<< orphan*/ test_tauth();
int /*<<< orphan*/ test_tclunk();
int /*<<< orphan*/ test_tflush();
int /*<<< orphan*/ test_tfsync();
int /*<<< orphan*/ test_tgetattr();
int /*<<< orphan*/ test_tgetlock();
int /*<<< orphan*/ test_tlcreate();
int /*<<< orphan*/ test_tlink();
int /*<<< orphan*/ test_tlock();
int /*<<< orphan*/ test_tlopen();
int /*<<< orphan*/ test_tmkdir();
int /*<<< orphan*/ test_tmknod();
int /*<<< orphan*/ test_tread();
int /*<<< orphan*/ test_treaddir();
int /*<<< orphan*/ test_treadlink();
int /*<<< orphan*/ test_tremove();
int /*<<< orphan*/ test_trename();
int /*<<< orphan*/ test_trenameat();
int /*<<< orphan*/ test_tsetattr();
int /*<<< orphan*/ test_tstatfs();
int /*<<< orphan*/ test_tsymlink();
int /*<<< orphan*/ test_tunlinkat();
int /*<<< orphan*/ test_tversion();
int /*<<< orphan*/ test_twalk();
int /*<<< orphan*/ test_twrite();
int /*<<< orphan*/ test_txattrcreate();
int /*<<< orphan*/ test_txattrwalk();
int /*<<< orphan*/ usage();
int main(int argc, char *argv[]) {
  diod_log_init(argv[0]);
  if (argc != 1)
    usage();
  test_rlerror();
  test_tstatfs();
  test_rstatfs();
  test_tlopen();
  test_rlopen();
  test_tlcreate();
  test_rlcreate();
  test_tsymlink();
  test_rsymlink();
  test_tmknod();
  test_rmknod();
  test_trename();
  test_rrename();
  test_treadlink();
  test_rreadlink();
  test_tgetattr();
  test_rgetattr();
  test_tsetattr();
  test_rsetattr();
  test_txattrwalk();
  test_rxattrwalk();
  test_txattrcreate();
  test_rxattrcreate();
  test_treaddir();
  test_rreaddir();
  test_tfsync();
  test_rfsync();
  test_tlock();
  test_rlock();
  test_tgetlock();
  test_rgetlock();
  test_tlink();
  test_rlink();
  test_tmkdir();
  test_rmkdir();
  test_trenameat();
  test_rrenameat();
  test_tunlinkat();
  test_runlinkat();
  test_tversion();
  test_rversion();
  test_tauth();
  test_rauth();
  test_tflush();
  test_rflush();
  test_tattach();
  test_rattach();
  test_twalk();
  test_rwalk();
  test_tread();
  test_rread();
  test_twrite();
  test_rwrite();
  test_tclunk();
  test_rclunk();
  test_tremove();
  test_rremove();
  exit(0);
}


x86 assembly (clang, -O0):
<main>:
push   %rbp
mov    %rsp,%rbp
sub    $0x10,%rsp
movl   $0x0,-0x4(%rbp)
mov    %edi,-0x8(%rbp)
mov    %rsi,-0x10(%rbp)
mov    -0x10(%rbp),%rax
mov    (%rax),%rdi
call   2370 <diod_log_init@plt>
cmpl   $0x1,-0x8(%rbp)
je     24f3 <main+0x33>
mov    $0x0,%al
call   22c0 <usage@plt>
mov    $0x0,%al
call   20b0 <test_rlerror@plt>
mov    $0x0,%al
call   2300 <test_tstatfs@plt>
mov    $0x0,%al
call   2030 <test_rstatfs@plt>
mov    $0x0,%al
call   21a0 <test_tlopen@plt>
mov    $0x0,%al
call   2240 <test_rlopen@plt>
mov    $0x0,%al
call   2110 <test_tlcreate@plt>
mov    $0x0,%al
call   2320 <test_rlcreate@plt>
mov    $0x0,%al
call   2100 <test_tsymlink@plt>
mov    $0x0,%al
call   20a0 <test_rsymlink@plt>
mov    $0x0,%al
call   2310 <test_tmknod@plt>
mov    $0x0,%al
call   21d0 <test_rmknod@plt>
mov    $0x0,%al
call   2260 <test_trename@plt>
mov    $0x0,%al
call   2350 <test_rrename@plt>
mov    $0x0,%al
call   2130 <test_treadlink@plt>
mov    $0x0,%al
call   2280 <test_rreadlink@plt>
mov    $0x0,%al
call   2210 <test_tgetattr@plt>
mov    $0x0,%al
call   22f0 <test_rgetattr@plt>
mov    $0x0,%al
call   2160 <test_tsetattr@plt>
mov    $0x0,%al
call   2390 <test_rsetattr@plt>
mov    $0x0,%al
call   2230 <test_txattrwalk@plt>
mov    $0x0,%al
call   23d0 <test_rxattrwalk@plt>
mov    $0x0,%al
call   2150 <test_txattrcreate@plt>
mov    $0x0,%al
call   2290 <test_rxattrcreate@plt>
mov    $0x0,%al
call   21b0 <test_treaddir@plt>
mov    $0x0,%al
call   2040 <test_rreaddir@plt>
mov    $0x0,%al
call   2360 <test_tfsync@plt>
mov    $0x0,%al
call   2330 <test_rfsync@plt>
mov    $0x0,%al
call   22b0 <test_tlock@plt>
mov    $0x0,%al
call   2180 <test_rlock@plt>
mov    $0x0,%al
call   2200 <test_tgetlock@plt>
mov    $0x0,%al
call   22a0 <test_rgetlock@plt>
mov    $0x0,%al
call   2220 <test_tlink@plt>
mov    $0x0,%al
call   2120 <test_rlink@plt>
mov    $0x0,%al
call   2190 <test_tmkdir@plt>
mov    $0x0,%al
call   2070 <test_rmkdir@plt>
mov    $0x0,%al
call   20e0 <test_trenameat@plt>
mov    $0x0,%al
call   21f0 <test_rrenameat@plt>
mov    $0x0,%al
call   23e0 <test_tunlinkat@plt>
mov    $0x0,%al
call   23a0 <test_runlinkat@plt>
mov    $0x0,%al
call   2090 <test_tversion@plt>
mov    $0x0,%al
call   21c0 <test_rversion@plt>
mov    $0x0,%al
call   2140 <test_tauth@plt>
mov    $0x0,%al
call   2170 <test_rauth@plt>
mov    $0x0,%al
call   2270 <test_tflush@plt>
mov    $0x0,%al
call   20d0 <test_rflush@plt>
mov    $0x0,%al
call   20c0 <test_tattach@plt>
mov    $0x0,%al
call   22d0 <test_rattach@plt>
mov    $0x0,%al
call   21e0 <test_twalk@plt>
mov    $0x0,%al
call   23b0 <test_rwalk@plt>
mov    $0x0,%al
call   2050 <test_tread@plt>
mov    $0x0,%al
call   22e0 <test_rread@plt>
mov    $0x0,%al
call   23c0 <test_twrite@plt>
mov    $0x0,%al
call   20f0 <test_rwrite@plt>
mov    $0x0,%al
call   2080 <test_tclunk@plt>
mov    $0x0,%al
call   2060 <test_rclunk@plt>
mov    $0x0,%al
call   2380 <test_tremove@plt>
mov    $0x0,%al
call   2250 <test_rremove@plt>
xor    %edi,%edi
call   2340 <exit@plt>

x86 assembly (clang, -O2):
<main>:
push   %rbx
mov    %edi,%ebx
mov    (%rsi),%rdi
call   2370 <diod_log_init@plt>
cmp    $0x1,%ebx
je     24d7 <main+0x17>
xor    %eax,%eax
call   22c0 <usage@plt>
xor    %eax,%eax
call   20b0 <test_rlerror@plt>
xor    %eax,%eax
call   2300 <test_tstatfs@plt>
xor    %eax,%eax
call   2030 <test_rstatfs@plt>
xor    %eax,%eax
call   21a0 <test_tlopen@plt>
xor    %eax,%eax
call   2240 <test_rlopen@plt>
xor    %eax,%eax
call   2110 <test_tlcreate@plt>
xor    %eax,%eax
call   2320 <test_rlcreate@plt>
xor    %eax,%eax
call   2100 <test_tsymlink@plt>
xor    %eax,%eax
call   20a0 <test_rsymlink@plt>
xor    %eax,%eax
call   2310 <test_tmknod@plt>
xor    %eax,%eax
call   21d0 <test_rmknod@plt>
xor    %eax,%eax
call   2260 <test_trename@plt>
xor    %eax,%eax
call   2350 <test_rrename@plt>
xor    %eax,%eax
call   2130 <test_treadlink@plt>
xor    %eax,%eax
call   2280 <test_rreadlink@plt>
xor    %eax,%eax
call   2210 <test_tgetattr@plt>
xor    %eax,%eax
call   22f0 <test_rgetattr@plt>
xor    %eax,%eax
call   2160 <test_tsetattr@plt>
xor    %eax,%eax
call   2390 <test_rsetattr@plt>
xor    %eax,%eax
call   2230 <test_txattrwalk@plt>
xor    %eax,%eax
call   23d0 <test_rxattrwalk@plt>
xor    %eax,%eax
call   2150 <test_txattrcreate@plt>
xor    %eax,%eax
call   2290 <test_rxattrcreate@plt>
xor    %eax,%eax
call   21b0 <test_treaddir@plt>
xor    %eax,%eax
call   2040 <test_rreaddir@plt>
xor    %eax,%eax
call   2360 <test_tfsync@plt>
xor    %eax,%eax
call   2330 <test_rfsync@plt>
xor    %eax,%eax
call   22b0 <test_tlock@plt>
xor    %eax,%eax
call   2180 <test_rlock@plt>
xor    %eax,%eax
call   2200 <test_tgetlock@plt>
xor    %eax,%eax
call   22a0 <test_rgetlock@plt>
xor    %eax,%eax
call   2220 <test_tlink@plt>
xor    %eax,%eax
call   2120 <test_rlink@plt>
xor    %eax,%eax
call   2190 <test_tmkdir@plt>
xor    %eax,%eax
call   2070 <test_rmkdir@plt>
xor    %eax,%eax
call   20e0 <test_trenameat@plt>
xor    %eax,%eax
call   21f0 <test_rrenameat@plt>
xor    %eax,%eax
call   23e0 <test_tunlinkat@plt>
xor    %eax,%eax
call   23a0 <test_runlinkat@plt>
xor    %eax,%eax
call   2090 <test_tversion@plt>
xor    %eax,%eax
call   21c0 <test_rversion@plt>
xor    %eax,%eax
call   2140 <test_tauth@plt>
xor    %eax,%eax
call   2170 <test_rauth@plt>
xor    %eax,%eax
call   2270 <test_tflush@plt>
xor    %eax,%eax
call   20d0 <test_rflush@plt>
xor    %eax,%eax
call   20c0 <test_tattach@plt>
xor    %eax,%eax
call   22d0 <test_rattach@plt>
xor    %eax,%eax
call   21e0 <test_twalk@plt>
xor    %eax,%eax
call   23b0 <test_rwalk@plt>
xor    %eax,%eax
call   2050 <test_tread@plt>
xor    %eax,%eax
call   22e0 <test_rread@plt>
xor    %eax,%eax
call   23c0 <test_twrite@plt>
xor    %eax,%eax
call   20f0 <test_rwrite@plt>
xor    %eax,%eax
call   2080 <test_tclunk@plt>
xor    %eax,%eax
call   2060 <test_rclunk@plt>
xor    %eax,%eax
call   2380 <test_tremove@plt>
xor    %eax,%eax
call   2250 <test_rremove@plt>
xor    %edi,%edi
call   2340 <exit@plt>

LLVM IR (-O0):
define i32 @main(i32 %0, i8** %1) {
%3 = alloca i32
%4 = alloca i32
%5 = alloca i8**
store i32 0, i32* %3
store i32 %0, i32* %4
store i8** %1, i8*** %5
%6 = load i8**, i8*** %5
%7 = getelementptr inbounds i8*, i8** %6, i64 0
%8 = load i8*, i8** %7
%9 = call i32 @diod_log_init(i8* %8)
%10 = load i32, i32* %4
%11 = icmp ne i32 %10, 1
br i1 %11, label %12, label %14
12: ; preds = %2
%13 = call i32 (...) @usage()
br label %14
14: ; preds = %12, %2
%15 = call i32 (...) @test_rlerror()
%16 = call i32 (...) @test_tstatfs()
%17 = call i32 (...) @test_rstatfs()
%18 = call i32 (...) @test_tlopen()
%19 = call i32 (...) @test_rlopen()
%20 = call i32 (...) @test_tlcreate()
%21 = call i32 (...) @test_rlcreate()
%22 = call i32 (...) @test_tsymlink()
%23 = call i32 (...) @test_rsymlink()
%24 = call i32 (...) @test_tmknod()
%25 = call i32 (...) @test_rmknod()
%26 = call i32 (...) @test_trename()
%27 = call i32 (...) @test_rrename()
%28 = call i32 (...) @test_treadlink()
%29 = call i32 (...) @test_rreadlink()
%30 = call i32 (...) @test_tgetattr()
%31 = call i32 (...) @test_rgetattr()
%32 = call i32 (...) @test_tsetattr()
%33 = call i32 (...) @test_rsetattr()
%34 = call i32 (...) @test_txattrwalk()
%35 = call i32 (...) @test_rxattrwalk()
%36 = call i32 (...) @test_txattrcreate()
%37 = call i32 (...) @test_rxattrcreate()
%38 = call i32 (...) @test_treaddir()
%39 = call i32 (...) @test_rreaddir()
%40 = call i32 (...) @test_tfsync()
%41 = call i32 (...) @test_rfsync()
%42 = call i32 (...) @test_tlock()
%43 = call i32 (...) @test_rlock()
%44 = call i32 (...) @test_tgetlock()
%45 = call i32 (...) @test_rgetlock()
%46 = call i32 (...) @test_tlink()
%47 = call i32 (...) @test_rlink()
%48 = call i32 (...) @test_tmkdir()
%49 = call i32 (...) @test_rmkdir()
%50 = call i32 (...) @test_trenameat()
%51 = call i32 (...) @test_rrenameat()
%52 = call i32 (...) @test_tunlinkat()
%53 = call i32 (...) @test_runlinkat()
%54 = call i32 (...) @test_tversion()
%55 = call i32 (...) @test_rversion()
%56 = call i32 (...) @test_tauth()
%57 = call i32 (...) @test_rauth()
%58 = call i32 (...) @test_tflush()
%59 = call i32 (...) @test_rflush()
%60 = call i32 (...) @test_tattach()
%61 = call i32 (...) @test_rattach()
%62 = call i32 (...) @test_twalk()
%63 = call i32 (...) @test_rwalk()
%64 = call i32 (...) @test_tread()
%65 = call i32 (...) @test_rread()
%66 = call i32 (...) @test_twrite()
%67 = call i32 (...) @test_rwrite()
%68 = call i32 (...) @test_tclunk()
%69 = call i32 (...) @test_rclunk()
%70 = call i32 (...) @test_tremove()
%71 = call i32 (...) @test_rremove()
%72 = call i32 @exit(i32 0)
unreachable
}

LLVM IR (-O2):
define i32 @main(i32 %0, i8** nocapture %1) {
%3 = load i8*, i8** %1
%4 = tail call i32 @diod_log_init(i8* %3)
%5 = icmp eq i32 %0, 1
br i1 %5, label %8, label %6
6: ; preds = %2
%7 = tail call i32 (...) @usage()
br label %8
8: ; preds = %6, %2
%9 = tail call i32 (...) @test_rlerror()
%10 = tail call i32 (...) @test_tstatfs()
%11 = tail call i32 (...) @test_rstatfs()
%12 = tail call i32 (...) @test_tlopen()
%13 = tail call i32 (...) @test_rlopen()
%14 = tail call i32 (...) @test_tlcreate()
%15 = tail call i32 (...) @test_rlcreate()
%16 = tail call i32 (...) @test_tsymlink()
%17 = tail call i32 (...) @test_rsymlink()
%18 = tail call i32 (...) @test_tmknod()
%19 = tail call i32 (...) @test_rmknod()
%20 = tail call i32 (...) @test_trename()
%21 = tail call i32 (...) @test_rrename()
%22 = tail call i32 (...) @test_treadlink()
%23 = tail call i32 (...) @test_rreadlink()
%24 = tail call i32 (...) @test_tgetattr()
%25 = tail call i32 (...) @test_rgetattr()
%26 = tail call i32 (...) @test_tsetattr()
%27 = tail call i32 (...) @test_rsetattr()
%28 = tail call i32 (...) @test_txattrwalk()
%29 = tail call i32 (...) @test_rxattrwalk()
%30 = tail call i32 (...) @test_txattrcreate()
%31 = tail call i32 (...) @test_rxattrcreate()
%32 = tail call i32 (...) @test_treaddir()
%33 = tail call i32 (...) @test_rreaddir()
%34 = tail call i32 (...) @test_tfsync()
%35 = tail call i32 (...) @test_rfsync()
%36 = tail call i32 (...) @test_tlock()
%37 = tail call i32 (...) @test_rlock()
%38 = tail call i32 (...) @test_tgetlock()
%39 = tail call i32 (...) @test_rgetlock()
%40 = tail call i32 (...) @test_tlink()
%41 = tail call i32 (...) @test_rlink()
%42 = tail call i32 (...) @test_tmkdir()
%43 = tail call i32 (...) @test_rmkdir()
%44 = tail call i32 (...) @test_trenameat()
%45 = tail call i32 (...) @test_rrenameat()
%46 = tail call i32 (...) @test_tunlinkat()
%47 = tail call i32 (...) @test_runlinkat()
%48 = tail call i32 (...) @test_tversion()
%49 = tail call i32 (...) @test_rversion()
%50 = tail call i32 (...) @test_tauth()
%51 = tail call i32 (...) @test_rauth()
%52 = tail call i32 (...) @test_tflush()
%53 = tail call i32 (...) @test_rflush()
%54 = tail call i32 (...) @test_tattach()
%55 = tail call i32 (...) @test_rattach()
%56 = tail call i32 (...) @test_twalk()
%57 = tail call i32 (...) @test_rwalk()
%58 = tail call i32 (...) @test_tread()
%59 = tail call i32 (...) @test_rread()
%60 = tail call i32 (...) @test_twrite()
%61 = tail call i32 (...) @test_rwrite()
%62 = tail call i32 (...) @test_tclunk()
%63 = tail call i32 (...) @test_rclunk()
%64 = tail call i32 (...) @test_tremove()
%65 = tail call i32 (...) @test_rremove()
%66 = tail call i32 @exit(i32 0)
unreachable
}