#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 */
unsigned long MS_ACTIVE;
unsigned long MS_BIND;
unsigned long MS_DIRSYNC;
unsigned long MS_I_VERSION;
unsigned long MS_KERNMOUNT;
unsigned long MS_MANDLOCK;
unsigned long MS_MOVE;
unsigned long MS_NOATIME;
unsigned long MS_NODEV;
unsigned long MS_NODIRATIME;
unsigned long MS_NOEXEC;
unsigned long MS_NOSUID;
unsigned long MS_NOUSER;
unsigned long MS_POSIXACL;
unsigned long MS_PRIVATE;
unsigned long MS_RDONLY;
unsigned long MS_REC;
unsigned long MS_RELATIME;
unsigned long MS_REMOUNT;
unsigned long MS_SHARED;
unsigned long MS_SILENT;
unsigned long MS_SLAVE;
unsigned long MS_STRICTATIME;
unsigned long MS_SYNCHRONOUS;
unsigned long MS_UNBINDABLE;
int /*<<< orphan*/ sprintf(char *, char *, unsigned long);
int /*<<< orphan*/ strcat(char *, char *);
int /*<<< orphan*/ strcpy(char *, char *);
size_t strlen(char *);
const char *sc_mount_opt2str(unsigned long flags) {
  static char buf[1000];
  unsigned long used = 0;
  strcpy(buf, "");
  do
    if (flags & (MS_RDONLY)) {
      strcat(buf, "ro"
                  ",");
      flags ^= (MS_RDONLY);
    }
  while (0);
  do
    if (flags & (MS_NOSUID)) {
      strcat(buf, "nosuid"
                  ",");
      flags ^= (MS_NOSUID);
    }
  while (0);
  do
    if (flags & (MS_NODEV)) {
      strcat(buf, "nodev"
                  ",");
      flags ^= (MS_NODEV);
    }
  while (0);
  do
    if (flags & (MS_NOEXEC)) {
      strcat(buf, "noexec"
                  ",");
      flags ^= (MS_NOEXEC);
    }
  while (0);
  do
    if (flags & (MS_SYNCHRONOUS)) {
      strcat(buf, "sync"
                  ",");
      flags ^= (MS_SYNCHRONOUS);
    }
  while (0);
  do
    if (flags & (MS_REMOUNT)) {
      strcat(buf, "remount"
                  ",");
      flags ^= (MS_REMOUNT);
    }
  while (0);
  do
    if (flags & (MS_MANDLOCK)) {
      strcat(buf, "mand"
                  ",");
      flags ^= (MS_MANDLOCK);
    }
  while (0);
  do
    if (flags & (MS_DIRSYNC)) {
      strcat(buf, "dirsync"
                  ",");
      flags ^= (MS_DIRSYNC);
    }
  while (0);
  do
    if (flags & (MS_NOATIME)) {
      strcat(buf, "noatime"
                  ",");
      flags ^= (MS_NOATIME);
    }
  while (0);
  do
    if (flags & (MS_NODIRATIME)) {
      strcat(buf, "nodiratime"
                  ",");
      flags ^= (MS_NODIRATIME);
    }
  while (0);
  if (flags & MS_BIND) {
    if (flags & MS_REC) {
      strcat(buf, "rbind,");
      used |= MS_REC;
    } else {
      strcat(buf, "bind,");
    }
    flags ^= MS_BIND;
  }
  do
    if (flags & (MS_MOVE)) {
      strcat(buf, "move"
                  ",");
      flags ^= (MS_MOVE);
    }
  while (0);
  do
    if (flags & (MS_SILENT)) {
      strcat(buf, "silent"
                  ",");
      flags ^= (MS_SILENT);
    }
  while (0);
  do
    if (flags & (MS_POSIXACL)) {
      strcat(buf, "acl"
                  ",");
      flags ^= (MS_POSIXACL);
    }
  while (0);
  do
    if (flags & (MS_UNBINDABLE)) {
      strcat(buf, "unbindable"
                  ",");
      flags ^= (MS_UNBINDABLE);
    }
  while (0);
  if (flags & MS_PRIVATE) {
    if (flags & MS_REC) {
      strcat(buf, "rprivate,");
      used |= MS_REC;
    } else {
      strcat(buf, "private,");
    }
    flags ^= MS_PRIVATE;
  }
  if (flags & MS_SLAVE) {
    if (flags & MS_REC) {
      strcat(buf, "rslave,");
      used |= MS_REC;
    } else {
      strcat(buf, "slave,");
    }
    flags ^= MS_SLAVE;
  }
  if (flags & MS_SHARED) {
    if (flags & MS_REC) {
      strcat(buf, "rshared,");
      used |= MS_REC;
    } else {
      strcat(buf, "shared,");
    }
    flags ^= MS_SHARED;
  }
  flags ^= used;
  do
    if (flags & (MS_RELATIME)) {
      strcat(buf, "relatime"
                  ",");
      flags ^= (MS_RELATIME);
    }
  while (0);
  do
    if (flags & (MS_KERNMOUNT)) {
      strcat(buf, "kernmount"
                  ",");
      flags ^= (MS_KERNMOUNT);
    }
  while (0);
  do
    if (flags & (MS_I_VERSION)) {
      strcat(buf, "iversion"
                  ",");
      flags ^= (MS_I_VERSION);
    }
  while (0);
  do
    if (flags & (MS_STRICTATIME)) {
      strcat(buf, "strictatime"
                  ",");
      flags ^= (MS_STRICTATIME);
    }
  while (0);
  do
    if (flags & ((1 << 25))) {
      strcat(buf, "lazytime"
                  ",");
      flags ^= ((1 << 25));
    }
  while (0);
  do
    if (flags & ((1 << 28))) {
      strcat(buf, "nosec"
                  ",");
      flags ^= ((1 << 28));
    }
  while (0);
  do
    if (flags & ((1 << 29))) {
      strcat(buf, "born"
                  ",");
      flags ^= ((1 << 29));
    }
  while (0);
  do
    if (flags & (MS_ACTIVE)) {
      strcat(buf, "active"
                  ",");
      flags ^= (MS_ACTIVE);
    }
  while (0);
  do
    if (flags & (MS_NOUSER)) {
      strcat(buf, "nouser"
                  ",");
      flags ^= (MS_NOUSER);
    }
  while (0);
  if (flags) {
    char of[128];
    sprintf(of, "%#lx", flags);
    strcat(buf, of);
  }
  size_t len = strlen(buf);
  if (len > 0 && buf[len - 1] == ',') {
    buf[len - 1] = 0;
  }
  return buf;
}


