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

/* Forward declarations */

/* Type definitions */

/* Variables and functions */
int /*<<< orphan*/ error(char *);
char *get_line(int);
int /*<<< orphan*/ isdigit(unsigned char);
scalar_t__ isspace(unsigned char);
size_t strlen(char *);
int /*<<< orphan*/ warning(char *, char *);
char *xmalloc(size_t);
char *xrealloc(char *, size_t);
char *getmsg(int fd, char *cptr, char quote) {
  static char *msg = NULL;
  static size_t msglen = 0;
  size_t clen, i;
  int in_quote = 0;
  char *tptr;
  if (quote && *cptr == quote) {
    ++cptr;
    in_quote = 1;
  }
  clen = strlen(cptr) + 1;
  if (clen > msglen) {
    if (msglen)
      msg = xrealloc(msg, clen);
    else
      msg = xmalloc(clen);
    msglen = clen;
  }
  tptr = msg;
  while (*cptr) {
    if (quote && *cptr == quote) {
      char *tmp;
      tmp = cptr + 1;
      if (!in_quote) {
        warning(cptr, "unexpected quote character, ignoring");
        *tptr++ = *cptr++;
      } else {
        cptr++;
        while (*cptr && isspace((unsigned char)*cptr))
          cptr++;
        if (*cptr)
          warning(tmp, "unexpected extra characters, ignoring");
        in_quote = 0;
        break;
      }
    } else {
      if (*cptr == '\\') {
        ++cptr;
        switch (*cptr) {
        case '\0':
          cptr = get_line(fd);
          if (!cptr)
            error("premature end of file");
          msglen += strlen(cptr);
          i = tptr - msg;
          msg = xrealloc(msg, msglen);
          tptr = msg + i;
          break;
        case 'n':
          *tptr++ = '\n';
          ++cptr;
          break;
        case 't':
          *tptr++ = '\t';
          ++cptr;
          break;
        case 'v':
          *tptr++ = '\v';
          ++cptr;
          break;
        case 'b':
          *tptr++ = '\b';
          ++cptr;
          break;
        case 'r':
          *tptr++ = '\r';
          ++cptr;
          break;
        case 'f':
          *tptr++ = '\f';
          ++cptr;
          break;
        case '\\':
          *tptr++ = '\\';
          ++cptr;
          break;
        default:
          if (quote && *cptr == quote) {
            *tptr++ = *cptr++;
          } else if (isdigit((unsigned char)*cptr)) {
            *tptr = 0;
            for (i = 0; i < 3; ++i) {
              if (!isdigit((unsigned char)*cptr))
                break;
              if (*cptr > '7')
                warning(cptr, "octal number greater than 7?!");
              *tptr *= 8;
              *tptr += (*cptr - '0');
              ++cptr;
            }
          } else {
            warning(cptr, "unrecognized escape sequence");
          }
          break;
        }
      } else {
        *tptr++ = *cptr++;
      }
    }
  }
  if (in_quote)
    warning(cptr, "unterminated quoted message, ignoring");
  *tptr = '\0';
  return (msg);
}


