#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*/ marc;

/* Variables and functions */
int /*<<< orphan*/ strcasecmp(char *, char *);
int marc_findgenre(char *query) {
  char *marc[] = {
      "abstract or summary",
      "art original",
      "art reproduction",
      "article",
      "atlas",
      "autobiography",
      "bibliography",
      "biography",
      "book",
      "calendar",
      "catalog",
      "chart",
      "comic or graphic novel",
      "comic strip",
      "conference publication",
      "database",
      "dictionary",
      "diorama",
      "directory",
      "discography",
      "drama",
      "encyclopedia",
      "essay",
      "festschrift",
      "fiction",
      "filmography",
      "filmstrip",
      "finding aid",
      "flash card",
      "folktale",
      "font",
      "game",
      "government publication",
      "graphic",
      "globe",
      "handbook",
      "history",
      "humor, satire",
      "hymnal",
      "index",
      "instruction",
      "interview",
      "issue",
      "journal",
      "kit",
      "language instruction",
      "law report or digest",
      "legal article",
      "legal case and case notes",
      "legislation",
      "letter",
      "loose-leaf",
      "map",
      "memoir",
      "microscope slide",
      "model",
      "motion picture",
      "multivolume monograph",
      "newspaper",
      "novel",
      "numeric data",
      "offprint",
      "online system or service",
      "patent",
      "periodical",
      "picture",
      "poetry",
      "programmed text",
      "realia",
      "rehearsal",
      "remote sensing image",
      "reporting",
      "review",
      "series",
      "short story",
      "slide",
      "sound",
      "speech",
      "standard or specification",
      "statistics",
      "survey of literature",
      "technical drawing",
      "technical report",
      "thesis",
      "toy",
      "transparency",
      "treaty",
      "videorecording",
      "web site",
      "yearbook",
  };
  int nmarc = sizeof(marc) / sizeof(char *);
  int i;
  for (i = 0; i < nmarc; ++i) {
    if (!strcasecmp(query, marc[i]))
      return i;
  }
  return -1;
}


x86 assembly (clang, -O0):
<marc_findgenre>:
push   %rbp
mov    %rsp,%rbp
sub    $0x2f0,%rsp
mov    %rdi,-0x10(%rbp)
lea    -0x2e0(%rbp),%rdi
lea    0x2a13(%rip),%rsi
mov    $0x2d0,%edx
call   1040 <memcpy@plt>
movl   $0x5a,-0x2e4(%rbp)
movl   $0x0,-0x2e8(%rbp)
mov    -0x2e8(%rbp),%eax
cmp    -0x2e4(%rbp),%eax
jge    11b5 <marc_findgenre+0x95>
mov    -0x10(%rbp),%rdi
movslq -0x2e8(%rbp),%rax
mov    -0x2e0(%rbp,%rax,8),%rsi
ff
call   1030 <strcasecmp@plt>
cmp    $0x0,%eax
jne    119c <marc_findgenre+0x7c>
mov    -0x2e8(%rbp),%eax
mov    %eax,-0x4(%rbp)
jmp    11bc <marc_findgenre+0x9c>
jmp    11a1 <marc_findgenre+0x81>
mov    -0x2e8(%rbp),%eax
add    $0x1,%eax
mov    %eax,-0x2e8(%rbp)
jmp    115b <marc_findgenre+0x3b>
movl   $0xffffffff,-0x4(%rbp)
mov    -0x4(%rbp),%eax
add    $0x2f0,%rsp
pop    %rbp
ret

x86 assembly (clang, -O2):
<marc_findgenre>:
push   %r15
push   %r14
push   %r12
push   %rbx
push   %rax
mov    %rdi,%r14
lea    0x129e(%rip),%r15
xor    %r12d,%r12d
mov    %r15,%rbx
nopl   0x0(%rax,%rax,1)
movslq (%rbx),%rsi
add    %r15,%rsi
mov    %r14,%rdi
call   1030 <strcasecmp@plt>
test   %eax,%eax
je     1156 <marc_findgenre+0x46>
add    $0x1,%r12
add    $0x4,%rbx
cmp    $0x5a,%r12
jne    1130 <marc_findgenre+0x20>
mov    $0xffffffff,%r12d
mov    %r12d,%eax
add    $0x8,%rsp
pop    %rbx
pop    %r12
pop    %r14
pop    %r15
ret