x86 assembly (clang, -O0):
<sc_mount_opt2str>:
push   %rbp
mov    %rsp,%rbp
sub    $0xa0,%rsp
mov    %rdi,-0x8(%rbp)
movq   $0x0,-0x10(%rbp)
lea    0x2ef2(%rip),%rdi
lea    0xf60(%rip),%rsi
call   1030 <strcpy@plt>
mov    -0x8(%rbp),%rax
mov    0x2e03(%rip),%rcx
and    (%rcx),%rax
cmp    $0x0,%rax
je     11a7 <sc_mount_opt2str+0x67>
lea    0x2ec7(%rip),%rdi
lea    0xe70(%rip),%rsi
call   1050 <strcat@plt>
mov    0x2ddc(%rip),%rax
mov    (%rax),%rax
xor    -0x8(%rbp),%rax
mov    %rax,-0x8(%rbp)
jmp    11ac <sc_mount_opt2str+0x6c>
jmp    11b1 <sc_mount_opt2str+0x71>
mov    -0x8(%rbp),%rax
mov    0x2dfc(%rip),%rcx
and    (%rcx),%rax
cmp    $0x0,%rax
je     11ee <sc_mount_opt2str+0xae>
lea    0x2e80(%rip),%rdi
lea    0xe2d(%rip),%rsi
call   1050 <strcat@plt>
mov    0x2dd5(%rip),%rax
mov    (%rax),%rax
xor    -0x8(%rbp),%rax
mov    %rax,-0x8(%rbp)
jmp    11f3 <sc_mount_opt2str+0xb3>
jmp    11f8 <sc_mount_opt2str+0xb8>
mov    -0x8(%rbp),%rax
mov    0x2ded(%rip),%rcx
and    (%rcx),%rax
cmp    $0x0,%rax
je     1235 <sc_mount_opt2str+0xf5>
lea    0x2e39(%rip),%rdi
lea    0xdee(%rip),%rsi
call   1050 <strcat@plt>
mov    0x2dc6(%rip),%rax
mov    (%rax),%rax
xor    -0x8(%rbp),%rax
mov    %rax,-0x8(%rbp)
jmp    123a <sc_mount_opt2str+0xfa>
jmp    123f <sc_mount_opt2str+0xff>
mov    -0x8(%rbp),%rax
mov    0x2cce(%rip),%rcx
and    (%rcx),%rax
cmp    $0x0,%rax
je     127c <sc_mount_opt2str+0x13c>
lea    0x2df2(%rip),%rdi
lea    0xdae(%rip),%rsi
call   1050 <strcat@plt>
mov    0x2ca7(%rip),%rax
mov    (%rax),%rax
xor    -0x8(%rbp),%rax
mov    %rax,-0x8(%rbp)
jmp    1281 <sc_mount_opt2str+0x141>
jmp    1286 <sc_mount_opt2str+0x146>
mov    -0x8(%rbp),%rax
mov    0x2cef(%rip),%rcx
and    (%rcx),%rax
cmp    $0x0,%rax
je     12c3 <sc_mount_opt2str+0x183>
lea    0x2dab(%rip),%rdi
lea    0xd81(%rip),%rsi
call   1050 <strcat@plt>
mov    0x2cc8(%rip),%rax
mov    (%rax),%rax
xor    -0x8(%rbp),%rax
mov    %rax,-0x8(%rbp)
jmp    12c8 <sc_mount_opt2str+0x188>
jmp    12cd <sc_mount_opt2str+0x18d>
mov    -0x8(%rbp),%rax
mov    0x2c58(%rip),%rcx
and    (%rcx),%rax
cmp    $0x0,%rax
je     130a <sc_mount_opt2str+0x1ca>
lea    0x2d64(%rip),%rdi
lea    0xd28(%rip),%rsi
call   1050 <strcat@plt>
mov    0x2c31(%rip),%rax
mov    (%rax),%rax
xor    -0x8(%rbp),%rax
mov    %rax,-0x8(%rbp)
jmp    130f <sc_mount_opt2str+0x1cf>
jmp    1314 <sc_mount_opt2str+0x1d4>
mov    -0x8(%rbp),%rax
mov    0x2c91(%rip),%rcx
and    (%rcx),%rax
cmp    $0x0,%rax
je     1351 <sc_mount_opt2str+0x211>
lea    0x2d1d(%rip),%rdi
lea    0xcea(%rip),%rsi
call   1050 <strcat@plt>
mov    0x2c6a(%rip),%rax
mov    (%rax),%rax
xor    -0x8(%rbp),%rax
mov    %rax,-0x8(%rbp)
jmp    1356 <sc_mount_opt2str+0x216>
jmp    135b <sc_mount_opt2str+0x21b>
mov    -0x8(%rbp),%rax
mov    0x2c42(%rip),%rcx
and    (%rcx),%rax
cmp    $0x0,%rax
je     1398 <sc_mount_opt2str+0x258>
lea    0x2cd6(%rip),%rdi
lea    0xca9(%rip),%rsi
call   1050 <strcat@plt>
mov    0x2c1b(%rip),%rax
mov    (%rax),%rax
xor    -0x8(%rbp),%rax
mov    %rax,-0x8(%rbp)
jmp    139d <sc_mount_opt2str+0x25d>
jmp    13a2 <sc_mount_opt2str+0x262>
mov    -0x8(%rbp),%rax
mov    0x2c33(%rip),%rcx
and    (%rcx),%rax
cmp    $0x0,%rax
je     13df <sc_mount_opt2str+0x29f>
lea    0x2c8f(%rip),%rdi
lea    0xc6b(%rip),%rsi
call   1050 <strcat@plt>
mov    0x2c0c(%rip),%rax
mov    (%rax),%rax
xor    -0x8(%rbp),%rax
mov    %rax,-0x8(%rbp)
jmp    13e4 <sc_mount_opt2str+0x2a4>
jmp    13e9 <sc_mount_opt2str+0x2a9>
mov    -0x8(%rbp),%rax
mov    0x2b44(%rip),%rcx
and    (%rcx),%rax
cmp    $0x0,%rax
je     1426 <sc_mount_opt2str+0x2e6>
lea    0x2c48(%rip),%rdi
lea    0xc2d(%rip),%rsi
call   1050 <strcat@plt>
mov    0x2b1d(%rip),%rax
mov    (%rax),%rax
xor    -0x8(%rbp),%rax
mov    %rax,-0x8(%rbp)
jmp    142b <sc_mount_opt2str+0x2eb>
mov    -0x8(%rbp),%rax
mov    0x2b6a(%rip),%rcx
and    (%rcx),%rax
cmp    $0x0,%rax
je     14aa <sc_mount_opt2str+0x36a>
mov    -0x8(%rbp),%rax
mov    0x2b42(%rip),%rcx
and    (%rcx),%rax
cmp    $0x0,%rax
je     1485 <sc_mount_opt2str+0x345>
lea    0x2bee(%rip),%rdi
lea    0xbdf(%rip),%rsi
call   1050 <strcat@plt>
mov    0x2b1b(%rip),%rax
mov    (%rax),%rax
or     -0x10(%rbp),%rax
mov    %rax,-0x10(%rbp)
jmp    1498 <sc_mount_opt2str+0x358>
lea    0x2bc4(%rip),%rdi
lea    0xbb6(%rip),%rsi
call   1050 <strcat@plt>
mov    0x2b01(%rip),%rax
mov    (%rax),%rax
xor    -0x8(%rbp),%rax
mov    %rax,-0x8(%rbp)
jmp    14af <sc_mount_opt2str+0x36f>
mov    -0x8(%rbp),%rax
mov    0x2a9e(%rip),%rcx
and    (%rcx),%rax
cmp    $0x0,%rax
je     14ec <sc_mount_opt2str+0x3ac>
lea    0x2b82(%rip),%rdi
lea    0xb7a(%rip),%rsi
call   1050 <strcat@plt>
mov    0x2a77(%rip),%rax
mov    (%rax),%rax
xor    -0x8(%rbp),%rax
mov    %rax,-0x8(%rbp)
jmp    14f1 <sc_mount_opt2str+0x3b1>
jmp    14f6 <sc_mount_opt2str+0x3b6>
mov    -0x8(%rbp),%rax
mov    0x2abf(%rip),%rcx
and    (%rcx),%rax
cmp    $0x0,%rax
je     1533 <sc_mount_opt2str+0x3f3>
lea    0x2b3b(%rip),%rdi
lea    0xb39(%rip),%rsi
call   1050 <strcat@plt>
mov    0x2a98(%rip),%rax
mov    (%rax),%rax
xor    -0x8(%rbp),%rax
mov    %rax,-0x8(%rbp)
jmp    1538 <sc_mount_opt2str+0x3f8>
jmp    153d <sc_mount_opt2str+0x3fd>
mov    -0x8(%rbp),%rax
mov    0x2a18(%rip),%rcx
and    (%rcx),%rax
cmp    $0x0,%rax
je     157a <sc_mount_opt2str+0x43a>
lea    0x2af4(%rip),%rdi
lea    0xafa(%rip),%rsi
call   1050 <strcat@plt>
mov    0x29f1(%rip),%rax
mov    (%rax),%rax
xor    -0x8(%rbp),%rax
mov    %rax,-0x8(%rbp)
jmp    157f <sc_mount_opt2str+0x43f>
jmp    1584 <sc_mount_opt2str+0x444>
mov    -0x8(%rbp),%rax
mov    0x2a39(%rip),%rcx
and    (%rcx),%rax
cmp    $0x0,%rax
je     15c1 <sc_mount_opt2str+0x481>
lea    0x2aad(%rip),%rdi
lea    0xab8(%rip),%rsi
call   1050 <strcat@plt>
mov    0x2a12(%rip),%rax
mov    (%rax),%rax
xor    -0x8(%rbp),%rax
mov    %rax,-0x8(%rbp)
jmp    15c6 <sc_mount_opt2str+0x486>
mov    -0x8(%rbp),%rax
mov    0x2997(%rip),%rcx
and    (%rcx),%rax
cmp    $0x0,%rax
je     1645 <sc_mount_opt2str+0x505>
mov    -0x8(%rbp),%rax
mov    0x29a7(%rip),%rcx
and    (%rcx),%rax
cmp    $0x0,%rax
je     1620 <sc_mount_opt2str+0x4e0>
lea    0x2a53(%rip),%rdi
lea    0xa6a(%rip),%rsi
call   1050 <strcat@plt>
mov    0x2980(%rip),%rax
mov    (%rax),%rax
or     -0x10(%rbp),%rax
mov    %rax,-0x10(%rbp)
jmp    1633 <sc_mount_opt2str+0x4f3>
lea    0x2a29(%rip),%rdi
lea    0xa41(%rip),%rsi
call   1050 <strcat@plt>
mov    0x292e(%rip),%rax
mov    (%rax),%rax
xor    -0x8(%rbp),%rax
mov    %rax,-0x8(%rbp)
mov    -0x8(%rbp),%rax
mov    0x28f0(%rip),%rcx
and    (%rcx),%rax
cmp    $0x0,%rax
je     16c4 <sc_mount_opt2str+0x584>
mov    -0x8(%rbp),%rax
mov    0x2928(%rip),%rcx
and    (%rcx),%rax
cmp    $0x0,%rax
je     169f <sc_mount_opt2str+0x55f>
lea    0x29d4(%rip),%rdi
lea    0x9f5(%rip),%rsi
call   1050 <strcat@plt>
mov    0x2901(%rip),%rax
mov    (%rax),%rax
or     -0x10(%rbp),%rax
mov    %rax,-0x10(%rbp)
jmp    16b2 <sc_mount_opt2str+0x572>
lea    0x29aa(%rip),%rdi
lea    0x9cc(%rip),%rsi
call   1050 <strcat@plt>
mov    0x2887(%rip),%rax
mov    (%rax),%rax
xor    -0x8(%rbp),%rax
mov    %rax,-0x8(%rbp)
mov    -0x8(%rbp),%rax
mov    0x28c9(%rip),%rcx
and    (%rcx),%rax
cmp    $0x0,%rax
je     1743 <sc_mount_opt2str+0x603>
mov    -0x8(%rbp),%rax
mov    0x28a9(%rip),%rcx
and    (%rcx),%rax
cmp    $0x0,%rax
je     171e <sc_mount_opt2str+0x5de>
lea    0x2955(%rip),%rdi
lea    0x97e(%rip),%rsi
call   1050 <strcat@plt>
mov    0x2882(%rip),%rax
mov    (%rax),%rax
or     -0x10(%rbp),%rax
mov    %rax,-0x10(%rbp)
jmp    1731 <sc_mount_opt2str+0x5f1>
lea    0x292b(%rip),%rdi
lea    0x955(%rip),%rsi
call   1050 <strcat@plt>
mov    0x2860(%rip),%rax
mov    (%rax),%rax
xor    -0x8(%rbp),%rax
mov    %rax,-0x8(%rbp)
mov    -0x10(%rbp),%rax
xor    -0x8(%rbp),%rax
mov    %rax,-0x8(%rbp)
mov    -0x8(%rbp),%rax
mov    0x27f6(%rip),%rcx
and    (%rcx),%rax
cmp    $0x0,%rax
je     178c <sc_mount_opt2str+0x64c>
lea    0x28e2(%rip),%rdi
lea    0x914(%rip),%rsi
call   1050 <strcat@plt>
mov    0x27cf(%rip),%rax
mov    (%rax),%rax
xor    -0x8(%rbp),%rax
mov    %rax,-0x8(%rbp)
jmp    1791 <sc_mount_opt2str+0x651>
jmp    1796 <sc_mount_opt2str+0x656>
mov    -0x8(%rbp),%rax
mov    0x27e7(%rip),%rcx
and    (%rcx),%rax
cmp    $0x0,%rax
je     17d3 <sc_mount_opt2str+0x693>
lea    0x289b(%rip),%rdi
lea    0x8d7(%rip),%rsi
call   1050 <strcat@plt>
mov    0x27c0(%rip),%rax
mov    (%rax),%rax
xor    -0x8(%rbp),%rax
mov    %rax,-0x8(%rbp)
jmp    17d8 <sc_mount_opt2str+0x698>
jmp    17dd <sc_mount_opt2str+0x69d>
mov    -0x8(%rbp),%rax
mov    0x2800(%rip),%rcx
and    (%rcx),%rax
cmp    $0x0,%rax
je     181a <sc_mount_opt2str+0x6da>
lea    0x2854(%rip),%rdi
lea    0x89b(%rip),%rsi
call   1050 <strcat@plt>
mov    0x27d9(%rip),%rax
mov    (%rax),%rax
xor    -0x8(%rbp),%rax
mov    %rax,-0x8(%rbp)
jmp    181f <sc_mount_opt2str+0x6df>
jmp    1824 <sc_mount_opt2str+0x6e4>
mov    -0x8(%rbp),%rax
mov    0x27a1(%rip),%rcx
and    (%rcx),%rax
cmp    $0x0,%rax
je     1861 <sc_mount_opt2str+0x721>
lea    0x280d(%rip),%rdi
lea    0x85e(%rip),%rsi
call   1050 <strcat@plt>
mov    0x277a(%rip),%rax
mov    (%rax),%rax
xor    -0x8(%rbp),%rax
mov    %rax,-0x8(%rbp)
jmp    1866 <sc_mount_opt2str+0x726>
jmp    186b <sc_mount_opt2str+0x72b>
mov    -0x8(%rbp),%rax
and    $0x2000000,%rax
cmp    $0x0,%rax
je     18a0 <sc_mount_opt2str+0x760>
lea    0x27ca(%rip),%rdi
lea    0x828(%rip),%rsi
call   1050 <strcat@plt>
mov    -0x8(%rbp),%rax
xor    $0x2000000,%rax
mov    %rax,-0x8(%rbp)
jmp    18a5 <sc_mount_opt2str+0x765>
jmp    18aa <sc_mount_opt2str+0x76a>
mov    -0x8(%rbp),%rax
and    $0x10000000,%rax
cmp    $0x0,%rax
je     18df <sc_mount_opt2str+0x79f>
lea    0x278b(%rip),%rdi
lea    0x7f3(%rip),%rsi
call   1050 <strcat@plt>
mov    -0x8(%rbp),%rax
xor    $0x10000000,%rax
mov    %rax,-0x8(%rbp)
jmp    18e4 <sc_mount_opt2str+0x7a4>
jmp    18e9 <sc_mount_opt2str+0x7a9>
mov    -0x8(%rbp),%rax
and    $0x20000000,%rax
cmp    $0x0,%rax
je     191e <sc_mount_opt2str+0x7de>
lea    0x274c(%rip),%rdi
lea    0x7bb(%rip),%rsi
call   1050 <strcat@plt>
mov    -0x8(%rbp),%rax
xor    $0x20000000,%rax
mov    %rax,-0x8(%rbp)
jmp    1923 <sc_mount_opt2str+0x7e3>
jmp    1928 <sc_mount_opt2str+0x7e8>
mov    -0x8(%rbp),%rax
mov    0x25f5(%rip),%rcx
and    (%rcx),%rax
cmp    $0x0,%rax
je     1965 <sc_mount_opt2str+0x825>
lea    0x2709(%rip),%rdi
lea    0x77e(%rip),%rsi
call   1050 <strcat@plt>
mov    0x25ce(%rip),%rax
mov    (%rax),%rax
xor    -0x8(%rbp),%rax
mov    %rax,-0x8(%rbp)
jmp    196a <sc_mount_opt2str+0x82a>
jmp    196f <sc_mount_opt2str+0x82f>
mov    -0x8(%rbp),%rax
mov    0x25ce(%rip),%rcx
and    (%rcx),%rax
cmp    $0x0,%rax
je     19ac <sc_mount_opt2str+0x86c>
lea    0x26c2(%rip),%rdi
lea    0x73f(%rip),%rsi
call   1050 <strcat@plt>
mov    0x25a7(%rip),%rax
mov    (%rax),%rax
xor    -0x8(%rbp),%rax
mov    %rax,-0x8(%rbp)
jmp    19b1 <sc_mount_opt2str+0x871>
cmpq   $0x0,-0x8(%rbp)
je     19e6 <sc_mount_opt2str+0x8a6>
lea    -0x90(%rbp),%rdi
mov    -0x8(%rbp),%rdx
lea    0x70e(%rip),%rsi
call   1060 <sprintf@plt>
lea    -0x90(%rbp),%rsi
lea    0x266f(%rip),%rdi
call   1050 <strcat@plt>
lea    0x2663(%rip),%rdi
call   1040 <strlen@plt>
mov    %rax,-0x98(%rbp)
cmpq   $0x0,-0x98(%rbp)
jbe    1a3c <sc_mount_opt2str+0x8fc>
mov    -0x98(%rbp),%rcx
sub    $0x1,%rcx
lea    0x2637(%rip),%rax
movsbl (%rax,%rcx,1),%eax
cmp    $0x2c,%eax
jne    1a3c <sc_mount_opt2str+0x8fc>
mov    -0x98(%rbp),%rcx
sub    $0x1,%rcx
lea    0x2618(%rip),%rax
movb   $0x0,(%rax,%rcx,1)
lea    0x260d(%rip),%rax
add    $0xa0,%rsp
pop    %rbp
ret

