#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 */
typedef int /*<<< orphan*/ time_t;
struct tm {
  int tm_sec;
  int tm_min;
  int tm_hour;
  int tm_mday;
  int tm_mon;
  int tm_wday;
  int tm_year;
  int tm_yday;
  scalar_t__ tm_isdst;
};

/* Variables and functions */
int /*<<< orphan*/ O_RDONLY;
int /*<<< orphan*/ O_RDWR;
int /*<<< orphan*/ SEEK_SET;
char *asctime(struct tm *);
int atoi(char *);
int /*<<< orphan*/ close(int);
int /*<<< orphan*/ fprintf(int /*<<< orphan*/, char *, char *, ...);
int getopt(int, char **, char *);
struct tm *gmtime(int /*<<< orphan*/ *);
scalar_t__ lseek(int, int, int /*<<< orphan*/);
int /*<<< orphan*/ mktime(struct tm *);
int open(char *, int /*<<< orphan*/);
char *optarg;
int optind;
int /*<<< orphan*/ printf(char *, ...);
int read(int, unsigned char *, int);
int /*<<< orphan*/ stderr;
int /*<<< orphan*/ stime(int /*<<< orphan*/ *);
int /*<<< orphan*/ time(int /*<<< orphan*/ *);
int /*<<< orphan*/ usage(char *);
int write(int, unsigned char *, int);
int main(int argc, char *argv[]) {
  unsigned char wval, c;
  int fd, ac, opt;
  int bpos = -1;
  int writep = 0;
  int setclkp = 0;
  while ((opt = getopt(argc, argv, "b:cws")) > 0) {
    switch (opt) {
    case 'b':
      bpos = atoi(optarg);
      break;
    case 'c':
      return (0);
    case 'w':
      writep = 1;
      break;
    case 's':
      setclkp = 1;
      break;
    default:
      usage(argv[0]);
      return 1;
    }
  }
  ac = argc - optind;
  if (ac > 1) {
    usage(argv[0]);
    return (1);
  } else if (ac == 1) {
    wval = 0xFF & atoi(argv[optind]);
  }
  if (writep && bpos >= 0 && ac != 1) {
    fprintf(stderr,
            "%s: writing to byte %d but "
            "no value specified\n",
            argv[1], bpos);
    return (1);
  }
  if (!writep && ac == 1) {
    usage(argv[0]);
    return (1);
  }
  if (setclkp && (writep || bpos >= 0)) {
    fprintf(stderr,
            "%s: setting system clock with write or "
            "byte position specified\n",
            argv[0]);
    return (1);
  }
  fd = open("/dev/rtc", (writep ? O_RDWR : O_RDONLY));
  if (fd < 0) {
    fprintf(stderr, "%s: cannot open %s for %s\n", argv[0], "/dev/rtc",
            (writep ? "write" : "read"));
    return (1);
  }
  if (bpos >= 0) {
    if (lseek(fd, (bpos + 32), SEEK_SET) < 0) {
      fprintf(stderr, "%s: lseek failed\n", argv[0]);
      return (1);
    }
    if (writep) {
      if (write(fd, &wval, 1) <= 0) {
        fprintf(stderr, "%s: write failed\n", argv[0]);
        return (1);
      }
    } else {
      if (read(fd, &c, 1) <= 0) {
        fprintf(stderr, "%s: read failed\n", argv[0]);
        return (1);
      }
      printf("byte[%d] = %d 0x%02x\n", bpos, c, c);
    }
  } else {
    unsigned char tbuf[7];
    if (writep) {
      struct tm *tm;
      time_t now;
      now = time(NULL);
      tm = gmtime(&now);
      tbuf[0] = (((tm->tm_sec / 10) & 0x7) << 4) | (tm->tm_sec % 10);
      tbuf[1] = (((tm->tm_min / 10) & 0x7) << 4) | (tm->tm_min % 10);
      tbuf[2] = (((tm->tm_hour / 10) & 0x3) << 4) | (tm->tm_hour % 10);
      tbuf[3] = (((tm->tm_mday / 10) & 0x3) << 4) | (tm->tm_mday % 10);
      tbuf[4] =
          ((((tm->tm_mon + 1) / 10) & 0x1) << 4) | ((tm->tm_mon + 1) % 10);
      tbuf[5] = (1 + tm->tm_wday) & 0x7;
      tbuf[6] = (((tm->tm_year / 10) % 10) << 4) | (tm->tm_year % 10);
      if (7 != write(fd, tbuf, 7)) {
        fprintf(stderr, "%s: write failed\n", argv[0]);
        return 1;
      }
    } else {
      struct tm tm;
      int moffset[] = {0, 31, 59, 90, 120, 151, 181, 212, 243, 273, 304, 334};
      if (7 != read(fd, tbuf, 7)) {
        fprintf(stderr, "%s: read failed\n", argv[0]);
        return 1;
      }
      tm.tm_sec = (tbuf[0] & 0xf) + 10 * ((tbuf[0] >> 4) & 0x7);
      tm.tm_min = (tbuf[1] & 0xf) + 10 * ((tbuf[1] >> 4) & 0x7);
      tm.tm_hour = (tbuf[2] & 0xf) + 10 * ((tbuf[2] >> 4) & 0x3);
      tm.tm_mday = (tbuf[3] & 0xf) + 10 * ((tbuf[3] >> 4) & 0x3);
      tm.tm_mon = (tbuf[4] & 0xf) + 10 * ((tbuf[4] >> 4) & 0x1) - 1;
      tm.tm_year = 100 + (tbuf[6] & 0xf) + 10 * ((tbuf[6] >> 4) & 0xf);
      tm.tm_wday = (tbuf[5] & 0x7) - 1;
      tm.tm_yday = moffset[tm.tm_mon] + tm.tm_mday - 1;
      tm.tm_isdst = 0;
      if (setclkp) {
        time_t t;
        t = mktime(&tm);
        stime(&t);
      } else
        printf("%s", asctime(&tm));
    }
  }
  close(fd);
  return (0);
}