x86 assembly (clang, -O0):
<getmsg>:
push   %rbp
mov    %rsp,%rbp
sub    $0x50,%rsp
mov    %dl,%al
mov    %edi,-0x4(%rbp)
mov    %rsi,-0x10(%rbp)
mov    %al,-0x11(%rbp)
movl   $0x0,-0x2c(%rbp)
movsbl -0x11(%rbp),%eax
cmp    $0x0,%eax
je     11ce <getmsg+0x4e>
mov    -0x10(%rbp),%rax
movsbl (%rax),%eax
movsbl -0x11(%rbp),%ecx
cmp    %ecx,%eax
jne    11ce <getmsg+0x4e>
mov    -0x10(%rbp),%rax
add    $0x1,%rax
mov    %rax,-0x10(%rbp)
movl   $0x1,-0x2c(%rbp)
mov    -0x10(%rbp),%rdi
call   1060 <strlen@plt>
add    $0x1,%rax
mov    %rax,-0x20(%rbp)
mov    -0x20(%rbp),%rax
cmp    0x2e86(%rip),%rax
jbe    1235 <getmsg+0xb5>
cmpq   $0x0,0x2e78(%rip)
je     121a <getmsg+0x9a>
mov    0x2e63(%rip),%rdi
mov    -0x20(%rbp),%rsi
call   1070 <xrealloc@plt>
mov    %rax,0x2e53(%rip)
jmp    122a <getmsg+0xaa>
mov    -0x20(%rbp),%rdi
call   1080 <xmalloc@plt>
mov    %rax,0x2e3e(%rip)
mov    -0x20(%rbp),%rax
mov    %rax,0x2e3b(%rip)
mov    0x2e2c(%rip),%rax
mov    %rax,-0x38(%rbp)
mov    -0x10(%rbp),%rax
cmpb   $0x0,(%rax)
je     1697 <getmsg+0x517>
movsbl -0x11(%rbp),%eax
cmp    $0x0,%eax
je     1340 <getmsg+0x1c0>
mov    -0x10(%rbp),%rax
movsbl (%rax),%eax
movsbl -0x11(%rbp),%ecx
cmp    %ecx,%eax
jne    1340 <getmsg+0x1c0>
mov    -0x10(%rbp),%rax
add    $0x1,%rax
mov    %rax,-0x40(%rbp)
cmpl   $0x0,-0x2c(%rbp)
jne    12ba <getmsg+0x13a>
mov    -0x10(%rbp),%rdi
lea    0xd72(%rip),%rsi
call   1040 <warning@plt>
mov    -0x10(%rbp),%rax
mov    %rax,%rcx
add    $0x1,%rcx
mov    %rcx,-0x10(%rbp)
mov    (%rax),%cl
mov    -0x38(%rbp),%rax
mov    %rax,%rdx
add    $0x1,%rdx
mov    %rdx,-0x38(%rbp)
mov    %cl,(%rax)
jmp    133b <getmsg+0x1bb>
mov    -0x10(%rbp),%rax
add    $0x1,%rax
mov    %rax,-0x10(%rbp)
mov    -0x10(%rbp),%rax
movsbl (%rax),%ecx
xor    %eax,%eax
cmp    $0x0,%ecx
mov    %al,-0x41(%rbp)
je     12f1 <getmsg+0x171>
mov    -0x10(%rbp),%rax
movzbl (%rax),%edi
call   1090 <isspace@plt>
cmp    $0x0,%rax
setne  %al
mov    %al,-0x41(%rbp)
mov    -0x41(%rbp),%al
test   $0x1,%al
jne    1301 <getmsg+0x181>
jmp    1312 <getmsg+0x192>
mov    -0x10(%rbp),%rax
add    $0x1,%rax
mov    %rax,-0x10(%rbp)
jmp    12c6 <getmsg+0x146>
mov    -0x10(%rbp),%rax
cmpb   $0x0,(%rax)
je     132f <getmsg+0x1af>
mov    -0x40(%rbp),%rdi
lea    0xcfb(%rip),%rsi
call   1040 <warning@plt>
movl   $0x0,-0x2c(%rbp)
jmp    1697 <getmsg+0x517>
jmp    1692 <getmsg+0x512>
mov    -0x10(%rbp),%rax
movsbl (%rax),%eax
cmp    $0x5c,%eax
jne    166b <getmsg+0x4eb>
mov    -0x10(%rbp),%rax
add    $0x1,%rax
mov    %rax,-0x10(%rbp)
mov    -0x10(%rbp),%rax
movsbl (%rax),%eax
mov    %eax,-0x48(%rbp)
test   %eax,%eax
je     13ea <getmsg+0x26a>
jmp    1373 <getmsg+0x1f3>
mov    -0x48(%rbp),%eax
sub    $0x5c,%eax
je     1536 <getmsg+0x3b6>
jmp    1384 <getmsg+0x204>
mov    -0x48(%rbp),%eax
sub    $0x62,%eax
je     14cd <getmsg+0x34d>
jmp    1395 <getmsg+0x215>
mov    -0x48(%rbp),%eax
sub    $0x66,%eax
je     1513 <getmsg+0x393>
jmp    13a6 <getmsg+0x226>
mov    -0x48(%rbp),%eax
sub    $0x6e,%eax
je     1464 <getmsg+0x2e4>
jmp    13b7 <getmsg+0x237>
mov    -0x48(%rbp),%eax
sub    $0x72,%eax
je     14f0 <getmsg+0x370>
jmp    13c8 <getmsg+0x248>
mov    -0x48(%rbp),%eax
sub    $0x74,%eax
je     1487 <getmsg+0x307>
jmp    13d9 <getmsg+0x259>
mov    -0x48(%rbp),%eax
sub    $0x76,%eax
je     14aa <getmsg+0x32a>
jmp    1559 <getmsg+0x3d9>
mov    -0x4(%rbp),%edi
call   1050 <get_line@plt>
mov    %rax,-0x10(%rbp)
cmpq   $0x0,-0x10(%rbp)
jne    140d <getmsg+0x28d>
lea    0xc43(%rip),%rdi
call   10a0 <error@plt>
mov    -0x10(%rbp),%rdi
call   1060 <strlen@plt>
add    0x2c53(%rip),%rax
mov    %rax,0x2c4c(%rip)
mov    -0x38(%rbp),%rax
mov    0x2c39(%rip),%rcx
sub    %rcx,%rax
mov    %rax,-0x28(%rbp)
mov    0x2c2b(%rip),%rdi
mov    0x2c2c(%rip),%rsi
call   1070 <xrealloc@plt>
mov    %rax,0x2c18(%rip)
mov    0x2c11(%rip),%rax
add    -0x28(%rbp),%rax
mov    %rax,-0x38(%rbp)
jmp    1666 <getmsg+0x4e6>
mov    -0x38(%rbp),%rax
mov    %rax,%rcx
add    $0x1,%rcx
mov    %rcx,-0x38(%rbp)
movb   $0xa,(%rax)
mov    -0x10(%rbp),%rax
add    $0x1,%rax
mov    %rax,-0x10(%rbp)
jmp    1666 <getmsg+0x4e6>
mov    -0x38(%rbp),%rax
mov    %rax,%rcx
add    $0x1,%rcx
mov    %rcx,-0x38(%rbp)
movb   $0x9,(%rax)
mov    -0x10(%rbp),%rax
add    $0x1,%rax
mov    %rax,-0x10(%rbp)
jmp    1666 <getmsg+0x4e6>
mov    -0x38(%rbp),%rax
mov    %rax,%rcx
add    $0x1,%rcx
mov    %rcx,-0x38(%rbp)
movb   $0xb,(%rax)
mov    -0x10(%rbp),%rax
add    $0x1,%rax
mov    %rax,-0x10(%rbp)
jmp    1666 <getmsg+0x4e6>
mov    -0x38(%rbp),%rax
mov    %rax,%rcx
add    $0x1,%rcx
mov    %rcx,-0x38(%rbp)
movb   $0x8,(%rax)
mov    -0x10(%rbp),%rax
add    $0x1,%rax
mov    %rax,-0x10(%rbp)
jmp    1666 <getmsg+0x4e6>
mov    -0x38(%rbp),%rax
mov    %rax,%rcx
add    $0x1,%rcx
mov    %rcx,-0x38(%rbp)
movb   $0xd,(%rax)
mov    -0x10(%rbp),%rax
add    $0x1,%rax
mov    %rax,-0x10(%rbp)
jmp    1666 <getmsg+0x4e6>
mov    -0x38(%rbp),%rax
mov    %rax,%rcx
add    $0x1,%rcx
mov    %rcx,-0x38(%rbp)
movb   $0xc,(%rax)
mov    -0x10(%rbp),%rax
add    $0x1,%rax
mov    %rax,-0x10(%rbp)
jmp    1666 <getmsg+0x4e6>
mov    -0x38(%rbp),%rax
mov    %rax,%rcx
add    $0x1,%rcx
mov    %rcx,-0x38(%rbp)
movb   $0x5c,(%rax)
mov    -0x10(%rbp),%rax
add    $0x1,%rax
mov    %rax,-0x10(%rbp)
jmp    1666 <getmsg+0x4e6>
movsbl -0x11(%rbp),%eax
cmp    $0x0,%eax
je     15a0 <getmsg+0x420>
mov    -0x10(%rbp),%rax
movsbl (%rax),%eax
movsbl -0x11(%rbp),%ecx
cmp    %ecx,%eax
jne    15a0 <getmsg+0x420>
mov    -0x10(%rbp),%rax
mov    %rax,%rcx
add    $0x1,%rcx
mov    %rcx,-0x10(%rbp)
mov    (%rax),%cl
mov    -0x38(%rbp),%rax
mov    %rax,%rdx
add    $0x1,%rdx
mov    %rdx,-0x38(%rbp)
mov    %cl,(%rax)
jmp    1661 <getmsg+0x4e1>
mov    -0x10(%rbp),%rax
movzbl (%rax),%edi
call   1030 <isdigit@plt>
cmp    $0x0,%eax
je     164c <getmsg+0x4cc>
mov    -0x38(%rbp),%rax
movb   $0x0,(%rax)
movq   $0x0,-0x28(%rbp)
cmpq   $0x3,-0x28(%rbp)
jae    1647 <getmsg+0x4c7>
mov    -0x10(%rbp),%rax
movzbl (%rax),%edi
call   1030 <isdigit@plt>
cmp    $0x0,%eax
jne    15e9 <getmsg+0x469>
jmp    1647 <getmsg+0x4c7>
mov    -0x10(%rbp),%rax
movsbl (%rax),%eax
cmp    $0x37,%eax
jle    1609 <getmsg+0x489>
mov    -0x10(%rbp),%rdi
lea    0xa5d(%rip),%rsi
call   1040 <warning@plt>
mov    -0x38(%rbp),%rax
movsbl (%rax),%ecx
shl    $0x3,%ecx
mov    %cl,(%rax)
mov    -0x10(%rbp),%rax
movsbl (%rax),%edx
sub    $0x30,%edx
mov    -0x38(%rbp),%rax
movsbl (%rax),%ecx
add    %edx,%ecx
mov    %cl,(%rax)
mov    -0x10(%rbp),%rax
add    $0x1,%rax
mov    %rax,-0x10(%rbp)
mov    -0x28(%rbp),%rax
add    $0x1,%rax
mov    %rax,-0x28(%rbp)
jmp    15c4 <getmsg+0x444>
jmp    165c <getmsg+0x4dc>
mov    -0x10(%rbp),%rdi
lea    0xa28(%rip),%rsi
call   1040 <warning@plt>
jmp    1661 <getmsg+0x4e1>
jmp    1666 <getmsg+0x4e6>
jmp    168d <getmsg+0x50d>
mov    -0x10(%rbp),%rax
mov    %rax,%rcx
add    $0x1,%rcx
mov    %rcx,-0x10(%rbp)
mov    (%rax),%cl
mov    -0x38(%rbp),%rax
mov    %rax,%rdx
add    $0x1,%rdx
mov    %rdx,-0x38(%rbp)
mov    %cl,(%rax)
jmp    1692 <getmsg+0x512>
jmp    1240 <getmsg+0xc0>
cmpl   $0x0,-0x2c(%rbp)
je     16b1 <getmsg+0x531>
mov    -0x10(%rbp),%rdi
lea    0x9f0(%rip),%rsi
call   1040 <warning@plt>
mov    -0x38(%rbp),%rax
movb   $0x0,(%rax)
mov    0x29a9(%rip),%rax
add    $0x50,%rsp
pop    %rbp
ret

