#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 */
struct option {
  char *member_0;
  char member_3;
  int /*<<< orphan*/ member_2;
  int /*<<< orphan*/ const member_1;
};

/* Variables and functions */
int getopt_long(int, char **, char *, struct option *, int *);
int /*<<< orphan*/ optarg;
int /*<<< orphan*/ parse_float_option(int /*<<< orphan*/, float *);
int /*<<< orphan*/ parse_int_option(int /*<<< orphan*/, int *);
#define required_argument 128
int /*<<< orphan*/ usage();
void process_options(int argc, char *argv[], float *length, int *segments,
                     float *deltaangle, int *left, float *thickness,
                     float *taper, float *curl, int *build_platform,
                     int *pair) {
  int i, c;
  int digit_optind = 0;
  int optind;
  float f;
  while (1) {
    int this_option_optind = optind ? optind : 1;
    int option_index = 0;
    static struct option long_options[] = {
        {"buildplatform", 0, 0, 'b'},
        {"pair", 0, 0, 'p'},
        {"segments", required_argument, 0, 's'},
        {"angle", required_argument, 0, 'a'},
        {"curl", required_argument, 0, 'c'},
        {"left", required_argument, 0, 'l'},
        {"size", required_argument, 0, 'z'},
        {"thickness", required_argument, 0, 't'},
        {"taper", required_argument, 0, 'T'},
        {0, 0, 0, 0}};
    c = getopt_long(argc, argv, "a:bc:l:ps:t:T:z:", long_options,
                    &option_index);
    if (c == -1)
      break;
    switch (c) {
    case 'p':
      *pair = 1;
      break;
    case 'b':
      *build_platform = 1;
      break;
    case 'a':
      if (parse_float_option(optarg, &f))
        usage();
      *deltaangle = f;
      break;
    case 's':
      if (parse_int_option(optarg, &i))
        usage();
      *segments = i;
      break;
    case 'l':
      *left = i;
      break;
    case 'T':
      if (parse_float_option(optarg, &f))
        usage();
      *taper = f;
      break;
    case 'z':
      if (parse_float_option(optarg, &f))
        usage();
      *length = f;
      break;
    case 't':
      if (parse_float_option(optarg, &f))
        usage();
      *thickness = f;
      break;
    case 'c':
      if (parse_float_option(optarg, &f))
        usage();
      *curl = f;
      break;
    default:
      usage();
      break;
    }
  }
}


