#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 uint8_t;

/* Variables and functions */
const char *mfsstrerr(uint8_t status) {
  static const char *errtab[] = {
      "OK",
      "Operation not permitted",
      "Not a directory",
      "No such file or directory",
      "Permission denied",
      "File exists",
      "Invalid argument",
      "Directory not empty",
      "Chunk lost",
      "Out of memory",
      "Index too big",
      "Chunk locked",
      "No chunk servers",
      "No such chunk",
      "Chunk is busy",
      "Incorrect register BLOB",
      "None of chunk servers performed requested operation",
      "File not opened",
      "Write not started",
      "Wrong chunk version",
      "Chunk already exists",
      "No space left",
      "IO error",
      "Incorrect block number",
      "Incorrect size",
      "Incorrect offset",
      "Can't connect",
      "Incorrect chunk id",
      "Disconnected",
      "CRC error",
      "Operation delayed",
      "Can't create path",
      "Data mismatch",
      "Read-only file system",
      "Quota exceeded",
      "Bad session id",
      "Password is needed",
      "Incorrect password",
      "Attribute not found",
      "Operation not supported",
      "Result too large",
      "Entity not found",
      "Entity is active",
      "Chunkserver not present",
      "Waiting on lock",
      "Resource temporarily unavailable",
      "Interrupted system call",
      "Operation canceled",
      "No such file or directory (not cacheable)",
      "Unknown MFS error"};
  if (status > 49) {
    status = 49;
  }
  return errtab[status];
}


x86 assembly (clang, -O0):
<mfsstrerr>:
push   %rbp
mov    %rsp,%rbp
mov    %edi,-0x4(%rbp)
cmpl   $0x31,-0x4(%rbp)
jle    1118 <mfsstrerr+0x18>
movl   $0x31,-0x4(%rbp)
movslq -0x4(%rbp),%rcx
lea    0x2f0d(%rip),%rax
mov    (%rax,%rcx,8),%rax
pop    %rbp
ret

x86 assembly (clang, -O2):
<mfsstrerr>:
cmp    $0x31,%edi
mov    $0x31,%eax
cmovl  %edi,%eax
cltq
lea    0xeec(%rip),%rcx
movslq (%rcx,%rax,4),%rax
add    %rcx,%rax
ret