x86 assembly (clang, -O2):
<getmsg>:
push   %rbp
push   %r15
push   %r14
push   %r13
push   %r12
push   %rbx
push   %rax
mov    %edx,%r14d
mov    %rsi,%r13
mov    %edi,%r12d
xor    %r15d,%r15d
test   %r14b,%r14b
je     11a7 <getmsg+0x27>
cmp    %r14b,0x0(%r13)
sete   %r15b
add    %r15,%r13
mov    %r13,%rdi
call   1060 <strlen@plt>
mov    %rax,%rbp
add    $0x1,%rbp
mov    0x2eb3(%rip),%rax
cmp    %rax,%rbp
jbe    11d8 <getmsg+0x58>
test   %rax,%rax
je     11e1 <getmsg+0x61>
mov    0x2e9a(%rip),%rdi
mov    %rbp,%rsi
call   1070 <xrealloc@plt>
jmp    11e9 <getmsg+0x69>
mov    0x2e89(%rip),%rbx
jmp    11fa <getmsg+0x7a>
mov    %rbp,%rdi
call   1080 <xmalloc@plt>
mov    %rax,%rbx
mov    %rax,0x2e75(%rip)
mov    %rbp,0x2e76(%rip)
mov    0x0(%r13),%al
test   %al,%al
je     1424 <getmsg+0x2a4>
mov    %r12d,0x4(%rsp)
test   %r14b,%r14b
setne  %bpl
jmp    1236 <getmsg+0xb6>
cs nopw 0x0(%rax,%rax,1)
xchg   %ax,%ax
mov    %al,(%rbx)
add    $0x1,%rbx
movzbl (%r12),%eax
mov    %r12,%r13
test   %al,%al
je     1427 <getmsg+0x2a7>
cmp    %r14b,%al
sete   %cl
and    %bpl,%cl
lea    0x1(%r13),%r12
cmp    $0x1,%cl
jne    1270 <getmsg+0xf0>
test   %r15d,%r15d
jne    1454 <getmsg+0x2d4>
mov    %r13,%rdi
lea    0xe11(%rip),%rsi
call   1040 <warning@plt>
movzbl 0x0(%r13),%eax
mov    %al,(%rbx)
add    $0x1,%rbx
xor    %r15d,%r15d
jmp    1226 <getmsg+0xa6>
cmp    $0x5c,%al
jne    1220 <getmsg+0xa0>
movzbl (%r12),%eax
movsbl %al,%ecx
lea    -0x5c(%rcx),%edx
cmp    $0x1a,%edx
ja     129c <getmsg+0x11c>
lea    0xd75(%rip),%rsi
movslq (%rsi,%rdx,4),%rcx
add    %rsi,%rcx
jmp    *%rcx
movb   $0x5c,(%rbx)
jmp    1331 <getmsg+0x1b1>
test   %ecx,%ecx
jne    12f4 <getmsg+0x174>
mov    0x4(%rsp),%edi
call   1050 <get_line@plt>
mov    %rax,%r12
test   %rax,%rax
jne    12bd <getmsg+0x13d>
lea    0xdff(%rip),%rdi
call   10a0 <error@plt>
mov    %r12,%rdi
call   1060 <strlen@plt>
add    0x2da4(%rip),%rax
mov    %rax,0x2d9d(%rip)
mov    0x2d8e(%rip),%rdi
sub    %rdi,%rbx
mov    %rax,%rsi
call   1070 <xrealloc@plt>
mov    %rax,0x2d7c(%rip)
add    %rax,%rbx
jmp    1226 <getmsg+0xa6>
cmp    %r14b,%al
sete   %cl
and    %bpl,%cl
cmp    $0x1,%cl
jne    1341 <getmsg+0x1c1>
add    $0x2,%r13
mov    %r14b,(%rbx)
add    $0x1,%rbx
mov    %r13,%r12
jmp    1226 <getmsg+0xa6>
movb   $0x8,(%rbx)
jmp    1331 <getmsg+0x1b1>
movb   $0xc,(%rbx)
jmp    1331 <getmsg+0x1b1>
movb   $0xa,(%rbx)
jmp    1331 <getmsg+0x1b1>
movb   $0xd,(%rbx)
jmp    1331 <getmsg+0x1b1>
movb   $0x9,(%rbx)
jmp    1331 <getmsg+0x1b1>
movb   $0xb,(%rbx)
add    $0x1,%rbx
add    $0x2,%r13
mov    %r13,%r12
jmp    1226 <getmsg+0xa6>
movzbl %al,%edi
call   1030 <isdigit@plt>
test   %eax,%eax
je     1410 <getmsg+0x290>
movb   $0x0,(%rbx)
movzbl (%r12),%edi
call   1030 <isdigit@plt>
test   %eax,%eax
je     1226 <getmsg+0xa6>
cmpb   $0x38,(%r12)
jl     137c <getmsg+0x1fc>
mov    %r12,%rdi
lea    0xd56(%rip),%rsi
call   1040 <warning@plt>
movzbl (%rbx),%eax
shl    $0x3,%al
mov    %al,(%rbx)
add    0x1(%r13),%al
add    $0xd0,%al
mov    %al,(%rbx)
lea    0x2(%r13),%r12
movzbl 0x2(%r13),%edi
call   1030 <isdigit@plt>
test   %eax,%eax
je     1226 <getmsg+0xa6>
cmpb   $0x38,(%r12)
jl     13b8 <getmsg+0x238>
mov    %r12,%rdi
lea    0xd1a(%rip),%rsi
call   1040 <warning@plt>
movzbl (%rbx),%eax
shl    $0x3,%al
mov    %al,(%rbx)
add    0x2(%r13),%al
add    $0xd0,%al
mov    %al,(%rbx)
lea    0x3(%r13),%r12
movzbl 0x3(%r13),%edi
call   1030 <isdigit@plt>
test   %eax,%eax
je     1226 <getmsg+0xa6>
cmpb   $0x38,(%r12)
jl     13f4 <getmsg+0x274>
mov    %r12,%rdi
lea    0xcde(%rip),%rsi
call   1040 <warning@plt>
movzbl (%rbx),%eax
shl    $0x3,%al
mov    %al,(%rbx)
add    0x3(%r13),%al
add    $0xd0,%al
mov    %al,(%rbx)
add    $0x4,%r13
mov    %r13,%r12
jmp    1226 <getmsg+0xa6>
mov    %r12,%rdi
lea    0xcd1(%rip),%rsi
call   1040 <warning@plt>
jmp    1226 <getmsg+0xa6>
mov    %r13,%r12
test   %r15d,%r15d
je     143b <getmsg+0x2bb>
lea    0xcd5(%rip),%rsi
mov    %r12,%rdi
call   1040 <warning@plt>
movb   $0x0,(%rbx)
mov    0x2c23(%rip),%rax
add    $0x8,%rsp
pop    %rbx
pop    %r12
pop    %r13
pop    %r14
pop    %r15
pop    %rbp
ret
add    $0x1,%r13
nopl   0x0(%rax,%rax,1)
movzbl 0x0(%r13),%eax
test   %al,%al
je     143b <getmsg+0x2bb>
movzbl %al,%edi
call   1090 <isspace@plt>
add    $0x1,%r13
test   %rax,%rax
jne    1460 <getmsg+0x2e0>
cmpb   $0x0,-0x1(%r13)
je     143b <getmsg+0x2bb>
lea    0xc09(%rip),%rsi
jmp    1433 <getmsg+0x2b3>