x86 assembly (clang, -O0):
<process_options>:
push   %rbp
mov    %rsp,%rbp
sub    $0x60,%rsp
mov    0x30(%rbp),%rax
mov    0x28(%rbp),%rax
mov    0x20(%rbp),%rax
mov    0x18(%rbp),%rax
mov    0x10(%rbp),%rax
mov    %edi,-0x4(%rbp)
mov    %rsi,-0x10(%rbp)
mov    %rdx,-0x18(%rbp)
mov    %rcx,-0x20(%rbp)
mov    %r8,-0x28(%rbp)
mov    %r9,-0x30(%rbp)
movl   $0x0,-0x3c(%rbp)
cmpl   $0x0,-0x40(%rbp)
je     118f <process_options+0x4f>
mov    -0x40(%rbp),%eax
mov    %eax,-0x50(%rbp)
jmp    119c <process_options+0x5c>
mov    $0x1,%eax
mov    %eax,-0x50(%rbp)
jmp    119c <process_options+0x5c>
mov    -0x50(%rbp),%eax
mov    %eax,-0x48(%rbp)
movl   $0x0,-0x4c(%rbp)
mov    -0x4(%rbp),%edi
mov    -0x10(%rbp),%rsi
lea    0xf26(%rip),%rdx
lea    0x2e92(%rip),%rcx
lea    -0x4c(%rbp),%r8
call   1040 <getopt_long@plt>
mov    %eax,-0x38(%rbp)
cmpl   $0xffffffff,-0x38(%rbp)
jne    11d9 <process_options+0x99>
jmp    136e <process_options+0x22e>
mov    -0x38(%rbp),%eax
add    $0xffffffac,%eax
mov    %eax,%ecx
mov    %rcx,-0x58(%rbp)
sub    $0x26,%eax
ja     1362 <process_options+0x222>
mov    -0x58(%rbp),%rax
lea    0xe07(%rip),%rcx
movslq (%rcx,%rax,4),%rax
add    %rcx,%rax
jmp    *%rax
mov    0x30(%rbp),%rax
movl   $0x1,(%rax)
jmp    1369 <process_options+0x229>
mov    0x28(%rbp),%rax
movl   $0x1,(%rax)
jmp    1369 <process_options+0x229>
mov    0x2dd1(%rip),%rax
mov    (%rax),%edi
lea    -0x44(%rbp),%rsi
call   1060 <parse_float_option@plt>
cmp    $0x0,%eax
je     1242 <process_options+0x102>
mov    $0x0,%al
call   1050 <usage@plt>
movss  -0x44(%rbp),%xmm0
mov    -0x28(%rbp),%rax
movss  %xmm0,(%rax)
jmp    1369 <process_options+0x229>
mov    0x2d9d(%rip),%rax
mov    (%rax),%edi
lea    -0x34(%rbp),%rsi
call   1030 <parse_int_option@plt>
cmp    $0x0,%eax
je     1276 <process_options+0x136>
mov    $0x0,%al
call   1050 <usage@plt>
mov    -0x34(%rbp),%ecx
mov    -0x20(%rbp),%rax
mov    %ecx,(%rax)
jmp    1369 <process_options+0x229>
mov    -0x34(%rbp),%ecx
mov    -0x30(%rbp),%rax
mov    %ecx,(%rax)
jmp    1369 <process_options+0x229>
mov    0x2d5f(%rip),%rax
mov    (%rax),%edi
lea    -0x44(%rbp),%rsi
call   1060 <parse_float_option@plt>
cmp    $0x0,%eax
je     12b4 <process_options+0x174>
mov    $0x0,%al
call   1050 <usage@plt>
movss  -0x44(%rbp),%xmm0
mov    0x18(%rbp),%rax
movss  %xmm0,(%rax)
jmp    1369 <process_options+0x229>
mov    0x2d2b(%rip),%rax
mov    (%rax),%edi
lea    -0x44(%rbp),%rsi
call   1060 <parse_float_option@plt>
cmp    $0x0,%eax
je     12e8 <process_options+0x1a8>
mov    $0x0,%al
call   1050 <usage@plt>
movss  -0x44(%rbp),%xmm0
mov    -0x18(%rbp),%rax
movss  %xmm0,(%rax)
jmp    1369 <process_options+0x229>
mov    0x2cf7(%rip),%rax
mov    (%rax),%edi
lea    -0x44(%rbp),%rsi
call   1060 <parse_float_option@plt>
cmp    $0x0,%eax
je     131c <process_options+0x1dc>
mov    $0x0,%al
call   1050 <usage@plt>
movss  -0x44(%rbp),%xmm0
mov    0x10(%rbp),%rax
movss  %xmm0,(%rax)
jmp    1369 <process_options+0x229>
mov    0x2cc3(%rip),%rax
mov    (%rax),%edi
lea    -0x44(%rbp),%rsi
call   1060 <parse_float_option@plt>
cmp    $0x0,%eax
je     1350 <process_options+0x210>
mov    $0x0,%al
call   1050 <usage@plt>
movss  -0x44(%rbp),%xmm0
mov    0x20(%rbp),%rax
movss  %xmm0,(%rax)
jmp    1369 <process_options+0x229>
mov    $0x0,%al
call   1050 <usage@plt>
jmp    117a <process_options+0x3a>
add    $0x60,%rsp
pop    %rbp
ret