LLVM IR (-O0):
@.str = [20 x i8] c"abstract or summary\00"
@.str.1 = [13 x i8] c"art original\00"
@.str.2 = [17 x i8] c"art reproduction\00"
@.str.3 = [8 x i8] c"article\00"
@.str.4 = [6 x i8] c"atlas\00"
@.str.5 = [14 x i8] c"autobiography\00"
@.str.6 = [13 x i8] c"bibliography\00"
@.str.7 = [10 x i8] c"biography\00"
@.str.8 = [5 x i8] c"book\00"
@.str.9 = [9 x i8] c"calendar\00"
@.str.10 = [8 x i8] c"catalog\00"
@.str.11 = [6 x i8] c"chart\00"
@.str.12 = [23 x i8] c"comic or graphic novel\00"
@.str.13 = [12 x i8] c"comic strip\00"
@.str.14 = [23 x i8] c"conference publication\00"
@.str.15 = [9 x i8] c"database\00"
@.str.16 = [11 x i8] c"dictionary\00"
@.str.17 = [8 x i8] c"diorama\00"
@.str.18 = [10 x i8] c"directory\00"
@.str.19 = [12 x i8] c"discography\00"
@.str.20 = [6 x i8] c"drama\00"
@.str.21 = [13 x i8] c"encyclopedia\00"
@.str.22 = [6 x i8] c"essay\00"
@.str.23 = [12 x i8] c"festschrift\00"
@.str.24 = [8 x i8] c"fiction\00"
@.str.25 = [12 x i8] c"filmography\00"
@.str.26 = [10 x i8] c"filmstrip\00"
@.str.27 = [12 x i8] c"finding aid\00"
@.str.28 = [11 x i8] c"flash card\00"
@.str.29 = [9 x i8] c"folktale\00"
@.str.30 = [5 x i8] c"font\00"
@.str.31 = [5 x i8] c"game\00"
@.str.32 = [23 x i8] c"government publication\00"
@.str.33 = [8 x i8] c"graphic\00"
@.str.34 = [6 x i8] c"globe\00"
@.str.35 = [9 x i8] c"handbook\00"
@.str.36 = [8 x i8] c"history\00"
@.str.37 = [14 x i8] c"humor, satire\00"
@.str.38 = [7 x i8] c"hymnal\00"
@.str.39 = [6 x i8] c"index\00"
@.str.40 = [12 x i8] c"instruction\00"
@.str.41 = [10 x i8] c"interview\00"
@.str.42 = [6 x i8] c"issue\00"
@.str.43 = [8 x i8] c"journal\00"
@.str.44 = [4 x i8] c"kit\00"
@.str.45 = [21 x i8] c"language instruction\00"
@.str.46 = [21 x i8] c"law report or digest\00"
@.str.47 = [14 x i8] c"legal article\00"
@.str.48 = [26 x i8] c"legal case and case notes\00"
@.str.49 = [12 x i8] c"legislation\00"
@.str.50 = [7 x i8] c"letter\00"
@.str.51 = [11 x i8] c"loose-leaf\00"
@.str.52 = [4 x i8] c"map\00"
@.str.53 = [7 x i8] c"memoir\00"
@.str.54 = [17 x i8] c"microscope slide\00"
@.str.55 = [6 x i8] c"model\00"
@.str.56 = [15 x i8] c"motion picture\00"
@.str.57 = [22 x i8] c"multivolume monograph\00"
@.str.58 = [10 x i8] c"newspaper\00"
@.str.59 = [6 x i8] c"novel\00"
@.str.60 = [13 x i8] c"numeric data\00"
@.str.61 = [9 x i8] c"offprint\00"
@.str.62 = [25 x i8] c"online system or service\00"
@.str.63 = [7 x i8] c"patent\00"
@.str.64 = [11 x i8] c"periodical\00"
@.str.65 = [8 x i8] c"picture\00"
@.str.66 = [7 x i8] c"poetry\00"
@.str.67 = [16 x i8] c"programmed text\00"
@.str.68 = [7 x i8] c"realia\00"
@.str.69 = [10 x i8] c"rehearsal\00"
@.str.70 = [21 x i8] c"remote sensing image\00"
@.str.71 = [10 x i8] c"reporting\00"
@.str.72 = [7 x i8] c"review\00"
@.str.73 = [7 x i8] c"series\00"
@.str.74 = [12 x i8] c"short story\00"
@.str.75 = [6 x i8] c"slide\00"
@.str.76 = [6 x i8] c"sound\00"
@.str.77 = [7 x i8] c"speech\00"
@.str.78 = [26 x i8] c"standard or specification\00"
@.str.79 = [11 x i8] c"statistics\00"
@.str.80 = [21 x i8] c"survey of literature\00"
@.str.81 = [18 x i8] c"technical drawing\00"
@.str.82 = [17 x i8] c"technical report\00"
@.str.83 = [7 x i8] c"thesis\00"
@.str.84 = [4 x i8] c"toy\00"
@.str.85 = [13 x i8] c"transparency\00"
@.str.86 = [7 x i8] c"treaty\00"
@.str.87 = [15 x i8] c"videorecording\00"
@.str.88 = [9 x i8] c"web site\00"
@.str.89 = [9 x i8] c"yearbook\00"
@__const.marc_findgenre.marc = [90 x i8*] [i8* getelementptr inbounds ([20 x i8], [20 x i8]* @.str, i32 0, i32 0), i8* getelementptr inbounds ([13 x i8], [13 x i8]* @.str.1, i32 0, i32 0), i8* getelementptr inbounds ([17 x i8], [17 x i8]* @.str.2, i32 0, i32 0), i8* getelementptr inbounds ([8 x i8], [8 x i8]* @.str.3, i32 0, i32 0), i8* getelementptr inbounds ([6 x i8], [6 x i8]* @.str.4, i32 0, i32 0), i8* getelementptr inbounds ([14 x i8], [14 x i8]* @.str.5, i32 0, i32 0), i8* getelementptr inbounds ([13 x i8], [13 x i8]* @.str.6, i32 0, i32 0), i8* getelementptr inbounds ([10 x i8], [10 x i8]* @.str.7, i32 0, i32 0), i8* getelementptr inbounds ([5 x i8], [5 x i8]* @.str.8, i32 0, i32 0), i8* getelementptr inbounds ([9 x i8], [9 x i8]* @.str.9, i32 0, i32 0), i8* getelementptr inbounds ([8 x i8], [8 x i8]* @.str.10, i32 0, i32 0), i8* getelementptr inbounds ([6 x i8], [6 x i8]* @.str.11, i32 0, i32 0), i8* getelementptr inbounds ([23 x i8], [23 x i8]* @.str.12, i32 0, i32 0), i8* getelementptr inbounds ([12 x i8], [12 x i8]* @.str.13, i32 0, i32 0), i8* getelementptr inbounds ([23 x i8], [23 x i8]* @.str.14, i32 0, i32 0), i8* getelementptr inbounds ([9 x i8], [9 x i8]* @.str.15, i32 0, i32 0), i8* getelementptr inbounds ([11 x i8], [11 x i8]* @.str.16, i32 0, i32 0), i8* getelementptr inbounds ([8 x i8], [8 x i8]* @.str.17, i32 0, i32 0), i8* getelementptr inbounds ([10 x i8], [10 x i8]* @.str.18, i32 0, i32 0), i8* getelementptr inbounds ([12 x i8], [12 x i8]* @.str.19, i32 0, i32 0), i8* getelementptr inbounds ([6 x i8], [6 x i8]* @.str.20, i32 0, i32 0), i8* getelementptr inbounds ([13 x i8], [13 x i8]* @.str.21, i32 0, i32 0), i8* getelementptr inbounds ([6 x i8], [6 x i8]* @.str.22, i32 0, i32 0), i8* getelementptr inbounds ([12 x i8], [12 x i8]* @.str.23, i32 0, i32 0), i8* getelementptr inbounds ([8 x i8], [8 x i8]* @.str.24, i32 0, i32 0), i8* getelementptr inbounds ([12 x i8], [12 x i8]* @.str.25, i32 0, i32 0), i8* getelementptr inbounds ([10 x i8], [10 x i8]* @.str.26, i32 0, i32 0), i8* getelementptr inbounds ([12 x i8], [12 x i8]* @.str.27, i32 0, i32 0), i8* getelementptr inbounds ([11 x i8], [11 x i8]* @.str.28, i32 0, i32 0), i8* getelementptr inbounds ([9 x i8], [9 x i8]* @.str.29, i32 0, i32 0), i8* getelementptr inbounds ([5 x i8], [5 x i8]* @.str.30, i32 0, i32 0), i8* getelementptr inbounds ([5 x i8], [5 x i8]* @.str.31, i32 0, i32 0), i8* getelementptr inbounds ([23 x i8], [23 x i8]* @.str.32, i32 0, i32 0), i8* getelementptr inbounds ([8 x i8], [8 x i8]* @.str.33, i32 0, i32 0), i8* getelementptr inbounds ([6 x i8], [6 x i8]* @.str.34, i32 0, i32 0), i8* getelementptr inbounds ([9 x i8], [9 x i8]* @.str.35, i32 0, i32 0), i8* getelementptr inbounds ([8 x i8], [8 x i8]* @.str.36, i32 0, i32 0), i8* getelementptr inbounds ([14 x i8], [14 x i8]* @.str.37, i32 0, i32 0), i8* getelementptr inbounds ([7 x i8], [7 x i8]* @.str.38, i32 0, i32 0), i8* getelementptr inbounds ([6 x i8], [6 x i8]* @.str.39, i32 0, i32 0), i8* getelementptr inbounds ([12 x i8], [12 x i8]* @.str.40, i32 0, i32 0), i8* getelementptr inbounds ([10 x i8], [10 x i8]* @.str.41, i32 0, i32 0), i8* getelementptr inbounds ([6 x i8], [6 x i8]* @.str.42, i32 0, i32 0), i8* getelementptr inbounds ([8 x i8], [8 x i8]* @.str.43, i32 0, i32 0), i8* getelementptr inbounds ([4 x i8], [4 x i8]* @.str.44, i32 0, i32 0), i8* getelementptr inbounds ([21 x i8], [21 x i8]* @.str.45, i32 0, i32 0), i8* getelementptr inbounds ([21 x i8], [21 x i8]* @.str.46, i32 0, i32 0), i8* getelementptr inbounds ([14 x i8], [14 x i8]* @.str.47, i32 0, i32 0), i8* getelementptr inbounds ([26 x i8], [26 x i8]* @.str.48, i32 0, i32 0), i8* getelementptr inbounds ([12 x i8], [12 x i8]* @.str.49, i32 0, i32 0), i8* getelementptr inbounds ([7 x i8], [7 x i8]* @.str.50, i32 0, i32 0), i8* getelementptr inbounds ([11 x i8], [11 x i8]* @.str.51, i32 0, i32 0), i8* getelementptr inbounds ([4 x i8], [4 x i8]* @.str.52, i32 0, i32 0), i8* getelementptr inbounds ([7 x i8], [7 x i8]* @.str.53, i32 0, i32 0), i8* getelementptr inbounds ([17 x i8], [17 x i8]* @.str.54, i32 0, i32 0), i8* getelementptr inbounds ([6 x i8], [6 x i8]* @.str.55, i32 0, i32 0), i8* getelementptr inbounds ([15 x i8], [15 x i8]* @.str.56, i32 0, i32 0), i8* getelementptr inbounds ([22 x i8], [22 x i8]* @.str.57, i32 0, i32 0), i8* getelementptr inbounds ([10 x i8], [10 x i8]* @.str.58, i32 0, i32 0), i8* getelementptr inbounds ([6 x i8], [6 x i8]* @.str.59, i32 0, i32 0), i8* getelementptr inbounds ([13 x i8], [13 x i8]* @.str.60, i32 0, i32 0), i8* getelementptr inbounds ([9 x i8], [9 x i8]* @.str.61, i32 0, i32 0), i8* getelementptr inbounds ([25 x i8], [25 x i8]* @.str.62, i32 0, i32 0), i8* getelementptr inbounds ([7 x i8], [7 x i8]* @.str.63, i32 0, i32 0), i8* getelementptr inbounds ([11 x i8], [11 x i8]* @.str.64, i32 0, i32 0), i8* getelementptr inbounds ([8 x i8], [8 x i8]* @.str.65, i32 0, i32 0), i8* getelementptr inbounds ([7 x i8], [7 x i8]* @.str.66, i32 0, i32 0), i8* getelementptr inbounds ([16 x i8], [16 x i8]* @.str.67, i32 0, i32 0), i8* getelementptr inbounds ([7 x i8], [7 x i8]* @.str.68, i32 0, i32 0), i8* getelementptr inbounds ([10 x i8], [10 x i8]* @.str.69, i32 0, i32 0), i8* getelementptr inbounds ([21 x i8], [21 x i8]* @.str.70, i32 0, i32 0), i8* getelementptr inbounds ([10 x i8], [10 x i8]* @.str.71, i32 0, i32 0), i8* getelementptr inbounds ([7 x i8], [7 x i8]* @.str.72, i32 0, i32 0), i8* getelementptr inbounds ([7 x i8], [7 x i8]* @.str.73, i32 0, i32 0), i8* getelementptr inbounds ([12 x i8], [12 x i8]* @.str.74, i32 0, i32 0), i8* getelementptr inbounds ([6 x i8], [6 x i8]* @.str.75, i32 0, i32 0), i8* getelementptr inbounds ([6 x i8], [6 x i8]* @.str.76, i32 0, i32 0), i8* getelementptr inbounds ([7 x i8], [7 x i8]* @.str.77, i32 0, i32 0), i8* getelementptr inbounds ([26 x i8], [26 x i8]* @.str.78, i32 0, i32 0), i8* getelementptr inbounds ([11 x i8], [11 x i8]* @.str.79, i32 0, i32 0), i8* getelementptr inbounds ([21 x i8], [21 x i8]* @.str.80, i32 0, i32 0), i8* getelementptr inbounds ([18 x i8], [18 x i8]* @.str.81, i32 0, i32 0), i8* getelementptr inbounds ([17 x i8], [17 x i8]* @.str.82, i32 0, i32 0), i8* getelementptr inbounds ([7 x i8], [7 x i8]* @.str.83, i32 0, i32 0), i8* getelementptr inbounds ([4 x i8], [4 x i8]* @.str.84, i32 0, i32 0), i8* getelementptr inbounds ([13 x i8], [13 x i8]* @.str.85, i32 0, i32 0), i8* getelementptr inbounds ([7 x i8], [7 x i8]* @.str.86, i32 0, i32 0), i8* getelementptr inbounds ([15 x i8], [15 x i8]* @.str.87, i32 0, i32 0), i8* getelementptr inbounds ([9 x i8], [9 x i8]* @.str.88, i32 0, i32 0), i8* getelementptr inbounds ([9 x i8], [9 x i8]* @.str.89, i32 0, i32 0)]
define i32 @marc_findgenre(i8* %0) {
%2 = alloca i32
%3 = alloca i8*
%4 = alloca [90 x i8*]
%5 = alloca i32
%6 = alloca i32
store i8* %0, i8** %3
%7 = bitcast [90 x i8*]* %4 to i8*
store i32 90, i32* %5
store i32 0, i32* %6
br label %8
8: ; preds = %23, %1
%9 = load i32, i32* %6
%10 = load i32, i32* %5
%11 = icmp slt i32 %9, %10
br i1 %11, label %12, label %26
12: ; preds = %8
%13 = load i8*, i8** %3
%14 = load i32, i32* %6
%15 = sext i32 %14 to i64
%16 = getelementptr inbounds [90 x i8*], [90 x i8*]* %4, i64 0, i64 %15
%17 = load i8*, i8** %16
%18 = call i32 @strcasecmp(i8* %13, i8* %17)
%19 = icmp ne i32 %18, 0
br i1 %19, label %22, label %20
20: ; preds = %12
%21 = load i32, i32* %6
store i32 %21, i32* %2
br label %27
22: ; preds = %12
br label %23
23: ; preds = %22
%24 = load i32, i32* %6
%25 = add nsw i32 %24, 1
store i32 %25, i32* %6
br label %8
26: ; preds = %8
store i32 -1, i32* %2
br label %27
27: ; preds = %26, %20
%28 = load i32, i32* %2
ret i32 %28
}