LLVM IR (-O0):
@mfsstrerr.errtab = internal global [50 x i8*] [i8* getelementptr inbounds ([3 x i8], [3 x i8]* @.str, i32 0, i32 0), i8* getelementptr inbounds ([24 x i8], [24 x i8]* @.str.1, i32 0, i32 0), i8* getelementptr inbounds ([16 x i8], [16 x i8]* @.str.2, i32 0, i32 0), i8* getelementptr inbounds ([26 x i8], [26 x i8]* @.str.3, i32 0, i32 0), i8* getelementptr inbounds ([18 x i8], [18 x i8]* @.str.4, i32 0, i32 0), i8* getelementptr inbounds ([12 x i8], [12 x i8]* @.str.5, i32 0, i32 0), i8* getelementptr inbounds ([17 x i8], [17 x i8]* @.str.6, i32 0, i32 0), i8* getelementptr inbounds ([20 x i8], [20 x i8]* @.str.7, i32 0, i32 0), i8* getelementptr inbounds ([11 x i8], [11 x i8]* @.str.8, i32 0, i32 0), i8* getelementptr inbounds ([14 x i8], [14 x i8]* @.str.9, i32 0, i32 0), i8* getelementptr inbounds ([14 x i8], [14 x i8]* @.str.10, i32 0, i32 0), i8* getelementptr inbounds ([13 x i8], [13 x i8]* @.str.11, i32 0, i32 0), i8* getelementptr inbounds ([17 x i8], [17 x i8]* @.str.12, i32 0, i32 0), i8* getelementptr inbounds ([14 x i8], [14 x i8]* @.str.13, i32 0, i32 0), i8* getelementptr inbounds ([14 x i8], [14 x i8]* @.str.14, i32 0, i32 0), i8* getelementptr inbounds ([24 x i8], [24 x i8]* @.str.15, i32 0, i32 0), i8* getelementptr inbounds ([52 x i8], [52 x i8]* @.str.16, i32 0, i32 0), i8* getelementptr inbounds ([16 x i8], [16 x i8]* @.str.17, i32 0, i32 0), i8* getelementptr inbounds ([18 x i8], [18 x i8]* @.str.18, i32 0, i32 0), i8* getelementptr inbounds ([20 x i8], [20 x i8]* @.str.19, i32 0, i32 0), i8* getelementptr inbounds ([21 x i8], [21 x i8]* @.str.20, i32 0, i32 0), i8* getelementptr inbounds ([14 x i8], [14 x i8]* @.str.21, i32 0, i32 0), i8* getelementptr inbounds ([9 x i8], [9 x i8]* @.str.22, i32 0, i32 0), i8* getelementptr inbounds ([23 x i8], [23 x i8]* @.str.23, i32 0, i32 0), i8* getelementptr inbounds ([15 x i8], [15 x i8]* @.str.24, i32 0, i32 0), i8* getelementptr inbounds ([17 x i8], [17 x i8]* @.str.25, i32 0, i32 0), i8* getelementptr inbounds ([14 x i8], [14 x i8]* @.str.26, i32 0, i32 0), i8* getelementptr inbounds ([19 x i8], [19 x i8]* @.str.27, i32 0, i32 0), i8* getelementptr inbounds ([13 x i8], [13 x i8]* @.str.28, i32 0, i32 0), i8* getelementptr inbounds ([10 x i8], [10 x i8]* @.str.29, i32 0, i32 0), i8* getelementptr inbounds ([18 x i8], [18 x i8]* @.str.30, i32 0, i32 0), i8* getelementptr inbounds ([18 x i8], [18 x i8]* @.str.31, i32 0, i32 0), i8* getelementptr inbounds ([14 x i8], [14 x i8]* @.str.32, i32 0, i32 0), i8* getelementptr inbounds ([22 x i8], [22 x i8]* @.str.33, i32 0, i32 0), i8* getelementptr inbounds ([15 x i8], [15 x i8]* @.str.34, i32 0, i32 0), i8* getelementptr inbounds ([15 x i8], [15 x i8]* @.str.35, i32 0, i32 0), i8* getelementptr inbounds ([19 x i8], [19 x i8]* @.str.36, i32 0, i32 0), i8* getelementptr inbounds ([19 x i8], [19 x i8]* @.str.37, i32 0, i32 0), i8* getelementptr inbounds ([20 x i8], [20 x i8]* @.str.38, i32 0, i32 0), i8* getelementptr inbounds ([24 x i8], [24 x i8]* @.str.39, i32 0, i32 0), i8* getelementptr inbounds ([17 x i8], [17 x i8]* @.str.40, i32 0, i32 0), i8* getelementptr inbounds ([17 x i8], [17 x i8]* @.str.41, i32 0, i32 0), i8* getelementptr inbounds ([17 x i8], [17 x i8]* @.str.42, i32 0, i32 0), i8* getelementptr inbounds ([24 x i8], [24 x i8]* @.str.43, i32 0, i32 0), i8* getelementptr inbounds ([16 x i8], [16 x i8]* @.str.44, i32 0, i32 0), i8* getelementptr inbounds ([33 x i8], [33 x i8]* @.str.45, i32 0, i32 0), i8* getelementptr inbounds ([24 x i8], [24 x i8]* @.str.46, i32 0, i32 0), i8* getelementptr inbounds ([19 x i8], [19 x i8]* @.str.47, i32 0, i32 0), i8* getelementptr inbounds ([42 x i8], [42 x i8]* @.str.48, i32 0, i32 0), i8* getelementptr inbounds ([18 x i8], [18 x i8]* @.str.49, i32 0, i32 0)]
@.str = [3 x i8] c"OK\00"
@.str.1 = [24 x i8] c"Operation not permitted\00"
@.str.2 = [16 x i8] c"Not a directory\00"
@.str.3 = [26 x i8] c"No such file or directory\00"
@.str.4 = [18 x i8] c"Permission denied\00"
@.str.5 = [12 x i8] c"File exists\00"
@.str.6 = [17 x i8] c"Invalid argument\00"
@.str.7 = [20 x i8] c"Directory not empty\00"
@.str.8 = [11 x i8] c"Chunk lost\00"
@.str.9 = [14 x i8] c"Out of memory\00"
@.str.10 = [14 x i8] c"Index too big\00"
@.str.11 = [13 x i8] c"Chunk locked\00"
@.str.12 = [17 x i8] c"No chunk servers\00"
@.str.13 = [14 x i8] c"No such chunk\00"
@.str.14 = [14 x i8] c"Chunk is busy\00"
@.str.15 = [24 x i8] c"Incorrect register BLOB\00"
@.str.16 = [52 x i8] c"None of chunk servers performed requested operation\00"
@.str.17 = [16 x i8] c"File not opened\00"
@.str.18 = [18 x i8] c"Write not started\00"
@.str.19 = [20 x i8] c"Wrong chunk version\00"
@.str.20 = [21 x i8] c"Chunk already exists\00"
@.str.21 = [14 x i8] c"No space left\00"
@.str.22 = [9 x i8] c"IO error\00"
@.str.23 = [23 x i8] c"Incorrect block number\00"
@.str.24 = [15 x i8] c"Incorrect size\00"
@.str.25 = [17 x i8] c"Incorrect offset\00"
@.str.26 = [14 x i8] c"Can't connect\00"
@.str.27 = [19 x i8] c"Incorrect chunk id\00"
@.str.28 = [13 x i8] c"Disconnected\00"
@.str.29 = [10 x i8] c"CRC error\00"
@.str.30 = [18 x i8] c"Operation delayed\00"
@.str.31 = [18 x i8] c"Can't create path\00"
@.str.32 = [14 x i8] c"Data mismatch\00"
@.str.33 = [22 x i8] c"Read-only file system\00"
@.str.34 = [15 x i8] c"Quota exceeded\00"
@.str.35 = [15 x i8] c"Bad session id\00"
@.str.36 = [19 x i8] c"Password is needed\00"
@.str.37 = [19 x i8] c"Incorrect password\00"
@.str.38 = [20 x i8] c"Attribute not found\00"
@.str.39 = [24 x i8] c"Operation not supported\00"
@.str.40 = [17 x i8] c"Result too large\00"
@.str.41 = [17 x i8] c"Entity not found\00"
@.str.42 = [17 x i8] c"Entity is active\00"
@.str.43 = [24 x i8] c"Chunkserver not present\00"
@.str.44 = [16 x i8] c"Waiting on lock\00"
@.str.45 = [33 x i8] c"Resource temporarily unavailable\00"
@.str.46 = [24 x i8] c"Interrupted system call\00"
@.str.47 = [19 x i8] c"Operation canceled\00"
@.str.48 = [42 x i8] c"No such file or directory (not cacheable)\00"
@.str.49 = [18 x i8] c"Unknown MFS error\00"
define i8* @mfsstrerr(i32 %0) {
%2 = alloca i32
store i32 %0, i32* %2
%3 = load i32, i32* %2
%4 = icmp sgt i32 %3, 49
br i1 %4, label %5, label %6
5: ; preds = %1
store i32 49, i32* %2
br label %6
6: ; preds = %5, %1
%7 = load i32, i32* %2
%8 = sext i32 %7 to i64
%9 = getelementptr inbounds [50 x i8*], [50 x i8*]* @mfsstrerr.errtab, i64 0, i64 %8
%10 = load i8*, i8** %9
ret i8* %10
}