x86 assembly (clang, -O2):
<process_options>:
push   %rbp
push   %r15
push   %r14
push   %r13
push   %r12
push   %rbx
sub    $0x38,%rsp
mov    %r9,0x30(%rsp)
mov    %r8,0x28(%rsp)
mov    %rcx,0x20(%rsp)
mov    %rdx,0x18(%rsp)
mov    %rsi,%rbx
mov    %edi,%ebp
lea    0xf6f(%rip),%r14
lea    0x2edb(%rip),%r15
lea    0x14(%rsp),%r12
lea    0xe7f(%rip),%r13
jmp    1190 <process_options+0x50>
mov    0x10(%rsp),%eax
mov    0x30(%rsp),%rcx
mov    %eax,(%rcx)
xchg   %ax,%ax
movl   $0x0,0x14(%rsp)
mov    %ebp,%edi
mov    %rbx,%rsi
mov    %r14,%rdx
mov    %r15,%rcx
mov    %r12,%r8
call   1040 <getopt_long@plt>
lea    -0x54(%rax),%ecx
cmp    $0x26,%ecx
ja     130f <process_options+0x1cf>
movslq 0x0(%r13,%rcx,4),%rax
add    %r13,%rax
jmp    *%rax
mov    0x2e30(%rip),%rax
mov    (%rax),%edi
lea    0xc(%rsp),%rsi
call   1060 <parse_float_option@plt>
test   %eax,%eax
je     11df <process_options+0x9f>
xor    %eax,%eax
call   1050 <usage@plt>
movss  0xc(%rsp),%xmm0
mov    0x78(%rsp),%rax
movss  %xmm0,(%rax)
jmp    1190 <process_options+0x50>
mov    0x2e01(%rip),%rax
mov    (%rax),%edi
lea    0xc(%rsp),%rsi
call   1060 <parse_float_option@plt>
test   %eax,%eax
je     120e <process_options+0xce>
xor    %eax,%eax
call   1050 <usage@plt>
movss  0xc(%rsp),%xmm0
mov    0x28(%rsp),%rax
movss  %xmm0,(%rax)
jmp    1190 <process_options+0x50>
mov    0x88(%rsp),%rax
movl   $0x1,(%rax)
jmp    1190 <process_options+0x50>
mov    0x2dbc(%rip),%rax
mov    (%rax),%edi
lea    0xc(%rsp),%rsi
call   1060 <parse_float_option@plt>
test   %eax,%eax
je     1253 <process_options+0x113>
xor    %eax,%eax
call   1050 <usage@plt>
movss  0xc(%rsp),%xmm0
mov    0x80(%rsp),%rax
movss  %xmm0,(%rax)
jmp    1190 <process_options+0x50>
mov    0x90(%rsp),%rax
movl   $0x1,(%rax)
jmp    1190 <process_options+0x50>
mov    0x2d74(%rip),%rax
mov    (%rax),%edi
lea    0x10(%rsp),%rsi
call   1030 <parse_int_option@plt>
test   %eax,%eax
je     129b <process_options+0x15b>
xor    %eax,%eax
call   1050 <usage@plt>
mov    0x10(%rsp),%eax
mov    0x20(%rsp),%rcx
mov    %eax,(%rcx)
jmp    1190 <process_options+0x50>
mov    0x2d46(%rip),%rax
mov    (%rax),%edi
lea    0xc(%rsp),%rsi
call   1060 <parse_float_option@plt>
test   %eax,%eax
je     12c9 <process_options+0x189>
xor    %eax,%eax
call   1050 <usage@plt>
movss  0xc(%rsp),%xmm0
mov    0x70(%rsp),%rax
movss  %xmm0,(%rax)
jmp    1190 <process_options+0x50>
mov    0x2d14(%rip),%rax
mov    (%rax),%edi
lea    0xc(%rsp),%rsi
call   1060 <parse_float_option@plt>
test   %eax,%eax
je     12fb <process_options+0x1bb>
xor    %eax,%eax
call   1050 <usage@plt>
movss  0xc(%rsp),%xmm0
mov    0x18(%rsp),%rax
movss  %xmm0,(%rax)
jmp    1190 <process_options+0x50>
cmp    $0xffffffff,%eax
je     1320 <process_options+0x1e0>
xor    %eax,%eax
call   1050 <usage@plt>
jmp    1190 <process_options+0x50>
add    $0x38,%rsp
pop    %rbx
pop    %r12
pop    %r13
pop    %r14
pop    %r15
pop    %rbp
ret