LLVM IR (-O0):
@getmsg.msg = internal global i8* null
@getmsg.msglen = internal global i64 0
@.str = [37 x i8] c"unexpected quote character, ignoring\00"
@.str.1 = [38 x i8] c"unexpected extra characters, ignoring\00"
@.str.2 = [22 x i8] c"premature end of file\00"
@.str.3 = [30 x i8] c"octal number greater than 7?!\00"
@.str.4 = [29 x i8] c"unrecognized escape sequence\00"
@.str.5 = [38 x i8] c"unterminated quoted message, ignoring\00"
define i8* @getmsg(i32 %0, i8* %1, i8 signext %2) {
%4 = alloca i32
%5 = alloca i8*
%6 = alloca i8
%7 = alloca i64
%8 = alloca i64
%9 = alloca i32
%10 = alloca i8*
%11 = alloca i8*
store i32 %0, i32* %4
store i8* %1, i8** %5
store i8 %2, i8* %6
store i32 0, i32* %9
%12 = load i8, i8* %6
%13 = sext i8 %12 to i32
%14 = icmp ne i32 %13, 0
br i1 %14, label %15, label %25
15: ; preds = %3
%16 = load i8*, i8** %5
%17 = load i8, i8* %16
%18 = sext i8 %17 to i32
%19 = load i8, i8* %6
%20 = sext i8 %19 to i32
%21 = icmp eq i32 %18, %20
br i1 %21, label %22, label %25
22: ; preds = %15
%23 = load i8*, i8** %5
%24 = getelementptr inbounds i8, i8* %23, i32 1
store i8* %24, i8** %5
store i32 1, i32* %9
br label %25
25: ; preds = %22, %15, %3
%26 = load i8*, i8** %5
%27 = call i64 @strlen(i8* %26)
%28 = add i64 %27, 1
store i64 %28, i64* %7
%29 = load i64, i64* %7
%30 = load i64, i64* @getmsg.msglen
%31 = icmp ugt i64 %29, %30
br i1 %31, label %32, label %44
32: ; preds = %25
%33 = load i64, i64* @getmsg.msglen
%34 = icmp ne i64 %33, 0
br i1 %34, label %35, label %39
35: ; preds = %32
%36 = load i8*, i8** @getmsg.msg
%37 = load i64, i64* %7
%38 = call i8* @xrealloc(i8* %36, i64 %37)
store i8* %38, i8** @getmsg.msg
br label %42
39: ; preds = %32
%40 = load i64, i64* %7
%41 = call i8* @xmalloc(i64 %40)
store i8* %41, i8** @getmsg.msg
br label %42
42: ; preds = %39, %35
%43 = load i64, i64* %7
store i64 %43, i64* @getmsg.msglen
br label %44
44: ; preds = %42, %25
%45 = load i8*, i8** @getmsg.msg
store i8* %45, i8** %10
br label %46
46: ; preds = %245, %44
%47 = load i8*, i8** %5
%48 = load i8, i8* %47
%49 = icmp ne i8 %48, 0
br i1 %49, label %50, label %246
50: ; preds = %46
%51 = load i8, i8* %6
%52 = sext i8 %51 to i32
%53 = icmp ne i32 %52, 0
br i1 %53, label %54, label %101
54: ; preds = %50
%55 = load i8*, i8** %5
%56 = load i8, i8* %55
%57 = sext i8 %56 to i32
%58 = load i8, i8* %6
%59 = sext i8 %58 to i32
%60 = icmp eq i32 %57, %59
br i1 %60, label %61, label %101
61: ; preds = %54
%62 = load i8*, i8** %5
%63 = getelementptr inbounds i8, i8* %62, i64 1
store i8* %63, i8** %11
%64 = load i32, i32* %9
%65 = icmp ne i32 %64, 0
br i1 %65, label %74, label %66
66: ; preds = %61
%67 = load i8*, i8** %5
%68 = call i32 @warning(i8* %67, i8* getelementptr inbounds ([37 x i8], [37 x i8]* @.str, i64 0, i64 0))
%69 = load i8*, i8** %5
%70 = getelementptr inbounds i8, i8* %69, i32 1
store i8* %70, i8** %5
%71 = load i8, i8* %69
%72 = load i8*, i8** %10
%73 = getelementptr inbounds i8, i8* %72, i32 1
store i8* %73, i8** %10
store i8 %71, i8* %72
br label %100
74: ; preds = %61
%75 = load i8*, i8** %5
%76 = getelementptr inbounds i8, i8* %75, i32 1
store i8* %76, i8** %5
br label %77
77: ; preds = %89, %74
%78 = load i8*, i8** %5
%79 = load i8, i8* %78
%80 = sext i8 %79 to i32
%81 = icmp ne i32 %80, 0
br i1 %81, label %82, label %87
82: ; preds = %77
%83 = load i8*, i8** %5
%84 = load i8, i8* %83
%85 = call i64 @isspace(i8 zeroext %84)
%86 = icmp ne i64 %85, 0
br label %87
87: ; preds = %82, %77
%88 = phi i1 [ false, %77 ], [ %86, %82 ]
br i1 %88, label %89, label %92
89: ; preds = %87
%90 = load i8*, i8** %5
%91 = getelementptr inbounds i8, i8* %90, i32 1
store i8* %91, i8** %5
br label %77
92: ; preds = %87
%93 = load i8*, i8** %5
%94 = load i8, i8* %93
%95 = icmp ne i8 %94, 0
br i1 %95, label %96, label %99
96: ; preds = %92
%97 = load i8*, i8** %11
%98 = call i32 @warning(i8* %97, i8* getelementptr inbounds ([38 x i8], [38 x i8]* @.str.1, i64 0, i64 0))
br label %99
99: ; preds = %96, %92
store i32 0, i32* %9
br label %246
100: ; preds = %66
br label %245
101: ; preds = %54, %50
%102 = load i8*, i8** %5
%103 = load i8, i8* %102
%104 = sext i8 %103 to i32
%105 = icmp eq i32 %104, 92
br i1 %105, label %106, label %238
106: ; preds = %101
%107 = load i8*, i8** %5
%108 = getelementptr inbounds i8, i8* %107, i32 1
store i8* %108, i8** %5
%109 = load i8*, i8** %5
%110 = load i8, i8* %109
%111 = sext i8 %110 to i32
switch i32 %111, label %170 [
i32 0, label %112
i32 110, label %135
i32 116, label %140
i32 118, label %145
i32 98, label %150
i32 114, label %155
i32 102, label %160
i32 92, label %165
]
112: ; preds = %106
%113 = load i32, i32* %4
%114 = call i8* @get_line(i32 %113)
store i8* %114, i8** %5
%115 = load i8*, i8** %5
%116 = icmp ne i8* %115, null
br i1 %116, label %119, label %117
117: ; preds = %112
%118 = call i32 @error(i8* getelementptr inbounds ([22 x i8], [22 x i8]* @.str.2, i64 0, i64 0))
br label %119
119: ; preds = %117, %112
%120 = load i8*, i8** %5
%121 = call i64 @strlen(i8* %120)
%122 = load i64, i64* @getmsg.msglen
%123 = add i64 %122, %121
store i64 %123, i64* @getmsg.msglen
%124 = load i8*, i8** %10
%125 = load i8*, i8** @getmsg.msg
%126 = ptrtoint i8* %124 to i64
%127 = ptrtoint i8* %125 to i64
%128 = sub i64 %126, %127
store i64 %128, i64* %8
%129 = load i8*, i8** @getmsg.msg
%130 = load i64, i64* @getmsg.msglen
%131 = call i8* @xrealloc(i8* %129, i64 %130)
store i8* %131, i8** @getmsg.msg
%132 = load i8*, i8** @getmsg.msg
%133 = load i64, i64* %8
%134 = getelementptr inbounds i8, i8* %132, i64 %133
store i8* %134, i8** %10
br label %237
135: ; preds = %106
%136 = load i8*, i8** %10
%137 = getelementptr inbounds i8, i8* %136, i32 1
store i8* %137, i8** %10
store i8 10, i8* %136
%138 = load i8*, i8** %5
%139 = getelementptr inbounds i8, i8* %138, i32 1
store i8* %139, i8** %5
br label %237
140: ; preds = %106
%141 = load i8*, i8** %10
%142 = getelementptr inbounds i8, i8* %141, i32 1
store i8* %142, i8** %10
store i8 9, i8* %141
%143 = load i8*, i8** %5
%144 = getelementptr inbounds i8, i8* %143, i32 1
store i8* %144, i8** %5
br label %237
145: ; preds = %106
%146 = load i8*, i8** %10
%147 = getelementptr inbounds i8, i8* %146, i32 1
store i8* %147, i8** %10
store i8 11, i8* %146
%148 = load i8*, i8** %5
%149 = getelementptr inbounds i8, i8* %148, i32 1
store i8* %149, i8** %5
br label %237
150: ; preds = %106
%151 = load i8*, i8** %10
%152 = getelementptr inbounds i8, i8* %151, i32 1
store i8* %152, i8** %10
store i8 8, i8* %151
%153 = load i8*, i8** %5
%154 = getelementptr inbounds i8, i8* %153, i32 1
store i8* %154, i8** %5
br label %237
155: ; preds = %106
%156 = load i8*, i8** %10
%157 = getelementptr inbounds i8, i8* %156, i32 1
store i8* %157, i8** %10
store i8 13, i8* %156
%158 = load i8*, i8** %5
%159 = getelementptr inbounds i8, i8* %158, i32 1
store i8* %159, i8** %5
br label %237
160: ; preds = %106
%161 = load i8*, i8** %10
%162 = getelementptr inbounds i8, i8* %161, i32 1
store i8* %162, i8** %10
store i8 12, i8* %161
%163 = load i8*, i8** %5
%164 = getelementptr inbounds i8, i8* %163, i32 1
store i8* %164, i8** %5
br label %237
165: ; preds = %106
%166 = load i8*, i8** %10
%167 = getelementptr inbounds i8, i8* %166, i32 1
store i8* %167, i8** %10
store i8 92, i8* %166
%168 = load i8*, i8** %5
%169 = getelementptr inbounds i8, i8* %168, i32 1
store i8* %169, i8** %5
br label %237
170: ; preds = %106
%171 = load i8, i8* %6
%172 = sext i8 %171 to i32
%173 = icmp ne i32 %172, 0
br i1 %173, label %174, label %187
174: ; preds = %170
%175 = load i8*, i8** %5
%176 = load i8, i8* %175
%177 = sext i8 %176 to i32
%178 = load i8, i8* %6
%179 = sext i8 %178 to i32
%180 = icmp eq i32 %177, %179
br i1 %180, label %181, label %187
181: ; preds = %174
%182 = load i8*, i8** %5
%183 = getelementptr inbounds i8, i8* %182, i32 1
store i8* %183, i8** %5
%184 = load i8, i8* %182
%185 = load i8*, i8** %10
%186 = getelementptr inbounds i8, i8* %185, i32 1
store i8* %186, i8** %10
store i8 %184, i8* %185
br label %236
187: ; preds = %174, %170
%188 = load i8*, i8** %5
%189 = load i8, i8* %188
%190 = call i32 @isdigit(i8 zeroext %189)
%191 = icmp ne i32 %190, 0
br i1 %191, label %192, label %232
192: ; preds = %187
%193 = load i8*, i8** %10
store i8 0, i8* %193
store i64 0, i64* %8
br label %194
194: ; preds = %228, %192
%195 = load i64, i64* %8
%196 = icmp ult i64 %195, 3
br i1 %196, label %197, label %231
197: ; preds = %194
%198 = load i8*, i8** %5
%199 = load i8, i8* %198
%200 = call i32 @isdigit(i8 zeroext %199)
%201 = icmp ne i32 %200, 0
br i1 %201, label %203, label %202
202: ; preds = %197
br label %231
203: ; preds = %197
%204 = load i8*, i8** %5
%205 = load i8, i8* %204
%206 = sext i8 %205 to i32
%207 = icmp sgt i32 %206, 55
br i1 %207, label %208, label %211
208: ; preds = %203
%209 = load i8*, i8** %5
%210 = call i32 @warning(i8* %209, i8* getelementptr inbounds ([30 x i8], [30 x i8]* @.str.3, i64 0, i64 0))
br label %211
211: ; preds = %208, %203
%212 = load i8*, i8** %10
%213 = load i8, i8* %212
%214 = sext i8 %213 to i32
%215 = mul nsw i32 %214, 8
%216 = trunc i32 %215 to i8
store i8 %216, i8* %212
%217 = load i8*, i8** %5
%218 = load i8, i8* %217
%219 = sext i8 %218 to i32
%220 = sub nsw i32 %219, 48
%221 = load i8*, i8** %10
%222 = load i8, i8* %221
%223 = sext i8 %222 to i32
%224 = add nsw i32 %223, %220
%225 = trunc i32 %224 to i8
store i8 %225, i8* %221
%226 = load i8*, i8** %5
%227 = getelementptr inbounds i8, i8* %226, i32 1
store i8* %227, i8** %5
br label %228
228: ; preds = %211
%229 = load i64, i64* %8
%230 = add i64 %229, 1
store i64 %230, i64* %8
br label %194
231: ; preds = %202, %194
br label %235
232: ; preds = %187
%233 = load i8*, i8** %5
%234 = call i32 @warning(i8* %233, i8* getelementptr inbounds ([29 x i8], [29 x i8]* @.str.4, i64 0, i64 0))
br label %235
235: ; preds = %232, %231
br label %236
236: ; preds = %235, %181
br label %237
237: ; preds = %236, %165, %160, %155, %150, %145, %140, %135, %119
br label %244
238: ; preds = %101
%239 = load i8*, i8** %5
%240 = getelementptr inbounds i8, i8* %239, i32 1
store i8* %240, i8** %5
%241 = load i8, i8* %239
%242 = load i8*, i8** %10
%243 = getelementptr inbounds i8, i8* %242, i32 1
store i8* %243, i8** %10
store i8 %241, i8* %242
br label %244
244: ; preds = %238, %237
br label %245
245: ; preds = %244, %100
br label %46
246: ; preds = %99, %46
%247 = load i32, i32* %9
%248 = icmp ne i32 %247, 0
br i1 %248, label %249, label %252
249: ; preds = %246
%250 = load i8*, i8** %5
%251 = call i32 @warning(i8* %250, i8* getelementptr inbounds ([38 x i8], [38 x i8]* @.str.5, i64 0, i64 0))
br label %252
252: ; preds = %249, %246
%253 = load i8*, i8** %10
store i8 0, i8* %253
%254 = load i8*, i8** @getmsg.msg
ret i8* %254
}