x86 assembly (clang, -O0):
<main>:
push   %rbp
mov    %rsp,%rbp
sub    $0xd0,%rsp
movl   $0x0,-0x4(%rbp)
mov    %edi,-0x8(%rbp)
mov    %rsi,-0x10(%rbp)
movl   $0xffffffff,-0x24(%rbp)
movl   $0x0,-0x28(%rbp)
movl   $0x0,-0x2c(%rbp)
mov    -0x8(%rbp),%edi
mov    -0x10(%rbp),%rsi
lea    0xe54(%rip),%rdx
call   1110 <getopt@plt>
mov    %eax,-0x20(%rbp)
cmp    $0x0,%eax
jle    12d4 <main+0xd4>
mov    -0x20(%rbp),%eax
add    $0xffffff9e,%eax
mov    %eax,%ecx
mov    %rcx,-0xb0(%rbp)
sub    $0x15,%eax
ja     12b7 <main+0xb7>
mov    -0xb0(%rbp),%rax
lea    0xd8d(%rip),%rcx
movslq (%rcx,%rax,4),%rax
add    %rcx,%rax
jmp    *%rax
mov    0x2d75(%rip),%rax
mov    (%rax),%rdi
call   1120 <atoi@plt>
mov    %eax,-0x24(%rbp)
jmp    12cf <main+0xcf>
movl   $0x0,-0x4(%rbp)
jmp    18df <main+0x6df>
movl   $0x1,-0x28(%rbp)
jmp    12cf <main+0xcf>
movl   $0x1,-0x2c(%rbp)
jmp    12cf <main+0xcf>
mov    -0x10(%rbp),%rax
mov    (%rax),%rdi
call   10e0 <usage@plt>
movl   $0x1,-0x4(%rbp)
jmp    18df <main+0x6df>
jmp    122e <main+0x2e>
mov    -0x8(%rbp),%eax
mov    0x2cf2(%rip),%rcx
sub    (%rcx),%eax
mov    %eax,-0x1c(%rbp)
cmpl   $0x1,-0x1c(%rbp)
jle    1305 <main+0x105>
mov    -0x10(%rbp),%rax
mov    (%rax),%rdi
call   10e0 <usage@plt>
movl   $0x1,-0x4(%rbp)
jmp    18df <main+0x6df>
cmpl   $0x1,-0x1c(%rbp)
jne    132e <main+0x12e>
mov    -0x10(%rbp),%rax
mov    0x2cb6(%rip),%rcx
movslq (%rcx),%rcx
mov    (%rax,%rcx,8),%rdi
call   1120 <atoi@plt>
and    $0xff,%eax
mov    %al,-0x11(%rbp)
jmp    1333 <main+0x133>
cmpl   $0x0,-0x28(%rbp)
je     137f <main+0x17f>
cmpl   $0x0,-0x24(%rbp)
jl     137f <main+0x17f>
cmpl   $0x1,-0x1c(%rbp)
je     137f <main+0x17f>
mov    0x2c68(%rip),%rax
mov    (%rax),%edi
mov    -0x10(%rbp),%rax
mov    0x8(%rax),%rdx
mov    -0x24(%rbp),%ecx
lea    0xd2a(%rip),%rsi
mov    $0x0,%al
call   10a0 <fprintf@plt>
movl   $0x1,-0x4(%rbp)
jmp    18df <main+0x6df>
cmpl   $0x0,-0x28(%rbp)
jne    13ab <main+0x1ab>
cmpl   $0x1,-0x1c(%rbp)
jne    13ab <main+0x1ab>
mov    -0x10(%rbp),%rax
mov    (%rax),%rdi
call   10e0 <usage@plt>
movl   $0x1,-0x4(%rbp)
jmp    18df <main+0x6df>
cmpl   $0x0,-0x2c(%rbp)
je     13f3 <main+0x1f3>
cmpl   $0x0,-0x28(%rbp)
jne    13c9 <main+0x1c9>
cmpl   $0x0,-0x24(%rbp)
jl     13f3 <main+0x1f3>
mov    0x2bf0(%rip),%rax
mov    (%rax),%edi
mov    -0x10(%rbp),%rax
mov    (%rax),%rdx
lea    0xce5(%rip),%rsi
mov    $0x0,%al
call   10a0 <fprintf@plt>
movl   $0x1,-0x4(%rbp)
jmp    18df <main+0x6df>
cmpl   $0x0,-0x28(%rbp)
je     1411 <main+0x211>
mov    0x2bdc(%rip),%rax
mov    (%rax),%eax
mov    %eax,-0xb4(%rbp)
jmp    1420 <main+0x220>
mov    0x2bc0(%rip),%rax
mov    (%rax),%eax
mov    %eax,-0xb4(%rbp)
mov    -0xb4(%rbp),%esi
lea    0xcd8(%rip),%rdi
call   10f0 <open@plt>
mov    %eax,-0x18(%rbp)
cmpl   $0x0,-0x18(%rbp)
jge    1488 <main+0x288>
mov    0x2b7a(%rip),%rax
mov    (%rax),%edi
mov    -0x10(%rbp),%rax
mov    (%rax),%rdx
mov    -0x28(%rbp),%ecx
lea    0xcd6(%rip),%r8
lea    0xcc9(%rip),%rax
cmp    $0x0,%ecx
cmovne %rax,%r8
lea    0xca0(%rip),%rsi
lea    0xc90(%rip),%rcx
mov    $0x0,%al
call   10a0 <fprintf@plt>
movl   $0x1,-0x4(%rbp)
jmp    18df <main+0x6df>
cmpl   $0x0,-0x24(%rbp)
jl     1592 <main+0x392>
mov    -0x18(%rbp),%edi
mov    -0x24(%rbp),%esi
add    $0x20,%esi
mov    0x2b16(%rip),%rax
mov    (%rax),%edx
call   1060 <lseek@plt>
cmp    $0x0,%rax
jge    14dd <main+0x2dd>
mov    0x2b06(%rip),%rax
mov    (%rax),%edi
mov    -0x10(%rbp),%rax
mov    (%rax),%rdx
lea    0xc6a(%rip),%rsi
mov    $0x0,%al
call   10a0 <fprintf@plt>
movl   $0x1,-0x4(%rbp)
jmp    18df <main+0x6df>
cmpl   $0x0,-0x28(%rbp)
je     1530 <main+0x330>
mov    -0x18(%rbp),%edi
lea    -0x11(%rbp),%rsi
mov    $0x1,%edx
call   1030 <write@plt>
cmp    $0x0,%eax
jg     152b <main+0x32b>
mov    0x2ab8(%rip),%rax
mov    (%rax),%edi
mov    -0x10(%rbp),%rax
mov    (%rax),%rdx
lea    0xc2e(%rip),%rsi
mov    $0x0,%al
call   10a0 <fprintf@plt>
movl   $0x1,-0x4(%rbp)
jmp    18df <main+0x6df>
jmp    158d <main+0x38d>
mov    -0x18(%rbp),%edi
lea    -0x12(%rbp),%rsi
mov    $0x1,%edx
call   1090 <read@plt>
cmp    $0x0,%eax
jg     1574 <main+0x374>
mov    0x2a6f(%rip),%rax
mov    (%rax),%edi
mov    -0x10(%rbp),%rax
mov    (%rax),%rdx
lea    0xbf7(%rip),%rsi
mov    $0x0,%al
call   10a0 <fprintf@plt>
movl   $0x1,-0x4(%rbp)
jmp    18df <main+0x6df>
mov    -0x24(%rbp),%esi
movzbl -0x12(%rbp),%edx
movzbl -0x12(%rbp),%ecx
lea    0xbe3(%rip),%rdi
mov    $0x0,%al
call   1050 <printf@plt>
jmp    18d0 <main+0x6d0>
cmpl   $0x0,-0x28(%rbp)
je     175b <main+0x55b>
xor    %eax,%eax
mov    %eax,%edi
call   10c0 <time@plt>
mov    %eax,-0x44(%rbp)
lea    -0x44(%rbp),%rdi
call   1100 <gmtime@plt>
mov    %rax,-0x40(%rbp)
mov    -0x40(%rbp),%rax
mov    (%rax),%eax
mov    $0xa,%ecx
cltd
idiv   %ecx
and    $0x7,%eax
shl    $0x4,%eax
mov    %eax,-0xcc(%rbp)
mov    -0x40(%rbp),%rax
mov    (%rax),%eax
mov    $0xa,%ecx
cltd
idiv   %ecx
mov    -0xcc(%rbp),%eax
or     %edx,%eax
mov    %al,-0x33(%rbp)
mov    -0x40(%rbp),%rax
mov    0x4(%rax),%eax
mov    $0xa,%ecx
cltd
idiv   %ecx
and    $0x7,%eax
shl    $0x4,%eax
mov    %eax,-0xc8(%rbp)
mov    -0x40(%rbp),%rax
mov    0x4(%rax),%eax
mov    $0xa,%ecx
cltd
idiv   %ecx
mov    -0xc8(%rbp),%eax
or     %edx,%eax
mov    %al,-0x32(%rbp)
mov    -0x40(%rbp),%rax
mov    0x8(%rax),%eax
mov    $0xa,%ecx
cltd
idiv   %ecx
and    $0x3,%eax
shl    $0x4,%eax
mov    %eax,-0xc4(%rbp)
mov    -0x40(%rbp),%rax
mov    0x8(%rax),%eax
mov    $0xa,%ecx
cltd
idiv   %ecx
mov    -0xc4(%rbp),%eax
or     %edx,%eax
mov    %al,-0x31(%rbp)
mov    -0x40(%rbp),%rax
mov    0xc(%rax),%eax
mov    $0xa,%ecx
cltd
idiv   %ecx
and    $0x3,%eax
shl    $0x4,%eax
mov    %eax,-0xc0(%rbp)
mov    -0x40(%rbp),%rax
mov    0xc(%rax),%eax
mov    $0xa,%ecx
cltd
idiv   %ecx
mov    -0xc0(%rbp),%eax
or     %edx,%eax
mov    %al,-0x30(%rbp)
mov    -0x40(%rbp),%rax
mov    0x10(%rax),%eax
add    $0x1,%eax
mov    $0xa,%ecx
cltd
idiv   %ecx
and    $0x1,%eax
shl    $0x4,%eax
mov    %eax,-0xbc(%rbp)
mov    -0x40(%rbp),%rax
mov    0x10(%rax),%eax
add    $0x1,%eax
mov    $0xa,%ecx
cltd
idiv   %ecx
mov    -0xbc(%rbp),%eax
or     %edx,%eax
mov    %al,-0x2f(%rbp)
mov    -0x40(%rbp),%rax
mov    0x14(%rax),%eax
add    $0x1,%eax
and    $0x7,%eax
mov    %al,-0x2e(%rbp)
mov    -0x40(%rbp),%rax
mov    0x18(%rax),%eax
mov    $0xa,%ecx
cltd
idiv   %ecx
mov    $0xa,%ecx
cltd
idiv   %ecx
shl    $0x4,%edx
mov    %edx,-0xb8(%rbp)
mov    -0x40(%rbp),%rax
mov    0x18(%rax),%eax
mov    $0xa,%ecx
cltd
idiv   %ecx
mov    -0xb8(%rbp),%eax
or     %edx,%eax
mov    %al,-0x2d(%rbp)
mov    -0x18(%rbp),%edi
lea    -0x33(%rbp),%rsi
mov    $0x7,%edx
call   1030 <write@plt>
mov    %eax,%ecx
mov    $0x7,%eax
cmp    %ecx,%eax
je     1756 <main+0x556>
mov    0x288d(%rip),%rax
mov    (%rax),%edi
mov    -0x10(%rbp),%rax
mov    (%rax),%rdx
lea    0xa03(%rip),%rsi
mov    $0x0,%al
call   10a0 <fprintf@plt>
movl   $0x1,-0x4(%rbp)
jmp    18df <main+0x6df>
jmp    18cb <main+0x6cb>
lea    -0xa0(%rbp),%rdi
lea    0x8f7(%rip),%rsi
mov    $0x30,%edx
call   10b0 <memcpy@plt>
mov    -0x18(%rbp),%edi
lea    -0x33(%rbp),%rsi
mov    $0x7,%edx
call   1090 <read@plt>
mov    %eax,%ecx
mov    $0x7,%eax
cmp    %ecx,%eax
je     17bd <main+0x5bd>
mov    0x2826(%rip),%rax
mov    (%rax),%edi
mov    -0x10(%rbp),%rax
mov    (%rax),%rdx
lea    0x9ae(%rip),%rsi
mov    $0x0,%al
call   10a0 <fprintf@plt>
movl   $0x1,-0x4(%rbp)
jmp    18df <main+0x6df>
movzbl -0x33(%rbp),%eax
and    $0xf,%eax
movzbl -0x33(%rbp),%ecx
sar    $0x4,%ecx
and    $0x7,%ecx
imul   $0xa,%ecx,%ecx
add    %ecx,%eax
mov    %eax,-0x70(%rbp)
movzbl -0x32(%rbp),%eax
and    $0xf,%eax
movzbl -0x32(%rbp),%ecx
sar    $0x4,%ecx
and    $0x7,%ecx
imul   $0xa,%ecx,%ecx
add    %ecx,%eax
mov    %eax,-0x6c(%rbp)
movzbl -0x31(%rbp),%eax
and    $0xf,%eax
movzbl -0x31(%rbp),%ecx
sar    $0x4,%ecx
and    $0x3,%ecx
imul   $0xa,%ecx,%ecx
add    %ecx,%eax
mov    %eax,-0x68(%rbp)
movzbl -0x30(%rbp),%eax
and    $0xf,%eax
movzbl -0x30(%rbp),%ecx
sar    $0x4,%ecx
and    $0x3,%ecx
imul   $0xa,%ecx,%ecx
add    %ecx,%eax
mov    %eax,-0x64(%rbp)
movzbl -0x2f(%rbp),%eax
and    $0xf,%eax
movzbl -0x2f(%rbp),%ecx
sar    $0x4,%ecx
and    $0x1,%ecx
imul   $0xa,%ecx,%ecx
add    %ecx,%eax
sub    $0x1,%eax
mov    %eax,-0x60(%rbp)
movzbl -0x2d(%rbp),%eax
and    $0xf,%eax
add    $0x64,%eax
movzbl -0x2d(%rbp),%ecx
sar    $0x4,%ecx
and    $0xf,%ecx
imul   $0xa,%ecx,%ecx
add    %ecx,%eax
mov    %eax,-0x58(%rbp)
movzbl -0x2e(%rbp),%eax
and    $0x7,%eax
sub    $0x1,%eax
mov    %eax,-0x5c(%rbp)
movslq -0x60(%rbp),%rax
mov    -0xa0(%rbp,%rax,4),%eax
add    -0x64(%rbp),%eax
sub    $0x1,%eax
mov    %eax,-0x54(%rbp)
movq   $0x0,-0x50(%rbp)
cmpl   $0x0,-0x2c(%rbp)
je     18ac <main+0x6ac>
lea    -0x70(%rbp),%rdi
call   10d0 <mktime@plt>
mov    %eax,-0xa4(%rbp)
lea    -0xa4(%rbp),%rdi
call   1080 <stime@plt>
jmp    18c6 <main+0x6c6>
lea    -0x70(%rbp),%rdi
call   1040 <asctime@plt>
mov    %rax,%rsi
lea    0x8c0(%rip),%rdi
mov    $0x0,%al
call   1050 <printf@plt>
jmp    18cb <main+0x6cb>
jmp    18d0 <main+0x6d0>
mov    -0x18(%rbp),%edi
call   1070 <close@plt>
movl   $0x0,-0x4(%rbp)
mov    -0x4(%rbp),%eax
add    $0xd0,%rsp
pop    %rbp
ret

