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

/* Variables and functions */
int /*<<< orphan*/ strcmp(char const *, char *);
int xmss_str_to_oid(uint32_t *oid, const char *s) {
  if (!strcmp(s, "XMSS-SHA2_10_256")) {
    *oid = 0x00000001;
  } else if (!strcmp(s, "XMSS-SHA2_16_256")) {
    *oid = 0x00000002;
  } else if (!strcmp(s, "XMSS-SHA2_20_256")) {
    *oid = 0x00000003;
  } else if (!strcmp(s, "XMSS-SHA2_10_512")) {
    *oid = 0x00000004;
  } else if (!strcmp(s, "XMSS-SHA2_16_512")) {
    *oid = 0x00000005;
  } else if (!strcmp(s, "XMSS-SHA2_20_512")) {
    *oid = 0x00000006;
  } else if (!strcmp(s, "XMSS-SHAKE_10_256")) {
    *oid = 0x00000007;
  } else if (!strcmp(s, "XMSS-SHAKE_16_256")) {
    *oid = 0x00000008;
  } else if (!strcmp(s, "XMSS-SHAKE_20_256")) {
    *oid = 0x00000009;
  } else if (!strcmp(s, "XMSS-SHAKE_10_512")) {
    *oid = 0x0000000a;
  } else if (!strcmp(s, "XMSS-SHAKE_16_512")) {
    *oid = 0x0000000b;
  } else if (!strcmp(s, "XMSS-SHAKE_20_512")) {
    *oid = 0x0000000c;
  } else if (!strcmp(s, "XMSS-SHA2_10_192")) {
    *oid = 0x0000000d;
  } else if (!strcmp(s, "XMSS-SHA2_16_192")) {
    *oid = 0x0000000e;
  } else if (!strcmp(s, "XMSS-SHA2_20_192")) {
    *oid = 0x0000000f;
  } else if (!strcmp(s, "XMSS-SHAKE256_10_256")) {
    *oid = 0x00000010;
  } else if (!strcmp(s, "XMSS-SHAKE256_16_256")) {
    *oid = 0x00000011;
  } else if (!strcmp(s, "XMSS-SHAKE256_20_256")) {
    *oid = 0x00000012;
  } else if (!strcmp(s, "XMSS-SHAKE256_10_192")) {
    *oid = 0x00000013;
  } else if (!strcmp(s, "XMSS-SHAKE256_16_192")) {
    *oid = 0x00000014;
  } else if (!strcmp(s, "XMSS-SHAKE256_20_192")) {
    *oid = 0x00000015;
  } else {
    return -1;
  }
  return 0;
}


