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

/* Variables and functions */
int /*<<< orphan*/ B0;
int /*<<< orphan*/ B110;
int /*<<< orphan*/ B115200;
int /*<<< orphan*/ B1200;
int /*<<< orphan*/ B134;
int /*<<< orphan*/ B150;
int /*<<< orphan*/ B1800;
int /*<<< orphan*/ B19200;
int /*<<< orphan*/ B200;
int /*<<< orphan*/ B230400;
int /*<<< orphan*/ B2400;
int /*<<< orphan*/ B300;
int /*<<< orphan*/ B38400;
int /*<<< orphan*/ B4800;
int /*<<< orphan*/ B50;
int /*<<< orphan*/ B57600;
int /*<<< orphan*/ B75;
int /*<<< orphan*/ B9600;
int /*<<< orphan*/ assert(int /*<<< orphan*/);
scalar_t__ strcmp(char *, char const *);
int SERGetBaud(const char *baud_string, speed_t *serial_speed) {
  assert(baud_string != NULL);
  assert(serial_speed != NULL);
  if (strcmp("0", baud_string) == 0) {
    *serial_speed = B0;
    return 0;
  } else if (strcmp("50", baud_string) == 0) {
    *serial_speed = B50;
    return 0;
  } else if (strcmp("75", baud_string) == 0) {
    *serial_speed = B75;
    return 0;
  } else if (strcmp("110", baud_string) == 0) {
    *serial_speed = B110;
    return 0;
  } else if (strcmp("134", baud_string) == 0) {
    *serial_speed = B134;
    return 0;
  } else if (strcmp("150", baud_string) == 0) {
    *serial_speed = B150;
    return 0;
  } else if (strcmp("200", baud_string) == 0) {
    *serial_speed = B200;
    return 0;
  } else if (strcmp("300", baud_string) == 0) {
    *serial_speed = B300;
    return 0;
  } else if (strcmp("1200", baud_string) == 0) {
    *serial_speed = B1200;
    return 0;
  } else if (strcmp("1800", baud_string) == 0) {
    *serial_speed = B1800;
    return 0;
  } else if (strcmp("2400", baud_string) == 0) {
    *serial_speed = B2400;
    return 0;
  } else if (strcmp("4800", baud_string) == 0) {
    *serial_speed = B4800;
    return 0;
  } else if (strcmp("9600", baud_string) == 0) {
    *serial_speed = B9600;
    return 0;
  } else if (strcmp("19200", baud_string) == 0) {
    *serial_speed = B19200;
    return 0;
  } else if (strcmp("38400", baud_string) == 0) {
    *serial_speed = B38400;
    return 0;
  } else if (strcmp("57600", baud_string) == 0) {
    *serial_speed = B57600;
    return 0;
  } else if (strcmp("115200", baud_string) == 0) {
    *serial_speed = B115200;
    return 0;
  } else if (strcmp("230400", baud_string) == 0) {
    *serial_speed = B230400;
    return 0;
  }
  return 1;
}