x86 assembly (clang, -O2):
<main>:
push   %rbp
push   %r15
push   %r14
push   %r13
push   %r12
push   %rbx
sub    $0x48,%rsp
mov    %edi,%ebp
lea    0xee9(%rip),%rdx
mov    %rsi,0x8(%rsp)
call   1100 <getopt@plt>
test   %eax,%eax
jle    128d <main+0x9d>
mov    $0xffffffff,%r12d
movl   $0x0,0x18(%rsp)
lea    0xe36(%rip),%r13
lea    0xebf(%rip),%r14
xor    %ebx,%ebx
jmp    126b <main+0x7b>
cs nopw 0x0(%rax,%rax,1)
nop
mov    0x2db1(%rip),%rax
mov    (%rax),%rdi
call   1110 <atoi@plt>
mov    %eax,%r12d
mov    %ebx,%r15d
mov    %ebp,%edi
mov    0x8(%rsp),%rsi
mov    %r14,%rdx
call   1100 <getopt@plt>
mov    %r15d,%ebx
test   %eax,%eax
jle    129e <main+0xae>
add    $0xffffff9e,%eax
cmp    $0x15,%eax
ja     12af <main+0xbf>
mov    $0x1,%r15d
movslq 0x0(%r13,%rax,4),%rax
add    %r13,%rax
jmp    *%rax
movl   $0x1,0x18(%rsp)
jmp    1252 <main+0x62>
xor    %r15d,%r15d
mov    $0xffffffff,%r12d
movl   $0x0,0x18(%rsp)
mov    0x2d2b(%rip),%rax
movslq (%rax),%rax
sub    %eax,%ebp
cmp    $0x2,%ebp
jl     12c6 <main+0xd6>
mov    0x8(%rsp),%rax
mov    (%rax),%rdi
call   10d0 <usage@plt>
mov    $0x1,%ebp
jmp    1762 <main+0x572>
cmp    $0x1,%ebp
jne    12f1 <main+0x101>
mov    0x8(%rsp),%rcx
mov    (%rcx,%rax,8),%rdi
call   1110 <atoi@plt>
mov    %al,0x7(%rsp)
mov    %r12,%rbx
test   %ebx,%ebx
setns  %bpl
test   %r15d,%r15d
setne  %r15b
jne    1333 <main+0x143>
jmp    12af <main+0xbf>
mov    %r12,%rbx
test   %ebx,%ebx
setns  %bpl
test   %r15d,%r15d
setne  %r15b
je     1333 <main+0x143>
test   %ebx,%ebx
js     1333 <main+0x143>
mov    0x2cb2(%rip),%rax
mov    (%rax),%edi
mov    0x8(%rsp),%rax
mov    0x8(%rax),%rdx
lea    0xdd6(%rip),%rsi
mov    %ebx,%ecx
xor    %eax,%eax
call   10a0 <fprintf@plt>
mov    $0x1,%ebp
jmp    1762 <main+0x572>
mov    0x18(%rsp),%r12d
test   %r12d,%r12d
je     1364 <main+0x174>
mov    %r15d,%eax
or     %bpl,%al
cmp    $0x1,%al
jne    1364 <main+0x174>
mov    0x2c72(%rip),%rax
mov    (%rax),%edi
mov    0x8(%rsp),%rax
mov    (%rax),%rdx
lea    0xdc6(%rip),%rsi
jmp    1713 <main+0x523>
test   %r15b,%r15b
je     1372 <main+0x182>
mov    0x2c70(%rip),%rax
jmp    1379 <main+0x189>
mov    0x2c5f(%rip),%rax
mov    (%rax),%esi
lea    0xde3(%rip),%rdi
call   10e0 <open@plt>
test   %eax,%eax
js     13f9 <main+0x209>
mov    %eax,%r14d
test   %bpl,%bpl
je     143e <main+0x24e>
lea    0x20(%rbx),%esi
mov    0x2c17(%rip),%rax
mov    (%rax),%edx
mov    %r14d,%edi
call   1060 <lseek@plt>
test   %rax,%rax
js     16ad <main+0x4bd>
test   %r15b,%r15b
je     16c7 <main+0x4d7>
lea    0x7(%rsp),%rsi
mov    $0x1,%ebp
mov    %r14d,%edi
mov    $0x1,%edx
call   1030 <write@plt>
test   %eax,%eax
jg     1758 <main+0x568>
mov    0x2bdd(%rip),%rax
mov    (%rax),%edi
mov    0x8(%rsp),%rax
mov    (%rax),%rdx
lea    0xdb2(%rip),%rsi
jmp    1739 <main+0x549>
mov    0x2bc0(%rip),%rax
mov    (%rax),%edi
mov    0x8(%rsp),%rax
mov    (%rax),%rdx
lea    0xd78(%rip),%rax
lea    0xd77(%rip),%r8
test   %r15b,%r15b
cmovne %rax,%r8
lea    0xd48(%rip),%rsi
lea    0xd38(%rip),%rcx
xor    %eax,%eax
call   10a0 <fprintf@plt>
mov    $0x1,%ebp
jmp    1762 <main+0x572>
test   %r15b,%r15b
je     15bf <main+0x3cf>
xor    %edi,%edi
call   10b0 <time@plt>
mov    %eax,0x20(%rsp)
lea    0x20(%rsp),%rdi
call   10f0 <gmtime@plt>
movdqu (%rax),%xmm0
movdqa 0xbc8(%rip),%xmm1
movdqa %xmm0,%xmm2
pmuludq %xmm1,%xmm2
pshufd $0xed,%xmm2,%xmm2
pshufd $0xf5,%xmm0,%xmm3
pmuludq %xmm1,%xmm3
pshufd $0xed,%xmm3,%xmm3
punpckldq %xmm3,%xmm2
pxor   %xmm3,%xmm3
pcmpgtd %xmm0,%xmm3
pand   %xmm1,%xmm3
psubd  %xmm3,%xmm2
movdqa %xmm2,%xmm1
psrld  $0x1f,%xmm1
psrad  $0x2,%xmm2
paddd  %xmm1,%xmm2
movdqa %xmm2,%xmm1
pslld  $0x4,%xmm1
pand   0xb86(%rip),%xmm1
movdqa 0xb5e(%rip),%xmm3
pshufd $0xf5,%xmm2,%xmm4
pmuludq %xmm3,%xmm2
pshufd $0xe8,%xmm2,%xmm2
pmuludq %xmm3,%xmm4
pshufd $0xe8,%xmm4,%xmm3
punpckldq %xmm3,%xmm2
psubd  %xmm2,%xmm0
por    %xmm1,%xmm0
pand   0xb63(%rip),%xmm0
packuswb %xmm0,%xmm0
packuswb %xmm0,%xmm0
movd   %xmm0,0x10(%rsp)
mov    0x10(%rax),%ecx
lea    0x1(%rcx),%edx
movslq %edx,%rdx
imul   $0x66666667,%rdx,%rdx
mov    %rdx,%rsi
shr    $0x3f,%rsi
sar    $0x22,%rdx
add    %esi,%edx
mov    %edx,%esi
shl    $0x4,%esi
and    $0x10,%esi
add    %edx,%edx
lea    (%rdx,%rdx,4),%edx
neg    %edx
add    %edx,%ecx
add    $0x1,%ecx
or     %esi,%ecx
mov    %cl,0x14(%rsp)
mov    0x14(%rax),%cl
add    $0x1,%cl
and    $0x7,%cl
mov    %cl,0x15(%rsp)
movslq 0x18(%rax),%rax
imul   $0x66666667,%rax,%rcx
mov    %rcx,%rdx
shr    $0x3f,%rdx
sar    $0x22,%rcx
add    %edx,%ecx
movslq %ecx,%rcx
imul   $0x66666667,%rcx,%rdx
mov    %rdx,%rsi
shr    $0x3f,%rsi
sar    $0x22,%rdx
add    %esi,%edx
add    %edx,%edx
lea    (%rdx,%rdx,4),%edx
mov    %ecx,%esi
sub    %edx,%esi
shl    $0x4,%esi
add    %ecx,%ecx
lea    (%rcx,%rcx,4),%ecx
sub    %ecx,%eax
or     %esi,%eax
mov    %al,0x16(%rsp)
lea    0x10(%rsp),%rsi
mov    %r14d,%edi
mov    $0x7,%edx
call   1030 <write@plt>
cmp    $0x7,%eax
je     1758 <main+0x568>
mov    0x2a17(%rip),%rax
mov    (%rax),%edi
mov    0x8(%rsp),%rax
mov    (%rax),%rdx
lea    0xbec(%rip),%rsi
jmp    1713 <main+0x523>
lea    0x10(%rsp),%rsi
mov    %r14d,%edi
mov    $0x7,%edx
call   1090 <read@plt>
cmp    $0x7,%eax
jne    16fb <main+0x50b>
movzbl 0x14(%rsp),%eax
mov    %eax,%esi
and    $0xf,%esi
shr    $0x4,%eax
and    $0x1,%eax
movzbl 0x16(%rsp),%edx
mov    %edx,%ecx
and    $0xf,%ecx
shr    $0x4,%edx
lea    (%rax,%rax,4),%rax
lea    (%rsi,%rax,2),%rdi
lea    (%rsi,%rax,2),%rax
add    $0xffffffffffffffff,%rax
movzbl 0x15(%rsp),%esi
and    $0x7,%esi
movd   0x10(%rsp),%xmm0
pxor   %xmm1,%xmm1
punpcklbw %xmm1,%xmm0
punpcklwd %xmm1,%xmm0
movdqa 0x9d7(%rip),%xmm1
pand   %xmm0,%xmm1
psrld  $0x4,%xmm0
pand   0x9d6(%rip),%xmm0
pmaddwd 0x9de(%rip),%xmm0
add    $0xffffffff,%esi
paddd  %xmm1,%xmm0
movdqa %xmm0,0x20(%rsp)
mov    %eax,0x30(%rsp)
lea    (%rdx,%rdx,4),%eax
lea    0x64(%rcx,%rax,2),%eax
mov    %eax,0x38(%rsp)
mov    %esi,0x34(%rsp)
lea    0xa57(%rip),%rax
mov    -0x4(%rax,%rdi,4),%eax
pshufd $0xff,%xmm0,%xmm0
movd   %xmm0,%ecx
lea    -0x1(%rcx,%rax,1),%eax
mov    %eax,0x3c(%rsp)
movq   $0x0,0x40(%rsp)
lea    0x20(%rsp),%rdi
test   %r12d,%r12d
je     1742 <main+0x552>
call   10c0 <mktime@plt>
mov    %eax,0x1c(%rsp)
lea    0x1c(%rsp),%rdi
call   1080 <stime@plt>
jmp    1758 <main+0x568>
mov    0x290c(%rip),%rax
mov    (%rax),%edi
mov    0x8(%rsp),%rax
mov    (%rax),%rdx
lea    0xacf(%rip),%rsi
jmp    1713 <main+0x523>
lea    0x20(%rsp),%rsi
mov    $0x1,%ebp
mov    %r14d,%edi
mov    $0x1,%edx
call   1090 <read@plt>
test   %eax,%eax
jle    1721 <main+0x531>
movzbl 0x20(%rsp),%ecx
lea    0xadb(%rip),%rdi
mov    %ebx,%esi
mov    %ecx,%edx
xor    %eax,%eax
call   1050 <printf@plt>
jmp    1758 <main+0x568>
mov    0x28be(%rip),%rax
mov    (%rax),%edi
mov    0x8(%rsp),%rax
mov    (%rax),%rdx
lea    0xaa5(%rip),%rsi
xor    %eax,%eax
call   10a0 <fprintf@plt>
mov    $0x1,%ebp
jmp    1762 <main+0x572>
mov    0x2898(%rip),%rax
mov    (%rax),%edi
mov    0x8(%rsp),%rax
mov    (%rax),%rdx
lea    0xa7f(%rip),%rsi
xor    %eax,%eax
call   10a0 <fprintf@plt>
jmp    1762 <main+0x572>
call   1040 <asctime@plt>
lea    0xa91(%rip),%rdi
mov    %rax,%rsi
xor    %eax,%eax
call   1050 <printf@plt>
mov    %r14d,%edi
call   1070 <close@plt>
xor    %ebp,%ebp
mov    %ebp,%eax
add    $0x48,%rsp
pop    %rbx
pop    %r12
pop    %r13
pop    %r14
pop    %r15
pop    %rbp
ret