x86 assembly (clang, -O0):
<xmss_str_to_oid>:
push   %rbp
mov    %rsp,%rbp
sub    $0x20,%rsp
mov    %rdi,-0x10(%rbp)
mov    %rsi,-0x18(%rbp)
mov    -0x18(%rbp),%rdi
lea    0xed5(%rip),%rsi
call   1030 <strcmp@plt>
cmp    $0x0,%eax
jne    1148 <xmss_str_to_oid+0x38>
mov    -0x10(%rbp),%rax
movl   $0x1,(%rax)
jmp    14d8 <xmss_str_to_oid+0x3c8>
mov    -0x18(%rbp),%rdi
lea    0xebe(%rip),%rsi
call   1030 <strcmp@plt>
cmp    $0x0,%eax
jne    1170 <xmss_str_to_oid+0x60>
mov    -0x10(%rbp),%rax
movl   $0x2,(%rax)
jmp    14d3 <xmss_str_to_oid+0x3c3>
mov    -0x18(%rbp),%rdi
lea    0xea7(%rip),%rsi
call   1030 <strcmp@plt>
cmp    $0x0,%eax
jne    1198 <xmss_str_to_oid+0x88>
mov    -0x10(%rbp),%rax
movl   $0x3,(%rax)
jmp    14ce <xmss_str_to_oid+0x3be>
mov    -0x18(%rbp),%rdi
lea    0xe90(%rip),%rsi
call   1030 <strcmp@plt>
cmp    $0x0,%eax
jne    11c0 <xmss_str_to_oid+0xb0>
mov    -0x10(%rbp),%rax
movl   $0x4,(%rax)
jmp    14c9 <xmss_str_to_oid+0x3b9>
mov    -0x18(%rbp),%rdi
lea    0xe79(%rip),%rsi
call   1030 <strcmp@plt>
cmp    $0x0,%eax
jne    11e8 <xmss_str_to_oid+0xd8>
mov    -0x10(%rbp),%rax
movl   $0x5,(%rax)
jmp    14c4 <xmss_str_to_oid+0x3b4>
mov    -0x18(%rbp),%rdi
lea    0xe62(%rip),%rsi
call   1030 <strcmp@plt>
cmp    $0x0,%eax
jne    1210 <xmss_str_to_oid+0x100>
mov    -0x10(%rbp),%rax
movl   $0x6,(%rax)
jmp    14bf <xmss_str_to_oid+0x3af>
mov    -0x18(%rbp),%rdi
lea    0xe4b(%rip),%rsi
call   1030 <strcmp@plt>
cmp    $0x0,%eax
jne    1238 <xmss_str_to_oid+0x128>
mov    -0x10(%rbp),%rax
movl   $0x7,(%rax)
jmp    14ba <xmss_str_to_oid+0x3aa>
mov    -0x18(%rbp),%rdi
lea    0xe35(%rip),%rsi
call   1030 <strcmp@plt>
cmp    $0x0,%eax
jne    1260 <xmss_str_to_oid+0x150>
mov    -0x10(%rbp),%rax
movl   $0x8,(%rax)
jmp    14b5 <xmss_str_to_oid+0x3a5>
mov    -0x18(%rbp),%rdi
lea    0xe1f(%rip),%rsi
call   1030 <strcmp@plt>
cmp    $0x0,%eax
jne    1288 <xmss_str_to_oid+0x178>
mov    -0x10(%rbp),%rax
movl   $0x9,(%rax)
jmp    14b0 <xmss_str_to_oid+0x3a0>
mov    -0x18(%rbp),%rdi
lea    0xe09(%rip),%rsi
call   1030 <strcmp@plt>
cmp    $0x0,%eax
jne    12b0 <xmss_str_to_oid+0x1a0>
mov    -0x10(%rbp),%rax
movl   $0xa,(%rax)
jmp    14ab <xmss_str_to_oid+0x39b>
mov    -0x18(%rbp),%rdi
lea    0xdf3(%rip),%rsi
call   1030 <strcmp@plt>
cmp    $0x0,%eax
jne    12d8 <xmss_str_to_oid+0x1c8>
mov    -0x10(%rbp),%rax
movl   $0xb,(%rax)
jmp    14a6 <xmss_str_to_oid+0x396>
mov    -0x18(%rbp),%rdi
lea    0xddd(%rip),%rsi
call   1030 <strcmp@plt>
cmp    $0x0,%eax
jne    1300 <xmss_str_to_oid+0x1f0>
mov    -0x10(%rbp),%rax
movl   $0xc,(%rax)
jmp    14a1 <xmss_str_to_oid+0x391>
mov    -0x18(%rbp),%rdi
lea    0xdc7(%rip),%rsi
call   1030 <strcmp@plt>
cmp    $0x0,%eax
jne    1328 <xmss_str_to_oid+0x218>
mov    -0x10(%rbp),%rax
movl   $0xd,(%rax)
jmp    149c <xmss_str_to_oid+0x38c>
mov    -0x18(%rbp),%rdi
lea    0xdb0(%rip),%rsi
call   1030 <strcmp@plt>
cmp    $0x0,%eax
jne    1350 <xmss_str_to_oid+0x240>
mov    -0x10(%rbp),%rax
movl   $0xe,(%rax)
jmp    1497 <xmss_str_to_oid+0x387>
mov    -0x18(%rbp),%rdi
lea    0xd99(%rip),%rsi
call   1030 <strcmp@plt>
cmp    $0x0,%eax
jne    1378 <xmss_str_to_oid+0x268>
mov    -0x10(%rbp),%rax
movl   $0xf,(%rax)
jmp    1492 <xmss_str_to_oid+0x382>
mov    -0x18(%rbp),%rdi
lea    0xd82(%rip),%rsi
call   1030 <strcmp@plt>
cmp    $0x0,%eax
jne    13a0 <xmss_str_to_oid+0x290>
mov    -0x10(%rbp),%rax
movl   $0x10,(%rax)
jmp    148d <xmss_str_to_oid+0x37d>
mov    -0x18(%rbp),%rdi
lea    0xd6f(%rip),%rsi
call   1030 <strcmp@plt>
cmp    $0x0,%eax
jne    13c8 <xmss_str_to_oid+0x2b8>
mov    -0x10(%rbp),%rax
movl   $0x11,(%rax)
jmp    1488 <xmss_str_to_oid+0x378>
mov    -0x18(%rbp),%rdi
lea    0xd5c(%rip),%rsi
call   1030 <strcmp@plt>
cmp    $0x0,%eax
jne    13f0 <xmss_str_to_oid+0x2e0>
mov    -0x10(%rbp),%rax
movl   $0x12,(%rax)
jmp    1483 <xmss_str_to_oid+0x373>
mov    -0x18(%rbp),%rdi
lea    0xd49(%rip),%rsi
call   1030 <strcmp@plt>
cmp    $0x0,%eax
jne    1418 <xmss_str_to_oid+0x308>
mov    -0x10(%rbp),%rax
movl   $0x13,(%rax)
jmp    147e <xmss_str_to_oid+0x36e>
mov    -0x18(%rbp),%rdi
lea    0xd36(%rip),%rsi
call   1030 <strcmp@plt>
cmp    $0x0,%eax
jne    1440 <xmss_str_to_oid+0x330>
mov    -0x10(%rbp),%rax
movl   $0x14,(%rax)
jmp    1479 <xmss_str_to_oid+0x369>
mov    -0x18(%rbp),%rdi
lea    0xd23(%rip),%rsi
call   1030 <strcmp@plt>
cmp    $0x0,%eax
jne    1468 <xmss_str_to_oid+0x358>
mov    -0x10(%rbp),%rax
movl   $0x15,(%rax)
jmp    1474 <xmss_str_to_oid+0x364>
movl   $0xffffffff,-0x4(%rbp)
jmp    14df <xmss_str_to_oid+0x3cf>
jmp    1479 <xmss_str_to_oid+0x369>
jmp    147e <xmss_str_to_oid+0x36e>
jmp    1483 <xmss_str_to_oid+0x373>
jmp    1488 <xmss_str_to_oid+0x378>
jmp    148d <xmss_str_to_oid+0x37d>
jmp    1492 <xmss_str_to_oid+0x382>
jmp    1497 <xmss_str_to_oid+0x387>
jmp    149c <xmss_str_to_oid+0x38c>
jmp    14a1 <xmss_str_to_oid+0x391>
jmp    14a6 <xmss_str_to_oid+0x396>
jmp    14ab <xmss_str_to_oid+0x39b>
jmp    14b0 <xmss_str_to_oid+0x3a0>
jmp    14b5 <xmss_str_to_oid+0x3a5>
jmp    14ba <xmss_str_to_oid+0x3aa>
jmp    14bf <xmss_str_to_oid+0x3af>
jmp    14c4 <xmss_str_to_oid+0x3b4>
jmp    14c9 <xmss_str_to_oid+0x3b9>
jmp    14ce <xmss_str_to_oid+0x3be>
jmp    14d3 <xmss_str_to_oid+0x3c3>
jmp    14d8 <xmss_str_to_oid+0x3c8>
movl   $0x0,-0x4(%rbp)
mov    -0x4(%rbp),%eax
add    $0x20,%rsp
pop    %rbp
ret