LLVM IR (-O0):
%struct.option = type { i8*, i8, i32, i32 }
@process_options.long_options = internal global [10 x %struct.option] [%struct.option { i8* getelementptr inbounds ([14 x i8], [14 x i8]* @.str, i32 0, i32 0), i8 0, i32 0, i32 98 }, %struct.option { i8* getelementptr inbounds ([5 x i8], [5 x i8]* @.str.1, i32 0, i32 0), i8 0, i32 0, i32 112 }, %struct.option { i8* getelementptr inbounds ([9 x i8], [9 x i8]* @.str.2, i32 0, i32 0), i8 -128, i32 0, i32 115 }, %struct.option { i8* getelementptr inbounds ([6 x i8], [6 x i8]* @.str.3, i32 0, i32 0), i8 -128, i32 0, i32 97 }, %struct.option { i8* getelementptr inbounds ([5 x i8], [5 x i8]* @.str.4, i32 0, i32 0), i8 -128, i32 0, i32 99 }, %struct.option { i8* getelementptr inbounds ([5 x i8], [5 x i8]* @.str.5, i32 0, i32 0), i8 -128, i32 0, i32 108 }, %struct.option { i8* getelementptr inbounds ([5 x i8], [5 x i8]* @.str.6, i32 0, i32 0), i8 -128, i32 0, i32 122 }, %struct.option { i8* getelementptr inbounds ([10 x i8], [10 x i8]* @.str.7, i32 0, i32 0), i8 -128, i32 0, i32 116 }, %struct.option { i8* getelementptr inbounds ([6 x i8], [6 x i8]* @.str.8, i32 0, i32 0), i8 -128, i32 0, i32 84 }, %struct.option zeroinitializer]
@.str = [14 x i8] c"buildplatform\00"
@.str.1 = [5 x i8] c"pair\00"
@.str.2 = [9 x i8] c"segments\00"
@.str.3 = [6 x i8] c"angle\00"
@.str.4 = [5 x i8] c"curl\00"
@.str.5 = [5 x i8] c"left\00"
@.str.6 = [5 x i8] c"size\00"
@.str.7 = [10 x i8] c"thickness\00"
@.str.8 = [6 x i8] c"taper\00"
@.str.9 = [17 x i8] c"a:bc:l:ps:t:T:z:\00"
@optarg = global i32 0
define void @process_options(i32 %0, i8** %1, float* %2, i32* %3, float* %4, i32* %5, float* %6, float* %7, float* %8, i32* %9, i32* %10) {
%12 = alloca i32
%13 = alloca i8**
%14 = alloca float*
%15 = alloca i32*
%16 = alloca float*
%17 = alloca i32*
%18 = alloca float*
%19 = alloca float*
%20 = alloca float*
%21 = alloca i32*
%22 = alloca i32*
%23 = alloca i32
%24 = alloca i32
%25 = alloca i32
%26 = alloca i32
%27 = alloca float
%28 = alloca i32
%29 = alloca i32
store i32 %0, i32* %12
store i8** %1, i8*** %13
store float* %2, float** %14
store i32* %3, i32** %15
store float* %4, float** %16
store i32* %5, i32** %17
store float* %6, float** %18
store float* %7, float** %19
store float* %8, float** %20
store i32* %9, i32** %21
store i32* %10, i32** %22
store i32 0, i32* %25
br label %30
30: ; preds = %11, %109
%31 = load i32, i32* %26
%32 = icmp ne i32 %31, 0
br i1 %32, label %33, label %35
33: ; preds = %30
%34 = load i32, i32* %26
br label %36
35: ; preds = %30
br label %36
36: ; preds = %35, %33
%37 = phi i32 [ %34, %33 ], [ 1, %35 ]
store i32 %37, i32* %28
store i32 0, i32* %29
%38 = load i32, i32* %12
%39 = load i8**, i8*** %13
%40 = call i32 @getopt_long(i32 %38, i8** %39, i8* getelementptr inbounds ([17 x i8], [17 x i8]* @.str.9, i64 0, i64 0), %struct.option* getelementptr inbounds ([10 x %struct.option], [10 x %struct.option]* @process_options.long_options, i64 0, i64 0), i32* %29)
store i32 %40, i32* %24
%41 = load i32, i32* %24
%42 = icmp eq i32 %41, -1
br i1 %42, label %43, label %44
43: ; preds = %36
br label %110
44: ; preds = %36
%45 = load i32, i32* %24
switch i32 %45, label %107 [
i32 112, label %46
i32 98, label %48
i32 97, label %50
i32 115, label %59
i32 108, label %68
i32 84, label %71
i32 122, label %80
i32 116, label %89
i32 99, label %98
]
46: ; preds = %44
%47 = load i32*, i32** %22
store i32 1, i32* %47
br label %109
48: ; preds = %44
%49 = load i32*, i32** %21
store i32 1, i32* %49
br label %109
50: ; preds = %44
%51 = load i32, i32* @optarg
%52 = call i32 @parse_float_option(i32 %51, float* %27)
%53 = icmp ne i32 %52, 0
br i1 %53, label %54, label %56
54: ; preds = %50
%55 = call i32 (...) @usage()
br label %56
56: ; preds = %54, %50
%57 = load float, float* %27
%58 = load float*, float** %16
store float %57, float* %58
br label %109
59: ; preds = %44
%60 = load i32, i32* @optarg
%61 = call i32 @parse_int_option(i32 %60, i32* %23)
%62 = icmp ne i32 %61, 0
br i1 %62, label %63, label %65
63: ; preds = %59
%64 = call i32 (...) @usage()
br label %65
65: ; preds = %63, %59
%66 = load i32, i32* %23
%67 = load i32*, i32** %15
store i32 %66, i32* %67
br label %109
68: ; preds = %44
%69 = load i32, i32* %23
%70 = load i32*, i32** %17
store i32 %69, i32* %70
br label %109
71: ; preds = %44
%72 = load i32, i32* @optarg
%73 = call i32 @parse_float_option(i32 %72, float* %27)
%74 = icmp ne i32 %73, 0
br i1 %74, label %75, label %77
75: ; preds = %71
%76 = call i32 (...) @usage()
br label %77
77: ; preds = %75, %71
%78 = load float, float* %27
%79 = load float*, float** %19
store float %78, float* %79
br label %109
80: ; preds = %44
%81 = load i32, i32* @optarg
%82 = call i32 @parse_float_option(i32 %81, float* %27)
%83 = icmp ne i32 %82, 0
br i1 %83, label %84, label %86
84: ; preds = %80
%85 = call i32 (...) @usage()
br label %86
86: ; preds = %84, %80
%87 = load float, float* %27
%88 = load float*, float** %14
store float %87, float* %88
br label %109
89: ; preds = %44
%90 = load i32, i32* @optarg
%91 = call i32 @parse_float_option(i32 %90, float* %27)
%92 = icmp ne i32 %91, 0
br i1 %92, label %93, label %95
93: ; preds = %89
%94 = call i32 (...) @usage()
br label %95
95: ; preds = %93, %89
%96 = load float, float* %27
%97 = load float*, float** %18
store float %96, float* %97
br label %109
98: ; preds = %44
%99 = load i32, i32* @optarg
%100 = call i32 @parse_float_option(i32 %99, float* %27)
%101 = icmp ne i32 %100, 0
br i1 %101, label %102, label %104
102: ; preds = %98
%103 = call i32 (...) @usage()
br label %104
104: ; preds = %102, %98
%105 = load float, float* %27
%106 = load float*, float** %20
store float %105, float* %106
br label %109
107: ; preds = %44
%108 = call i32 (...) @usage()
br label %109
109: ; preds = %107, %104, %95, %86, %77, %68, %65, %56, %48, %46
br label %30
110: ; preds = %43
ret void
}