x86 assembly (clang, -O0):
<SERGetBaud>:
push   %rbp
mov    %rsp,%rbp
sub    $0x20,%rsp
mov    %rdi,-0x10(%rbp)
mov    %rsi,-0x18(%rbp)
cmpq   $0x0,-0x10(%rbp)
setne  %al
and    $0x1,%al
movzbl %al,%edi
call   1040 <assert@plt>
cmpq   $0x0,-0x18(%rbp)
setne  %al
and    $0x1,%al
movzbl %al,%edi
call   1040 <assert@plt>
mov    -0x10(%rbp),%rsi
lea    0xeb7(%rip),%rdi
call   1030 <strcmp@plt>
cmp    $0x0,%rax
jne    1189 <SERGetBaud+0x69>
mov    0x2e1b(%rip),%rax
mov    (%rax),%ecx
mov    -0x18(%rbp),%rax
mov    %ecx,(%rax)
movl   $0x0,-0x4(%rbp)
jmp    156a <SERGetBaud+0x44a>
mov    -0x10(%rbp),%rsi
lea    0xe78(%rip),%rdi
call   1030 <strcmp@plt>
cmp    $0x0,%rax
jne    11be <SERGetBaud+0x9e>
mov    0x2e06(%rip),%rax
mov    (%rax),%ecx
mov    -0x18(%rbp),%rax
mov    %ecx,(%rax)
movl   $0x0,-0x4(%rbp)
jmp    156a <SERGetBaud+0x44a>
mov    -0x10(%rbp),%rsi
lea    0xe37(%rip),%rdi
call   1030 <strcmp@plt>
cmp    $0x0,%rax
jne    11f3 <SERGetBaud+0xd3>
mov    0x2df9(%rip),%rax
mov    (%rax),%ecx
mov    -0x18(%rbp),%rax
mov    %ecx,(%rax)
movl   $0x0,-0x4(%rbp)
jmp    156a <SERGetBaud+0x44a>
mov    -0x10(%rbp),%rsi
lea    0xe05(%rip),%rdi
call   1030 <strcmp@plt>
cmp    $0x0,%rax
jne    1228 <SERGetBaud+0x108>
mov    0x2dcc(%rip),%rax
mov    (%rax),%ecx
mov    -0x18(%rbp),%rax
mov    %ecx,(%rax)
movl   $0x0,-0x4(%rbp)
jmp    156a <SERGetBaud+0x44a>
mov    -0x10(%rbp),%rsi
lea    0xdd4(%rip),%rdi
call   1030 <strcmp@plt>
cmp    $0x0,%rax
jne    125d <SERGetBaud+0x13d>
mov    0x2d87(%rip),%rax
mov    (%rax),%ecx
mov    -0x18(%rbp),%rax
mov    %ecx,(%rax)
movl   $0x0,-0x4(%rbp)
jmp    156a <SERGetBaud+0x44a>
mov    -0x10(%rbp),%rsi
lea    0xda3(%rip),%rdi
call   1030 <strcmp@plt>
cmp    $0x0,%rax
jne    1292 <SERGetBaud+0x172>
mov    0x2cfa(%rip),%rax
mov    (%rax),%ecx
mov    -0x18(%rbp),%rax
mov    %ecx,(%rax)
movl   $0x0,-0x4(%rbp)
jmp    156a <SERGetBaud+0x44a>
mov    -0x10(%rbp),%rsi
lea    0xd77(%rip),%rdi
call   1030 <strcmp@plt>
cmp    $0x0,%rax
jne    12c7 <SERGetBaud+0x1a7>
mov    0x2cf5(%rip),%rax
mov    (%rax),%ecx
mov    -0x18(%rbp),%rax
mov    %ecx,(%rax)
movl   $0x0,-0x4(%rbp)
jmp    156a <SERGetBaud+0x44a>
mov    -0x10(%rbp),%rsi
lea    0xd3d(%rip),%rdi
call   1030 <strcmp@plt>
cmp    $0x0,%rax
jne    12fc <SERGetBaud+0x1dc>
mov    0x2cd0(%rip),%rax
mov    (%rax),%ecx
mov    -0x18(%rbp),%rax
mov    %ecx,(%rax)
movl   $0x0,-0x4(%rbp)
jmp    156a <SERGetBaud+0x44a>
mov    -0x10(%rbp),%rsi
lea    0xd0c(%rip),%rdi
call   1030 <strcmp@plt>
cmp    $0x0,%rax
jne    1331 <SERGetBaud+0x211>
mov    0x2c53(%rip),%rax
mov    (%rax),%ecx
mov    -0x18(%rbp),%rax
mov    %ecx,(%rax)
movl   $0x0,-0x4(%rbp)
jmp    156a <SERGetBaud+0x44a>
mov    -0x10(%rbp),%rsi
lea    0xcdc(%rip),%rdi
call   1030 <strcmp@plt>
cmp    $0x0,%rax
jne    1366 <SERGetBaud+0x246>
mov    0x2c36(%rip),%rax
mov    (%rax),%ecx
mov    -0x18(%rbp),%rax
mov    %ecx,(%rax)
movl   $0x0,-0x4(%rbp)
jmp    156a <SERGetBaud+0x44a>
mov    -0x10(%rbp),%rsi
lea    0xcac(%rip),%rdi
call   1030 <strcmp@plt>
cmp    $0x0,%rax
jne    139b <SERGetBaud+0x27b>
mov    0x2bf9(%rip),%rax
mov    (%rax),%ecx
mov    -0x18(%rbp),%rax
mov    %ecx,(%rax)
movl   $0x0,-0x4(%rbp)
jmp    156a <SERGetBaud+0x44a>
mov    -0x10(%rbp),%rsi
lea    0xc7c(%rip),%rdi
call   1030 <strcmp@plt>
cmp    $0x0,%rax
jne    13d0 <SERGetBaud+0x2b0>
mov    0x2c0c(%rip),%rax
mov    (%rax),%ecx
mov    -0x18(%rbp),%rax
mov    %ecx,(%rax)
movl   $0x0,-0x4(%rbp)
jmp    156a <SERGetBaud+0x44a>
mov    -0x10(%rbp),%rsi
lea    0xc4c(%rip),%rdi
call   1030 <strcmp@plt>
cmp    $0x0,%rax
jne    1405 <SERGetBaud+0x2e5>
mov    0x2bcf(%rip),%rax
mov    (%rax),%ecx
mov    -0x18(%rbp),%rax
mov    %ecx,(%rax)
movl   $0x0,-0x4(%rbp)
jmp    156a <SERGetBaud+0x44a>
mov    -0x10(%rbp),%rsi
lea    0xc1c(%rip),%rdi
call   1030 <strcmp@plt>
cmp    $0x0,%rax
jne    143a <SERGetBaud+0x31a>
mov    0x2bca(%rip),%rax
mov    (%rax),%ecx
mov    -0x18(%rbp),%rax
mov    %ecx,(%rax)
movl   $0x0,-0x4(%rbp)
jmp    156a <SERGetBaud+0x44a>
mov    -0x10(%rbp),%rsi
lea    0xbed(%rip),%rdi
call   1030 <strcmp@plt>
cmp    $0x0,%rax
jne    146f <SERGetBaud+0x34f>
mov    0x2af5(%rip),%rax
mov    (%rax),%ecx
mov    -0x18(%rbp),%rax
mov    %ecx,(%rax)
movl   $0x0,-0x4(%rbp)
jmp    156a <SERGetBaud+0x44a>
mov    -0x10(%rbp),%rsi
lea    0xbbe(%rip),%rdi
call   1030 <strcmp@plt>
cmp    $0x0,%rax
jne    14a4 <SERGetBaud+0x384>
mov    0x2b10(%rip),%rax
mov    (%rax),%ecx
mov    -0x18(%rbp),%rax
mov    %ecx,(%rax)
movl   $0x0,-0x4(%rbp)
jmp    156a <SERGetBaud+0x44a>
mov    -0x10(%rbp),%rsi
lea    0xb8f(%rip),%rdi
call   1030 <strcmp@plt>
cmp    $0x0,%rax
jne    14d9 <SERGetBaud+0x3b9>
mov    0x2aa3(%rip),%rax
mov    (%rax),%ecx
mov    -0x18(%rbp),%rax
mov    %ecx,(%rax)
movl   $0x0,-0x4(%rbp)
jmp    156a <SERGetBaud+0x44a>
mov    -0x10(%rbp),%rsi
lea    0xb61(%rip),%rdi
call   1030 <strcmp@plt>
cmp    $0x0,%rax
jne    150e <SERGetBaud+0x3ee>
mov    0x2a5e(%rip),%rax
mov    (%rax),%ecx
mov    -0x18(%rbp),%rax
mov    %ecx,(%rax)
movl   $0x0,-0x4(%rbp)
jmp    156a <SERGetBaud+0x44a>
jmp    1513 <SERGetBaud+0x3f3>
jmp    1518 <SERGetBaud+0x3f8>
jmp    151d <SERGetBaud+0x3fd>
jmp    1522 <SERGetBaud+0x402>
jmp    1527 <SERGetBaud+0x407>
jmp    152c <SERGetBaud+0x40c>
jmp    1531 <SERGetBaud+0x411>
jmp    1536 <SERGetBaud+0x416>
jmp    153b <SERGetBaud+0x41b>
jmp    1540 <SERGetBaud+0x420>
jmp    1545 <SERGetBaud+0x425>
jmp    154a <SERGetBaud+0x42a>
jmp    154f <SERGetBaud+0x42f>
jmp    1554 <SERGetBaud+0x434>
jmp    1559 <SERGetBaud+0x439>
jmp    155e <SERGetBaud+0x43e>
jmp    1563 <SERGetBaud+0x443>
movl   $0x1,-0x4(%rbp)
mov    -0x4(%rbp),%eax
add    $0x20,%rsp
pop    %rbp
ret