x86 assembly (clang, -O2):
<xmss_str_to_oid>:
push   %r14
push   %rbx
push   %rax
mov    %rsi,%rbx
mov    %rdi,%r14
lea    0xedf(%rip),%rsi
mov    %rbx,%rdi
call   1030 <strcmp@plt>
test   %eax,%eax
je     130e <xmss_str_to_oid+0x1fe>
lea    0xed9(%rip),%rsi
mov    %rbx,%rdi
call   1030 <strcmp@plt>
test   %eax,%eax
je     1318 <xmss_str_to_oid+0x208>
lea    0xed3(%rip),%rsi
mov    %rbx,%rdi
call   1030 <strcmp@plt>
test   %eax,%eax
je     131f <xmss_str_to_oid+0x20f>
lea    0xecd(%rip),%rsi
mov    %rbx,%rdi
call   1030 <strcmp@plt>
test   %eax,%eax
je     1326 <xmss_str_to_oid+0x216>
lea    0xec7(%rip),%rsi
mov    %rbx,%rdi
call   1030 <strcmp@plt>
test   %eax,%eax
je     132d <xmss_str_to_oid+0x21d>
lea    0xec1(%rip),%rsi
mov    %rbx,%rdi
call   1030 <strcmp@plt>
test   %eax,%eax
je     1334 <xmss_str_to_oid+0x224>
lea    0xebb(%rip),%rsi
mov    %rbx,%rdi
call   1030 <strcmp@plt>
test   %eax,%eax
je     133b <xmss_str_to_oid+0x22b>
lea    0xeb6(%rip),%rsi
mov    %rbx,%rdi
call   1030 <strcmp@plt>
test   %eax,%eax
je     1342 <xmss_str_to_oid+0x232>
lea    0xeb1(%rip),%rsi
mov    %rbx,%rdi
call   1030 <strcmp@plt>
test   %eax,%eax
je     1349 <xmss_str_to_oid+0x239>
lea    0xeac(%rip),%rsi
mov    %rbx,%rdi
call   1030 <strcmp@plt>
test   %eax,%eax
je     1350 <xmss_str_to_oid+0x240>
lea    0xea7(%rip),%rsi
mov    %rbx,%rdi
call   1030 <strcmp@plt>
test   %eax,%eax
je     1357 <xmss_str_to_oid+0x247>
lea    0xea2(%rip),%rsi
mov    %rbx,%rdi
call   1030 <strcmp@plt>
test   %eax,%eax
je     135e <xmss_str_to_oid+0x24e>
lea    0xe9d(%rip),%rsi
mov    %rbx,%rdi
call   1030 <strcmp@plt>
test   %eax,%eax
je     1365 <xmss_str_to_oid+0x255>
lea    0xe97(%rip),%rsi
mov    %rbx,%rdi
call   1030 <strcmp@plt>
test   %eax,%eax
je     136c <xmss_str_to_oid+0x25c>
lea    0xe91(%rip),%rsi
mov    %rbx,%rdi
call   1030 <strcmp@plt>
test   %eax,%eax
je     1373 <xmss_str_to_oid+0x263>
lea    0xe8b(%rip),%rsi
mov    %rbx,%rdi
call   1030 <strcmp@plt>
test   %eax,%eax
je     137a <xmss_str_to_oid+0x26a>
lea    0xe89(%rip),%rsi
mov    %rbx,%rdi
call   1030 <strcmp@plt>
test   %eax,%eax
je     1381 <xmss_str_to_oid+0x271>
lea    0xe87(%rip),%rsi
mov    %rbx,%rdi
call   1030 <strcmp@plt>
test   %eax,%eax
je     1388 <xmss_str_to_oid+0x278>
lea    0xe85(%rip),%rsi
mov    %rbx,%rdi
call   1030 <strcmp@plt>
test   %eax,%eax
je     138f <xmss_str_to_oid+0x27f>
lea    0xe83(%rip),%rsi
mov    %rbx,%rdi
call   1030 <strcmp@plt>
test   %eax,%eax
je     1396 <xmss_str_to_oid+0x286>
lea    0xe81(%rip),%rsi
mov    %rbx,%rdi
call   1030 <strcmp@plt>
mov    %eax,%ecx
mov    $0xffffffff,%eax
test   %ecx,%ecx
jne    13a0 <xmss_str_to_oid+0x290>
mov    $0x15,%eax
jmp    139b <xmss_str_to_oid+0x28b>
mov    $0x1,%eax
jmp    139b <xmss_str_to_oid+0x28b>
mov    $0x2,%eax
jmp    139b <xmss_str_to_oid+0x28b>
mov    $0x3,%eax
jmp    139b <xmss_str_to_oid+0x28b>
mov    $0x4,%eax
jmp    139b <xmss_str_to_oid+0x28b>
mov    $0x5,%eax
jmp    139b <xmss_str_to_oid+0x28b>
mov    $0x6,%eax
jmp    139b <xmss_str_to_oid+0x28b>
mov    $0x7,%eax
jmp    139b <xmss_str_to_oid+0x28b>
mov    $0x8,%eax
jmp    139b <xmss_str_to_oid+0x28b>
mov    $0x9,%eax
jmp    139b <xmss_str_to_oid+0x28b>
mov    $0xa,%eax
jmp    139b <xmss_str_to_oid+0x28b>
mov    $0xb,%eax
jmp    139b <xmss_str_to_oid+0x28b>
mov    $0xc,%eax
jmp    139b <xmss_str_to_oid+0x28b>
mov    $0xd,%eax
jmp    139b <xmss_str_to_oid+0x28b>
mov    $0xe,%eax
jmp    139b <xmss_str_to_oid+0x28b>
mov    $0xf,%eax
jmp    139b <xmss_str_to_oid+0x28b>
mov    $0x10,%eax
jmp    139b <xmss_str_to_oid+0x28b>
mov    $0x11,%eax
jmp    139b <xmss_str_to_oid+0x28b>
mov    $0x12,%eax
jmp    139b <xmss_str_to_oid+0x28b>
mov    $0x13,%eax
jmp    139b <xmss_str_to_oid+0x28b>
mov    $0x14,%eax
mov    %eax,(%r14)
xor    %eax,%eax
add    $0x8,%rsp
pop    %rbx
pop    %r14
ret