x86 assembly (clang, -O2):
<sc_mount_opt2str>:
push   %r15
push   %r14
push   %r12
push   %rbx
sub    $0x88,%rsp
mov    %rdi,%rbx
lea    0x2ef8(%rip),%rdi
lea    0xf66(%rip),%rsi
call   1030 <strcpy@plt>
mov    0x2e0d(%rip),%r14
test   %rbx,(%r14)
je     1186 <sc_mount_opt2str+0x46>
lea    0x2ed9(%rip),%rdi
lea    0xe82(%rip),%rsi
call   1050 <strcat@plt>
xor    (%r14),%rbx
mov    0x2e2b(%rip),%r14
test   %rbx,(%r14)
je     11a8 <sc_mount_opt2str+0x68>
lea    0x2eb7(%rip),%rdi
lea    0xe64(%rip),%rsi
call   1050 <strcat@plt>
xor    (%r14),%rbx
mov    0x2e41(%rip),%r14
test   %rbx,(%r14)
je     11ca <sc_mount_opt2str+0x8a>
lea    0x2e95(%rip),%rdi
lea    0xe4a(%rip),%rsi
call   1050 <strcat@plt>
xor    (%r14),%rbx
mov    0x2d47(%rip),%r14
test   %rbx,(%r14)
je     11ec <sc_mount_opt2str+0xac>
lea    0x2e73(%rip),%rdi
lea    0xe2f(%rip),%rsi
call   1050 <strcat@plt>
xor    (%r14),%rbx
mov    0x2d8d(%rip),%r14
test   %rbx,(%r14)
je     120e <sc_mount_opt2str+0xce>
lea    0x2e51(%rip),%rdi
lea    0xe27(%rip),%rsi
call   1050 <strcat@plt>
xor    (%r14),%rbx
mov    0x2d1b(%rip),%r14
test   %rbx,(%r14)
je     1230 <sc_mount_opt2str+0xf0>
lea    0x2e2f(%rip),%rdi
lea    0xdf3(%rip),%rsi
call   1050 <strcat@plt>
xor    (%r14),%rbx
mov    0x2d79(%rip),%r14
test   %rbx,(%r14)
je     1252 <sc_mount_opt2str+0x112>
lea    0x2e0d(%rip),%rdi
lea    0xdda(%rip),%rsi
call   1050 <strcat@plt>
xor    (%r14),%rbx
mov    0x2d4f(%rip),%r14
test   %rbx,(%r14)
je     1274 <sc_mount_opt2str+0x134>
lea    0x2deb(%rip),%rdi
lea    0xdbe(%rip),%rsi
call   1050 <strcat@plt>
xor    (%r14),%rbx
mov    0x2d65(%rip),%r14
test   %rbx,(%r14)
je     1296 <sc_mount_opt2str+0x156>
lea    0x2dc9(%rip),%rdi
lea    0xda5(%rip),%rsi
call   1050 <strcat@plt>
xor    (%r14),%rbx
mov    0x2c9b(%rip),%r14
test   %rbx,(%r14)
je     12b8 <sc_mount_opt2str+0x178>
lea    0x2da7(%rip),%rdi
lea    0xd8c(%rip),%rsi
call   1050 <strcat@plt>
xor    (%r14),%rbx
mov    0x2ce1(%rip),%r15
test   %rbx,(%r15)
je     12e8 <sc_mount_opt2str+0x1a8>
mov    0x2cc5(%rip),%r14
test   %rbx,(%r14)
je     12ed <sc_mount_opt2str+0x1ad>
lea    0x2d79(%rip),%rdi
lea    0xd6a(%rip),%rsi
call   1050 <strcat@plt>
mov    (%r14),%r14
jmp    1303 <sc_mount_opt2str+0x1c3>
xor    %r14d,%r14d
jmp    1306 <sc_mount_opt2str+0x1c6>
lea    0x2d5c(%rip),%rdi
lea    0xd4e(%rip),%rsi
call   1050 <strcat@plt>
xor    %r14d,%r14d
xor    (%r15),%rbx
mov    0x2c4b(%rip),%r15
test   %rbx,(%r15)
je     1328 <sc_mount_opt2str+0x1e8>
lea    0x2d37(%rip),%rdi
lea    0xd2f(%rip),%rsi
call   1050 <strcat@plt>
xor    (%r15),%rbx
mov    0x2c91(%rip),%r15
test   %rbx,(%r15)
je     134a <sc_mount_opt2str+0x20a>
lea    0x2d15(%rip),%rdi
lea    0xd13(%rip),%rsi
call   1050 <strcat@plt>
xor    (%r15),%rbx
mov    0x2c0f(%rip),%r15
test   %rbx,(%r15)
je     136c <sc_mount_opt2str+0x22c>
lea    0x2cf3(%rip),%rdi
lea    0xcf9(%rip),%rsi
call   1050 <strcat@plt>
xor    (%r15),%rbx
mov    0x2c55(%rip),%r15
test   %rbx,(%r15)
je     138e <sc_mount_opt2str+0x24e>
lea    0x2cd1(%rip),%rdi
lea    0xcdc(%rip),%rsi
call   1050 <strcat@plt>
xor    (%r15),%rbx
mov    0x2bd3(%rip),%r15
test   %rbx,(%r15)
je     13d6 <sc_mount_opt2str+0x296>
mov    0x2bef(%rip),%r12
test   %rbx,(%r12)
je     13c0 <sc_mount_opt2str+0x280>
lea    0x2ca2(%rip),%rdi
lea    0xcb9(%rip),%rsi
call   1050 <strcat@plt>
or     (%r12),%r14
jmp    13d3 <sc_mount_opt2str+0x293>
lea    0x2c89(%rip),%rdi
lea    0xca1(%rip),%rsi
call   1050 <strcat@plt>
xor    (%r15),%rbx
mov    0x2b63(%rip),%r15
test   %rbx,(%r15)
je     141e <sc_mount_opt2str+0x2de>
mov    0x2ba7(%rip),%r12
test   %rbx,(%r12)
je     1408 <sc_mount_opt2str+0x2c8>
lea    0x2c5a(%rip),%rdi
lea    0xc7b(%rip),%rsi
call   1050 <strcat@plt>
or     (%r12),%r14
jmp    141b <sc_mount_opt2str+0x2db>
lea    0x2c41(%rip),%rdi
lea    0xc63(%rip),%rsi
call   1050 <strcat@plt>
xor    (%r15),%rbx
mov    0x2b73(%rip),%r15
test   %rbx,(%r15)
je     1466 <sc_mount_opt2str+0x326>
mov    0x2b5f(%rip),%r12
test   %rbx,(%r12)
je     1450 <sc_mount_opt2str+0x310>
lea    0x2c12(%rip),%rdi
lea    0xc3b(%rip),%rsi
call   1050 <strcat@plt>
or     (%r12),%r14
jmp    1463 <sc_mount_opt2str+0x323>
lea    0x2bf9(%rip),%rdi
lea    0xc23(%rip),%rsi
call   1050 <strcat@plt>
xor    (%r15),%rbx
xor    %rbx,%r14
mov    0x2ae0(%rip),%rbx
test   %r14,(%rbx)
je     148b <sc_mount_opt2str+0x34b>
lea    0x2bd4(%rip),%rdi
lea    0xc06(%rip),%rsi
call   1050 <strcat@plt>
xor    (%rbx),%r14
mov    0x2af6(%rip),%rbx
test   %r14,(%rbx)
je     14ad <sc_mount_opt2str+0x36d>
lea    0x2bb2(%rip),%rdi
lea    0xbee(%rip),%rsi
call   1050 <strcat@plt>
xor    (%rbx),%r14
mov    0x2b34(%rip),%rbx
test   %r14,(%rbx)
je     14cf <sc_mount_opt2str+0x38f>
lea    0x2b90(%rip),%rdi
lea    0xbd7(%rip),%rsi
call   1050 <strcat@plt>
xor    (%rbx),%r14
mov    0x2afa(%rip),%rbx
test   %r14,(%rbx)
je     14f1 <sc_mount_opt2str+0x3b1>
lea    0x2b6e(%rip),%rdi
lea    0xbbf(%rip),%rsi
call   1050 <strcat@plt>
xor    (%rbx),%r14
test   $0x2000000,%r14d
jne    15d1 <sc_mount_opt2str+0x491>
test   $0x10000000,%r14d
jne    15f8 <sc_mount_opt2str+0x4b8>
test   $0x20000000,%r14d
je     152e <sc_mount_opt2str+0x3ee>
lea    0x2b35(%rip),%rdi
lea    0xba4(%rip),%rsi
call   1050 <strcat@plt>
xor    $0x20000000,%r14
mov    0x29f3(%rip),%rbx
test   %r14,(%rbx)
je     1550 <sc_mount_opt2str+0x410>
lea    0x2b0f(%rip),%rdi
lea    0xb84(%rip),%rsi
call   1050 <strcat@plt>
xor    (%rbx),%r14
mov    0x29f1(%rip),%rbx
test   %r14,(%rbx)
je     1572 <sc_mount_opt2str+0x432>
lea    0x2aed(%rip),%rdi
lea    0xb6a(%rip),%rsi
call   1050 <strcat@plt>
xor    (%rbx),%r14
test   %r14,%r14
je     159b <sc_mount_opt2str+0x45b>
lea    0xb5e(%rip),%rsi
mov    %rsp,%rbx
mov    %rbx,%rdi
mov    %r14,%rdx
call   1060 <sprintf@plt>
lea    0x2abd(%rip),%rdi
mov    %rbx,%rsi
call   1050 <strcat@plt>
lea    0x2aae(%rip),%rbx
mov    %rbx,%rdi
call   1040 <strlen@plt>
test   %rax,%rax
je     15bb <sc_mount_opt2str+0x47b>
cmpb   $0x2c,-0x1(%rax,%rbx,1)
jne    15bb <sc_mount_opt2str+0x47b>
movb   $0x0,-0x1(%rax,%rbx,1)
lea    0x2a8e(%rip),%rax
add    $0x88,%rsp
pop    %rbx
pop    %r12
pop    %r14
pop    %r15
ret
lea    0x2a78(%rip),%rdi
lea    0xad6(%rip),%rsi
call   1050 <strcat@plt>
xor    $0x2000000,%r14
test   $0x10000000,%r14d
je     150b <sc_mount_opt2str+0x3cb>
lea    0x2a51(%rip),%rdi
lea    0xab9(%rip),%rsi
call   1050 <strcat@plt>
xor    $0x10000000,%r14
test   $0x20000000,%r14d
jne    1514 <sc_mount_opt2str+0x3d4>
jmp    152e <sc_mount_opt2str+0x3ee>