x86 assembly (clang, -O2):
<SERGetBaud>:
push   %r14
push   %rbx
push   %rax
mov    %rsi,%r14
mov    %rdi,%rbx
xor    %edi,%edi
test   %rbx,%rbx
setne  %dil
call   1040 <assert@plt>
xor    %edi,%edi
test   %r14,%r14
setne  %dil
call   1040 <assert@plt>
lea    0xec9(%rip),%rdi
mov    %rbx,%rsi
call   1030 <strcmp@plt>
test   %rax,%rax
je     130a <SERGetBaud+0x1ea>
lea    0xea7(%rip),%rdi
mov    %rbx,%rsi
call   1030 <strcmp@plt>
test   %rax,%rax
je     1316 <SERGetBaud+0x1f6>
lea    0xe83(%rip),%rdi
mov    %rbx,%rsi
call   1030 <strcmp@plt>
test   %rax,%rax
je     1322 <SERGetBaud+0x202>
lea    0xe6e(%rip),%rdi
mov    %rbx,%rsi
call   1030 <strcmp@plt>
test   %rax,%rax
je     132b <SERGetBaud+0x20b>
lea    0xe5a(%rip),%rdi
mov    %rbx,%rsi
call   1030 <strcmp@plt>
test   %rax,%rax
je     1334 <SERGetBaud+0x214>
lea    0xe46(%rip),%rdi
mov    %rbx,%rsi
call   1030 <strcmp@plt>
test   %rax,%rax
je     133d <SERGetBaud+0x21d>
lea    0xe37(%rip),%rdi
mov    %rbx,%rsi
call   1030 <strcmp@plt>
test   %rax,%rax
je     1346 <SERGetBaud+0x226>
lea    0xe1a(%rip),%rdi
mov    %rbx,%rsi
call   1030 <strcmp@plt>
test   %rax,%rax
je     134f <SERGetBaud+0x22f>
lea    0xe06(%rip),%rdi
mov    %rbx,%rsi
call   1030 <strcmp@plt>
test   %rax,%rax
je     1358 <SERGetBaud+0x238>
lea    0xdf3(%rip),%rdi
mov    %rbx,%rsi
call   1030 <strcmp@plt>
test   %rax,%rax
je     1361 <SERGetBaud+0x241>
lea    0xde0(%rip),%rdi
mov    %rbx,%rsi
call   1030 <strcmp@plt>
test   %rax,%rax
je     136a <SERGetBaud+0x24a>
lea    0xdcd(%rip),%rdi
mov    %rbx,%rsi
call   1030 <strcmp@plt>
test   %rax,%rax
je     1373 <SERGetBaud+0x253>
lea    0xdba(%rip),%rdi
mov    %rbx,%rsi
call   1030 <strcmp@plt>
test   %rax,%rax
je     137c <SERGetBaud+0x25c>
lea    0xda7(%rip),%rdi
mov    %rbx,%rsi
call   1030 <strcmp@plt>
test   %rax,%rax
je     1385 <SERGetBaud+0x265>
lea    0xd95(%rip),%rdi
mov    %rbx,%rsi
call   1030 <strcmp@plt>
test   %rax,%rax
je     138e <SERGetBaud+0x26e>
lea    0xd83(%rip),%rdi
mov    %rbx,%rsi
call   1030 <strcmp@plt>
test   %rax,%rax
je     1397 <SERGetBaud+0x277>
lea    0xd71(%rip),%rdi
mov    %rbx,%rsi
call   1030 <strcmp@plt>
test   %rax,%rax
je     13a0 <SERGetBaud+0x280>
lea    0xd60(%rip),%rdi
mov    %rbx,%rsi
call   1030 <strcmp@plt>
mov    %rax,%rcx
mov    $0x1,%eax
test   %rcx,%rcx
jne    13ae <SERGetBaud+0x28e>
mov    0x2c53(%rip),%rax
jmp    13a7 <SERGetBaud+0x287>
mov    0x2c7f(%rip),%rax
jmp    13a7 <SERGetBaud+0x287>
mov    0x2c93(%rip),%rax
jmp    13a7 <SERGetBaud+0x287>
mov    0x2caf(%rip),%rax
jmp    13a7 <SERGetBaud+0x287>
mov    0x2cae(%rip),%rax
jmp    13a7 <SERGetBaud+0x287>
mov    0x2c95(%rip),%rax
jmp    13a7 <SERGetBaud+0x287>
mov    0x2c34(%rip),%rax
jmp    13a7 <SERGetBaud+0x287>
mov    0x2c5b(%rip),%rax
jmp    13a7 <SERGetBaud+0x287>
mov    0x2c62(%rip),%rax
jmp    13a7 <SERGetBaud+0x287>
mov    0x2c11(%rip),%rax
jmp    13a7 <SERGetBaud+0x287>
mov    0x2c20(%rip),%rax
jmp    13a7 <SERGetBaud+0x287>
mov    0x2c0f(%rip),%rax
jmp    13a7 <SERGetBaud+0x287>
mov    0x2c4e(%rip),%rax
jmp    13a7 <SERGetBaud+0x287>
mov    0x2c3d(%rip),%rax
jmp    13a7 <SERGetBaud+0x287>
mov    0x2c64(%rip),%rax
jmp    13a7 <SERGetBaud+0x287>
mov    0x2bbb(%rip),%rax
jmp    13a7 <SERGetBaud+0x287>
mov    0x2c02(%rip),%rax
jmp    13a7 <SERGetBaud+0x287>
mov    0x2bc1(%rip),%rax
mov    (%rax),%eax
mov    %eax,(%r14)
xor    %eax,%eax
add    $0x8,%rsp
pop    %rbx
pop    %r14
ret