LLVM IR (-O0):
%struct.tm = type { i32, i32, i32, i32, i32, i32, i32, i32, i64 }
@.str = [6 x i8] c"b:cws\00"
@optarg = global i8* null
@optind = global i32 0
@stderr = global i32 0
@.str.1 = [47 x i8] c"%s: writing to byte %d but no value specified\0A\00"
@.str.2 = [64 x i8] c"%s: setting system clock with write or byte position specified\0A\00"
@.str.3 = [9 x i8] c"/dev/rtc\00"
@O_RDWR = global i32 0
@O_RDONLY = global i32 0
@.str.4 = [27 x i8] c"%s: cannot open %s for %s\0A\00"
@.str.5 = [6 x i8] c"write\00"
@.str.6 = [5 x i8] c"read\00"
@SEEK_SET = global i32 0
@.str.7 = [18 x i8] c"%s: lseek failed\0A\00"
@.str.8 = [18 x i8] c"%s: write failed\0A\00"
@.str.9 = [17 x i8] c"%s: read failed\0A\00"
@.str.10 = [22 x i8] c"byte[%d] = %d 0x%02x\0A\00"
@__const.main.moffset = [12 x i32] [i32 0, i32 31, i32 59, i32 90, i32 120, i32 151, i32 181, i32 212, i32 243, i32 273, i32 304, i32 334]
@.str.11 = [3 x i8] c"%s\00"
define i32 @main(i32 %0, i8** %1) {
%3 = alloca i32
%4 = alloca i32
%5 = alloca i8**
%6 = alloca i8
%7 = alloca i8
%8 = alloca i32
%9 = alloca i32
%10 = alloca i32
%11 = alloca i32
%12 = alloca i32
%13 = alloca i32
%14 = alloca [7 x i8]
%15 = alloca %struct.tm*
%16 = alloca i32
%17 = alloca %struct.tm
%18 = alloca [12 x i32]
%19 = alloca i32
store i32 0, i32* %3
store i32 %0, i32* %4
store i8** %1, i8*** %5
store i32 -1, i32* %11
store i32 0, i32* %12
store i32 0, i32* %13
br label %20
20: ; preds = %38, %2
%21 = load i32, i32* %4
%22 = load i8**, i8*** %5
%23 = call i32 @getopt(i32 %21, i8** %22, i8* getelementptr inbounds ([6 x i8], [6 x i8]* @.str, i64 0, i64 0))
store i32 %23, i32* %10
%24 = icmp sgt i32 %23, 0
br i1 %24, label %25, label %39
25: ; preds = %20
%26 = load i32, i32* %10
switch i32 %26, label %33 [
i32 98, label %27
i32 99, label %30
i32 119, label %31
i32 115, label %32
]
27: ; preds = %25
%28 = load i8*, i8** @optarg
%29 = call i32 @atoi(i8* %28)
store i32 %29, i32* %11
br label %38
30: ; preds = %25
store i32 0, i32* %3
br label %396
31: ; preds = %25
store i32 1, i32* %12
br label %38
32: ; preds = %25
store i32 1, i32* %13
br label %38
33: ; preds = %25
%34 = load i8**, i8*** %5
%35 = getelementptr inbounds i8*, i8** %34, i64 0
%36 = load i8*, i8** %35
%37 = call i32 @usage(i8* %36)
store i32 1, i32* %3
br label %396
38: ; preds = %32, %31, %27
br label %20
39: ; preds = %20
%40 = load i32, i32* %4
%41 = load i32, i32* @optind
%42 = sub nsw i32 %40, %41
store i32 %42, i32* %9
%43 = load i32, i32* %9
%44 = icmp sgt i32 %43, 1
br i1 %44, label %45, label %50
45: ; preds = %39
%46 = load i8**, i8*** %5
%47 = getelementptr inbounds i8*, i8** %46, i64 0
%48 = load i8*, i8** %47
%49 = call i32 @usage(i8* %48)
store i32 1, i32* %3
br label %396
50: ; preds = %39
%51 = load i32, i32* %9
%52 = icmp eq i32 %51, 1
br i1 %52, label %53, label %62
53: ; preds = %50
%54 = load i8**, i8*** %5
%55 = load i32, i32* @optind
%56 = sext i32 %55 to i64
%57 = getelementptr inbounds i8*, i8** %54, i64 %56
%58 = load i8*, i8** %57
%59 = call i32 @atoi(i8* %58)
%60 = and i32 255, %59
%61 = trunc i32 %60 to i8
store i8 %61, i8* %6
br label %62
62: ; preds = %53, %50
br label %63
63: ; preds = %62
%64 = load i32, i32* %12
%65 = icmp ne i32 %64, 0
br i1 %65, label %66, label %79
66: ; preds = %63
%67 = load i32, i32* %11
%68 = icmp sge i32 %67, 0
br i1 %68, label %69, label %79
69: ; preds = %66
%70 = load i32, i32* %9
%71 = icmp ne i32 %70, 1
br i1 %71, label %72, label %79
72: ; preds = %69
%73 = load i32, i32* @stderr
%74 = load i8**, i8*** %5
%75 = getelementptr inbounds i8*, i8** %74, i64 1
%76 = load i8*, i8** %75
%77 = load i32, i32* %11
%78 = call i32 (i32, i8*, i8*, ...) @fprintf(i32 %73, i8* getelementptr inbounds ([47 x i8], [47 x i8]* @.str.1, i64 0, i64 0), i8* %76, i32 %77)
store i32 1, i32* %3
br label %396
79: ; preds = %69, %66, %63
%80 = load i32, i32* %12
%81 = icmp ne i32 %80, 0
br i1 %81, label %90, label %82
82: ; preds = %79
%83 = load i32, i32* %9
%84 = icmp eq i32 %83, 1
br i1 %84, label %85, label %90
85: ; preds = %82
%86 = load i8**, i8*** %5
%87 = getelementptr inbounds i8*, i8** %86, i64 0
%88 = load i8*, i8** %87
%89 = call i32 @usage(i8* %88)
store i32 1, i32* %3
br label %396
90: ; preds = %82, %79
%91 = load i32, i32* %13
%92 = icmp ne i32 %91, 0
br i1 %92, label %93, label %105
93: ; preds = %90
%94 = load i32, i32* %12
%95 = icmp ne i32 %94, 0
br i1 %95, label %99, label %96
96: ; preds = %93
%97 = load i32, i32* %11
%98 = icmp sge i32 %97, 0
br i1 %98, label %99, label %105
99: ; preds = %96, %93
%100 = load i32, i32* @stderr
%101 = load i8**, i8*** %5
%102 = getelementptr inbounds i8*, i8** %101, i64 0
%103 = load i8*, i8** %102
%104 = call i32 (i32, i8*, i8*, ...) @fprintf(i32 %100, i8* getelementptr inbounds ([64 x i8], [64 x i8]* @.str.2, i64 0, i64 0), i8* %103)
store i32 1, i32* %3
br label %396
105: ; preds = %96, %90
%106 = load i32, i32* %12
%107 = icmp ne i32 %106, 0
br i1 %107, label %108, label %110
108: ; preds = %105
%109 = load i32, i32* @O_RDWR
br label %112
110: ; preds = %105
%111 = load i32, i32* @O_RDONLY
br label %112
112: ; preds = %110, %108
%113 = phi i32 [ %109, %108 ], [ %111, %110 ]
%114 = call i32 @open(i8* getelementptr inbounds ([9 x i8], [9 x i8]* @.str.3, i64 0, i64 0), i32 %113)
store i32 %114, i32* %8
%115 = load i32, i32* %8
%116 = icmp slt i32 %115, 0
br i1 %116, label %117, label %127
117: ; preds = %112
%118 = load i32, i32* @stderr
%119 = load i8**, i8*** %5
%120 = getelementptr inbounds i8*, i8** %119, i64 0
%121 = load i8*, i8** %120
%122 = load i32, i32* %12
%123 = icmp ne i32 %122, 0
%124 = zext i1 %123 to i64
%125 = select i1 %123, i8* getelementptr inbounds ([6 x i8], [6 x i8]* @.str.5, i64 0, i64 0), i8* getelementptr inbounds ([5 x i8], [5 x i8]* @.str.6, i64 0, i64 0)
%126 = call i32 (i32, i8*, i8*, ...) @fprintf(i32 %118, i8* getelementptr inbounds ([27 x i8], [27 x i8]* @.str.4, i64 0, i64 0), i8* %121, i8* getelementptr inbounds ([9 x i8], [9 x i8]* @.str.3, i64 0, i64 0), i8* %125)
store i32 1, i32* %3
br label %396
127: ; preds = %112
%128 = load i32, i32* %11
%129 = icmp sge i32 %128, 0
br i1 %129, label %130, label %175
130: ; preds = %127
%131 = load i32, i32* %8
%132 = load i32, i32* %11
%133 = add nsw i32 %132, 32
%134 = load i32, i32* @SEEK_SET
%135 = call i64 @lseek(i32 %131, i32 %133, i32 %134)
%136 = icmp slt i64 %135, 0
br i1 %136, label %137, label %143
137: ; preds = %130
%138 = load i32, i32* @stderr
%139 = load i8**, i8*** %5
%140 = getelementptr inbounds i8*, i8** %139, i64 0
%141 = load i8*, i8** %140
%142 = call i32 (i32, i8*, i8*, ...) @fprintf(i32 %138, i8* getelementptr inbounds ([18 x i8], [18 x i8]* @.str.7, i64 0, i64 0), i8* %141)
store i32 1, i32* %3
br label %396
143: ; preds = %130
%144 = load i32, i32* %12
%145 = icmp ne i32 %144, 0
br i1 %145, label %146, label %157
146: ; preds = %143
%147 = load i32, i32* %8
%148 = call i32 @write(i32 %147, i8* %6, i32 1)
%149 = icmp sle i32 %148, 0
br i1 %149, label %150, label %156
150: ; preds = %146
%151 = load i32, i32* @stderr
%152 = load i8**, i8*** %5
%153 = getelementptr inbounds i8*, i8** %152, i64 0
%154 = load i8*, i8** %153
%155 = call i32 (i32, i8*, i8*, ...) @fprintf(i32 %151, i8* getelementptr inbounds ([18 x i8], [18 x i8]* @.str.8, i64 0, i64 0), i8* %154)
store i32 1, i32* %3
br label %396
156: ; preds = %146
br label %174
157: ; preds = %143
%158 = load i32, i32* %8
%159 = call i32 @read(i32 %158, i8* %7, i32 1)
%160 = icmp sle i32 %159, 0
br i1 %160, label %161, label %167
161: ; preds = %157
%162 = load i32, i32* @stderr
%163 = load i8**, i8*** %5
%164 = getelementptr inbounds i8*, i8** %163, i64 0
%165 = load i8*, i8** %164
%166 = call i32 (i32, i8*, i8*, ...) @fprintf(i32 %162, i8* getelementptr inbounds ([17 x i8], [17 x i8]* @.str.9, i64 0, i64 0), i8* %165)
store i32 1, i32* %3
br label %396
167: ; preds = %157
%168 = load i32, i32* %11
%169 = load i8, i8* %7
%170 = zext i8 %169 to i32
%171 = load i8, i8* %7
%172 = zext i8 %171 to i32
%173 = call i32 (i8*, ...) @printf(i8* getelementptr inbounds ([22 x i8], [22 x i8]* @.str.10, i64 0, i64 0), i32 %168, i32 %170, i32 %172)
br label %174
174: ; preds = %167, %156
br label %393
175: ; preds = %127
%176 = load i32, i32* %12
%177 = icmp ne i32 %176, 0
br i1 %177, label %178, label %279
178: ; preds = %175
%179 = call i32 @time(i32* null)
store i32 %179, i32* %16
%180 = call %struct.tm* @gmtime(i32* %16)
store %struct.tm* %180, %struct.tm** %15
%181 = load %struct.tm*, %struct.tm** %15
%182 = getelementptr inbounds %struct.tm, %struct.tm* %181, i32 0, i32 0
%183 = load i32, i32* %182
%184 = sdiv i32 %183, 10
%185 = and i32 %184, 7
%186 = shl i32 %185, 4
%187 = load %struct.tm*, %struct.tm** %15
%188 = getelementptr inbounds %struct.tm, %struct.tm* %187, i32 0, i32 0
%189 = load i32, i32* %188
%190 = srem i32 %189, 10
%191 = or i32 %186, %190
%192 = trunc i32 %191 to i8
%193 = getelementptr inbounds [7 x i8], [7 x i8]* %14, i64 0, i64 0
store i8 %192, i8* %193
%194 = load %struct.tm*, %struct.tm** %15
%195 = getelementptr inbounds %struct.tm, %struct.tm* %194, i32 0, i32 1
%196 = load i32, i32* %195
%197 = sdiv i32 %196, 10
%198 = and i32 %197, 7
%199 = shl i32 %198, 4
%200 = load %struct.tm*, %struct.tm** %15
%201 = getelementptr inbounds %struct.tm, %struct.tm* %200, i32 0, i32 1
%202 = load i32, i32* %201
%203 = srem i32 %202, 10
%204 = or i32 %199, %203
%205 = trunc i32 %204 to i8
%206 = getelementptr inbounds [7 x i8], [7 x i8]* %14, i64 0, i64 1
store i8 %205, i8* %206
%207 = load %struct.tm*, %struct.tm** %15
%208 = getelementptr inbounds %struct.tm, %struct.tm* %207, i32 0, i32 2
%209 = load i32, i32* %208
%210 = sdiv i32 %209, 10
%211 = and i32 %210, 3
%212 = shl i32 %211, 4
%213 = load %struct.tm*, %struct.tm** %15
%214 = getelementptr inbounds %struct.tm, %struct.tm* %213, i32 0, i32 2
%215 = load i32, i32* %214
%216 = srem i32 %215, 10
%217 = or i32 %212, %216
%218 = trunc i32 %217 to i8
%219 = getelementptr inbounds [7 x i8], [7 x i8]* %14, i64 0, i64 2
store i8 %218, i8* %219
%220 = load %struct.tm*, %struct.tm** %15
%221 = getelementptr inbounds %struct.tm, %struct.tm* %220, i32 0, i32 3
%222 = load i32, i32* %221
%223 = sdiv i32 %222, 10
%224 = and i32 %223, 3
%225 = shl i32 %224, 4
%226 = load %struct.tm*, %struct.tm** %15
%227 = getelementptr inbounds %struct.tm, %struct.tm* %226, i32 0, i32 3
%228 = load i32, i32* %227
%229 = srem i32 %228, 10
%230 = or i32 %225, %229
%231 = trunc i32 %230 to i8
%232 = getelementptr inbounds [7 x i8], [7 x i8]* %14, i64 0, i64 3
store i8 %231, i8* %232
%233 = load %struct.tm*, %struct.tm** %15
%234 = getelementptr inbounds %struct.tm, %struct.tm* %233, i32 0, i32 4
%235 = load i32, i32* %234
%236 = add nsw i32 %235, 1
%237 = sdiv i32 %236, 10
%238 = and i32 %237, 1
%239 = shl i32 %238, 4
%240 = load %struct.tm*, %struct.tm** %15
%241 = getelementptr inbounds %struct.tm, %struct.tm* %240, i32 0, i32 4
%242 = load i32, i32* %241
%243 = add nsw i32 %242, 1
%244 = srem i32 %243, 10
%245 = or i32 %239, %244
%246 = trunc i32 %245 to i8
%247 = getelementptr inbounds [7 x i8], [7 x i8]* %14, i64 0, i64 4
store i8 %246, i8* %247
%248 = load %struct.tm*, %struct.tm** %15
%249 = getelementptr inbounds %struct.tm, %struct.tm* %248, i32 0, i32 5
%250 = load i32, i32* %249
%251 = add nsw i32 1, %250
%252 = and i32 %251, 7
%253 = trunc i32 %252 to i8
%254 = getelementptr inbounds [7 x i8], [7 x i8]* %14, i64 0, i64 5
store i8 %253, i8* %254
%255 = load %struct.tm*, %struct.tm** %15
%256 = getelementptr inbounds %struct.tm, %struct.tm* %255, i32 0, i32 6
%257 = load i32, i32* %256
%258 = sdiv i32 %257, 10
%259 = srem i32 %258, 10
%260 = shl i32 %259, 4
%261 = load %struct.tm*, %struct.tm** %15
%262 = getelementptr inbounds %struct.tm, %struct.tm* %261, i32 0, i32 6
%263 = load i32, i32* %262
%264 = srem i32 %263, 10
%265 = or i32 %260, %264
%266 = trunc i32 %265 to i8
%267 = getelementptr inbounds [7 x i8], [7 x i8]* %14, i64 0, i64 6
store i8 %266, i8* %267
%268 = load i32, i32* %8
%269 = getelementptr inbounds [7 x i8], [7 x i8]* %14, i64 0, i64 0
%270 = call i32 @write(i32 %268, i8* %269, i32 7)
%271 = icmp ne i32 7, %270
br i1 %271, label %272, label %278
272: ; preds = %178
%273 = load i32, i32* @stderr
%274 = load i8**, i8*** %5
%275 = getelementptr inbounds i8*, i8** %274, i64 0
%276 = load i8*, i8** %275
%277 = call i32 (i32, i8*, i8*, ...) @fprintf(i32 %273, i8* getelementptr inbounds ([18 x i8], [18 x i8]* @.str.8, i64 0, i64 0), i8* %276)
store i32 1, i32* %3
br label %396
278: ; preds = %178
br label %392
279: ; preds = %175
%280 = bitcast [12 x i32]* %18 to i8*
%281 = load i32, i32* %8
%282 = getelementptr inbounds [7 x i8], [7 x i8]* %14, i64 0, i64 0
%283 = call i32 @read(i32 %281, i8* %282, i32 7)
%284 = icmp ne i32 7, %283
br i1 %284, label %285, label %291
285: ; preds = %279
%286 = load i32, i32* @stderr
%287 = load i8**, i8*** %5
%288 = getelementptr inbounds i8*, i8** %287, i64 0
%289 = load i8*, i8** %288
%290 = call i32 (i32, i8*, i8*, ...) @fprintf(i32 %286, i8* getelementptr inbounds ([17 x i8], [17 x i8]* @.str.9, i64 0, i64 0), i8* %289)
store i32 1, i32* %3
br label %396
291: ; preds = %279
%292 = getelementptr inbounds [7 x i8], [7 x i8]* %14, i64 0, i64 0
%293 = load i8, i8* %292
%294 = zext i8 %293 to i32
%295 = and i32 %294, 15
%296 = getelementptr inbounds [7 x i8], [7 x i8]* %14, i64 0, i64 0
%297 = load i8, i8* %296
%298 = zext i8 %297 to i32
%299 = ashr i32 %298, 4
%300 = and i32 %299, 7
%301 = mul nsw i32 10, %300
%302 = add nsw i32 %295, %301
%303 = getelementptr inbounds %struct.tm, %struct.tm* %17, i32 0, i32 0
store i32 %302, i32* %303
%304 = getelementptr inbounds [7 x i8], [7 x i8]* %14, i64 0, i64 1
%305 = load i8, i8* %304
%306 = zext i8 %305 to i32
%307 = and i32 %306, 15
%308 = getelementptr inbounds [7 x i8], [7 x i8]* %14, i64 0, i64 1
%309 = load i8, i8* %308
%310 = zext i8 %309 to i32
%311 = ashr i32 %310, 4
%312 = and i32 %311, 7
%313 = mul nsw i32 10, %312
%314 = add nsw i32 %307, %313
%315 = getelementptr inbounds %struct.tm, %struct.tm* %17, i32 0, i32 1
store i32 %314, i32* %315
%316 = getelementptr inbounds [7 x i8], [7 x i8]* %14, i64 0, i64 2
%317 = load i8, i8* %316
%318 = zext i8 %317 to i32
%319 = and i32 %318, 15
%320 = getelementptr inbounds [7 x i8], [7 x i8]* %14, i64 0, i64 2
%321 = load i8, i8* %320
%322 = zext i8 %321 to i32
%323 = ashr i32 %322, 4
%324 = and i32 %323, 3
%325 = mul nsw i32 10, %324
%326 = add nsw i32 %319, %325
%327 = getelementptr inbounds %struct.tm, %struct.tm* %17, i32 0, i32 2
store i32 %326, i32* %327
%328 = getelementptr inbounds [7 x i8], [7 x i8]* %14, i64 0, i64 3
%329 = load i8, i8* %328
%330 = zext i8 %329 to i32
%331 = and i32 %330, 15
%332 = getelementptr inbounds [7 x i8], [7 x i8]* %14, i64 0, i64 3
%333 = load i8, i8* %332
%334 = zext i8 %333 to i32
%335 = ashr i32 %334, 4
%336 = and i32 %335, 3
%337 = mul nsw i32 10, %336
%338 = add nsw i32 %331, %337
%339 = getelementptr inbounds %struct.tm, %struct.tm* %17, i32 0, i32 3
store i32 %338, i32* %339
%340 = getelementptr inbounds [7 x i8], [7 x i8]* %14, i64 0, i64 4
%341 = load i8, i8* %340
%342 = zext i8 %341 to i32
%343 = and i32 %342, 15
%344 = getelementptr inbounds [7 x i8], [7 x i8]* %14, i64 0, i64 4
%345 = load i8, i8* %344
%346 = zext i8 %345 to i32
%347 = ashr i32 %346, 4
%348 = and i32 %347, 1
%349 = mul nsw i32 10, %348
%350 = add nsw i32 %343, %349
%351 = sub nsw i32 %350, 1
%352 = getelementptr inbounds %struct.tm, %struct.tm* %17, i32 0, i32 4
store i32 %351, i32* %352
%353 = getelementptr inbounds [7 x i8], [7 x i8]* %14, i64 0, i64 6
%354 = load i8, i8* %353
%355 = zext i8 %354 to i32
%356 = and i32 %355, 15
%357 = add nsw i32 100, %356
%358 = getelementptr inbounds [7 x i8], [7 x i8]* %14, i64 0, i64 6
%359 = load i8, i8* %358
%360 = zext i8 %359 to i32
%361 = ashr i32 %360, 4
%362 = and i32 %361, 15
%363 = mul nsw i32 10, %362
%364 = add nsw i32 %357, %363
%365 = getelementptr inbounds %struct.tm, %struct.tm* %17, i32 0, i32 6
store i32 %364, i32* %365
%366 = getelementptr inbounds [7 x i8], [7 x i8]* %14, i64 0, i64 5
%367 = load i8, i8* %366
%368 = zext i8 %367 to i32
%369 = and i32 %368, 7
%370 = sub nsw i32 %369, 1
%371 = getelementptr inbounds %struct.tm, %struct.tm* %17, i32 0, i32 5
store i32 %370, i32* %371
%372 = getelementptr inbounds %struct.tm, %struct.tm* %17, i32 0, i32 4
%373 = load i32, i32* %372
%374 = sext i32 %373 to i64
%375 = getelementptr inbounds [12 x i32], [12 x i32]* %18, i64 0, i64 %374
%376 = load i32, i32* %375
%377 = getelementptr inbounds %struct.tm, %struct.tm* %17, i32 0, i32 3
%378 = load i32, i32* %377
%379 = add nsw i32 %376, %378
%380 = sub nsw i32 %379, 1
%381 = getelementptr inbounds %struct.tm, %struct.tm* %17, i32 0, i32 7
store i32 %380, i32* %381
%382 = getelementptr inbounds %struct.tm, %struct.tm* %17, i32 0, i32 8
store i64 0, i64* %382
%383 = load i32, i32* %13
%384 = icmp ne i32 %383, 0
br i1 %384, label %385, label %388
385: ; preds = %291
%386 = call i32 @mktime(%struct.tm* %17)
store i32 %386, i32* %19
%387 = call i32 @stime(i32* %19)
br label %391
388: ; preds = %291
%389 = call i8* @asctime(%struct.tm* %17)
%390 = call i32 (i8*, ...) @printf(i8* getelementptr inbounds ([3 x i8], [3 x i8]* @.str.11, i64 0, i64 0), i8* %389)
br label %391
391: ; preds = %388, %385
br label %392
392: ; preds = %391, %278
br label %393
393: ; preds = %392, %174
%394 = load i32, i32* %8
%395 = call i32 @close(i32 %394)
store i32 0, i32* %3
br label %396
396: ; preds = %393, %285, %272, %161, %150, %137, %117, %99, %85, %72, %45, %33, %30
%397 = load i32, i32* %3
ret i32 %397
}