LLVM IR (-O0):
@.str = [17 x i8] c"XMSS-SHA2_10_256\00"
@.str.1 = [17 x i8] c"XMSS-SHA2_16_256\00"
@.str.2 = [17 x i8] c"XMSS-SHA2_20_256\00"
@.str.3 = [17 x i8] c"XMSS-SHA2_10_512\00"
@.str.4 = [17 x i8] c"XMSS-SHA2_16_512\00"
@.str.5 = [17 x i8] c"XMSS-SHA2_20_512\00"
@.str.6 = [18 x i8] c"XMSS-SHAKE_10_256\00"
@.str.7 = [18 x i8] c"XMSS-SHAKE_16_256\00"
@.str.8 = [18 x i8] c"XMSS-SHAKE_20_256\00"
@.str.9 = [18 x i8] c"XMSS-SHAKE_10_512\00"
@.str.10 = [18 x i8] c"XMSS-SHAKE_16_512\00"
@.str.11 = [18 x i8] c"XMSS-SHAKE_20_512\00"
@.str.12 = [17 x i8] c"XMSS-SHA2_10_192\00"
@.str.13 = [17 x i8] c"XMSS-SHA2_16_192\00"
@.str.14 = [17 x i8] c"XMSS-SHA2_20_192\00"
@.str.15 = [21 x i8] c"XMSS-SHAKE256_10_256\00"
@.str.16 = [21 x i8] c"XMSS-SHAKE256_16_256\00"
@.str.17 = [21 x i8] c"XMSS-SHAKE256_20_256\00"
@.str.18 = [21 x i8] c"XMSS-SHAKE256_10_192\00"
@.str.19 = [21 x i8] c"XMSS-SHAKE256_16_192\00"
@.str.20 = [21 x i8] c"XMSS-SHAKE256_20_192\00"
define i32 @xmss_str_to_oid(i32* %0, i8* %1) {
%3 = alloca i32
%4 = alloca i32*
%5 = alloca i8*
store i32* %0, i32** %4
store i8* %1, i8** %5
%6 = load i8*, i8** %5
%7 = call i32 @strcmp(i8* %6, i8* getelementptr inbounds ([17 x i8], [17 x i8]* @.str, i64 0, i64 0))
%8 = icmp ne i32 %7, 0
br i1 %8, label %11, label %9
9: ; preds = %2
%10 = load i32*, i32** %4
store i32 1, i32* %10
br label %152
11: ; preds = %2
%12 = load i8*, i8** %5
%13 = call i32 @strcmp(i8* %12, i8* getelementptr inbounds ([17 x i8], [17 x i8]* @.str.1, i64 0, i64 0))
%14 = icmp ne i32 %13, 0
br i1 %14, label %17, label %15
15: ; preds = %11
%16 = load i32*, i32** %4
store i32 2, i32* %16
br label %151
17: ; preds = %11
%18 = load i8*, i8** %5
%19 = call i32 @strcmp(i8* %18, i8* getelementptr inbounds ([17 x i8], [17 x i8]* @.str.2, i64 0, i64 0))
%20 = icmp ne i32 %19, 0
br i1 %20, label %23, label %21
21: ; preds = %17
%22 = load i32*, i32** %4
store i32 3, i32* %22
br label %150
23: ; preds = %17
%24 = load i8*, i8** %5
%25 = call i32 @strcmp(i8* %24, i8* getelementptr inbounds ([17 x i8], [17 x i8]* @.str.3, i64 0, i64 0))
%26 = icmp ne i32 %25, 0
br i1 %26, label %29, label %27
27: ; preds = %23
%28 = load i32*, i32** %4
store i32 4, i32* %28
br label %149
29: ; preds = %23
%30 = load i8*, i8** %5
%31 = call i32 @strcmp(i8* %30, i8* getelementptr inbounds ([17 x i8], [17 x i8]* @.str.4, i64 0, i64 0))
%32 = icmp ne i32 %31, 0
br i1 %32, label %35, label %33
33: ; preds = %29
%34 = load i32*, i32** %4
store i32 5, i32* %34
br label %148
35: ; preds = %29
%36 = load i8*, i8** %5
%37 = call i32 @strcmp(i8* %36, i8* getelementptr inbounds ([17 x i8], [17 x i8]* @.str.5, i64 0, i64 0))
%38 = icmp ne i32 %37, 0
br i1 %38, label %41, label %39
39: ; preds = %35
%40 = load i32*, i32** %4
store i32 6, i32* %40
br label %147
41: ; preds = %35
%42 = load i8*, i8** %5
%43 = call i32 @strcmp(i8* %42, i8* getelementptr inbounds ([18 x i8], [18 x i8]* @.str.6, i64 0, i64 0))
%44 = icmp ne i32 %43, 0
br i1 %44, label %47, label %45
45: ; preds = %41
%46 = load i32*, i32** %4
store i32 7, i32* %46
br label %146
47: ; preds = %41
%48 = load i8*, i8** %5
%49 = call i32 @strcmp(i8* %48, i8* getelementptr inbounds ([18 x i8], [18 x i8]* @.str.7, i64 0, i64 0))
%50 = icmp ne i32 %49, 0
br i1 %50, label %53, label %51
51: ; preds = %47
%52 = load i32*, i32** %4
store i32 8, i32* %52
br label %145
53: ; preds = %47
%54 = load i8*, i8** %5
%55 = call i32 @strcmp(i8* %54, i8* getelementptr inbounds ([18 x i8], [18 x i8]* @.str.8, i64 0, i64 0))
%56 = icmp ne i32 %55, 0
br i1 %56, label %59, label %57
57: ; preds = %53
%58 = load i32*, i32** %4
store i32 9, i32* %58
br label %144
59: ; preds = %53
%60 = load i8*, i8** %5
%61 = call i32 @strcmp(i8* %60, i8* getelementptr inbounds ([18 x i8], [18 x i8]* @.str.9, i64 0, i64 0))
%62 = icmp ne i32 %61, 0
br i1 %62, label %65, label %63
63: ; preds = %59
%64 = load i32*, i32** %4
store i32 10, i32* %64
br label %143
65: ; preds = %59
%66 = load i8*, i8** %5
%67 = call i32 @strcmp(i8* %66, i8* getelementptr inbounds ([18 x i8], [18 x i8]* @.str.10, i64 0, i64 0))
%68 = icmp ne i32 %67, 0
br i1 %68, label %71, label %69
69: ; preds = %65
%70 = load i32*, i32** %4
store i32 11, i32* %70
br label %142
71: ; preds = %65
%72 = load i8*, i8** %5
%73 = call i32 @strcmp(i8* %72, i8* getelementptr inbounds ([18 x i8], [18 x i8]* @.str.11, i64 0, i64 0))
%74 = icmp ne i32 %73, 0
br i1 %74, label %77, label %75
75: ; preds = %71
%76 = load i32*, i32** %4
store i32 12, i32* %76
br label %141
77: ; preds = %71
%78 = load i8*, i8** %5
%79 = call i32 @strcmp(i8* %78, i8* getelementptr inbounds ([17 x i8], [17 x i8]* @.str.12, i64 0, i64 0))
%80 = icmp ne i32 %79, 0
br i1 %80, label %83, label %81
81: ; preds = %77
%82 = load i32*, i32** %4
store i32 13, i32* %82
br label %140
83: ; preds = %77
%84 = load i8*, i8** %5
%85 = call i32 @strcmp(i8* %84, i8* getelementptr inbounds ([17 x i8], [17 x i8]* @.str.13, i64 0, i64 0))
%86 = icmp ne i32 %85, 0
br i1 %86, label %89, label %87
87: ; preds = %83
%88 = load i32*, i32** %4
store i32 14, i32* %88
br label %139
89: ; preds = %83
%90 = load i8*, i8** %5
%91 = call i32 @strcmp(i8* %90, i8* getelementptr inbounds ([17 x i8], [17 x i8]* @.str.14, i64 0, i64 0))
%92 = icmp ne i32 %91, 0
br i1 %92, label %95, label %93
93: ; preds = %89
%94 = load i32*, i32** %4
store i32 15, i32* %94
br label %138
95: ; preds = %89
%96 = load i8*, i8** %5
%97 = call i32 @strcmp(i8* %96, i8* getelementptr inbounds ([21 x i8], [21 x i8]* @.str.15, i64 0, i64 0))
%98 = icmp ne i32 %97, 0
br i1 %98, label %101, label %99
99: ; preds = %95
%100 = load i32*, i32** %4
store i32 16, i32* %100
br label %137
101: ; preds = %95
%102 = load i8*, i8** %5
%103 = call i32 @strcmp(i8* %102, i8* getelementptr inbounds ([21 x i8], [21 x i8]* @.str.16, i64 0, i64 0))
%104 = icmp ne i32 %103, 0
br i1 %104, label %107, label %105
105: ; preds = %101
%106 = load i32*, i32** %4
store i32 17, i32* %106
br label %136
107: ; preds = %101
%108 = load i8*, i8** %5
%109 = call i32 @strcmp(i8* %108, i8* getelementptr inbounds ([21 x i8], [21 x i8]* @.str.17, i64 0, i64 0))
%110 = icmp ne i32 %109, 0
br i1 %110, label %113, label %111
111: ; preds = %107
%112 = load i32*, i32** %4
store i32 18, i32* %112
br label %135
113: ; preds = %107
%114 = load i8*, i8** %5
%115 = call i32 @strcmp(i8* %114, i8* getelementptr inbounds ([21 x i8], [21 x i8]* @.str.18, i64 0, i64 0))
%116 = icmp ne i32 %115, 0
br i1 %116, label %119, label %117
117: ; preds = %113
%118 = load i32*, i32** %4
store i32 19, i32* %118
br label %134
119: ; preds = %113
%120 = load i8*, i8** %5
%121 = call i32 @strcmp(i8* %120, i8* getelementptr inbounds ([21 x i8], [21 x i8]* @.str.19, i64 0, i64 0))
%122 = icmp ne i32 %121, 0
br i1 %122, label %125, label %123
123: ; preds = %119
%124 = load i32*, i32** %4
store i32 20, i32* %124
br label %133
125: ; preds = %119
%126 = load i8*, i8** %5
%127 = call i32 @strcmp(i8* %126, i8* getelementptr inbounds ([21 x i8], [21 x i8]* @.str.20, i64 0, i64 0))
%128 = icmp ne i32 %127, 0
br i1 %128, label %131, label %129
129: ; preds = %125
%130 = load i32*, i32** %4
store i32 21, i32* %130
br label %132
131: ; preds = %125
store i32 -1, i32* %3
br label %153
132: ; preds = %129
br label %133
133: ; preds = %132, %123
br label %134
134: ; preds = %133, %117
br label %135
135: ; preds = %134, %111
br label %136
136: ; preds = %135, %105
br label %137
137: ; preds = %136, %99
br label %138
138: ; preds = %137, %93
br label %139
139: ; preds = %138, %87
br label %140
140: ; preds = %139, %81
br label %141
141: ; preds = %140, %75
br label %142
142: ; preds = %141, %69
br label %143
143: ; preds = %142, %63
br label %144
144: ; preds = %143, %57
br label %145
145: ; preds = %144, %51
br label %146
146: ; preds = %145, %45
br label %147
147: ; preds = %146, %39
br label %148
148: ; preds = %147, %33
br label %149
149: ; preds = %148, %27
br label %150
150: ; preds = %149, %21
br label %151
151: ; preds = %150, %15
br label %152
152: ; preds = %151, %9
store i32 0, i32* %3
br label %153
153: ; preds = %152, %131
%154 = load i32, i32* %3
ret i32 %154
}