LLVM IR (-O2):
%struct.option = type { i8*, i8, i32, i32 }
@process_options.long_options = internal global [10 x %struct.option] [%struct.option { i8* getelementptr inbounds ([14 x i8], [14 x i8]* @.str, i32 0, i32 0), i8 0, i32 0, i32 98 }, %struct.option { i8* getelementptr inbounds ([5 x i8], [5 x i8]* @.str.1, i32 0, i32 0), i8 0, i32 0, i32 112 }, %struct.option { i8* getelementptr inbounds ([9 x i8], [9 x i8]* @.str.2, i32 0, i32 0), i8 -128, i32 0, i32 115 }, %struct.option { i8* getelementptr inbounds ([6 x i8], [6 x i8]* @.str.3, i32 0, i32 0), i8 -128, i32 0, i32 97 }, %struct.option { i8* getelementptr inbounds ([5 x i8], [5 x i8]* @.str.4, i32 0, i32 0), i8 -128, i32 0, i32 99 }, %struct.option { i8* getelementptr inbounds ([5 x i8], [5 x i8]* @.str.5, i32 0, i32 0), i8 -128, i32 0, i32 108 }, %struct.option { i8* getelementptr inbounds ([5 x i8], [5 x i8]* @.str.6, i32 0, i32 0), i8 -128, i32 0, i32 122 }, %struct.option { i8* getelementptr inbounds ([10 x i8], [10 x i8]* @.str.7, i32 0, i32 0), i8 -128, i32 0, i32 116 }, %struct.option { i8* getelementptr inbounds ([6 x i8], [6 x i8]* @.str.8, i32 0, i32 0), i8 -128, i32 0, i32 84 }, %struct.option zeroinitializer]
@.str = [14 x i8] c"buildplatform\00"
@.str.1 = [5 x i8] c"pair\00"
@.str.2 = [9 x i8] c"segments\00"
@.str.3 = [6 x i8] c"angle\00"
@.str.4 = [5 x i8] c"curl\00"
@.str.5 = [5 x i8] c"left\00"
@.str.6 = [5 x i8] c"size\00"
@.str.7 = [10 x i8] c"thickness\00"
@.str.8 = [6 x i8] c"taper\00"
@.str.9 = [17 x i8] c"a:bc:l:ps:t:T:z:\00"
@optarg = global i32 0
define void @process_options(i32 %0, i8** %1, float* nocapture writeonly %2, i32* nocapture writeonly %3, float* nocapture writeonly %4, i32* nocapture writeonly %5, float* nocapture writeonly %6, float* nocapture writeonly %7, float* nocapture writeonly %8, i32* nocapture writeonly %9, i32* nocapture writeonly %10) {
%12 = alloca i32
%13 = alloca float
%14 = alloca i32
%15 = bitcast i32* %12 to i8*
%16 = bitcast float* %13 to i8*
%17 = bitcast i32* %14 to i8*
br label %18
18: ; preds = %74, %11
store i32 0, i32* %14
%19 = call i32 @getopt_long(i32 %0, i8** %1, i8* getelementptr inbounds ([17 x i8], [17 x i8]* @.str.9, i64 0, i64 0), %struct.option* getelementptr inbounds ([10 x %struct.option], [10 x %struct.option]* @process_options.long_options, i64 0, i64 0), i32* %14)
switch i32 %19, label %72 [
i32 -1, label %75
i32 112, label %20
i32 98, label %21
i32 97, label %22
i32 115, label %30
i32 108, label %38
i32 84, label %40
i32 122, label %48
i32 116, label %56
i32 99, label %64
]
20: ; preds = %18
store i32 1, i32* %10
br label %74
21: ; preds = %18
store i32 1, i32* %9
br label %74
22: ; preds = %18
%23 = load i32, i32* @optarg
%24 = call i32 @parse_float_option(i32 %23, float* %13)
%25 = icmp eq i32 %24, 0
br i1 %25, label %28, label %26
26: ; preds = %22
%27 = call i32 (...) @usage()
br label %28
28: ; preds = %26, %22
%29 = load float, float* %13
store float %29, float* %4
br label %74
30: ; preds = %18
%31 = load i32, i32* @optarg
%32 = call i32 @parse_int_option(i32 %31, i32* %12)
%33 = icmp eq i32 %32, 0
br i1 %33, label %36, label %34
34: ; preds = %30
%35 = call i32 (...) @usage()
br label %36
36: ; preds = %34, %30
%37 = load i32, i32* %12
store i32 %37, i32* %3
br label %74
38: ; preds = %18
%39 = load i32, i32* %12
store i32 %39, i32* %5
br label %74
40: ; preds = %18
%41 = load i32, i32* @optarg
%42 = call i32 @parse_float_option(i32 %41, float* %13)
%43 = icmp eq i32 %42, 0
br i1 %43, label %46, label %44
44: ; preds = %40
%45 = call i32 (...) @usage()
br label %46
46: ; preds = %44, %40
%47 = load float, float* %13
store float %47, float* %7
br label %74
48: ; preds = %18
%49 = load i32, i32* @optarg
%50 = call i32 @parse_float_option(i32 %49, float* %13)
%51 = icmp eq i32 %50, 0
br i1 %51, label %54, label %52
52: ; preds = %48
%53 = call i32 (...) @usage()
br label %54
54: ; preds = %52, %48
%55 = load float, float* %13
store float %55, float* %2
br label %74
56: ; preds = %18
%57 = load i32, i32* @optarg
%58 = call i32 @parse_float_option(i32 %57, float* %13)
%59 = icmp eq i32 %58, 0
br i1 %59, label %62, label %60
60: ; preds = %56
%61 = call i32 (...) @usage()
br label %62
62: ; preds = %60, %56
%63 = load float, float* %13
store float %63, float* %6
br label %74
64: ; preds = %18
%65 = load i32, i32* @optarg
%66 = call i32 @parse_float_option(i32 %65, float* %13)
%67 = icmp eq i32 %66, 0
br i1 %67, label %70, label %68
68: ; preds = %64
%69 = call i32 (...) @usage()
br label %70
70: ; preds = %68, %64
%71 = load float, float* %13
store float %71, float* %8
br label %74
72: ; preds = %18
%73 = call i32 (...) @usage()
br label %74
74: ; preds = %20, %21, %28, %36, %38, %46, %54, %62, %70, %72
br label %18
75: ; preds = %18
ret void
}