LLVM IR (-O2):
@getmsg.msg = internal unnamed_addr global i8* null
@getmsg.msglen = internal unnamed_addr global i64 0
@.str = [37 x i8] c"unexpected quote character, ignoring\00"
@.str.1 = [38 x i8] c"unexpected extra characters, ignoring\00"
@.str.2 = [22 x i8] c"premature end of file\00"
@.str.3 = [30 x i8] c"octal number greater than 7?!\00"
@.str.4 = [29 x i8] c"unrecognized escape sequence\00"
@.str.5 = [38 x i8] c"unterminated quoted message, ignoring\00"
define i8* @getmsg(i32 %0, i8* %1, i8 signext %2) {
%4 = icmp eq i8 %2, 0
br i1 %4, label %11, label %5
5: ; preds = %3
%6 = load i8, i8* %1
%7 = icmp eq i8 %6, %2
%8 = zext i1 %7 to i32
%9 = zext i1 %7 to i64
%10 = getelementptr i8, i8* %1, i64 %9
br label %11
11: ; preds = %5, %3
%12 = phi i32 [ 0, %3 ], [ %8, %5 ]
%13 = phi i8* [ %1, %3 ], [ %10, %5 ]
%14 = tail call i64 @strlen(i8* dereferenceable(1) %13)
%15 = add i64 %14, 1
%16 = load i64, i64* @getmsg.msglen
%17 = icmp ugt i64 %15, %16
br i1 %17, label %20, label %18
18: ; preds = %11
%19 = load i8*, i8** @getmsg.msg
br label %29
20: ; preds = %11
%21 = icmp eq i64 %16, 0
br i1 %21, label %25, label %22
22: ; preds = %20
%23 = load i8*, i8** @getmsg.msg
%24 = tail call i8* @xrealloc(i8* %23, i64 %15)
br label %27
25: ; preds = %20
%26 = tail call i8* @xmalloc(i64 %15)
br label %27
27: ; preds = %25, %22
%28 = phi i8* [ %26, %25 ], [ %24, %22 ]
store i8* %28, i8** @getmsg.msg
store i64 %15, i64* @getmsg.msglen
br label %29
29: ; preds = %18, %27
%30 = phi i8* [ %19, %18 ], [ %28, %27 ]
%31 = load i8, i8* %13
%32 = icmp eq i8 %31, 0
br i1 %32, label %169, label %33
33: ; preds = %29
%34 = xor i1 %4, true
br label %35
35: ; preds = %33, %163
%36 = phi i8 [ %31, %33 ], [ %167, %163 ]
%37 = phi i8* [ %13, %33 ], [ %166, %163 ]
%38 = phi i8* [ %30, %33 ], [ %165, %163 ]
%39 = phi i32 [ %12, %33 ], [ %164, %163 ]
%40 = icmp eq i8 %36, %2
%41 = select i1 %34, i1 %40, i1 false
br i1 %41, label %42, label %62
42: ; preds = %35
%43 = getelementptr inbounds i8, i8* %37, i64 1
%44 = icmp eq i32 %39, 0
br i1 %44, label %58, label %45
45: ; preds = %42, %50
%46 = phi i8* [ %47, %50 ], [ %37, %42 ]
%47 = getelementptr inbounds i8, i8* %46, i64 1
%48 = load i8, i8* %47
%49 = icmp eq i8 %48, 0
br i1 %49, label %176, label %50
50: ; preds = %45
%51 = tail call i64 @isspace(i8 zeroext %48)
%52 = icmp eq i64 %51, 0
br i1 %52, label %53, label %45
53: ; preds = %50
%54 = load i8, i8* %47
%55 = icmp eq i8 %54, 0
br i1 %55, label %176, label %56
56: ; preds = %53
%57 = tail call i32 @warning(i8* %43, i8* getelementptr inbounds ([38 x i8], [38 x i8]* @.str.1, i64 0, i64 0))
br label %176
58: ; preds = %42
%59 = tail call i32 @warning(i8* %37, i8* getelementptr inbounds ([37 x i8], [37 x i8]* @.str, i64 0, i64 0))
%60 = load i8, i8* %37
%61 = getelementptr inbounds i8, i8* %38, i64 1
store i8 %60, i8* %38
br label %163
62: ; preds = %35
%63 = icmp eq i8 %36, 92
%64 = getelementptr inbounds i8, i8* %37, i64 1
br i1 %63, label %65, label %161
65: ; preds = %62
%66 = load i8, i8* %64
%67 = sext i8 %66 to i32
switch i32 %67, label %104 [
i32 0, label %68
i32 110, label %83
i32 116, label %86
i32 118, label %89
i32 98, label %92
i32 114, label %95
i32 102, label %98
i32 92, label %101
]
68: ; preds = %65
%69 = tail call i8* @get_line(i32 %0)
%70 = icmp eq i8* %69, null
br i1 %70, label %71, label %73
71: ; preds = %68
%72 = tail call i32 @error(i8* getelementptr inbounds ([22 x i8], [22 x i8]* @.str.2, i64 0, i64 0))
br label %73
73: ; preds = %71, %68
%74 = tail call i64 @strlen(i8* dereferenceable(1) %69)
%75 = load i64, i64* @getmsg.msglen
%76 = add i64 %75, %74
store i64 %76, i64* @getmsg.msglen
%77 = load i8*, i8** @getmsg.msg
%78 = ptrtoint i8* %38 to i64
%79 = ptrtoint i8* %77 to i64
%80 = sub i64 %78, %79
%81 = tail call i8* @xrealloc(i8* %77, i64 %76)
store i8* %81, i8** @getmsg.msg
%82 = getelementptr inbounds i8, i8* %81, i64 %80
br label %163
83: ; preds = %65
%84 = getelementptr inbounds i8, i8* %38, i64 1
store i8 10, i8* %38
%85 = getelementptr inbounds i8, i8* %37, i64 2
br label %163
86: ; preds = %65
%87 = getelementptr inbounds i8, i8* %38, i64 1
store i8 9, i8* %38
%88 = getelementptr inbounds i8, i8* %37, i64 2
br label %163
89: ; preds = %65
%90 = getelementptr inbounds i8, i8* %38, i64 1
store i8 11, i8* %38
%91 = getelementptr inbounds i8, i8* %37, i64 2
br label %163
92: ; preds = %65
%93 = getelementptr inbounds i8, i8* %38, i64 1
store i8 8, i8* %38
%94 = getelementptr inbounds i8, i8* %37, i64 2
br label %163
95: ; preds = %65
%96 = getelementptr inbounds i8, i8* %38, i64 1
store i8 13, i8* %38
%97 = getelementptr inbounds i8, i8* %37, i64 2
br label %163
98: ; preds = %65
%99 = getelementptr inbounds i8, i8* %38, i64 1
store i8 12, i8* %38
%100 = getelementptr inbounds i8, i8* %37, i64 2
br label %163
101: ; preds = %65
%102 = getelementptr inbounds i8, i8* %38, i64 1
store i8 92, i8* %38
%103 = getelementptr inbounds i8, i8* %37, i64 2
br label %163
104: ; preds = %65
%105 = icmp eq i8 %66, %2
%106 = select i1 %34, i1 %105, i1 false
br i1 %106, label %107, label %110
107: ; preds = %104
%108 = getelementptr inbounds i8, i8* %37, i64 2
%109 = getelementptr inbounds i8, i8* %38, i64 1
store i8 %2, i8* %38
br label %163
110: ; preds = %104
%111 = tail call i32 @isdigit(i8 zeroext %66)
%112 = icmp eq i32 %111, 0
br i1 %112, label %159, label %113
113: ; preds = %110
store i8 0, i8* %38
%114 = load i8, i8* %64
%115 = tail call i32 @isdigit(i8 zeroext %114)
%116 = icmp eq i32 %115, 0
br i1 %116, label %163, label %117
117: ; preds = %113
%118 = load i8, i8* %64
%119 = icmp sgt i8 %118, 55
br i1 %119, label %120, label %122
120: ; preds = %117
%121 = tail call i32 @warning(i8* %64, i8* getelementptr inbounds ([30 x i8], [30 x i8]* @.str.3, i64 0, i64 0))
br label %122
122: ; preds = %120, %117
%123 = load i8, i8* %38
%124 = shl i8 %123, 3
store i8 %124, i8* %38
%125 = load i8, i8* %64
%126 = add i8 %124, -48
%127 = add i8 %126, %125
store i8 %127, i8* %38
%128 = getelementptr inbounds i8, i8* %37, i64 2
%129 = load i8, i8* %128
%130 = tail call i32 @isdigit(i8 zeroext %129)
%131 = icmp eq i32 %130, 0
br i1 %131, label %163, label %132
132: ; preds = %122
%133 = load i8, i8* %128
%134 = icmp sgt i8 %133, 55
br i1 %134, label %135, label %137
135: ; preds = %132
%136 = tail call i32 @warning(i8* %128, i8* getelementptr inbounds ([30 x i8], [30 x i8]* @.str.3, i64 0, i64 0))
br label %137
137: ; preds = %135, %132
%138 = load i8, i8* %38
%139 = shl i8 %138, 3
store i8 %139, i8* %38
%140 = load i8, i8* %128
%141 = add i8 %139, -48
%142 = add i8 %141, %140
store i8 %142, i8* %38
%143 = getelementptr inbounds i8, i8* %37, i64 3
%144 = load i8, i8* %143
%145 = tail call i32 @isdigit(i8 zeroext %144)
%146 = icmp eq i32 %145, 0
br i1 %146, label %163, label %147
147: ; preds = %137
%148 = load i8, i8* %143
%149 = icmp sgt i8 %148, 55
br i1 %149, label %150, label %152
150: ; preds = %147
%151 = tail call i32 @warning(i8* %143, i8* getelementptr inbounds ([30 x i8], [30 x i8]* @.str.3, i64 0, i64 0))
br label %152
152: ; preds = %150, %147
%153 = load i8, i8* %38
%154 = shl i8 %153, 3
store i8 %154, i8* %38
%155 = load i8, i8* %143
%156 = add i8 %154, -48
%157 = add i8 %156, %155
store i8 %157, i8* %38
%158 = getelementptr inbounds i8, i8* %37, i64 4
br label %163
159: ; preds = %110
%160 = tail call i32 @warning(i8* %64, i8* getelementptr inbounds ([29 x i8], [29 x i8]* @.str.4, i64 0, i64 0))
br label %163
161: ; preds = %62
%162 = getelementptr inbounds i8, i8* %38, i64 1
store i8 %36, i8* %38
br label %163
163: ; preds = %113, %122, %137, %152, %58, %161, %107, %159, %101, %98, %95, %92, %89, %86, %83, %73
%164 = phi i32 [ 0, %58 ], [ %39, %107 ], [ %39, %159 ], [ %39, %101 ], [ %39, %98 ], [ %39, %95 ], [ %39, %92 ], [ %39, %89 ], [ %39, %86 ], [ %39, %83 ], [ %39, %73 ], [ %39, %161 ], [ %39, %152 ], [ %39, %137 ], [ %39, %122 ], [ %39, %113 ]
%165 = phi i8* [ %61, %58 ], [ %109, %107 ], [ %38, %159 ], [ %102, %101 ], [ %99, %98 ], [ %96, %95 ], [ %93, %92 ], [ %90, %89 ], [ %87, %86 ], [ %84, %83 ], [ %82, %73 ], [ %162, %161 ], [ %38, %152 ], [ %38, %137 ], [ %38, %122 ], [ %38, %113 ]
%166 = phi i8* [ %43, %58 ], [ %108, %107 ], [ %64, %159 ], [ %103, %101 ], [ %100, %98 ], [ %97, %95 ], [ %94, %92 ], [ %91, %89 ], [ %88, %86 ], [ %85, %83 ], [ %69, %73 ], [ %64, %161 ], [ %158, %152 ], [ %143, %137 ], [ %128, %122 ], [ %64, %113 ]
%167 = load i8, i8* %166
%168 = icmp eq i8 %167, 0
br i1 %168, label %169, label %35
169: ; preds = %163, %29
%170 = phi i32 [ %12, %29 ], [ %164, %163 ]
%171 = phi i8* [ %30, %29 ], [ %165, %163 ]
%172 = phi i8* [ %13, %29 ], [ %166, %163 ]
%173 = icmp eq i32 %170, 0
br i1 %173, label %176, label %174
174: ; preds = %169
%175 = tail call i32 @warning(i8* %172, i8* getelementptr inbounds ([38 x i8], [38 x i8]* @.str.5, i64 0, i64 0))
br label %176
176: ; preds = %45, %56, %53, %174, %169
%177 = phi i8* [ %38, %56 ], [ %38, %53 ], [ %171, %174 ], [ %171, %169 ], [ %38, %45 ]
store i8 0, i8* %177
%178 = load i8*, i8** @getmsg.msg
ret i8* %178
}