LLVM IR (-O2):
@.str = [17 x i8] c"XMSS-SHA2_10_256\00"
@.str.1 = [17 x i8] c"XMSS-SHA2_16_256\00"
@.str.2 = [17 x i8] c"XMSS-SHA2_20_256\00"
@.str.3 = [17 x i8] c"XMSS-SHA2_10_512\00"
@.str.4 = [17 x i8] c"XMSS-SHA2_16_512\00"
@.str.5 = [17 x i8] c"XMSS-SHA2_20_512\00"
@.str.6 = [18 x i8] c"XMSS-SHAKE_10_256\00"
@.str.7 = [18 x i8] c"XMSS-SHAKE_16_256\00"
@.str.8 = [18 x i8] c"XMSS-SHAKE_20_256\00"
@.str.9 = [18 x i8] c"XMSS-SHAKE_10_512\00"
@.str.10 = [18 x i8] c"XMSS-SHAKE_16_512\00"
@.str.11 = [18 x i8] c"XMSS-SHAKE_20_512\00"
@.str.12 = [17 x i8] c"XMSS-SHA2_10_192\00"
@.str.13 = [17 x i8] c"XMSS-SHA2_16_192\00"
@.str.14 = [17 x i8] c"XMSS-SHA2_20_192\00"
@.str.15 = [21 x i8] c"XMSS-SHAKE256_10_256\00"
@.str.16 = [21 x i8] c"XMSS-SHAKE256_16_256\00"
@.str.17 = [21 x i8] c"XMSS-SHAKE256_20_256\00"
@.str.18 = [21 x i8] c"XMSS-SHAKE256_10_192\00"
@.str.19 = [21 x i8] c"XMSS-SHAKE256_16_192\00"
@.str.20 = [21 x i8] c"XMSS-SHAKE256_20_192\00"
define i32 @xmss_str_to_oid(i32* writeonly %0, i8* %1) {
%3 = tail call i32 @strcmp(i8* dereferenceable(1) %1, i8* dereferenceable(17) getelementptr inbounds ([17 x i8], [17 x i8]* @.str, i64 0, i64 0))
%4 = icmp eq i32 %3, 0
br i1 %4, label %65, label %5
5: ; preds = %2
%6 = tail call i32 @strcmp(i8* dereferenceable(1) %1, i8* dereferenceable(17) getelementptr inbounds ([17 x i8], [17 x i8]* @.str.1, i64 0, i64 0))
%7 = icmp eq i32 %6, 0
br i1 %7, label %65, label %8
8: ; preds = %5
%9 = tail call i32 @strcmp(i8* dereferenceable(1) %1, i8* dereferenceable(17) getelementptr inbounds ([17 x i8], [17 x i8]* @.str.2, i64 0, i64 0))
%10 = icmp eq i32 %9, 0
br i1 %10, label %65, label %11
11: ; preds = %8
%12 = tail call i32 @strcmp(i8* dereferenceable(1) %1, i8* dereferenceable(17) getelementptr inbounds ([17 x i8], [17 x i8]* @.str.3, i64 0, i64 0))
%13 = icmp eq i32 %12, 0
br i1 %13, label %65, label %14
14: ; preds = %11
%15 = tail call i32 @strcmp(i8* dereferenceable(1) %1, i8* dereferenceable(17) getelementptr inbounds ([17 x i8], [17 x i8]* @.str.4, i64 0, i64 0))
%16 = icmp eq i32 %15, 0
br i1 %16, label %65, label %17
17: ; preds = %14
%18 = tail call i32 @strcmp(i8* dereferenceable(1) %1, i8* dereferenceable(17) getelementptr inbounds ([17 x i8], [17 x i8]* @.str.5, i64 0, i64 0))
%19 = icmp eq i32 %18, 0
br i1 %19, label %65, label %20
20: ; preds = %17
%21 = tail call i32 @strcmp(i8* dereferenceable(1) %1, i8* dereferenceable(18) getelementptr inbounds ([18 x i8], [18 x i8]* @.str.6, i64 0, i64 0))
%22 = icmp eq i32 %21, 0
br i1 %22, label %65, label %23
23: ; preds = %20
%24 = tail call i32 @strcmp(i8* dereferenceable(1) %1, i8* dereferenceable(18) getelementptr inbounds ([18 x i8], [18 x i8]* @.str.7, i64 0, i64 0))
%25 = icmp eq i32 %24, 0
br i1 %25, label %65, label %26
26: ; preds = %23
%27 = tail call i32 @strcmp(i8* dereferenceable(1) %1, i8* dereferenceable(18) getelementptr inbounds ([18 x i8], [18 x i8]* @.str.8, i64 0, i64 0))
%28 = icmp eq i32 %27, 0
br i1 %28, label %65, label %29
29: ; preds = %26
%30 = tail call i32 @strcmp(i8* dereferenceable(1) %1, i8* dereferenceable(18) getelementptr inbounds ([18 x i8], [18 x i8]* @.str.9, i64 0, i64 0))
%31 = icmp eq i32 %30, 0
br i1 %31, label %65, label %32
32: ; preds = %29
%33 = tail call i32 @strcmp(i8* dereferenceable(1) %1, i8* dereferenceable(18) getelementptr inbounds ([18 x i8], [18 x i8]* @.str.10, i64 0, i64 0))
%34 = icmp eq i32 %33, 0
br i1 %34, label %65, label %35
35: ; preds = %32
%36 = tail call i32 @strcmp(i8* dereferenceable(1) %1, i8* dereferenceable(18) getelementptr inbounds ([18 x i8], [18 x i8]* @.str.11, i64 0, i64 0))
%37 = icmp eq i32 %36, 0
br i1 %37, label %65, label %38
38: ; preds = %35
%39 = tail call i32 @strcmp(i8* dereferenceable(1) %1, i8* dereferenceable(17) getelementptr inbounds ([17 x i8], [17 x i8]* @.str.12, i64 0, i64 0))
%40 = icmp eq i32 %39, 0
br i1 %40, label %65, label %41
41: ; preds = %38
%42 = tail call i32 @strcmp(i8* dereferenceable(1) %1, i8* dereferenceable(17) getelementptr inbounds ([17 x i8], [17 x i8]* @.str.13, i64 0, i64 0))
%43 = icmp eq i32 %42, 0
br i1 %43, label %65, label %44
44: ; preds = %41
%45 = tail call i32 @strcmp(i8* dereferenceable(1) %1, i8* dereferenceable(17) getelementptr inbounds ([17 x i8], [17 x i8]* @.str.14, i64 0, i64 0))
%46 = icmp eq i32 %45, 0
br i1 %46, label %65, label %47
47: ; preds = %44
%48 = tail call i32 @strcmp(i8* dereferenceable(1) %1, i8* dereferenceable(21) getelementptr inbounds ([21 x i8], [21 x i8]* @.str.15, i64 0, i64 0))
%49 = icmp eq i32 %48, 0
br i1 %49, label %65, label %50
50: ; preds = %47
%51 = tail call i32 @strcmp(i8* dereferenceable(1) %1, i8* dereferenceable(21) getelementptr inbounds ([21 x i8], [21 x i8]* @.str.16, i64 0, i64 0))
%52 = icmp eq i32 %51, 0
br i1 %52, label %65, label %53
53: ; preds = %50
%54 = tail call i32 @strcmp(i8* dereferenceable(1) %1, i8* dereferenceable(21) getelementptr inbounds ([21 x i8], [21 x i8]* @.str.17, i64 0, i64 0))
%55 = icmp eq i32 %54, 0
br i1 %55, label %65, label %56
56: ; preds = %53
%57 = tail call i32 @strcmp(i8* dereferenceable(1) %1, i8* dereferenceable(21) getelementptr inbounds ([21 x i8], [21 x i8]* @.str.18, i64 0, i64 0))
%58 = icmp eq i32 %57, 0
br i1 %58, label %65, label %59
59: ; preds = %56
%60 = tail call i32 @strcmp(i8* dereferenceable(1) %1, i8* dereferenceable(21) getelementptr inbounds ([21 x i8], [21 x i8]* @.str.19, i64 0, i64 0))
%61 = icmp eq i32 %60, 0
br i1 %61, label %65, label %62
62: ; preds = %59
%63 = tail call i32 @strcmp(i8* dereferenceable(1) %1, i8* dereferenceable(21) getelementptr inbounds ([21 x i8], [21 x i8]* @.str.20, i64 0, i64 0))
%64 = icmp eq i32 %63, 0
br i1 %64, label %65, label %67
65: ; preds = %62, %59, %56, %53, %50, %47, %44, %41, %38, %35, %32, %29, %26, %23, %20, %17, %14, %11, %8, %5, %2
%66 = phi i32 [ 1, %2 ], [ 2, %5 ], [ 3, %8 ], [ 4, %11 ], [ 5, %14 ], [ 6, %17 ], [ 7, %20 ], [ 8, %23 ], [ 9, %26 ], [ 10, %29 ], [ 11, %32 ], [ 12, %35 ], [ 13, %38 ], [ 14, %41 ], [ 15, %44 ], [ 16, %47 ], [ 17, %50 ], [ 18, %53 ], [ 19, %56 ], [ 20, %59 ], [ 21, %62 ]
store i32 %66, i32* %0
br label %67
67: ; preds = %65, %62
%68 = phi i32 [ -1, %62 ], [ 0, %65 ]
ret i32 %68
}