LLVM IR (-O0):
@sc_mount_opt2str.buf = internal global [1000 x i8] zeroinitializer
@.str = [1 x i8] zeroinitializer
@MS_RDONLY = global i64 0
@.str.1 = [4 x i8] c"ro,\00"
@MS_NOSUID = global i64 0
@.str.2 = [8 x i8] c"nosuid,\00"
@MS_NODEV = global i64 0
@.str.3 = [7 x i8] c"nodev,\00"
@MS_NOEXEC = global i64 0
@.str.4 = [8 x i8] c"noexec,\00"
@MS_SYNCHRONOUS = global i64 0
@.str.5 = [6 x i8] c"sync,\00"
@MS_REMOUNT = global i64 0
@.str.6 = [9 x i8] c"remount,\00"
@MS_MANDLOCK = global i64 0
@.str.7 = [6 x i8] c"mand,\00"
@MS_DIRSYNC = global i64 0
@.str.8 = [9 x i8] c"dirsync,\00"
@MS_NOATIME = global i64 0
@.str.9 = [9 x i8] c"noatime,\00"
@MS_NODIRATIME = global i64 0
@.str.10 = [12 x i8] c"nodiratime,\00"
@MS_BIND = global i64 0
@MS_REC = global i64 0
@.str.11 = [7 x i8] c"rbind,\00"
@.str.12 = [6 x i8] c"bind,\00"
@MS_MOVE = global i64 0
@.str.13 = [6 x i8] c"move,\00"
@MS_SILENT = global i64 0
@.str.14 = [8 x i8] c"silent,\00"
@MS_POSIXACL = global i64 0
@.str.15 = [5 x i8] c"acl,\00"
@MS_UNBINDABLE = global i64 0
@.str.16 = [12 x i8] c"unbindable,\00"
@MS_PRIVATE = global i64 0
@.str.17 = [10 x i8] c"rprivate,\00"
@.str.18 = [9 x i8] c"private,\00"
@MS_SLAVE = global i64 0
@.str.19 = [8 x i8] c"rslave,\00"
@.str.20 = [7 x i8] c"slave,\00"
@MS_SHARED = global i64 0
@.str.21 = [9 x i8] c"rshared,\00"
@.str.22 = [8 x i8] c"shared,\00"
@MS_RELATIME = global i64 0
@.str.23 = [10 x i8] c"relatime,\00"
@MS_KERNMOUNT = global i64 0
@.str.24 = [11 x i8] c"kernmount,\00"
@MS_I_VERSION = global i64 0
@.str.25 = [10 x i8] c"iversion,\00"
@MS_STRICTATIME = global i64 0
@.str.26 = [13 x i8] c"strictatime,\00"
@.str.27 = [10 x i8] c"lazytime,\00"
@.str.28 = [7 x i8] c"nosec,\00"
@.str.29 = [6 x i8] c"born,\00"
@MS_ACTIVE = global i64 0
@.str.30 = [8 x i8] c"active,\00"
@MS_NOUSER = global i64 0
@.str.31 = [8 x i8] c"nouser,\00"
@.str.32 = [5 x i8] c"%#lx\00"
define i8* @sc_mount_opt2str(i64 %0) {
%2 = alloca i64
%3 = alloca i64
%4 = alloca [128 x i8]
%5 = alloca i64
store i64 %0, i64* %2
store i64 0, i64* %3
%6 = call i32 @strcpy(i8* getelementptr inbounds ([1000 x i8], [1000 x i8]* @sc_mount_opt2str.buf, i64 0, i64 0), i8* getelementptr inbounds ([1 x i8], [1 x i8]* @.str, i64 0, i64 0))
br label %7
7: ; preds = %1
%8 = load i64, i64* %2
%9 = load i64, i64* @MS_RDONLY
%10 = and i64 %8, %9
%11 = icmp ne i64 %10, 0
br i1 %11, label %12, label %17
12: ; preds = %7
%13 = call i32 @strcat(i8* getelementptr inbounds ([1000 x i8], [1000 x i8]* @sc_mount_opt2str.buf, i64 0, i64 0), i8* getelementptr inbounds ([4 x i8], [4 x i8]* @.str.1, i64 0, i64 0))
%14 = load i64, i64* @MS_RDONLY
%15 = load i64, i64* %2
%16 = xor i64 %15, %14
store i64 %16, i64* %2
br label %17
17: ; preds = %12, %7
br label %18
18: ; preds = %17
br label %19
19: ; preds = %18
%20 = load i64, i64* %2
%21 = load i64, i64* @MS_NOSUID
%22 = and i64 %20, %21
%23 = icmp ne i64 %22, 0
br i1 %23, label %24, label %29
24: ; preds = %19
%25 = call i32 @strcat(i8* getelementptr inbounds ([1000 x i8], [1000 x i8]* @sc_mount_opt2str.buf, i64 0, i64 0), i8* getelementptr inbounds ([8 x i8], [8 x i8]* @.str.2, i64 0, i64 0))
%26 = load i64, i64* @MS_NOSUID
%27 = load i64, i64* %2
%28 = xor i64 %27, %26
store i64 %28, i64* %2
br label %29
29: ; preds = %24, %19
br label %30
30: ; preds = %29
br label %31
31: ; preds = %30
%32 = load i64, i64* %2
%33 = load i64, i64* @MS_NODEV
%34 = and i64 %32, %33
%35 = icmp ne i64 %34, 0
br i1 %35, label %36, label %41
36: ; preds = %31
%37 = call i32 @strcat(i8* getelementptr inbounds ([1000 x i8], [1000 x i8]* @sc_mount_opt2str.buf, i64 0, i64 0), i8* getelementptr inbounds ([7 x i8], [7 x i8]* @.str.3, i64 0, i64 0))
%38 = load i64, i64* @MS_NODEV
%39 = load i64, i64* %2
%40 = xor i64 %39, %38
store i64 %40, i64* %2
br label %41
41: ; preds = %36, %31
br label %42
42: ; preds = %41
br label %43
43: ; preds = %42
%44 = load i64, i64* %2
%45 = load i64, i64* @MS_NOEXEC
%46 = and i64 %44, %45
%47 = icmp ne i64 %46, 0
br i1 %47, label %48, label %53
48: ; preds = %43
%49 = call i32 @strcat(i8* getelementptr inbounds ([1000 x i8], [1000 x i8]* @sc_mount_opt2str.buf, i64 0, i64 0), i8* getelementptr inbounds ([8 x i8], [8 x i8]* @.str.4, i64 0, i64 0))
%50 = load i64, i64* @MS_NOEXEC
%51 = load i64, i64* %2
%52 = xor i64 %51, %50
store i64 %52, i64* %2
br label %53
53: ; preds = %48, %43
br label %54
54: ; preds = %53
br label %55
55: ; preds = %54
%56 = load i64, i64* %2
%57 = load i64, i64* @MS_SYNCHRONOUS
%58 = and i64 %56, %57
%59 = icmp ne i64 %58, 0
br i1 %59, label %60, label %65
60: ; preds = %55
%61 = call i32 @strcat(i8* getelementptr inbounds ([1000 x i8], [1000 x i8]* @sc_mount_opt2str.buf, i64 0, i64 0), i8* getelementptr inbounds ([6 x i8], [6 x i8]* @.str.5, i64 0, i64 0))
%62 = load i64, i64* @MS_SYNCHRONOUS
%63 = load i64, i64* %2
%64 = xor i64 %63, %62
store i64 %64, i64* %2
br label %65
65: ; preds = %60, %55
br label %66
66: ; preds = %65
br label %67
67: ; preds = %66
%68 = load i64, i64* %2
%69 = load i64, i64* @MS_REMOUNT
%70 = and i64 %68, %69
%71 = icmp ne i64 %70, 0
br i1 %71, label %72, label %77
72: ; preds = %67
%73 = call i32 @strcat(i8* getelementptr inbounds ([1000 x i8], [1000 x i8]* @sc_mount_opt2str.buf, i64 0, i64 0), i8* getelementptr inbounds ([9 x i8], [9 x i8]* @.str.6, i64 0, i64 0))
%74 = load i64, i64* @MS_REMOUNT
%75 = load i64, i64* %2
%76 = xor i64 %75, %74
store i64 %76, i64* %2
br label %77
77: ; preds = %72, %67
br label %78
78: ; preds = %77
br label %79
79: ; preds = %78
%80 = load i64, i64* %2
%81 = load i64, i64* @MS_MANDLOCK
%82 = and i64 %80, %81
%83 = icmp ne i64 %82, 0
br i1 %83, label %84, label %89
84: ; preds = %79
%85 = call i32 @strcat(i8* getelementptr inbounds ([1000 x i8], [1000 x i8]* @sc_mount_opt2str.buf, i64 0, i64 0), i8* getelementptr inbounds ([6 x i8], [6 x i8]* @.str.7, i64 0, i64 0))
%86 = load i64, i64* @MS_MANDLOCK
%87 = load i64, i64* %2
%88 = xor i64 %87, %86
store i64 %88, i64* %2
br label %89
89: ; preds = %84, %79
br label %90
90: ; preds = %89
br label %91
91: ; preds = %90
%92 = load i64, i64* %2
%93 = load i64, i64* @MS_DIRSYNC
%94 = and i64 %92, %93
%95 = icmp ne i64 %94, 0
br i1 %95, label %96, label %101
96: ; preds = %91
%97 = call i32 @strcat(i8* getelementptr inbounds ([1000 x i8], [1000 x i8]* @sc_mount_opt2str.buf, i64 0, i64 0), i8* getelementptr inbounds ([9 x i8], [9 x i8]* @.str.8, i64 0, i64 0))
%98 = load i64, i64* @MS_DIRSYNC
%99 = load i64, i64* %2
%100 = xor i64 %99, %98
store i64 %100, i64* %2
br label %101
101: ; preds = %96, %91
br label %102
102: ; preds = %101
br label %103
103: ; preds = %102
%104 = load i64, i64* %2
%105 = load i64, i64* @MS_NOATIME
%106 = and i64 %104, %105
%107 = icmp ne i64 %106, 0
br i1 %107, label %108, label %113
108: ; preds = %103
%109 = call i32 @strcat(i8* getelementptr inbounds ([1000 x i8], [1000 x i8]* @sc_mount_opt2str.buf, i64 0, i64 0), i8* getelementptr inbounds ([9 x i8], [9 x i8]* @.str.9, i64 0, i64 0))
%110 = load i64, i64* @MS_NOATIME
%111 = load i64, i64* %2
%112 = xor i64 %111, %110
store i64 %112, i64* %2
br label %113
113: ; preds = %108, %103
br label %114
114: ; preds = %113
br label %115
115: ; preds = %114
%116 = load i64, i64* %2
%117 = load i64, i64* @MS_NODIRATIME
%118 = and i64 %116, %117
%119 = icmp ne i64 %118, 0
br i1 %119, label %120, label %125
120: ; preds = %115
%121 = call i32 @strcat(i8* getelementptr inbounds ([1000 x i8], [1000 x i8]* @sc_mount_opt2str.buf, i64 0, i64 0), i8* getelementptr inbounds ([12 x i8], [12 x i8]* @.str.10, i64 0, i64 0))
%122 = load i64, i64* @MS_NODIRATIME
%123 = load i64, i64* %2
%124 = xor i64 %123, %122
store i64 %124, i64* %2
br label %125
125: ; preds = %120, %115
br label %126
126: ; preds = %125
%127 = load i64, i64* %2
%128 = load i64, i64* @MS_BIND
%129 = and i64 %127, %128
%130 = icmp ne i64 %129, 0
br i1 %130, label %131, label %147
131: ; preds = %126
%132 = load i64, i64* %2
%133 = load i64, i64* @MS_REC
%134 = and i64 %132, %133
%135 = icmp ne i64 %134, 0
br i1 %135, label %136, label %141
136: ; preds = %131
%137 = call i32 @strcat(i8* getelementptr inbounds ([1000 x i8], [1000 x i8]* @sc_mount_opt2str.buf, i64 0, i64 0), i8* getelementptr inbounds ([7 x i8], [7 x i8]* @.str.11, i64 0, i64 0))
%138 = load i64, i64* @MS_REC
%139 = load i64, i64* %3
%140 = or i64 %139, %138
store i64 %140, i64* %3
br label %143
141: ; preds = %131
%142 = call i32 @strcat(i8* getelementptr inbounds ([1000 x i8], [1000 x i8]* @sc_mount_opt2str.buf, i64 0, i64 0), i8* getelementptr inbounds ([6 x i8], [6 x i8]* @.str.12, i64 0, i64 0))
br label %143
143: ; preds = %141, %136
%144 = load i64, i64* @MS_BIND
%145 = load i64, i64* %2
%146 = xor i64 %145, %144
store i64 %146, i64* %2
br label %147
147: ; preds = %143, %126
br label %148
148: ; preds = %147
%149 = load i64, i64* %2
%150 = load i64, i64* @MS_MOVE
%151 = and i64 %149, %150
%152 = icmp ne i64 %151, 0
br i1 %152, label %153, label %158
153: ; preds = %148
%154 = call i32 @strcat(i8* getelementptr inbounds ([1000 x i8], [1000 x i8]* @sc_mount_opt2str.buf, i64 0, i64 0), i8* getelementptr inbounds ([6 x i8], [6 x i8]* @.str.13, i64 0, i64 0))
%155 = load i64, i64* @MS_MOVE
%156 = load i64, i64* %2
%157 = xor i64 %156, %155
store i64 %157, i64* %2
br label %158
158: ; preds = %153, %148
br label %159
159: ; preds = %158
br label %160
160: ; preds = %159
%161 = load i64, i64* %2
%162 = load i64, i64* @MS_SILENT
%163 = and i64 %161, %162
%164 = icmp ne i64 %163, 0
br i1 %164, label %165, label %170
165: ; preds = %160
%166 = call i32 @strcat(i8* getelementptr inbounds ([1000 x i8], [1000 x i8]* @sc_mount_opt2str.buf, i64 0, i64 0), i8* getelementptr inbounds ([8 x i8], [8 x i8]* @.str.14, i64 0, i64 0))
%167 = load i64, i64* @MS_SILENT
%168 = load i64, i64* %2
%169 = xor i64 %168, %167
store i64 %169, i64* %2
br label %170
170: ; preds = %165, %160
br label %171
171: ; preds = %170
br label %172
172: ; preds = %171
%173 = load i64, i64* %2
%174 = load i64, i64* @MS_POSIXACL
%175 = and i64 %173, %174
%176 = icmp ne i64 %175, 0
br i1 %176, label %177, label %182
177: ; preds = %172
%178 = call i32 @strcat(i8* getelementptr inbounds ([1000 x i8], [1000 x i8]* @sc_mount_opt2str.buf, i64 0, i64 0), i8* getelementptr inbounds ([5 x i8], [5 x i8]* @.str.15, i64 0, i64 0))
%179 = load i64, i64* @MS_POSIXACL
%180 = load i64, i64* %2
%181 = xor i64 %180, %179
store i64 %181, i64* %2
br label %182
182: ; preds = %177, %172
br label %183
183: ; preds = %182
br label %184
184: ; preds = %183
%185 = load i64, i64* %2
%186 = load i64, i64* @MS_UNBINDABLE
%187 = and i64 %185, %186
%188 = icmp ne i64 %187, 0
br i1 %188, label %189, label %194
189: ; preds = %184
%190 = call i32 @strcat(i8* getelementptr inbounds ([1000 x i8], [1000 x i8]* @sc_mount_opt2str.buf, i64 0, i64 0), i8* getelementptr inbounds ([12 x i8], [12 x i8]* @.str.16, i64 0, i64 0))
%191 = load i64, i64* @MS_UNBINDABLE
%192 = load i64, i64* %2
%193 = xor i64 %192, %191
store i64 %193, i64* %2
br label %194
194: ; preds = %189, %184
br label %195
195: ; preds = %194
%196 = load i64, i64* %2
%197 = load i64, i64* @MS_PRIVATE
%198 = and i64 %196, %197
%199 = icmp ne i64 %198, 0
br i1 %199, label %200, label %216
200: ; preds = %195
%201 = load i64, i64* %2
%202 = load i64, i64* @MS_REC
%203 = and i64 %201, %202
%204 = icmp ne i64 %203, 0
br i1 %204, label %205, label %210
205: ; preds = %200
%206 = call i32 @strcat(i8* getelementptr inbounds ([1000 x i8], [1000 x i8]* @sc_mount_opt2str.buf, i64 0, i64 0), i8* getelementptr inbounds ([10 x i8], [10 x i8]* @.str.17, i64 0, i64 0))
%207 = load i64, i64* @MS_REC
%208 = load i64, i64* %3
%209 = or i64 %208, %207
store i64 %209, i64* %3
br label %212
210: ; preds = %200
%211 = call i32 @strcat(i8* getelementptr inbounds ([1000 x i8], [1000 x i8]* @sc_mount_opt2str.buf, i64 0, i64 0), i8* getelementptr inbounds ([9 x i8], [9 x i8]* @.str.18, i64 0, i64 0))
br label %212
212: ; preds = %210, %205
%213 = load i64, i64* @MS_PRIVATE
%214 = load i64, i64* %2
%215 = xor i64 %214, %213
store i64 %215, i64* %2
br label %216
216: ; preds = %212, %195
%217 = load i64, i64* %2
%218 = load i64, i64* @MS_SLAVE
%219 = and i64 %217, %218
%220 = icmp ne i64 %219, 0
br i1 %220, label %221, label %237
221: ; preds = %216
%222 = load i64, i64* %2
%223 = load i64, i64* @MS_REC
%224 = and i64 %222, %223
%225 = icmp ne i64 %224, 0
br i1 %225, label %226, label %231
226: ; preds = %221
%227 = call i32 @strcat(i8* getelementptr inbounds ([1000 x i8], [1000 x i8]* @sc_mount_opt2str.buf, i64 0, i64 0), i8* getelementptr inbounds ([8 x i8], [8 x i8]* @.str.19, i64 0, i64 0))
%228 = load i64, i64* @MS_REC
%229 = load i64, i64* %3
%230 = or i64 %229, %228
store i64 %230, i64* %3
br label %233
231: ; preds = %221
%232 = call i32 @strcat(i8* getelementptr inbounds ([1000 x i8], [1000 x i8]* @sc_mount_opt2str.buf, i64 0, i64 0), i8* getelementptr inbounds ([7 x i8], [7 x i8]* @.str.20, i64 0, i64 0))
br label %233
233: ; preds = %231, %226
%234 = load i64, i64* @MS_SLAVE
%235 = load i64, i64* %2
%236 = xor i64 %235, %234
store i64 %236, i64* %2
br label %237
237: ; preds = %233, %216
%238 = load i64, i64* %2
%239 = load i64, i64* @MS_SHARED
%240 = and i64 %238, %239
%241 = icmp ne i64 %240, 0
br i1 %241, label %242, label %258
242: ; preds = %237
%243 = load i64, i64* %2
%244 = load i64, i64* @MS_REC
%245 = and i64 %243, %244
%246 = icmp ne i64 %245, 0
br i1 %246, label %247, label %252
247: ; preds = %242
%248 = call i32 @strcat(i8* getelementptr inbounds ([1000 x i8], [1000 x i8]* @sc_mount_opt2str.buf, i64 0, i64 0), i8* getelementptr inbounds ([9 x i8], [9 x i8]* @.str.21, i64 0, i64 0))
%249 = load i64, i64* @MS_REC
%250 = load i64, i64* %3
%251 = or i64 %250, %249
store i64 %251, i64* %3
br label %254
252: ; preds = %242
%253 = call i32 @strcat(i8* getelementptr inbounds ([1000 x i8], [1000 x i8]* @sc_mount_opt2str.buf, i64 0, i64 0), i8* getelementptr inbounds ([8 x i8], [8 x i8]* @.str.22, i64 0, i64 0))
br label %254
254: ; preds = %252, %247
%255 = load i64, i64* @MS_SHARED
%256 = load i64, i64* %2
%257 = xor i64 %256, %255
store i64 %257, i64* %2
br label %258
258: ; preds = %254, %237
%259 = load i64, i64* %3
%260 = load i64, i64* %2
%261 = xor i64 %260, %259
store i64 %261, i64* %2
br label %262
262: ; preds = %258
%263 = load i64, i64* %2
%264 = load i64, i64* @MS_RELATIME
%265 = and i64 %263, %264
%266 = icmp ne i64 %265, 0
br i1 %266, label %267, label %272
267: ; preds = %262
%268 = call i32 @strcat(i8* getelementptr inbounds ([1000 x i8], [1000 x i8]* @sc_mount_opt2str.buf, i64 0, i64 0), i8* getelementptr inbounds ([10 x i8], [10 x i8]* @.str.23, i64 0, i64 0))
%269 = load i64, i64* @MS_RELATIME
%270 = load i64, i64* %2
%271 = xor i64 %270, %269
store i64 %271, i64* %2
br label %272
272: ; preds = %267, %262
br label %273
273: ; preds = %272
br label %274
274: ; preds = %273
%275 = load i64, i64* %2
%276 = load i64, i64* @MS_KERNMOUNT
%277 = and i64 %275, %276
%278 = icmp ne i64 %277, 0
br i1 %278, label %279, label %284
279: ; preds = %274
%280 = call i32 @strcat(i8* getelementptr inbounds ([1000 x i8], [1000 x i8]* @sc_mount_opt2str.buf, i64 0, i64 0), i8* getelementptr inbounds ([11 x i8], [11 x i8]* @.str.24, i64 0, i64 0))
%281 = load i64, i64* @MS_KERNMOUNT
%282 = load i64, i64* %2
%283 = xor i64 %282, %281
store i64 %283, i64* %2
br label %284
284: ; preds = %279, %274
br label %285
285: ; preds = %284
br label %286
286: ; preds = %285
%287 = load i64, i64* %2
%288 = load i64, i64* @MS_I_VERSION
%289 = and i64 %287, %288
%290 = icmp ne i64 %289, 0
br i1 %290, label %291, label %296
291: ; preds = %286
%292 = call i32 @strcat(i8* getelementptr inbounds ([1000 x i8], [1000 x i8]* @sc_mount_opt2str.buf, i64 0, i64 0), i8* getelementptr inbounds ([10 x i8], [10 x i8]* @.str.25, i64 0, i64 0))
%293 = load i64, i64* @MS_I_VERSION
%294 = load i64, i64* %2
%295 = xor i64 %294, %293
store i64 %295, i64* %2
br label %296
296: ; preds = %291, %286
br label %297
297: ; preds = %296
br label %298
298: ; preds = %297
%299 = load i64, i64* %2
%300 = load i64, i64* @MS_STRICTATIME
%301 = and i64 %299, %300
%302 = icmp ne i64 %301, 0
br i1 %302, label %303, label %308
303: ; preds = %298
%304 = call i32 @strcat(i8* getelementptr inbounds ([1000 x i8], [1000 x i8]* @sc_mount_opt2str.buf, i64 0, i64 0), i8* getelementptr inbounds ([13 x i8], [13 x i8]* @.str.26, i64 0, i64 0))
%305 = load i64, i64* @MS_STRICTATIME
%306 = load i64, i64* %2
%307 = xor i64 %306, %305
store i64 %307, i64* %2
br label %308
308: ; preds = %303, %298
br label %309
309: ; preds = %308
br label %310
310: ; preds = %309
%311 = load i64, i64* %2
%312 = and i64 %311, 33554432
%313 = icmp ne i64 %312, 0
br i1 %313, label %314, label %318
314: ; preds = %310
%315 = call i32 @strcat(i8* getelementptr inbounds ([1000 x i8], [1000 x i8]* @sc_mount_opt2str.buf, i64 0, i64 0), i8* getelementptr inbounds ([10 x i8], [10 x i8]* @.str.27, i64 0, i64 0))
%316 = load i64, i64* %2
%317 = xor i64 %316, 33554432
store i64 %317, i64* %2
br label %318
318: ; preds = %314, %310
br label %319
319: ; preds = %318
br label %320
320: ; preds = %319
%321 = load i64, i64* %2
%322 = and i64 %321, 268435456
%323 = icmp ne i64 %322, 0
br i1 %323, label %324, label %328
324: ; preds = %320
%325 = call i32 @strcat(i8* getelementptr inbounds ([1000 x i8], [1000 x i8]* @sc_mount_opt2str.buf, i64 0, i64 0), i8* getelementptr inbounds ([7 x i8], [7 x i8]* @.str.28, i64 0, i64 0))
%326 = load i64, i64* %2
%327 = xor i64 %326, 268435456
store i64 %327, i64* %2
br label %328
328: ; preds = %324, %320
br label %329
329: ; preds = %328
br label %330
330: ; preds = %329
%331 = load i64, i64* %2
%332 = and i64 %331, 536870912
%333 = icmp ne i64 %332, 0
br i1 %333, label %334, label %338
334: ; preds = %330
%335 = call i32 @strcat(i8* getelementptr inbounds ([1000 x i8], [1000 x i8]* @sc_mount_opt2str.buf, i64 0, i64 0), i8* getelementptr inbounds ([6 x i8], [6 x i8]* @.str.29, i64 0, i64 0))
%336 = load i64, i64* %2
%337 = xor i64 %336, 536870912
store i64 %337, i64* %2
br label %338
338: ; preds = %334, %330
br label %339
339: ; preds = %338
br label %340
340: ; preds = %339
%341 = load i64, i64* %2
%342 = load i64, i64* @MS_ACTIVE
%343 = and i64 %341, %342
%344 = icmp ne i64 %343, 0
br i1 %344, label %345, label %350
345: ; preds = %340
%346 = call i32 @strcat(i8* getelementptr inbounds ([1000 x i8], [1000 x i8]* @sc_mount_opt2str.buf, i64 0, i64 0), i8* getelementptr inbounds ([8 x i8], [8 x i8]* @.str.30, i64 0, i64 0))
%347 = load i64, i64* @MS_ACTIVE
%348 = load i64, i64* %2
%349 = xor i64 %348, %347
store i64 %349, i64* %2
br label %350
350: ; preds = %345, %340
br label %351
351: ; preds = %350
br label %352
352: ; preds = %351
%353 = load i64, i64* %2
%354 = load i64, i64* @MS_NOUSER
%355 = and i64 %353, %354
%356 = icmp ne i64 %355, 0
br i1 %356, label %357, label %362
357: ; preds = %352
%358 = call i32 @strcat(i8* getelementptr inbounds ([1000 x i8], [1000 x i8]* @sc_mount_opt2str.buf, i64 0, i64 0), i8* getelementptr inbounds ([8 x i8], [8 x i8]* @.str.31, i64 0, i64 0))
%359 = load i64, i64* @MS_NOUSER
%360 = load i64, i64* %2
%361 = xor i64 %360, %359
store i64 %361, i64* %2
br label %362
362: ; preds = %357, %352
br label %363
363: ; preds = %362
%364 = load i64, i64* %2
%365 = icmp ne i64 %364, 0
br i1 %365, label %366, label %372
366: ; preds = %363
%367 = getelementptr inbounds [128 x i8], [128 x i8]* %4, i64 0, i64 0
%368 = load i64, i64* %2
%369 = call i32 @sprintf(i8* %367, i8* getelementptr inbounds ([5 x i8], [5 x i8]* @.str.32, i64 0, i64 0), i64 %368)
%370 = getelementptr inbounds [128 x i8], [128 x i8]* %4, i64 0, i64 0
%371 = call i32 @strcat(i8* getelementptr inbounds ([1000 x i8], [1000 x i8]* @sc_mount_opt2str.buf, i64 0, i64 0), i8* %370)
br label %372
372: ; preds = %366, %363
%373 = call i64 @strlen(i8* getelementptr inbounds ([1000 x i8], [1000 x i8]* @sc_mount_opt2str.buf, i64 0, i64 0))
store i64 %373, i64* %5
%374 = load i64, i64* %5
%375 = icmp ugt i64 %374, 0
br i1 %375, label %376, label %387
376: ; preds = %372
%377 = load i64, i64* %5
%378 = sub i64 %377, 1
%379 = getelementptr inbounds [1000 x i8], [1000 x i8]* @sc_mount_opt2str.buf, i64 0, i64 %378
%380 = load i8, i8* %379
%381 = sext i8 %380 to i32
%382 = icmp eq i32 %381, 44
br i1 %382, label %383, label %387
383: ; preds = %376
%384 = load i64, i64* %5
%385 = sub i64 %384, 1
%386 = getelementptr inbounds [1000 x i8], [1000 x i8]* @sc_mount_opt2str.buf, i64 0, i64 %385
store i8 0, i8* %386
br label %387
387: ; preds = %383, %376, %372
ret i8* getelementptr inbounds ([1000 x i8], [1000 x i8]* @sc_mount_opt2str.buf, i64 0, i64 0)
}