LLVM IR (-O2):
@reltable.mfsstrerr = internal unnamed_addr constant [50 x i32] [i32 trunc (i64 sub (i64 ptrtoint ([3 x i8]* @.str to i64), i64 ptrtoint ([50 x i32]* @reltable.mfsstrerr to i64)) to i32), i32 trunc (i64 sub (i64 ptrtoint ([24 x i8]* @.str.1 to i64), i64 ptrtoint ([50 x i32]* @reltable.mfsstrerr to i64)) to i32), i32 trunc (i64 sub (i64 ptrtoint ([16 x i8]* @.str.2 to i64), i64 ptrtoint ([50 x i32]* @reltable.mfsstrerr to i64)) to i32), i32 trunc (i64 sub (i64 ptrtoint ([26 x i8]* @.str.3 to i64), i64 ptrtoint ([50 x i32]* @reltable.mfsstrerr to i64)) to i32), i32 trunc (i64 sub (i64 ptrtoint ([18 x i8]* @.str.4 to i64), i64 ptrtoint ([50 x i32]* @reltable.mfsstrerr to i64)) to i32), i32 trunc (i64 sub (i64 ptrtoint ([12 x i8]* @.str.5 to i64), i64 ptrtoint ([50 x i32]* @reltable.mfsstrerr to i64)) to i32), i32 trunc (i64 sub (i64 ptrtoint ([17 x i8]* @.str.6 to i64), i64 ptrtoint ([50 x i32]* @reltable.mfsstrerr to i64)) to i32), i32 trunc (i64 sub (i64 ptrtoint ([20 x i8]* @.str.7 to i64), i64 ptrtoint ([50 x i32]* @reltable.mfsstrerr to i64)) to i32), i32 trunc (i64 sub (i64 ptrtoint ([11 x i8]* @.str.8 to i64), i64 ptrtoint ([50 x i32]* @reltable.mfsstrerr to i64)) to i32), i32 trunc (i64 sub (i64 ptrtoint ([14 x i8]* @.str.9 to i64), i64 ptrtoint ([50 x i32]* @reltable.mfsstrerr to i64)) to i32), i32 trunc (i64 sub (i64 ptrtoint ([14 x i8]* @.str.10 to i64), i64 ptrtoint ([50 x i32]* @reltable.mfsstrerr to i64)) to i32), i32 trunc (i64 sub (i64 ptrtoint ([13 x i8]* @.str.11 to i64), i64 ptrtoint ([50 x i32]* @reltable.mfsstrerr to i64)) to i32), i32 trunc (i64 sub (i64 ptrtoint ([17 x i8]* @.str.12 to i64), i64 ptrtoint ([50 x i32]* @reltable.mfsstrerr to i64)) to i32), i32 trunc (i64 sub (i64 ptrtoint ([14 x i8]* @.str.13 to i64), i64 ptrtoint ([50 x i32]* @reltable.mfsstrerr to i64)) to i32), i32 trunc (i64 sub (i64 ptrtoint ([14 x i8]* @.str.14 to i64), i64 ptrtoint ([50 x i32]* @reltable.mfsstrerr to i64)) to i32), i32 trunc (i64 sub (i64 ptrtoint ([24 x i8]* @.str.15 to i64), i64 ptrtoint ([50 x i32]* @reltable.mfsstrerr to i64)) to i32), i32 trunc (i64 sub (i64 ptrtoint ([52 x i8]* @.str.16 to i64), i64 ptrtoint ([50 x i32]* @reltable.mfsstrerr to i64)) to i32), i32 trunc (i64 sub (i64 ptrtoint ([16 x i8]* @.str.17 to i64), i64 ptrtoint ([50 x i32]* @reltable.mfsstrerr to i64)) to i32), i32 trunc (i64 sub (i64 ptrtoint ([18 x i8]* @.str.18 to i64), i64 ptrtoint ([50 x i32]* @reltable.mfsstrerr to i64)) to i32), i32 trunc (i64 sub (i64 ptrtoint ([20 x i8]* @.str.19 to i64), i64 ptrtoint ([50 x i32]* @reltable.mfsstrerr to i64)) to i32), i32 trunc (i64 sub (i64 ptrtoint ([21 x i8]* @.str.20 to i64), i64 ptrtoint ([50 x i32]* @reltable.mfsstrerr to i64)) to i32), i32 trunc (i64 sub (i64 ptrtoint ([14 x i8]* @.str.21 to i64), i64 ptrtoint ([50 x i32]* @reltable.mfsstrerr to i64)) to i32), i32 trunc (i64 sub (i64 ptrtoint ([9 x i8]* @.str.22 to i64), i64 ptrtoint ([50 x i32]* @reltable.mfsstrerr to i64)) to i32), i32 trunc (i64 sub (i64 ptrtoint ([23 x i8]* @.str.23 to i64), i64 ptrtoint ([50 x i32]* @reltable.mfsstrerr to i64)) to i32), i32 trunc (i64 sub (i64 ptrtoint ([15 x i8]* @.str.24 to i64), i64 ptrtoint ([50 x i32]* @reltable.mfsstrerr to i64)) to i32), i32 trunc (i64 sub (i64 ptrtoint ([17 x i8]* @.str.25 to i64), i64 ptrtoint ([50 x i32]* @reltable.mfsstrerr to i64)) to i32), i32 trunc (i64 sub (i64 ptrtoint ([14 x i8]* @.str.26 to i64), i64 ptrtoint ([50 x i32]* @reltable.mfsstrerr to i64)) to i32), i32 trunc (i64 sub (i64 ptrtoint ([19 x i8]* @.str.27 to i64), i64 ptrtoint ([50 x i32]* @reltable.mfsstrerr to i64)) to i32), i32 trunc (i64 sub (i64 ptrtoint ([13 x i8]* @.str.28 to i64), i64 ptrtoint ([50 x i32]* @reltable.mfsstrerr to i64)) to i32), i32 trunc (i64 sub (i64 ptrtoint ([10 x i8]* @.str.29 to i64), i64 ptrtoint ([50 x i32]* @reltable.mfsstrerr to i64)) to i32), i32 trunc (i64 sub (i64 ptrtoint ([18 x i8]* @.str.30 to i64), i64 ptrtoint ([50 x i32]* @reltable.mfsstrerr to i64)) to i32), i32 trunc (i64 sub (i64 ptrtoint ([18 x i8]* @.str.31 to i64), i64 ptrtoint ([50 x i32]* @reltable.mfsstrerr to i64)) to i32), i32 trunc (i64 sub (i64 ptrtoint ([14 x i8]* @.str.32 to i64), i64 ptrtoint ([50 x i32]* @reltable.mfsstrerr to i64)) to i32), i32 trunc (i64 sub (i64 ptrtoint ([22 x i8]* @.str.33 to i64), i64 ptrtoint ([50 x i32]* @reltable.mfsstrerr to i64)) to i32), i32 trunc (i64 sub (i64 ptrtoint ([15 x i8]* @.str.34 to i64), i64 ptrtoint ([50 x i32]* @reltable.mfsstrerr to i64)) to i32), i32 trunc (i64 sub (i64 ptrtoint ([15 x i8]* @.str.35 to i64), i64 ptrtoint ([50 x i32]* @reltable.mfsstrerr to i64)) to i32), i32 trunc (i64 sub (i64 ptrtoint ([19 x i8]* @.str.36 to i64), i64 ptrtoint ([50 x i32]* @reltable.mfsstrerr to i64)) to i32), i32 trunc (i64 sub (i64 ptrtoint ([19 x i8]* @.str.37 to i64), i64 ptrtoint ([50 x i32]* @reltable.mfsstrerr to i64)) to i32), i32 trunc (i64 sub (i64 ptrtoint ([20 x i8]* @.str.38 to i64), i64 ptrtoint ([50 x i32]* @reltable.mfsstrerr to i64)) to i32), i32 trunc (i64 sub (i64 ptrtoint ([24 x i8]* @.str.39 to i64), i64 ptrtoint ([50 x i32]* @reltable.mfsstrerr to i64)) to i32), i32 trunc (i64 sub (i64 ptrtoint ([17 x i8]* @.str.40 to i64), i64 ptrtoint ([50 x i32]* @reltable.mfsstrerr to i64)) to i32), i32 trunc (i64 sub (i64 ptrtoint ([17 x i8]* @.str.41 to i64), i64 ptrtoint ([50 x i32]* @reltable.mfsstrerr to i64)) to i32), i32 trunc (i64 sub (i64 ptrtoint ([17 x i8]* @.str.42 to i64), i64 ptrtoint ([50 x i32]* @reltable.mfsstrerr to i64)) to i32), i32 trunc (i64 sub (i64 ptrtoint ([24 x i8]* @.str.43 to i64), i64 ptrtoint ([50 x i32]* @reltable.mfsstrerr to i64)) to i32), i32 trunc (i64 sub (i64 ptrtoint ([16 x i8]* @.str.44 to i64), i64 ptrtoint ([50 x i32]* @reltable.mfsstrerr to i64)) to i32), i32 trunc (i64 sub (i64 ptrtoint ([33 x i8]* @.str.45 to i64), i64 ptrtoint ([50 x i32]* @reltable.mfsstrerr to i64)) to i32), i32 trunc (i64 sub (i64 ptrtoint ([24 x i8]* @.str.46 to i64), i64 ptrtoint ([50 x i32]* @reltable.mfsstrerr to i64)) to i32), i32 trunc (i64 sub (i64 ptrtoint ([19 x i8]* @.str.47 to i64), i64 ptrtoint ([50 x i32]* @reltable.mfsstrerr to i64)) to i32), i32 trunc (i64 sub (i64 ptrtoint ([42 x i8]* @.str.48 to i64), i64 ptrtoint ([50 x i32]* @reltable.mfsstrerr to i64)) to i32), i32 trunc (i64 sub (i64 ptrtoint ([18 x i8]* @.str.49 to i64), i64 ptrtoint ([50 x i32]* @reltable.mfsstrerr to i64)) to i32)]
@.str = [3 x i8] c"OK\00"
@.str.1 = [24 x i8] c"Operation not permitted\00"
@.str.2 = [16 x i8] c"Not a directory\00"
@.str.3 = [26 x i8] c"No such file or directory\00"
@.str.4 = [18 x i8] c"Permission denied\00"
@.str.5 = [12 x i8] c"File exists\00"
@.str.6 = [17 x i8] c"Invalid argument\00"
@.str.7 = [20 x i8] c"Directory not empty\00"
@.str.8 = [11 x i8] c"Chunk lost\00"
@.str.9 = [14 x i8] c"Out of memory\00"
@.str.10 = [14 x i8] c"Index too big\00"
@.str.11 = [13 x i8] c"Chunk locked\00"
@.str.12 = [17 x i8] c"No chunk servers\00"
@.str.13 = [14 x i8] c"No such chunk\00"
@.str.14 = [14 x i8] c"Chunk is busy\00"
@.str.15 = [24 x i8] c"Incorrect register BLOB\00"
@.str.16 = [52 x i8] c"None of chunk servers performed requested operation\00"
@.str.17 = [16 x i8] c"File not opened\00"
@.str.18 = [18 x i8] c"Write not started\00"
@.str.19 = [20 x i8] c"Wrong chunk version\00"
@.str.20 = [21 x i8] c"Chunk already exists\00"
@.str.21 = [14 x i8] c"No space left\00"
@.str.22 = [9 x i8] c"IO error\00"
@.str.23 = [23 x i8] c"Incorrect block number\00"
@.str.24 = [15 x i8] c"Incorrect size\00"
@.str.25 = [17 x i8] c"Incorrect offset\00"
@.str.26 = [14 x i8] c"Can't connect\00"
@.str.27 = [19 x i8] c"Incorrect chunk id\00"
@.str.28 = [13 x i8] c"Disconnected\00"
@.str.29 = [10 x i8] c"CRC error\00"
@.str.30 = [18 x i8] c"Operation delayed\00"
@.str.31 = [18 x i8] c"Can't create path\00"
@.str.32 = [14 x i8] c"Data mismatch\00"
@.str.33 = [22 x i8] c"Read-only file system\00"
@.str.34 = [15 x i8] c"Quota exceeded\00"
@.str.35 = [15 x i8] c"Bad session id\00"
@.str.36 = [19 x i8] c"Password is needed\00"
@.str.37 = [19 x i8] c"Incorrect password\00"
@.str.38 = [20 x i8] c"Attribute not found\00"
@.str.39 = [24 x i8] c"Operation not supported\00"
@.str.40 = [17 x i8] c"Result too large\00"
@.str.41 = [17 x i8] c"Entity not found\00"
@.str.42 = [17 x i8] c"Entity is active\00"
@.str.43 = [24 x i8] c"Chunkserver not present\00"
@.str.44 = [16 x i8] c"Waiting on lock\00"
@.str.45 = [33 x i8] c"Resource temporarily unavailable\00"
@.str.46 = [24 x i8] c"Interrupted system call\00"
@.str.47 = [19 x i8] c"Operation canceled\00"
@.str.48 = [42 x i8] c"No such file or directory (not cacheable)\00"
@.str.49 = [18 x i8] c"Unknown MFS error\00"
define i8* @mfsstrerr(i32 %0) {
%2 = icmp slt i32 %0, 49
%3 = select i1 %2, i32 %0, i32 49
%4 = sext i32 %3 to i64
%5 = shl i64 %4, 2
%6 = call i8* @llvm.load.relative.i64(i8* bitcast ([50 x i32]* @reltable.mfsstrerr to i8*), i64 %5)
ret i8* %6
}