LLVM IR (-O0):
@.str = [2 x i8] c"0\00"
@B0 = global i32 0
@.str.1 = [3 x i8] c"50\00"
@B50 = global i32 0
@.str.2 = [3 x i8] c"75\00"
@B75 = global i32 0
@.str.3 = [4 x i8] c"110\00"
@B110 = global i32 0
@.str.4 = [4 x i8] c"134\00"
@B134 = global i32 0
@.str.5 = [4 x i8] c"150\00"
@B150 = global i32 0
@.str.6 = [4 x i8] c"200\00"
@B200 = global i32 0
@.str.7 = [4 x i8] c"300\00"
@B300 = global i32 0
@.str.8 = [5 x i8] c"1200\00"
@B1200 = global i32 0
@.str.9 = [5 x i8] c"1800\00"
@B1800 = global i32 0
@.str.10 = [5 x i8] c"2400\00"
@B2400 = global i32 0
@.str.11 = [5 x i8] c"4800\00"
@B4800 = global i32 0
@.str.12 = [5 x i8] c"9600\00"
@B9600 = global i32 0
@.str.13 = [6 x i8] c"19200\00"
@B19200 = global i32 0
@.str.14 = [6 x i8] c"38400\00"
@B38400 = global i32 0
@.str.15 = [6 x i8] c"57600\00"
@B57600 = global i32 0
@.str.16 = [7 x i8] c"115200\00"
@B115200 = global i32 0
@.str.17 = [7 x i8] c"230400\00"
@B230400 = global i32 0
define i32 @SERGetBaud(i8* %0, i32* %1) {
%3 = alloca i32
%4 = alloca i8*
%5 = alloca i32*
store i8* %0, i8** %4
store i32* %1, i32** %5
%6 = load i8*, i8** %4
%7 = icmp ne i8* %6, null
%8 = zext i1 %7 to i32
%9 = call i32 @assert(i32 %8)
%10 = load i32*, i32** %5
%11 = icmp ne i32* %10, null
%12 = zext i1 %11 to i32
%13 = call i32 @assert(i32 %12)
%14 = load i8*, i8** %4
%15 = call i64 @strcmp(i8* getelementptr inbounds ([2 x i8], [2 x i8]* @.str, i64 0, i64 0), i8* %14)
%16 = icmp eq i64 %15, 0
br i1 %16, label %17, label %20
17: ; preds = %2
%18 = load i32, i32* @B0
%19 = load i32*, i32** %5
store i32 %18, i32* %19
store i32 0, i32* %3
br label %157
20: ; preds = %2
%21 = load i8*, i8** %4
%22 = call i64 @strcmp(i8* getelementptr inbounds ([3 x i8], [3 x i8]* @.str.1, i64 0, i64 0), i8* %21)
%23 = icmp eq i64 %22, 0
br i1 %23, label %24, label %27
24: ; preds = %20
%25 = load i32, i32* @B50
%26 = load i32*, i32** %5
store i32 %25, i32* %26
store i32 0, i32* %3
br label %157
27: ; preds = %20
%28 = load i8*, i8** %4
%29 = call i64 @strcmp(i8* getelementptr inbounds ([3 x i8], [3 x i8]* @.str.2, i64 0, i64 0), i8* %28)
%30 = icmp eq i64 %29, 0
br i1 %30, label %31, label %34
31: ; preds = %27
%32 = load i32, i32* @B75
%33 = load i32*, i32** %5
store i32 %32, i32* %33
store i32 0, i32* %3
br label %157
34: ; preds = %27
%35 = load i8*, i8** %4
%36 = call i64 @strcmp(i8* getelementptr inbounds ([4 x i8], [4 x i8]* @.str.3, i64 0, i64 0), i8* %35)
%37 = icmp eq i64 %36, 0
br i1 %37, label %38, label %41
38: ; preds = %34
%39 = load i32, i32* @B110
%40 = load i32*, i32** %5
store i32 %39, i32* %40
store i32 0, i32* %3
br label %157
41: ; preds = %34
%42 = load i8*, i8** %4
%43 = call i64 @strcmp(i8* getelementptr inbounds ([4 x i8], [4 x i8]* @.str.4, i64 0, i64 0), i8* %42)
%44 = icmp eq i64 %43, 0
br i1 %44, label %45, label %48
45: ; preds = %41
%46 = load i32, i32* @B134
%47 = load i32*, i32** %5
store i32 %46, i32* %47
store i32 0, i32* %3
br label %157
48: ; preds = %41
%49 = load i8*, i8** %4
%50 = call i64 @strcmp(i8* getelementptr inbounds ([4 x i8], [4 x i8]* @.str.5, i64 0, i64 0), i8* %49)
%51 = icmp eq i64 %50, 0
br i1 %51, label %52, label %55
52: ; preds = %48
%53 = load i32, i32* @B150
%54 = load i32*, i32** %5
store i32 %53, i32* %54
store i32 0, i32* %3
br label %157
55: ; preds = %48
%56 = load i8*, i8** %4
%57 = call i64 @strcmp(i8* getelementptr inbounds ([4 x i8], [4 x i8]* @.str.6, i64 0, i64 0), i8* %56)
%58 = icmp eq i64 %57, 0
br i1 %58, label %59, label %62
59: ; preds = %55
%60 = load i32, i32* @B200
%61 = load i32*, i32** %5
store i32 %60, i32* %61
store i32 0, i32* %3
br label %157
62: ; preds = %55
%63 = load i8*, i8** %4
%64 = call i64 @strcmp(i8* getelementptr inbounds ([4 x i8], [4 x i8]* @.str.7, i64 0, i64 0), i8* %63)
%65 = icmp eq i64 %64, 0
br i1 %65, label %66, label %69
66: ; preds = %62
%67 = load i32, i32* @B300
%68 = load i32*, i32** %5
store i32 %67, i32* %68
store i32 0, i32* %3
br label %157
69: ; preds = %62
%70 = load i8*, i8** %4
%71 = call i64 @strcmp(i8* getelementptr inbounds ([5 x i8], [5 x i8]* @.str.8, i64 0, i64 0), i8* %70)
%72 = icmp eq i64 %71, 0
br i1 %72, label %73, label %76
73: ; preds = %69
%74 = load i32, i32* @B1200
%75 = load i32*, i32** %5
store i32 %74, i32* %75
store i32 0, i32* %3
br label %157
76: ; preds = %69
%77 = load i8*, i8** %4
%78 = call i64 @strcmp(i8* getelementptr inbounds ([5 x i8], [5 x i8]* @.str.9, i64 0, i64 0), i8* %77)
%79 = icmp eq i64 %78, 0
br i1 %79, label %80, label %83
80: ; preds = %76
%81 = load i32, i32* @B1800
%82 = load i32*, i32** %5
store i32 %81, i32* %82
store i32 0, i32* %3
br label %157
83: ; preds = %76
%84 = load i8*, i8** %4
%85 = call i64 @strcmp(i8* getelementptr inbounds ([5 x i8], [5 x i8]* @.str.10, i64 0, i64 0), i8* %84)
%86 = icmp eq i64 %85, 0
br i1 %86, label %87, label %90
87: ; preds = %83
%88 = load i32, i32* @B2400
%89 = load i32*, i32** %5
store i32 %88, i32* %89
store i32 0, i32* %3
br label %157
90: ; preds = %83
%91 = load i8*, i8** %4
%92 = call i64 @strcmp(i8* getelementptr inbounds ([5 x i8], [5 x i8]* @.str.11, i64 0, i64 0), i8* %91)
%93 = icmp eq i64 %92, 0
br i1 %93, label %94, label %97
94: ; preds = %90
%95 = load i32, i32* @B4800
%96 = load i32*, i32** %5
store i32 %95, i32* %96
store i32 0, i32* %3
br label %157
97: ; preds = %90
%98 = load i8*, i8** %4
%99 = call i64 @strcmp(i8* getelementptr inbounds ([5 x i8], [5 x i8]* @.str.12, i64 0, i64 0), i8* %98)
%100 = icmp eq i64 %99, 0
br i1 %100, label %101, label %104
101: ; preds = %97
%102 = load i32, i32* @B9600
%103 = load i32*, i32** %5
store i32 %102, i32* %103
store i32 0, i32* %3
br label %157
104: ; preds = %97
%105 = load i8*, i8** %4
%106 = call i64 @strcmp(i8* getelementptr inbounds ([6 x i8], [6 x i8]* @.str.13, i64 0, i64 0), i8* %105)
%107 = icmp eq i64 %106, 0
br i1 %107, label %108, label %111
108: ; preds = %104
%109 = load i32, i32* @B19200
%110 = load i32*, i32** %5
store i32 %109, i32* %110
store i32 0, i32* %3
br label %157
111: ; preds = %104
%112 = load i8*, i8** %4
%113 = call i64 @strcmp(i8* getelementptr inbounds ([6 x i8], [6 x i8]* @.str.14, i64 0, i64 0), i8* %112)
%114 = icmp eq i64 %113, 0
br i1 %114, label %115, label %118
115: ; preds = %111
%116 = load i32, i32* @B38400
%117 = load i32*, i32** %5
store i32 %116, i32* %117
store i32 0, i32* %3
br label %157
118: ; preds = %111
%119 = load i8*, i8** %4
%120 = call i64 @strcmp(i8* getelementptr inbounds ([6 x i8], [6 x i8]* @.str.15, i64 0, i64 0), i8* %119)
%121 = icmp eq i64 %120, 0
br i1 %121, label %122, label %125
122: ; preds = %118
%123 = load i32, i32* @B57600
%124 = load i32*, i32** %5
store i32 %123, i32* %124
store i32 0, i32* %3
br label %157
125: ; preds = %118
%126 = load i8*, i8** %4
%127 = call i64 @strcmp(i8* getelementptr inbounds ([7 x i8], [7 x i8]* @.str.16, i64 0, i64 0), i8* %126)
%128 = icmp eq i64 %127, 0
br i1 %128, label %129, label %132
129: ; preds = %125
%130 = load i32, i32* @B115200
%131 = load i32*, i32** %5
store i32 %130, i32* %131
store i32 0, i32* %3
br label %157
132: ; preds = %125
%133 = load i8*, i8** %4
%134 = call i64 @strcmp(i8* getelementptr inbounds ([7 x i8], [7 x i8]* @.str.17, i64 0, i64 0), i8* %133)
%135 = icmp eq i64 %134, 0
br i1 %135, label %136, label %139
136: ; preds = %132
%137 = load i32, i32* @B230400
%138 = load i32*, i32** %5
store i32 %137, i32* %138
store i32 0, i32* %3
br label %157
139: ; preds = %132
br label %140
140: ; preds = %139
br label %141
141: ; preds = %140
br label %142
142: ; preds = %141
br label %143
143: ; preds = %142
br label %144
144: ; preds = %143
br label %145
145: ; preds = %144
br label %146
146: ; preds = %145
br label %147
147: ; preds = %146
br label %148
148: ; preds = %147
br label %149
149: ; preds = %148
br label %150
150: ; preds = %149
br label %151
151: ; preds = %150
br label %152
152: ; preds = %151
br label %153
153: ; preds = %152
br label %154
154: ; preds = %153
br label %155
155: ; preds = %154
br label %156
156: ; preds = %155
store i32 1, i32* %3
br label %157
157: ; preds = %156, %136, %129, %122, %115, %108, %101, %94, %87, %80, %73, %66, %59, %52, %45, %38, %31, %24, %17
%158 = load i32, i32* %3
ret i32 %158
}