LLVM IR (-O2):
@.str = [20 x i8] c"abstract or summary\00"
@.str.1 = [13 x i8] c"art original\00"
@.str.2 = [17 x i8] c"art reproduction\00"
@.str.3 = [8 x i8] c"article\00"
@.str.4 = [6 x i8] c"atlas\00"
@.str.5 = [14 x i8] c"autobiography\00"
@.str.6 = [13 x i8] c"bibliography\00"
@.str.7 = [10 x i8] c"biography\00"
@.str.8 = [5 x i8] c"book\00"
@.str.9 = [9 x i8] c"calendar\00"
@.str.10 = [8 x i8] c"catalog\00"
@.str.11 = [6 x i8] c"chart\00"
@.str.12 = [23 x i8] c"comic or graphic novel\00"
@.str.13 = [12 x i8] c"comic strip\00"
@.str.14 = [23 x i8] c"conference publication\00"
@.str.15 = [9 x i8] c"database\00"
@.str.16 = [11 x i8] c"dictionary\00"
@.str.17 = [8 x i8] c"diorama\00"
@.str.18 = [10 x i8] c"directory\00"
@.str.19 = [12 x i8] c"discography\00"
@.str.20 = [6 x i8] c"drama\00"
@.str.21 = [13 x i8] c"encyclopedia\00"
@.str.22 = [6 x i8] c"essay\00"
@.str.23 = [12 x i8] c"festschrift\00"
@.str.24 = [8 x i8] c"fiction\00"
@.str.25 = [12 x i8] c"filmography\00"
@.str.26 = [10 x i8] c"filmstrip\00"
@.str.27 = [12 x i8] c"finding aid\00"
@.str.28 = [11 x i8] c"flash card\00"
@.str.29 = [9 x i8] c"folktale\00"
@.str.30 = [5 x i8] c"font\00"
@.str.31 = [5 x i8] c"game\00"
@.str.32 = [23 x i8] c"government publication\00"
@.str.33 = [8 x i8] c"graphic\00"
@.str.34 = [6 x i8] c"globe\00"
@.str.35 = [9 x i8] c"handbook\00"
@.str.36 = [8 x i8] c"history\00"
@.str.37 = [14 x i8] c"humor, satire\00"
@.str.38 = [7 x i8] c"hymnal\00"
@.str.39 = [6 x i8] c"index\00"
@.str.40 = [12 x i8] c"instruction\00"
@.str.41 = [10 x i8] c"interview\00"
@.str.42 = [6 x i8] c"issue\00"
@.str.43 = [8 x i8] c"journal\00"
@.str.44 = [4 x i8] c"kit\00"
@.str.45 = [21 x i8] c"language instruction\00"
@.str.46 = [21 x i8] c"law report or digest\00"
@.str.47 = [14 x i8] c"legal article\00"
@.str.48 = [26 x i8] c"legal case and case notes\00"
@.str.49 = [12 x i8] c"legislation\00"
@.str.50 = [7 x i8] c"letter\00"
@.str.51 = [11 x i8] c"loose-leaf\00"
@.str.52 = [4 x i8] c"map\00"
@.str.53 = [7 x i8] c"memoir\00"
@.str.54 = [17 x i8] c"microscope slide\00"
@.str.55 = [6 x i8] c"model\00"
@.str.56 = [15 x i8] c"motion picture\00"
@.str.57 = [22 x i8] c"multivolume monograph\00"
@.str.58 = [10 x i8] c"newspaper\00"
@.str.59 = [6 x i8] c"novel\00"
@.str.60 = [13 x i8] c"numeric data\00"
@.str.61 = [9 x i8] c"offprint\00"
@.str.62 = [25 x i8] c"online system or service\00"
@.str.63 = [7 x i8] c"patent\00"
@.str.64 = [11 x i8] c"periodical\00"
@.str.65 = [8 x i8] c"picture\00"
@.str.66 = [7 x i8] c"poetry\00"
@.str.67 = [16 x i8] c"programmed text\00"
@.str.68 = [7 x i8] c"realia\00"
@.str.69 = [10 x i8] c"rehearsal\00"
@.str.70 = [21 x i8] c"remote sensing image\00"
@.str.71 = [10 x i8] c"reporting\00"
@.str.72 = [7 x i8] c"review\00"
@.str.73 = [7 x i8] c"series\00"
@.str.74 = [12 x i8] c"short story\00"
@.str.75 = [6 x i8] c"slide\00"
@.str.76 = [6 x i8] c"sound\00"
@.str.77 = [7 x i8] c"speech\00"
@.str.78 = [26 x i8] c"standard or specification\00"
@.str.79 = [11 x i8] c"statistics\00"
@.str.80 = [21 x i8] c"survey of literature\00"
@.str.81 = [18 x i8] c"technical drawing\00"
@.str.82 = [17 x i8] c"technical report\00"
@.str.83 = [7 x i8] c"thesis\00"
@.str.84 = [4 x i8] c"toy\00"
@.str.85 = [13 x i8] c"transparency\00"
@.str.86 = [7 x i8] c"treaty\00"
@.str.87 = [15 x i8] c"videorecording\00"
@.str.88 = [9 x i8] c"web site\00"
@.str.89 = [9 x i8] c"yearbook\00"
@reltable.marc_findgenre = [90 x i32] [i32 trunc (i64 sub (i64 ptrtoint ([20 x i8]* @.str to i64), i64 ptrtoint ([90 x i32]* @reltable.marc_findgenre to i64)) to i32), i32 trunc (i64 sub (i64 ptrtoint ([13 x i8]* @.str.1 to i64), i64 ptrtoint ([90 x i32]* @reltable.marc_findgenre to i64)) to i32), i32 trunc (i64 sub (i64 ptrtoint ([17 x i8]* @.str.2 to i64), i64 ptrtoint ([90 x i32]* @reltable.marc_findgenre to i64)) to i32), i32 trunc (i64 sub (i64 ptrtoint ([8 x i8]* @.str.3 to i64), i64 ptrtoint ([90 x i32]* @reltable.marc_findgenre to i64)) to i32), i32 trunc (i64 sub (i64 ptrtoint ([6 x i8]* @.str.4 to i64), i64 ptrtoint ([90 x i32]* @reltable.marc_findgenre to i64)) to i32), i32 trunc (i64 sub (i64 ptrtoint ([14 x i8]* @.str.5 to i64), i64 ptrtoint ([90 x i32]* @reltable.marc_findgenre to i64)) to i32), i32 trunc (i64 sub (i64 ptrtoint ([13 x i8]* @.str.6 to i64), i64 ptrtoint ([90 x i32]* @reltable.marc_findgenre to i64)) to i32), i32 trunc (i64 sub (i64 ptrtoint ([10 x i8]* @.str.7 to i64), i64 ptrtoint ([90 x i32]* @reltable.marc_findgenre to i64)) to i32), i32 trunc (i64 sub (i64 ptrtoint ([5 x i8]* @.str.8 to i64), i64 ptrtoint ([90 x i32]* @reltable.marc_findgenre to i64)) to i32), i32 trunc (i64 sub (i64 ptrtoint ([9 x i8]* @.str.9 to i64), i64 ptrtoint ([90 x i32]* @reltable.marc_findgenre to i64)) to i32), i32 trunc (i64 sub (i64 ptrtoint ([8 x i8]* @.str.10 to i64), i64 ptrtoint ([90 x i32]* @reltable.marc_findgenre to i64)) to i32), i32 trunc (i64 sub (i64 ptrtoint ([6 x i8]* @.str.11 to i64), i64 ptrtoint ([90 x i32]* @reltable.marc_findgenre to i64)) to i32), i32 trunc (i64 sub (i64 ptrtoint ([23 x i8]* @.str.12 to i64), i64 ptrtoint ([90 x i32]* @reltable.marc_findgenre to i64)) to i32), i32 trunc (i64 sub (i64 ptrtoint ([12 x i8]* @.str.13 to i64), i64 ptrtoint ([90 x i32]* @reltable.marc_findgenre to i64)) to i32), i32 trunc (i64 sub (i64 ptrtoint ([23 x i8]* @.str.14 to i64), i64 ptrtoint ([90 x i32]* @reltable.marc_findgenre to i64)) to i32), i32 trunc (i64 sub (i64 ptrtoint ([9 x i8]* @.str.15 to i64), i64 ptrtoint ([90 x i32]* @reltable.marc_findgenre to i64)) to i32), i32 trunc (i64 sub (i64 ptrtoint ([11 x i8]* @.str.16 to i64), i64 ptrtoint ([90 x i32]* @reltable.marc_findgenre to i64)) to i32), i32 trunc (i64 sub (i64 ptrtoint ([8 x i8]* @.str.17 to i64), i64 ptrtoint ([90 x i32]* @reltable.marc_findgenre to i64)) to i32), i32 trunc (i64 sub (i64 ptrtoint ([10 x i8]* @.str.18 to i64), i64 ptrtoint ([90 x i32]* @reltable.marc_findgenre to i64)) to i32), i32 trunc (i64 sub (i64 ptrtoint ([12 x i8]* @.str.19 to i64), i64 ptrtoint ([90 x i32]* @reltable.marc_findgenre to i64)) to i32), i32 trunc (i64 sub (i64 ptrtoint ([6 x i8]* @.str.20 to i64), i64 ptrtoint ([90 x i32]* @reltable.marc_findgenre to i64)) to i32), i32 trunc (i64 sub (i64 ptrtoint ([13 x i8]* @.str.21 to i64), i64 ptrtoint ([90 x i32]* @reltable.marc_findgenre to i64)) to i32), i32 trunc (i64 sub (i64 ptrtoint ([6 x i8]* @.str.22 to i64), i64 ptrtoint ([90 x i32]* @reltable.marc_findgenre to i64)) to i32), i32 trunc (i64 sub (i64 ptrtoint ([12 x i8]* @.str.23 to i64), i64 ptrtoint ([90 x i32]* @reltable.marc_findgenre to i64)) to i32), i32 trunc (i64 sub (i64 ptrtoint ([8 x i8]* @.str.24 to i64), i64 ptrtoint ([90 x i32]* @reltable.marc_findgenre to i64)) to i32), i32 trunc (i64 sub (i64 ptrtoint ([12 x i8]* @.str.25 to i64), i64 ptrtoint ([90 x i32]* @reltable.marc_findgenre to i64)) to i32), i32 trunc (i64 sub (i64 ptrtoint ([10 x i8]* @.str.26 to i64), i64 ptrtoint ([90 x i32]* @reltable.marc_findgenre to i64)) to i32), i32 trunc (i64 sub (i64 ptrtoint ([12 x i8]* @.str.27 to i64), i64 ptrtoint ([90 x i32]* @reltable.marc_findgenre to i64)) to i32), i32 trunc (i64 sub (i64 ptrtoint ([11 x i8]* @.str.28 to i64), i64 ptrtoint ([90 x i32]* @reltable.marc_findgenre to i64)) to i32), i32 trunc (i64 sub (i64 ptrtoint ([9 x i8]* @.str.29 to i64), i64 ptrtoint ([90 x i32]* @reltable.marc_findgenre to i64)) to i32), i32 trunc (i64 sub (i64 ptrtoint ([5 x i8]* @.str.30 to i64), i64 ptrtoint ([90 x i32]* @reltable.marc_findgenre to i64)) to i32), i32 trunc (i64 sub (i64 ptrtoint ([5 x i8]* @.str.31 to i64), i64 ptrtoint ([90 x i32]* @reltable.marc_findgenre to i64)) to i32), i32 trunc (i64 sub (i64 ptrtoint ([23 x i8]* @.str.32 to i64), i64 ptrtoint ([90 x i32]* @reltable.marc_findgenre to i64)) to i32), i32 trunc (i64 sub (i64 ptrtoint ([8 x i8]* @.str.33 to i64), i64 ptrtoint ([90 x i32]* @reltable.marc_findgenre to i64)) to i32), i32 trunc (i64 sub (i64 ptrtoint ([6 x i8]* @.str.34 to i64), i64 ptrtoint ([90 x i32]* @reltable.marc_findgenre to i64)) to i32), i32 trunc (i64 sub (i64 ptrtoint ([9 x i8]* @.str.35 to i64), i64 ptrtoint ([90 x i32]* @reltable.marc_findgenre to i64)) to i32), i32 trunc (i64 sub (i64 ptrtoint ([8 x i8]* @.str.36 to i64), i64 ptrtoint ([90 x i32]* @reltable.marc_findgenre to i64)) to i32), i32 trunc (i64 sub (i64 ptrtoint ([14 x i8]* @.str.37 to i64), i64 ptrtoint ([90 x i32]* @reltable.marc_findgenre to i64)) to i32), i32 trunc (i64 sub (i64 ptrtoint ([7 x i8]* @.str.38 to i64), i64 ptrtoint ([90 x i32]* @reltable.marc_findgenre to i64)) to i32), i32 trunc (i64 sub (i64 ptrtoint ([6 x i8]* @.str.39 to i64), i64 ptrtoint ([90 x i32]* @reltable.marc_findgenre to i64)) to i32), i32 trunc (i64 sub (i64 ptrtoint ([12 x i8]* @.str.40 to i64), i64 ptrtoint ([90 x i32]* @reltable.marc_findgenre to i64)) to i32), i32 trunc (i64 sub (i64 ptrtoint ([10 x i8]* @.str.41 to i64), i64 ptrtoint ([90 x i32]* @reltable.marc_findgenre to i64)) to i32), i32 trunc (i64 sub (i64 ptrtoint ([6 x i8]* @.str.42 to i64), i64 ptrtoint ([90 x i32]* @reltable.marc_findgenre to i64)) to i32), i32 trunc (i64 sub (i64 ptrtoint ([8 x i8]* @.str.43 to i64), i64 ptrtoint ([90 x i32]* @reltable.marc_findgenre to i64)) to i32), i32 trunc (i64 sub (i64 ptrtoint ([4 x i8]* @.str.44 to i64), i64 ptrtoint ([90 x i32]* @reltable.marc_findgenre to i64)) to i32), i32 trunc (i64 sub (i64 ptrtoint ([21 x i8]* @.str.45 to i64), i64 ptrtoint ([90 x i32]* @reltable.marc_findgenre to i64)) to i32), i32 trunc (i64 sub (i64 ptrtoint ([21 x i8]* @.str.46 to i64), i64 ptrtoint ([90 x i32]* @reltable.marc_findgenre to i64)) to i32), i32 trunc (i64 sub (i64 ptrtoint ([14 x i8]* @.str.47 to i64), i64 ptrtoint ([90 x i32]* @reltable.marc_findgenre to i64)) to i32), i32 trunc (i64 sub (i64 ptrtoint ([26 x i8]* @.str.48 to i64), i64 ptrtoint ([90 x i32]* @reltable.marc_findgenre to i64)) to i32), i32 trunc (i64 sub (i64 ptrtoint ([12 x i8]* @.str.49 to i64), i64 ptrtoint ([90 x i32]* @reltable.marc_findgenre to i64)) to i32), i32 trunc (i64 sub (i64 ptrtoint ([7 x i8]* @.str.50 to i64), i64 ptrtoint ([90 x i32]* @reltable.marc_findgenre to i64)) to i32), i32 trunc (i64 sub (i64 ptrtoint ([11 x i8]* @.str.51 to i64), i64 ptrtoint ([90 x i32]* @reltable.marc_findgenre to i64)) to i32), i32 trunc (i64 sub (i64 ptrtoint ([4 x i8]* @.str.52 to i64), i64 ptrtoint ([90 x i32]* @reltable.marc_findgenre to i64)) to i32), i32 trunc (i64 sub (i64 ptrtoint ([7 x i8]* @.str.53 to i64), i64 ptrtoint ([90 x i32]* @reltable.marc_findgenre to i64)) to i32), i32 trunc (i64 sub (i64 ptrtoint ([17 x i8]* @.str.54 to i64), i64 ptrtoint ([90 x i32]* @reltable.marc_findgenre to i64)) to i32), i32 trunc (i64 sub (i64 ptrtoint ([6 x i8]* @.str.55 to i64), i64 ptrtoint ([90 x i32]* @reltable.marc_findgenre to i64)) to i32), i32 trunc (i64 sub (i64 ptrtoint ([15 x i8]* @.str.56 to i64), i64 ptrtoint ([90 x i32]* @reltable.marc_findgenre to i64)) to i32), i32 trunc (i64 sub (i64 ptrtoint ([22 x i8]* @.str.57 to i64), i64 ptrtoint ([90 x i32]* @reltable.marc_findgenre to i64)) to i32), i32 trunc (i64 sub (i64 ptrtoint ([10 x i8]* @.str.58 to i64), i64 ptrtoint ([90 x i32]* @reltable.marc_findgenre to i64)) to i32), i32 trunc (i64 sub (i64 ptrtoint ([6 x i8]* @.str.59 to i64), i64 ptrtoint ([90 x i32]* @reltable.marc_findgenre to i64)) to i32), i32 trunc (i64 sub (i64 ptrtoint ([13 x i8]* @.str.60 to i64), i64 ptrtoint ([90 x i32]* @reltable.marc_findgenre to i64)) to i32), i32 trunc (i64 sub (i64 ptrtoint ([9 x i8]* @.str.61 to i64), i64 ptrtoint ([90 x i32]* @reltable.marc_findgenre to i64)) to i32), i32 trunc (i64 sub (i64 ptrtoint ([25 x i8]* @.str.62 to i64), i64 ptrtoint ([90 x i32]* @reltable.marc_findgenre to i64)) to i32), i32 trunc (i64 sub (i64 ptrtoint ([7 x i8]* @.str.63 to i64), i64 ptrtoint ([90 x i32]* @reltable.marc_findgenre to i64)) to i32), i32 trunc (i64 sub (i64 ptrtoint ([11 x i8]* @.str.64 to i64), i64 ptrtoint ([90 x i32]* @reltable.marc_findgenre to i64)) to i32), i32 trunc (i64 sub (i64 ptrtoint ([8 x i8]* @.str.65 to i64), i64 ptrtoint ([90 x i32]* @reltable.marc_findgenre to i64)) to i32), i32 trunc (i64 sub (i64 ptrtoint ([7 x i8]* @.str.66 to i64), i64 ptrtoint ([90 x i32]* @reltable.marc_findgenre to i64)) to i32), i32 trunc (i64 sub (i64 ptrtoint ([16 x i8]* @.str.67 to i64), i64 ptrtoint ([90 x i32]* @reltable.marc_findgenre to i64)) to i32), i32 trunc (i64 sub (i64 ptrtoint ([7 x i8]* @.str.68 to i64), i64 ptrtoint ([90 x i32]* @reltable.marc_findgenre to i64)) to i32), i32 trunc (i64 sub (i64 ptrtoint ([10 x i8]* @.str.69 to i64), i64 ptrtoint ([90 x i32]* @reltable.marc_findgenre to i64)) to i32), i32 trunc (i64 sub (i64 ptrtoint ([21 x i8]* @.str.70 to i64), i64 ptrtoint ([90 x i32]* @reltable.marc_findgenre to i64)) to i32), i32 trunc (i64 sub (i64 ptrtoint ([10 x i8]* @.str.71 to i64), i64 ptrtoint ([90 x i32]* @reltable.marc_findgenre to i64)) to i32), i32 trunc (i64 sub (i64 ptrtoint ([7 x i8]* @.str.72 to i64), i64 ptrtoint ([90 x i32]* @reltable.marc_findgenre to i64)) to i32), i32 trunc (i64 sub (i64 ptrtoint ([7 x i8]* @.str.73 to i64), i64 ptrtoint ([90 x i32]* @reltable.marc_findgenre to i64)) to i32), i32 trunc (i64 sub (i64 ptrtoint ([12 x i8]* @.str.74 to i64), i64 ptrtoint ([90 x i32]* @reltable.marc_findgenre to i64)) to i32), i32 trunc (i64 sub (i64 ptrtoint ([6 x i8]* @.str.75 to i64), i64 ptrtoint ([90 x i32]* @reltable.marc_findgenre to i64)) to i32), i32 trunc (i64 sub (i64 ptrtoint ([6 x i8]* @.str.76 to i64), i64 ptrtoint ([90 x i32]* @reltable.marc_findgenre to i64)) to i32), i32 trunc (i64 sub (i64 ptrtoint ([7 x i8]* @.str.77 to i64), i64 ptrtoint ([90 x i32]* @reltable.marc_findgenre to i64)) to i32), i32 trunc (i64 sub (i64 ptrtoint ([26 x i8]* @.str.78 to i64), i64 ptrtoint ([90 x i32]* @reltable.marc_findgenre to i64)) to i32), i32 trunc (i64 sub (i64 ptrtoint ([11 x i8]* @.str.79 to i64), i64 ptrtoint ([90 x i32]* @reltable.marc_findgenre to i64)) to i32), i32 trunc (i64 sub (i64 ptrtoint ([21 x i8]* @.str.80 to i64), i64 ptrtoint ([90 x i32]* @reltable.marc_findgenre to i64)) to i32), i32 trunc (i64 sub (i64 ptrtoint ([18 x i8]* @.str.81 to i64), i64 ptrtoint ([90 x i32]* @reltable.marc_findgenre to i64)) to i32), i32 trunc (i64 sub (i64 ptrtoint ([17 x i8]* @.str.82 to i64), i64 ptrtoint ([90 x i32]* @reltable.marc_findgenre to i64)) to i32), i32 trunc (i64 sub (i64 ptrtoint ([7 x i8]* @.str.83 to i64), i64 ptrtoint ([90 x i32]* @reltable.marc_findgenre to i64)) to i32), i32 trunc (i64 sub (i64 ptrtoint ([4 x i8]* @.str.84 to i64), i64 ptrtoint ([90 x i32]* @reltable.marc_findgenre to i64)) to i32), i32 trunc (i64 sub (i64 ptrtoint ([13 x i8]* @.str.85 to i64), i64 ptrtoint ([90 x i32]* @reltable.marc_findgenre to i64)) to i32), i32 trunc (i64 sub (i64 ptrtoint ([7 x i8]* @.str.86 to i64), i64 ptrtoint ([90 x i32]* @reltable.marc_findgenre to i64)) to i32), i32 trunc (i64 sub (i64 ptrtoint ([15 x i8]* @.str.87 to i64), i64 ptrtoint ([90 x i32]* @reltable.marc_findgenre to i64)) to i32), i32 trunc (i64 sub (i64 ptrtoint ([9 x i8]* @.str.88 to i64), i64 ptrtoint ([90 x i32]* @reltable.marc_findgenre to i64)) to i32), i32 trunc (i64 sub (i64 ptrtoint ([9 x i8]* @.str.89 to i64), i64 ptrtoint ([90 x i32]* @reltable.marc_findgenre to i64)) to i32)]
define i32 @marc_findgenre(i8* nocapture %0) {
br label %2
2: ; preds = %1, %8
%3 = phi i64 [ 0, %1 ], [ %9, %8 ]
%4 = shl i64 %3, 2
%5 = call i8* @llvm.load.relative.i64(i8* bitcast ([90 x i32]* @reltable.marc_findgenre to i8*), i64 %4)
%6 = tail call i32 @strcasecmp(i8* %0, i8* %5)
%7 = icmp eq i32 %6, 0
br i1 %7, label %11, label %8
8: ; preds = %2
%9 = add nuw nsw i64 %3, 1
%10 = icmp eq i64 %9, 90
br i1 %10, label %13, label %2
11: ; preds = %2
%12 = trunc i64 %3 to i32
br label %13
13: ; preds = %8, %11
%14 = phi i32 [ %12, %11 ], [ -1, %8 ]
ret i32 %14
}