LLVM IR (-O2):
%struct.tm = type { i32, i32, i32, i32, i32, i32, i32, i32, i64 }
@.str = [6 x i8] c"b:cws\00"
@optarg = global i8* null
@optind = global i32 0
@stderr = global i32 0
@.str.1 = [47 x i8] c"%s: writing to byte %d but no value specified\0A\00"
@.str.2 = [64 x i8] c"%s: setting system clock with write or byte position specified\0A\00"
@.str.3 = [9 x i8] c"/dev/rtc\00"
@O_RDWR = global i32 0
@O_RDONLY = global i32 0
@.str.4 = [27 x i8] c"%s: cannot open %s for %s\0A\00"
@.str.5 = [6 x i8] c"write\00"
@.str.6 = [5 x i8] c"read\00"
@SEEK_SET = global i32 0
@.str.7 = [18 x i8] c"%s: lseek failed\0A\00"
@.str.8 = [18 x i8] c"%s: write failed\0A\00"
@.str.9 = [17 x i8] c"%s: read failed\0A\00"
@.str.10 = [22 x i8] c"byte[%d] = %d 0x%02x\0A\00"
@__const.main.moffset = [12 x i32] [i32 0, i32 31, i32 59, i32 90, i32 120, i32 151, i32 181, i32 212, i32 243, i32 273, i32 304, i32 334]
@.str.11 = [3 x i8] c"%s\00"
define i32 @main(i32 %0, i8** %1) {
%3 = alloca i8
%4 = alloca i8
%5 = alloca [7 x i8]
%6 = alloca i32
%7 = alloca %struct.tm
%8 = alloca i32
%9 = tail call i32 @getopt(i32 %0, i8** %1, i8* getelementptr inbounds ([6 x i8], [6 x i8]* @.str, i64 0, i64 0))
%10 = icmp sgt i32 %9, 0
br i1 %10, label %11, label %29
11: ; preds = %2, %23
%12 = phi i32 [ %27, %23 ], [ %9, %2 ]
%13 = phi i32 [ %26, %23 ], [ 0, %2 ]
%14 = phi i32 [ %25, %23 ], [ 0, %2 ]
%15 = phi i32 [ %24, %23 ], [ -1, %2 ]
switch i32 %12, label %20 [
i32 98, label %16
i32 99, label %224
i32 119, label %23
i32 115, label %19
]
16: ; preds = %11
%17 = load i8*, i8** @optarg
%18 = tail call i32 @atoi(i8* %17)
br label %23
19: ; preds = %11
br label %23
20: ; preds = %11
%21 = load i8*, i8** %1
%22 = tail call i32 @usage(i8* %21)
br label %224
23: ; preds = %11, %19, %16
%24 = phi i32 [ %15, %19 ], [ %18, %16 ], [ %15, %11 ]
%25 = phi i32 [ %14, %19 ], [ %14, %16 ], [ 1, %11 ]
%26 = phi i32 [ 1, %19 ], [ %13, %16 ], [ %13, %11 ]
%27 = tail call i32 @getopt(i32 %0, i8** %1, i8* getelementptr inbounds ([6 x i8], [6 x i8]* @.str, i64 0, i64 0))
%28 = icmp sgt i32 %27, 0
br i1 %28, label %11, label %29
29: ; preds = %23, %2
%30 = phi i32 [ -1, %2 ], [ %24, %23 ]
%31 = phi i32 [ 0, %2 ], [ %25, %23 ]
%32 = phi i32 [ 0, %2 ], [ %26, %23 ]
%33 = load i32, i32* @optind
%34 = sub nsw i32 %0, %33
%35 = icmp sgt i32 %34, 1
br i1 %35, label %36, label %39
36: ; preds = %29
%37 = load i8*, i8** %1
%38 = tail call i32 @usage(i8* %37)
br label %224
39: ; preds = %29
%40 = icmp eq i32 %34, 1
br i1 %40, label %50, label %41
41: ; preds = %39
%42 = icmp ne i32 %31, 0
%43 = icmp sgt i32 %30, -1
%44 = select i1 %42, i1 %43, i1 false
br i1 %44, label %45, label %62
45: ; preds = %41
%46 = load i32, i32* @stderr
%47 = getelementptr inbounds i8*, i8** %1, i64 1
%48 = load i8*, i8** %47
%49 = tail call i32 (i32, i8*, i8*, ...) @fprintf(i32 %46, i8* getelementptr inbounds ([47 x i8], [47 x i8]* @.str.1, i64 0, i64 0), i8* %48, i32 %30)
br label %224
50: ; preds = %39
%51 = sext i32 %33 to i64
%52 = getelementptr inbounds i8*, i8** %1, i64 %51
%53 = load i8*, i8** %52
%54 = tail call i32 @atoi(i8* %53)
%55 = trunc i32 %54 to i8
store i8 %55, i8* %3
%56 = icmp ne i32 %31, 0
%57 = icmp sgt i32 %30, -1
%58 = icmp eq i32 %31, 0
br i1 %58, label %59, label %62
59: ; preds = %50
%60 = load i8*, i8** %1
%61 = tail call i32 @usage(i8* %60)
br label %224
62: ; preds = %41, %50
%63 = phi i1 [ %56, %50 ], [ %42, %41 ]
%64 = phi i1 [ %57, %50 ], [ %43, %41 ]
%65 = icmp eq i32 %32, 0
br i1 %65, label %72, label %66
66: ; preds = %62
%67 = select i1 %63, i1 true, i1 %64
br i1 %67, label %68, label %72
68: ; preds = %66
%69 = load i32, i32* @stderr
%70 = load i8*, i8** %1
%71 = tail call i32 (i32, i8*, i8*, ...) @fprintf(i32 %69, i8* getelementptr inbounds ([64 x i8], [64 x i8]* @.str.2, i64 0, i64 0), i8* %70)
br label %224
72: ; preds = %66, %62
%73 = load i32, i32* @O_RDWR
%74 = load i32, i32* @O_RDONLY
%75 = select i1 %63, i32 %73, i32 %74
%76 = tail call i32 @open(i8* getelementptr inbounds ([9 x i8], [9 x i8]* @.str.3, i64 0, i64 0), i32 %75)
%77 = icmp slt i32 %76, 0
br i1 %77, label %78, label %83
78: ; preds = %72
%79 = load i32, i32* @stderr
%80 = load i8*, i8** %1
%81 = select i1 %63, i8* getelementptr inbounds ([6 x i8], [6 x i8]* @.str.5, i64 0, i64 0), i8* getelementptr inbounds ([5 x i8], [5 x i8]* @.str.6, i64 0, i64 0)
%82 = tail call i32 (i32, i8*, i8*, ...) @fprintf(i32 %79, i8* getelementptr inbounds ([27 x i8], [27 x i8]* @.str.4, i64 0, i64 0), i8* %80, i8* getelementptr inbounds ([9 x i8], [9 x i8]* @.str.3, i64 0, i64 0), i8* %81)
br label %224
83: ; preds = %72
br i1 %64, label %84, label %112
84: ; preds = %83
%85 = add nsw i32 %30, 32
%86 = load i32, i32* @SEEK_SET
%87 = tail call i64 @lseek(i32 %76, i32 %85, i32 %86)
%88 = icmp slt i64 %87, 0
br i1 %88, label %89, label %93
89: ; preds = %84
%90 = load i32, i32* @stderr
%91 = load i8*, i8** %1
%92 = tail call i32 (i32, i8*, i8*, ...) @fprintf(i32 %90, i8* getelementptr inbounds ([18 x i8], [18 x i8]* @.str.7, i64 0, i64 0), i8* %91)
br label %224
93: ; preds = %84
br i1 %63, label %94, label %101
94: ; preds = %93
%95 = call i32 @write(i32 %76, i8* %3, i32 1)
%96 = icmp slt i32 %95, 1
br i1 %96, label %97, label %222
97: ; preds = %94
%98 = load i32, i32* @stderr
%99 = load i8*, i8** %1
%100 = tail call i32 (i32, i8*, i8*, ...) @fprintf(i32 %98, i8* getelementptr inbounds ([18 x i8], [18 x i8]* @.str.8, i64 0, i64 0), i8* %99)
br label %224
101: ; preds = %93
%102 = call i32 @read(i32 %76, i8* %4, i32 1)
%103 = icmp slt i32 %102, 1
br i1 %103, label %104, label %108
104: ; preds = %101
%105 = load i32, i32* @stderr
%106 = load i8*, i8** %1
%107 = tail call i32 (i32, i8*, i8*, ...) @fprintf(i32 %105, i8* getelementptr inbounds ([17 x i8], [17 x i8]* @.str.9, i64 0, i64 0), i8* %106)
br label %224
108: ; preds = %101
%109 = load i8, i8* %4
%110 = zext i8 %109 to i32
%111 = tail call i32 (i8*, ...) @printf(i8* dereferenceable(1) getelementptr inbounds ([22 x i8], [22 x i8]* @.str.10, i64 0, i64 0), i32 %30, i32 %110, i32 %110)
br label %222
112: ; preds = %83
%113 = getelementptr inbounds [7 x i8], [7 x i8]* %5, i64 0, i64 0
br i1 %63, label %114, label %161
114: ; preds = %112
%115 = bitcast i32* %6 to i8*
%116 = tail call i32 @time(i32* null)
store i32 %116, i32* %6
%117 = call %struct.tm* @gmtime(i32* %6)
%118 = bitcast %struct.tm* %117 to <4 x i32>*
%119 = load <4 x i32>, <4 x i32>* %118
%120 = freeze <4 x i32> %119
%121 = sdiv <4 x i32> %120, <i32 10, i32 10, i32 10, i32 10>
%122 = shl <4 x i32> %121, <i32 4, i32 4, i32 4, i32 4>
%123 = and <4 x i32> %122, <i32 112, i32 112, i32 48, i32 48>
%124 = mul <4 x i32> %121, <i32 10, i32 10, i32 10, i32 10>
%125 = sub <4 x i32> %120, %124
%126 = or <4 x i32> %123, %125
%127 = trunc <4 x i32> %126 to <4 x i8>
%128 = bitcast [7 x i8]* %5 to <4 x i8>*
store <4 x i8> %127, <4 x i8>* %128
%129 = getelementptr inbounds %struct.tm, %struct.tm* %117, i64 0, i32 4
%130 = load i32, i32* %129
%131 = add nsw i32 %130, 1
%132 = sdiv i32 %131, 10
%133 = shl i32 %132, 4
%134 = and i32 %133, 16
%135 = srem i32 %131, 10
%136 = or i32 %134, %135
%137 = trunc i32 %136 to i8
%138 = getelementptr inbounds [7 x i8], [7 x i8]* %5, i64 0, i64 4
store i8 %137, i8* %138
%139 = getelementptr inbounds %struct.tm, %struct.tm* %117, i64 0, i32 5
%140 = load i32, i32* %139
%141 = trunc i32 %140 to i8
%142 = add i8 %141, 1
%143 = and i8 %142, 7
%144 = getelementptr inbounds [7 x i8], [7 x i8]* %5, i64 0, i64 5
store i8 %143, i8* %144
%145 = getelementptr inbounds %struct.tm, %struct.tm* %117, i64 0, i32 6
%146 = load i32, i32* %145
%147 = sdiv i32 %146, 10
%148 = srem i32 %147, 10
%149 = shl nsw i32 %148, 4
%150 = srem i32 %146, 10
%151 = or i32 %149, %150
%152 = trunc i32 %151 to i8
%153 = getelementptr inbounds [7 x i8], [7 x i8]* %5, i64 0, i64 6
store i8 %152, i8* %153
%154 = call i32 @write(i32 %76, i8* %113, i32 7)
%155 = icmp eq i32 %154, 7
br i1 %155, label %156, label %157
156: ; preds = %114
br label %220
157: ; preds = %114
%158 = load i32, i32* @stderr
%159 = load i8*, i8** %1
%160 = call i32 (i32, i8*, i8*, ...) @fprintf(i32 %158, i8* getelementptr inbounds ([18 x i8], [18 x i8]* @.str.8, i64 0, i64 0), i8* %159)
br label %221
161: ; preds = %112
%162 = bitcast %struct.tm* %7 to i8*
%163 = call i32 @read(i32 %76, i8* %113, i32 7)
%164 = icmp eq i32 %163, 7
br i1 %164, label %165, label %216
165: ; preds = %161
%166 = bitcast [7 x i8]* %5 to <4 x i8>*
%167 = load <4 x i8>, <4 x i8>* %166
%168 = zext <4 x i8> %167 to <4 x i32>
%169 = and <4 x i32> %168, <i32 15, i32 15, i32 15, i32 15>
%170 = lshr <4 x i32> %168, <i32 4, i32 4, i32 4, i32 4>
%171 = and <4 x i32> %170, <i32 7, i32 7, i32 3, i32 3>
%172 = mul nuw nsw <4 x i32> %171, <i32 10, i32 10, i32 10, i32 10>
%173 = add nuw nsw <4 x i32> %172, %169
%174 = bitcast %struct.tm* %7 to <4 x i32>*
store <4 x i32> %173, <4 x i32>* %174
%175 = getelementptr inbounds [7 x i8], [7 x i8]* %5, i64 0, i64 4
%176 = load i8, i8* %175
%177 = zext i8 %176 to i32
%178 = and i32 %177, 15
%179 = lshr i32 %177, 4
%180 = and i32 %179, 1
%181 = mul nuw nsw i32 %180, 10
%182 = add nsw i32 %178, -1
%183 = add nsw i32 %182, %181
%184 = getelementptr inbounds %struct.tm, %struct.tm* %7, i64 0, i32 4
store i32 %183, i32* %184
%185 = getelementptr inbounds [7 x i8], [7 x i8]* %5, i64 0, i64 6
%186 = load i8, i8* %185
%187 = zext i8 %186 to i32
%188 = and i32 %187, 15
%189 = add nuw nsw i32 %188, 100
%190 = lshr i32 %187, 4
%191 = mul nuw nsw i32 %190, 10
%192 = add nuw nsw i32 %189, %191
%193 = getelementptr inbounds %struct.tm, %struct.tm* %7, i64 0, i32 6
store i32 %192, i32* %193
%194 = getelementptr inbounds [7 x i8], [7 x i8]* %5, i64 0, i64 5
%195 = load i8, i8* %194
%196 = and i8 %195, 7
%197 = zext i8 %196 to i32
%198 = add nsw i32 %197, -1
%199 = getelementptr inbounds %struct.tm, %struct.tm* %7, i64 0, i32 5
store i32 %198, i32* %199
%200 = sext i32 %183 to i64
%201 = getelementptr inbounds [12 x i32], [12 x i32]* @__const.main.moffset, i64 0, i64 %200
%202 = load i32, i32* %201
%203 = extractelement <4 x i32> %173, i64 3
%204 = add nsw i32 %203, -1
%205 = add i32 %204, %202
%206 = getelementptr inbounds %struct.tm, %struct.tm* %7, i64 0, i32 7
store i32 %205, i32* %206
%207 = getelementptr inbounds %struct.tm, %struct.tm* %7, i64 0, i32 8
store i64 0, i64* %207
br i1 %65, label %212, label %208
208: ; preds = %165
%209 = bitcast i32* %8 to i8*
%210 = call i32 @mktime(%struct.tm* %7)
store i32 %210, i32* %8
%211 = call i32 @stime(i32* %8)
br label %215
212: ; preds = %165
%213 = call i8* @asctime(%struct.tm* %7)
%214 = call i32 (i8*, ...) @printf(i8* dereferenceable(1) getelementptr inbounds ([3 x i8], [3 x i8]* @.str.11, i64 0, i64 0), i8* %213)
br label %215
215: ; preds = %208, %212
br label %220
216: ; preds = %161
%217 = load i32, i32* @stderr
%218 = load i8*, i8** %1
%219 = tail call i32 (i32, i8*, i8*, ...) @fprintf(i32 %217, i8* getelementptr inbounds ([17 x i8], [17 x i8]* @.str.9, i64 0, i64 0), i8* %218)
br label %221
220: ; preds = %215, %156
br label %222
221: ; preds = %216, %157
br label %224
222: ; preds = %220, %108, %94
%223 = call i32 @close(i32 %76)
br label %224
224: ; preds = %11, %221, %222, %104, %97, %89, %78, %68, %59, %45, %36, %20
%225 = phi i32 [ 1, %20 ], [ 1, %36 ], [ 1, %45 ], [ 1, %59 ], [ 1, %68 ], [ 1, %78 ], [ 1, %89 ], [ 1, %97 ], [ 0, %222 ], [ 1, %104 ], [ 1, %221 ], [ 0, %11 ]
ret i32 %225
}