LLVM IR (-O2):
@sc_mount_opt2str.buf = internal global [1000 x i8] zeroinitializer
@.str = [1 x i8] zeroinitializer
@MS_RDONLY = global i64 0
@.str.1 = [4 x i8] c"ro,\00"
@MS_NOSUID = global i64 0
@.str.2 = [8 x i8] c"nosuid,\00"
@MS_NODEV = global i64 0
@.str.3 = [7 x i8] c"nodev,\00"
@MS_NOEXEC = global i64 0
@.str.4 = [8 x i8] c"noexec,\00"
@MS_SYNCHRONOUS = global i64 0
@.str.5 = [6 x i8] c"sync,\00"
@MS_REMOUNT = global i64 0
@.str.6 = [9 x i8] c"remount,\00"
@MS_MANDLOCK = global i64 0
@.str.7 = [6 x i8] c"mand,\00"
@MS_DIRSYNC = global i64 0
@.str.8 = [9 x i8] c"dirsync,\00"
@MS_NOATIME = global i64 0
@.str.9 = [9 x i8] c"noatime,\00"
@MS_NODIRATIME = global i64 0
@.str.10 = [12 x i8] c"nodiratime,\00"
@MS_BIND = global i64 0
@MS_REC = global i64 0
@.str.11 = [7 x i8] c"rbind,\00"
@.str.12 = [6 x i8] c"bind,\00"
@MS_MOVE = global i64 0
@.str.13 = [6 x i8] c"move,\00"
@MS_SILENT = global i64 0
@.str.14 = [8 x i8] c"silent,\00"
@MS_POSIXACL = global i64 0
@.str.15 = [5 x i8] c"acl,\00"
@MS_UNBINDABLE = global i64 0
@.str.16 = [12 x i8] c"unbindable,\00"
@MS_PRIVATE = global i64 0
@.str.17 = [10 x i8] c"rprivate,\00"
@.str.18 = [9 x i8] c"private,\00"
@MS_SLAVE = global i64 0
@.str.19 = [8 x i8] c"rslave,\00"
@.str.20 = [7 x i8] c"slave,\00"
@MS_SHARED = global i64 0
@.str.21 = [9 x i8] c"rshared,\00"
@.str.22 = [8 x i8] c"shared,\00"
@MS_RELATIME = global i64 0
@.str.23 = [10 x i8] c"relatime,\00"
@MS_KERNMOUNT = global i64 0
@.str.24 = [11 x i8] c"kernmount,\00"
@MS_I_VERSION = global i64 0
@.str.25 = [10 x i8] c"iversion,\00"
@MS_STRICTATIME = global i64 0
@.str.26 = [13 x i8] c"strictatime,\00"
@.str.27 = [10 x i8] c"lazytime,\00"
@.str.28 = [7 x i8] c"nosec,\00"
@.str.29 = [6 x i8] c"born,\00"
@MS_ACTIVE = global i64 0
@.str.30 = [8 x i8] c"active,\00"
@MS_NOUSER = global i64 0
@.str.31 = [8 x i8] c"nouser,\00"
@.str.32 = [5 x i8] c"%#lx\00"
define i8* @sc_mount_opt2str(i64 %0) {
%2 = alloca [128 x i8]
%3 = tail call i32 @strcpy(i8* getelementptr inbounds ([1000 x i8], [1000 x i8]* @sc_mount_opt2str.buf, i64 0, i64 0), i8* getelementptr inbounds ([1 x i8], [1 x i8]* @.str, i64 0, i64 0))
%4 = load i64, i64* @MS_RDONLY
%5 = and i64 %4, %0
%6 = icmp eq i64 %5, 0
br i1 %6, label %11, label %7
7: ; preds = %1
%8 = tail call i32 @strcat(i8* getelementptr inbounds ([1000 x i8], [1000 x i8]* @sc_mount_opt2str.buf, i64 0, i64 0), i8* getelementptr inbounds ([4 x i8], [4 x i8]* @.str.1, i64 0, i64 0))
%9 = load i64, i64* @MS_RDONLY
%10 = xor i64 %9, %0
br label %11
11: ; preds = %1, %7
%12 = phi i64 [ %10, %7 ], [ %0, %1 ]
%13 = load i64, i64* @MS_NOSUID
%14 = and i64 %13, %12
%15 = icmp eq i64 %14, 0
br i1 %15, label %20, label %16
16: ; preds = %11
%17 = tail call i32 @strcat(i8* getelementptr inbounds ([1000 x i8], [1000 x i8]* @sc_mount_opt2str.buf, i64 0, i64 0), i8* getelementptr inbounds ([8 x i8], [8 x i8]* @.str.2, i64 0, i64 0))
%18 = load i64, i64* @MS_NOSUID
%19 = xor i64 %18, %12
br label %20
20: ; preds = %11, %16
%21 = phi i64 [ %19, %16 ], [ %12, %11 ]
%22 = load i64, i64* @MS_NODEV
%23 = and i64 %22, %21
%24 = icmp eq i64 %23, 0
br i1 %24, label %29, label %25
25: ; preds = %20
%26 = tail call i32 @strcat(i8* getelementptr inbounds ([1000 x i8], [1000 x i8]* @sc_mount_opt2str.buf, i64 0, i64 0), i8* getelementptr inbounds ([7 x i8], [7 x i8]* @.str.3, i64 0, i64 0))
%27 = load i64, i64* @MS_NODEV
%28 = xor i64 %27, %21
br label %29
29: ; preds = %20, %25
%30 = phi i64 [ %28, %25 ], [ %21, %20 ]
%31 = load i64, i64* @MS_NOEXEC
%32 = and i64 %31, %30
%33 = icmp eq i64 %32, 0
br i1 %33, label %38, label %34
34: ; preds = %29
%35 = tail call i32 @strcat(i8* getelementptr inbounds ([1000 x i8], [1000 x i8]* @sc_mount_opt2str.buf, i64 0, i64 0), i8* getelementptr inbounds ([8 x i8], [8 x i8]* @.str.4, i64 0, i64 0))
%36 = load i64, i64* @MS_NOEXEC
%37 = xor i64 %36, %30
br label %38
38: ; preds = %29, %34
%39 = phi i64 [ %37, %34 ], [ %30, %29 ]
%40 = load i64, i64* @MS_SYNCHRONOUS
%41 = and i64 %40, %39
%42 = icmp eq i64 %41, 0
br i1 %42, label %47, label %43
43: ; preds = %38
%44 = tail call i32 @strcat(i8* getelementptr inbounds ([1000 x i8], [1000 x i8]* @sc_mount_opt2str.buf, i64 0, i64 0), i8* getelementptr inbounds ([6 x i8], [6 x i8]* @.str.5, i64 0, i64 0))
%45 = load i64, i64* @MS_SYNCHRONOUS
%46 = xor i64 %45, %39
br label %47
47: ; preds = %38, %43
%48 = phi i64 [ %46, %43 ], [ %39, %38 ]
%49 = load i64, i64* @MS_REMOUNT
%50 = and i64 %49, %48
%51 = icmp eq i64 %50, 0
br i1 %51, label %56, label %52
52: ; preds = %47
%53 = tail call i32 @strcat(i8* getelementptr inbounds ([1000 x i8], [1000 x i8]* @sc_mount_opt2str.buf, i64 0, i64 0), i8* getelementptr inbounds ([9 x i8], [9 x i8]* @.str.6, i64 0, i64 0))
%54 = load i64, i64* @MS_REMOUNT
%55 = xor i64 %54, %48
br label %56
56: ; preds = %47, %52
%57 = phi i64 [ %55, %52 ], [ %48, %47 ]
%58 = load i64, i64* @MS_MANDLOCK
%59 = and i64 %58, %57
%60 = icmp eq i64 %59, 0
br i1 %60, label %65, label %61
61: ; preds = %56
%62 = tail call i32 @strcat(i8* getelementptr inbounds ([1000 x i8], [1000 x i8]* @sc_mount_opt2str.buf, i64 0, i64 0), i8* getelementptr inbounds ([6 x i8], [6 x i8]* @.str.7, i64 0, i64 0))
%63 = load i64, i64* @MS_MANDLOCK
%64 = xor i64 %63, %57
br label %65
65: ; preds = %56, %61
%66 = phi i64 [ %64, %61 ], [ %57, %56 ]
%67 = load i64, i64* @MS_DIRSYNC
%68 = and i64 %67, %66
%69 = icmp eq i64 %68, 0
br i1 %69, label %74, label %70
70: ; preds = %65
%71 = tail call i32 @strcat(i8* getelementptr inbounds ([1000 x i8], [1000 x i8]* @sc_mount_opt2str.buf, i64 0, i64 0), i8* getelementptr inbounds ([9 x i8], [9 x i8]* @.str.8, i64 0, i64 0))
%72 = load i64, i64* @MS_DIRSYNC
%73 = xor i64 %72, %66
br label %74
74: ; preds = %65, %70
%75 = phi i64 [ %73, %70 ], [ %66, %65 ]
%76 = load i64, i64* @MS_NOATIME
%77 = and i64 %76, %75
%78 = icmp eq i64 %77, 0
br i1 %78, label %83, label %79
79: ; preds = %74
%80 = tail call i32 @strcat(i8* getelementptr inbounds ([1000 x i8], [1000 x i8]* @sc_mount_opt2str.buf, i64 0, i64 0), i8* getelementptr inbounds ([9 x i8], [9 x i8]* @.str.9, i64 0, i64 0))
%81 = load i64, i64* @MS_NOATIME
%82 = xor i64 %81, %75
br label %83
83: ; preds = %74, %79
%84 = phi i64 [ %82, %79 ], [ %75, %74 ]
%85 = load i64, i64* @MS_NODIRATIME
%86 = and i64 %85, %84
%87 = icmp eq i64 %86, 0
br i1 %87, label %92, label %88
88: ; preds = %83
%89 = tail call i32 @strcat(i8* getelementptr inbounds ([1000 x i8], [1000 x i8]* @sc_mount_opt2str.buf, i64 0, i64 0), i8* getelementptr inbounds ([12 x i8], [12 x i8]* @.str.10, i64 0, i64 0))
%90 = load i64, i64* @MS_NODIRATIME
%91 = xor i64 %90, %84
br label %92
92: ; preds = %88, %83
%93 = phi i64 [ %91, %88 ], [ %84, %83 ]
%94 = load i64, i64* @MS_BIND
%95 = and i64 %94, %93
%96 = icmp eq i64 %95, 0
br i1 %96, label %110, label %97
97: ; preds = %92
%98 = load i64, i64* @MS_REC
%99 = and i64 %98, %93
%100 = icmp eq i64 %99, 0
br i1 %100, label %104, label %101
101: ; preds = %97
%102 = tail call i32 @strcat(i8* getelementptr inbounds ([1000 x i8], [1000 x i8]* @sc_mount_opt2str.buf, i64 0, i64 0), i8* getelementptr inbounds ([7 x i8], [7 x i8]* @.str.11, i64 0, i64 0))
%103 = load i64, i64* @MS_REC
br label %106
104: ; preds = %97
%105 = tail call i32 @strcat(i8* getelementptr inbounds ([1000 x i8], [1000 x i8]* @sc_mount_opt2str.buf, i64 0, i64 0), i8* getelementptr inbounds ([6 x i8], [6 x i8]* @.str.12, i64 0, i64 0))
br label %106
106: ; preds = %104, %101
%107 = phi i64 [ %103, %101 ], [ 0, %104 ]
%108 = load i64, i64* @MS_BIND
%109 = xor i64 %108, %93
br label %110
110: ; preds = %92, %106
%111 = phi i64 [ %107, %106 ], [ 0, %92 ]
%112 = phi i64 [ %109, %106 ], [ %93, %92 ]
%113 = load i64, i64* @MS_MOVE
%114 = and i64 %113, %112
%115 = icmp eq i64 %114, 0
br i1 %115, label %120, label %116
116: ; preds = %110
%117 = tail call i32 @strcat(i8* getelementptr inbounds ([1000 x i8], [1000 x i8]* @sc_mount_opt2str.buf, i64 0, i64 0), i8* getelementptr inbounds ([6 x i8], [6 x i8]* @.str.13, i64 0, i64 0))
%118 = load i64, i64* @MS_MOVE
%119 = xor i64 %118, %112
br label %120
120: ; preds = %110, %116
%121 = phi i64 [ %119, %116 ], [ %112, %110 ]
%122 = load i64, i64* @MS_SILENT
%123 = and i64 %122, %121
%124 = icmp eq i64 %123, 0
br i1 %124, label %129, label %125
125: ; preds = %120
%126 = tail call i32 @strcat(i8* getelementptr inbounds ([1000 x i8], [1000 x i8]* @sc_mount_opt2str.buf, i64 0, i64 0), i8* getelementptr inbounds ([8 x i8], [8 x i8]* @.str.14, i64 0, i64 0))
%127 = load i64, i64* @MS_SILENT
%128 = xor i64 %127, %121
br label %129
129: ; preds = %120, %125
%130 = phi i64 [ %128, %125 ], [ %121, %120 ]
%131 = load i64, i64* @MS_POSIXACL
%132 = and i64 %131, %130
%133 = icmp eq i64 %132, 0
br i1 %133, label %138, label %134
134: ; preds = %129
%135 = tail call i32 @strcat(i8* getelementptr inbounds ([1000 x i8], [1000 x i8]* @sc_mount_opt2str.buf, i64 0, i64 0), i8* getelementptr inbounds ([5 x i8], [5 x i8]* @.str.15, i64 0, i64 0))
%136 = load i64, i64* @MS_POSIXACL
%137 = xor i64 %136, %130
br label %138
138: ; preds = %129, %134
%139 = phi i64 [ %137, %134 ], [ %130, %129 ]
%140 = load i64, i64* @MS_UNBINDABLE
%141 = and i64 %140, %139
%142 = icmp eq i64 %141, 0
br i1 %142, label %147, label %143
143: ; preds = %138
%144 = tail call i32 @strcat(i8* getelementptr inbounds ([1000 x i8], [1000 x i8]* @sc_mount_opt2str.buf, i64 0, i64 0), i8* getelementptr inbounds ([12 x i8], [12 x i8]* @.str.16, i64 0, i64 0))
%145 = load i64, i64* @MS_UNBINDABLE
%146 = xor i64 %145, %139
br label %147
147: ; preds = %143, %138
%148 = phi i64 [ %146, %143 ], [ %139, %138 ]
%149 = load i64, i64* @MS_PRIVATE
%150 = and i64 %149, %148
%151 = icmp eq i64 %150, 0
br i1 %151, label %166, label %152
152: ; preds = %147
%153 = load i64, i64* @MS_REC
%154 = and i64 %153, %148
%155 = icmp eq i64 %154, 0
br i1 %155, label %160, label %156
156: ; preds = %152
%157 = tail call i32 @strcat(i8* getelementptr inbounds ([1000 x i8], [1000 x i8]* @sc_mount_opt2str.buf, i64 0, i64 0), i8* getelementptr inbounds ([10 x i8], [10 x i8]* @.str.17, i64 0, i64 0))
%158 = load i64, i64* @MS_REC
%159 = or i64 %158, %111
br label %162
160: ; preds = %152
%161 = tail call i32 @strcat(i8* getelementptr inbounds ([1000 x i8], [1000 x i8]* @sc_mount_opt2str.buf, i64 0, i64 0), i8* getelementptr inbounds ([9 x i8], [9 x i8]* @.str.18, i64 0, i64 0))
br label %162
162: ; preds = %160, %156
%163 = phi i64 [ %159, %156 ], [ %111, %160 ]
%164 = load i64, i64* @MS_PRIVATE
%165 = xor i64 %164, %148
br label %166
166: ; preds = %162, %147
%167 = phi i64 [ %163, %162 ], [ %111, %147 ]
%168 = phi i64 [ %165, %162 ], [ %148, %147 ]
%169 = load i64, i64* @MS_SLAVE
%170 = and i64 %169, %168
%171 = icmp eq i64 %170, 0
br i1 %171, label %186, label %172
172: ; preds = %166
%173 = load i64, i64* @MS_REC
%174 = and i64 %173, %168
%175 = icmp eq i64 %174, 0
br i1 %175, label %180, label %176
176: ; preds = %172
%177 = tail call i32 @strcat(i8* getelementptr inbounds ([1000 x i8], [1000 x i8]* @sc_mount_opt2str.buf, i64 0, i64 0), i8* getelementptr inbounds ([8 x i8], [8 x i8]* @.str.19, i64 0, i64 0))
%178 = load i64, i64* @MS_REC
%179 = or i64 %178, %167
br label %182
180: ; preds = %172
%181 = tail call i32 @strcat(i8* getelementptr inbounds ([1000 x i8], [1000 x i8]* @sc_mount_opt2str.buf, i64 0, i64 0), i8* getelementptr inbounds ([7 x i8], [7 x i8]* @.str.20, i64 0, i64 0))
br label %182
182: ; preds = %180, %176
%183 = phi i64 [ %179, %176 ], [ %167, %180 ]
%184 = load i64, i64* @MS_SLAVE
%185 = xor i64 %184, %168
br label %186
186: ; preds = %182, %166
%187 = phi i64 [ %183, %182 ], [ %167, %166 ]
%188 = phi i64 [ %185, %182 ], [ %168, %166 ]
%189 = load i64, i64* @MS_SHARED
%190 = and i64 %189, %188
%191 = icmp eq i64 %190, 0
br i1 %191, label %206, label %192
192: ; preds = %186
%193 = load i64, i64* @MS_REC
%194 = and i64 %193, %188
%195 = icmp eq i64 %194, 0
br i1 %195, label %200, label %196
196: ; preds = %192
%197 = tail call i32 @strcat(i8* getelementptr inbounds ([1000 x i8], [1000 x i8]* @sc_mount_opt2str.buf, i64 0, i64 0), i8* getelementptr inbounds ([9 x i8], [9 x i8]* @.str.21, i64 0, i64 0))
%198 = load i64, i64* @MS_REC
%199 = or i64 %198, %187
br label %202
200: ; preds = %192
%201 = tail call i32 @strcat(i8* getelementptr inbounds ([1000 x i8], [1000 x i8]* @sc_mount_opt2str.buf, i64 0, i64 0), i8* getelementptr inbounds ([8 x i8], [8 x i8]* @.str.22, i64 0, i64 0))
br label %202
202: ; preds = %200, %196
%203 = phi i64 [ %199, %196 ], [ %187, %200 ]
%204 = load i64, i64* @MS_SHARED
%205 = xor i64 %204, %188
br label %206
206: ; preds = %202, %186
%207 = phi i64 [ %203, %202 ], [ %187, %186 ]
%208 = phi i64 [ %205, %202 ], [ %188, %186 ]
%209 = xor i64 %208, %207
%210 = load i64, i64* @MS_RELATIME
%211 = and i64 %209, %210
%212 = icmp eq i64 %211, 0
br i1 %212, label %217, label %213
213: ; preds = %206
%214 = tail call i32 @strcat(i8* getelementptr inbounds ([1000 x i8], [1000 x i8]* @sc_mount_opt2str.buf, i64 0, i64 0), i8* getelementptr inbounds ([10 x i8], [10 x i8]* @.str.23, i64 0, i64 0))
%215 = load i64, i64* @MS_RELATIME
%216 = xor i64 %215, %209
br label %217
217: ; preds = %206, %213
%218 = phi i64 [ %216, %213 ], [ %209, %206 ]
%219 = load i64, i64* @MS_KERNMOUNT
%220 = and i64 %219, %218
%221 = icmp eq i64 %220, 0
br i1 %221, label %226, label %222
222: ; preds = %217
%223 = tail call i32 @strcat(i8* getelementptr inbounds ([1000 x i8], [1000 x i8]* @sc_mount_opt2str.buf, i64 0, i64 0), i8* getelementptr inbounds ([11 x i8], [11 x i8]* @.str.24, i64 0, i64 0))
%224 = load i64, i64* @MS_KERNMOUNT
%225 = xor i64 %224, %218
br label %226
226: ; preds = %217, %222
%227 = phi i64 [ %225, %222 ], [ %218, %217 ]
%228 = load i64, i64* @MS_I_VERSION
%229 = and i64 %228, %227
%230 = icmp eq i64 %229, 0
br i1 %230, label %235, label %231
231: ; preds = %226
%232 = tail call i32 @strcat(i8* getelementptr inbounds ([1000 x i8], [1000 x i8]* @sc_mount_opt2str.buf, i64 0, i64 0), i8* getelementptr inbounds ([10 x i8], [10 x i8]* @.str.25, i64 0, i64 0))
%233 = load i64, i64* @MS_I_VERSION
%234 = xor i64 %233, %227
br label %235
235: ; preds = %226, %231
%236 = phi i64 [ %234, %231 ], [ %227, %226 ]
%237 = load i64, i64* @MS_STRICTATIME
%238 = and i64 %237, %236
%239 = icmp eq i64 %238, 0
br i1 %239, label %244, label %240
240: ; preds = %235
%241 = tail call i32 @strcat(i8* getelementptr inbounds ([1000 x i8], [1000 x i8]* @sc_mount_opt2str.buf, i64 0, i64 0), i8* getelementptr inbounds ([13 x i8], [13 x i8]* @.str.26, i64 0, i64 0))
%242 = load i64, i64* @MS_STRICTATIME
%243 = xor i64 %242, %236
br label %244
244: ; preds = %235, %240
%245 = phi i64 [ %243, %240 ], [ %236, %235 ]
%246 = and i64 %245, 33554432
%247 = icmp eq i64 %246, 0
br i1 %247, label %251, label %248
248: ; preds = %244
%249 = tail call i32 @strcat(i8* getelementptr inbounds ([1000 x i8], [1000 x i8]* @sc_mount_opt2str.buf, i64 0, i64 0), i8* getelementptr inbounds ([10 x i8], [10 x i8]* @.str.27, i64 0, i64 0))
%250 = xor i64 %245, 33554432
br label %251
251: ; preds = %244, %248
%252 = phi i64 [ %250, %248 ], [ %245, %244 ]
%253 = and i64 %252, 268435456
%254 = icmp eq i64 %253, 0
br i1 %254, label %258, label %255
255: ; preds = %251
%256 = tail call i32 @strcat(i8* getelementptr inbounds ([1000 x i8], [1000 x i8]* @sc_mount_opt2str.buf, i64 0, i64 0), i8* getelementptr inbounds ([7 x i8], [7 x i8]* @.str.28, i64 0, i64 0))
%257 = xor i64 %252, 268435456
br label %258
258: ; preds = %251, %255
%259 = phi i64 [ %257, %255 ], [ %252, %251 ]
%260 = and i64 %259, 536870912
%261 = icmp eq i64 %260, 0
br i1 %261, label %265, label %262
262: ; preds = %258
%263 = tail call i32 @strcat(i8* getelementptr inbounds ([1000 x i8], [1000 x i8]* @sc_mount_opt2str.buf, i64 0, i64 0), i8* getelementptr inbounds ([6 x i8], [6 x i8]* @.str.29, i64 0, i64 0))
%264 = xor i64 %259, 536870912
br label %265
265: ; preds = %258, %262
%266 = phi i64 [ %264, %262 ], [ %259, %258 ]
%267 = load i64, i64* @MS_ACTIVE
%268 = and i64 %267, %266
%269 = icmp eq i64 %268, 0
br i1 %269, label %274, label %270
270: ; preds = %265
%271 = tail call i32 @strcat(i8* getelementptr inbounds ([1000 x i8], [1000 x i8]* @sc_mount_opt2str.buf, i64 0, i64 0), i8* getelementptr inbounds ([8 x i8], [8 x i8]* @.str.30, i64 0, i64 0))
%272 = load i64, i64* @MS_ACTIVE
%273 = xor i64 %272, %266
br label %274
274: ; preds = %265, %270
%275 = phi i64 [ %273, %270 ], [ %266, %265 ]
%276 = load i64, i64* @MS_NOUSER
%277 = and i64 %276, %275
%278 = icmp eq i64 %277, 0
br i1 %278, label %283, label %279
279: ; preds = %274
%280 = tail call i32 @strcat(i8* getelementptr inbounds ([1000 x i8], [1000 x i8]* @sc_mount_opt2str.buf, i64 0, i64 0), i8* getelementptr inbounds ([8 x i8], [8 x i8]* @.str.31, i64 0, i64 0))
%281 = load i64, i64* @MS_NOUSER
%282 = xor i64 %281, %275
br label %283
283: ; preds = %279, %274
%284 = phi i64 [ %282, %279 ], [ %275, %274 ]
%285 = icmp eq i64 %284, 0
br i1 %285, label %290, label %286
286: ; preds = %283
%287 = getelementptr inbounds [128 x i8], [128 x i8]* %2, i64 0, i64 0
%288 = call i32 @sprintf(i8* %287, i8* dereferenceable(1) getelementptr inbounds ([5 x i8], [5 x i8]* @.str.32, i64 0, i64 0), i64 %284)
%289 = call i32 @strcat(i8* getelementptr inbounds ([1000 x i8], [1000 x i8]* @sc_mount_opt2str.buf, i64 0, i64 0), i8* %287)
br label %290
290: ; preds = %286, %283
%291 = call i64 @strlen(i8* dereferenceable(1) getelementptr inbounds ([1000 x i8], [1000 x i8]* @sc_mount_opt2str.buf, i64 0, i64 0))
%292 = icmp eq i64 %291, 0
br i1 %292, label %299, label %293
293: ; preds = %290
%294 = add i64 %291, -1
%295 = getelementptr inbounds [1000 x i8], [1000 x i8]* @sc_mount_opt2str.buf, i64 0, i64 %294
%296 = load i8, i8* %295
%297 = icmp eq i8 %296, 44
br i1 %297, label %298, label %299
298: ; preds = %293
store i8 0, i8* %295
br label %299
299: ; preds = %298, %293, %290
ret i8* getelementptr inbounds ([1000 x i8], [1000 x i8]* @sc_mount_opt2str.buf, i64 0, i64 0)
}