LLVM IR (-O2):
@.str = [2 x i8] c"0\00"
@B0 = global i32 0
@.str.1 = [3 x i8] c"50\00"
@B50 = global i32 0
@.str.2 = [3 x i8] c"75\00"
@B75 = global i32 0
@.str.3 = [4 x i8] c"110\00"
@B110 = global i32 0
@.str.4 = [4 x i8] c"134\00"
@B134 = global i32 0
@.str.5 = [4 x i8] c"150\00"
@B150 = global i32 0
@.str.6 = [4 x i8] c"200\00"
@B200 = global i32 0
@.str.7 = [4 x i8] c"300\00"
@B300 = global i32 0
@.str.8 = [5 x i8] c"1200\00"
@B1200 = global i32 0
@.str.9 = [5 x i8] c"1800\00"
@B1800 = global i32 0
@.str.10 = [5 x i8] c"2400\00"
@B2400 = global i32 0
@.str.11 = [5 x i8] c"4800\00"
@B4800 = global i32 0
@.str.12 = [5 x i8] c"9600\00"
@B9600 = global i32 0
@.str.13 = [6 x i8] c"19200\00"
@B19200 = global i32 0
@.str.14 = [6 x i8] c"38400\00"
@B38400 = global i32 0
@.str.15 = [6 x i8] c"57600\00"
@B57600 = global i32 0
@.str.16 = [7 x i8] c"115200\00"
@B115200 = global i32 0
@.str.17 = [7 x i8] c"230400\00"
@B230400 = global i32 0
define i32 @SERGetBaud(i8* %0, i32* writeonly %1) {
%3 = icmp ne i8* %0, null
%4 = zext i1 %3 to i32
%5 = tail call i32 @assert(i32 %4)
%6 = icmp ne i32* %1, null
%7 = zext i1 %6 to i32
%8 = tail call i32 @assert(i32 %7)
%9 = tail call i64 @strcmp(i8* getelementptr inbounds ([2 x i8], [2 x i8]* @.str, i64 0, i64 0), i8* %0)
%10 = icmp eq i64 %9, 0
br i1 %10, label %62, label %11
11: ; preds = %2
%12 = tail call i64 @strcmp(i8* getelementptr inbounds ([3 x i8], [3 x i8]* @.str.1, i64 0, i64 0), i8* %0)
%13 = icmp eq i64 %12, 0
br i1 %13, label %62, label %14
14: ; preds = %11
%15 = tail call i64 @strcmp(i8* getelementptr inbounds ([3 x i8], [3 x i8]* @.str.2, i64 0, i64 0), i8* %0)
%16 = icmp eq i64 %15, 0
br i1 %16, label %62, label %17
17: ; preds = %14
%18 = tail call i64 @strcmp(i8* getelementptr inbounds ([4 x i8], [4 x i8]* @.str.3, i64 0, i64 0), i8* %0)
%19 = icmp eq i64 %18, 0
br i1 %19, label %62, label %20
20: ; preds = %17
%21 = tail call i64 @strcmp(i8* getelementptr inbounds ([4 x i8], [4 x i8]* @.str.4, i64 0, i64 0), i8* %0)
%22 = icmp eq i64 %21, 0
br i1 %22, label %62, label %23
23: ; preds = %20
%24 = tail call i64 @strcmp(i8* getelementptr inbounds ([4 x i8], [4 x i8]* @.str.5, i64 0, i64 0), i8* %0)
%25 = icmp eq i64 %24, 0
br i1 %25, label %62, label %26
26: ; preds = %23
%27 = tail call i64 @strcmp(i8* getelementptr inbounds ([4 x i8], [4 x i8]* @.str.6, i64 0, i64 0), i8* %0)
%28 = icmp eq i64 %27, 0
br i1 %28, label %62, label %29
29: ; preds = %26
%30 = tail call i64 @strcmp(i8* getelementptr inbounds ([4 x i8], [4 x i8]* @.str.7, i64 0, i64 0), i8* %0)
%31 = icmp eq i64 %30, 0
br i1 %31, label %62, label %32
32: ; preds = %29
%33 = tail call i64 @strcmp(i8* getelementptr inbounds ([5 x i8], [5 x i8]* @.str.8, i64 0, i64 0), i8* %0)
%34 = icmp eq i64 %33, 0
br i1 %34, label %62, label %35
35: ; preds = %32
%36 = tail call i64 @strcmp(i8* getelementptr inbounds ([5 x i8], [5 x i8]* @.str.9, i64 0, i64 0), i8* %0)
%37 = icmp eq i64 %36, 0
br i1 %37, label %62, label %38
38: ; preds = %35
%39 = tail call i64 @strcmp(i8* getelementptr inbounds ([5 x i8], [5 x i8]* @.str.10, i64 0, i64 0), i8* %0)
%40 = icmp eq i64 %39, 0
br i1 %40, label %62, label %41
41: ; preds = %38
%42 = tail call i64 @strcmp(i8* getelementptr inbounds ([5 x i8], [5 x i8]* @.str.11, i64 0, i64 0), i8* %0)
%43 = icmp eq i64 %42, 0
br i1 %43, label %62, label %44
44: ; preds = %41
%45 = tail call i64 @strcmp(i8* getelementptr inbounds ([5 x i8], [5 x i8]* @.str.12, i64 0, i64 0), i8* %0)
%46 = icmp eq i64 %45, 0
br i1 %46, label %62, label %47
47: ; preds = %44
%48 = tail call i64 @strcmp(i8* getelementptr inbounds ([6 x i8], [6 x i8]* @.str.13, i64 0, i64 0), i8* %0)
%49 = icmp eq i64 %48, 0
br i1 %49, label %62, label %50
50: ; preds = %47
%51 = tail call i64 @strcmp(i8* getelementptr inbounds ([6 x i8], [6 x i8]* @.str.14, i64 0, i64 0), i8* %0)
%52 = icmp eq i64 %51, 0
br i1 %52, label %62, label %53
53: ; preds = %50
%54 = tail call i64 @strcmp(i8* getelementptr inbounds ([6 x i8], [6 x i8]* @.str.15, i64 0, i64 0), i8* %0)
%55 = icmp eq i64 %54, 0
br i1 %55, label %62, label %56
56: ; preds = %53
%57 = tail call i64 @strcmp(i8* getelementptr inbounds ([7 x i8], [7 x i8]* @.str.16, i64 0, i64 0), i8* %0)
%58 = icmp eq i64 %57, 0
br i1 %58, label %62, label %59
59: ; preds = %56
%60 = tail call i64 @strcmp(i8* getelementptr inbounds ([7 x i8], [7 x i8]* @.str.17, i64 0, i64 0), i8* %0)
%61 = icmp eq i64 %60, 0
br i1 %61, label %62, label %65
62: ; preds = %59, %56, %53, %50, %47, %44, %41, %38, %35, %32, %29, %26, %23, %20, %17, %14, %11, %2
%63 = phi i32* [ @B0, %2 ], [ @B50, %11 ], [ @B75, %14 ], [ @B110, %17 ], [ @B134, %20 ], [ @B150, %23 ], [ @B200, %26 ], [ @B300, %29 ], [ @B1200, %32 ], [ @B1800, %35 ], [ @B2400, %38 ], [ @B4800, %41 ], [ @B9600, %44 ], [ @B19200, %47 ], [ @B38400, %50 ], [ @B57600, %53 ], [ @B115200, %56 ], [ @B230400, %59 ]
%64 = load i32, i32* %63
store i32 %64, i32* %1
br label %65
65: ; preds = %62, %59
%66 = phi i32 [ 1, %59 ], [ 0, %62 ]
ret i32 %66
}