int main(int argc, char *argv[]) {
  int port = 0;
  char *data = ((void *)0);
  char *state = ((void *)0);
  char *source = ((void *)0);
  char *tx_addr = ((void *)0);
  sys_init(1);
  if (argc < 2)
    usage(argv[0]);
  for (int i = 2; (i + 1) < argc; i += 2)
    if (str_cmp(argv[i], "-d") == 0)
      data = argv[i + 1];
    else if (str_cmp(argv[i], "-c") == 0)
      source = argv[i + 1];
    else if (str_cmp(argv[i], "-s") == 0)
      state = argv[i + 1];
    else if (str_cmp(argv[i], "-p") == 0)
      port = parse_port(argv[i + 1]);
    else if (str_cmp(argv[i], "-t") == 0) {
      tx_addr = argv[i + 1];
      if (str_len(tx_addr) >= 64)
        sys_die("tx address exceeds the maximum length\n");
    } else
      usage(argv[0]);
  if (str_cmp(argv[1], "start") == 0 && source != ((void *)0) &&
      data != ((void *)0) && state != ((void *)0) && port != 0 &&
      tx_addr == ((void *)0)) {
    int tx_port = 0;
    tx_server(source, state, &tx_port);
    vol_init(0, data);
    char addr[64];
    str_print(addr, "127.0.0.1:%d", tx_port);
    multiplex(argv[0], addr, port);
    tx_free();
  } else if (str_cmp(argv[1], "processor") == 0 && source == ((void *)0) &&
             data == ((void *)0) && state == ((void *)0) && port != 0 &&
             tx_addr != ((void *)0)) {
    processor(tx_addr, port);
  } else if (str_cmp(argv[1], "tx") == 0 && source != ((void *)0) &&
             data == ((void *)0) && state != ((void *)0) && port != 0 &&
             tx_addr == ((void *)0)) {
    tx_server(source, state, &port);
  } else if (str_cmp(argv[1], "vol") == 0 && source == ((void *)0) &&
             data != ((void *)0) && state == ((void *)0) && port != 0 &&
             tx_addr != ((void *)0)) {
    tx_attach(tx_addr);
    vol_init(port, data);
  } else if (str_cmp(argv[1], "exec") == 0 && source == ((void *)0) &&
             data == ((void *)0) && state == ((void *)0) && port != 0 &&
             tx_addr != ((void *)0)) {
    tx_attach(tx_addr);
    multiplex(argv[0], tx_addr, port);
  } else if (str_cmp(argv[1], "convert") == 0 && source == ((void *)0) &&
             data == ((void *)0) && state == ((void *)0) && port == 0 &&
             tx_addr == ((void *)0)) {
    conv_parse();
  } else
    usage(argv[0]);
  return 0;
}


x86 assembly (clang, -O0):
<main>:
push   %rbp
mov    %rsp,%rbp
sub    $0x80,%rsp
movl   $0x0,-0x4(%rbp)
mov    %edi,-0x8(%rbp)
mov    %rsi,-0x10(%rbp)
movl   $0x0,-0x14(%rbp)
movq   $0x0,-0x20(%rbp)
movq   $0x0,-0x28(%rbp)
movq   $0x0,-0x30(%rbp)
movq   $0x0,-0x38(%rbp)
mov    $0x1,%edi
mov    $0x0,%al
call   1070 <sys_init@plt>
cmpl   $0x2,-0x8(%rbp)
jge    1244 <main+0x64>
mov    -0x10(%rbp),%rax
mov    (%rax),%rdi
mov    $0x0,%al
call   10c0 <usage@plt>
movl   $0x2,-0x3c(%rbp)
mov    -0x3c(%rbp),%eax
add    $0x1,%eax
cmp    -0x8(%rbp),%eax
jge    13e8 <main+0x208>
mov    -0x10(%rbp),%rax
movslq -0x3c(%rbp),%rcx
mov    (%rax,%rcx,8),%rdi
lea    0xd93(%rip),%rsi
mov    $0x0,%al
call   1060 <str_cmp@plt>
cmp    $0x0,%eax
jne    1297 <main+0xb7>
mov    -0x10(%rbp),%rax
mov    -0x3c(%rbp),%ecx
add    $0x1,%ecx
movslq %ecx,%rcx
mov    (%rax,%rcx,8),%rax
mov    %rax,-0x20(%rbp)
jmp    13d5 <main+0x1f5>
mov    -0x10(%rbp),%rax
movslq -0x3c(%rbp),%rcx
mov    (%rax,%rcx,8),%rdi
lea    0xd59(%rip),%rsi
mov    $0x0,%al
call   1060 <str_cmp@plt>
cmp    $0x0,%eax
jne    12d4 <main+0xf4>
mov    -0x10(%rbp),%rax
mov    -0x3c(%rbp),%ecx
add    $0x1,%ecx
movslq %ecx,%rcx
mov    (%rax,%rcx,8),%rax
mov    %rax,-0x30(%rbp)
jmp    13d0 <main+0x1f0>
mov    -0x10(%rbp),%rax
movslq -0x3c(%rbp),%rcx
mov    (%rax,%rcx,8),%rdi
lea    0xd1f(%rip),%rsi
mov    $0x0,%al
call   1060 <str_cmp@plt>
cmp    $0x0,%eax
jne    1311 <main+0x131>
mov    -0x10(%rbp),%rax
mov    -0x3c(%rbp),%ecx
add    $0x1,%ecx
movslq %ecx,%rcx
mov    (%rax,%rcx,8),%rax
mov    %rax,-0x28(%rbp)
jmp    13cb <main+0x1eb>
mov    -0x10(%rbp),%rax
movslq -0x3c(%rbp),%rcx
mov    (%rax,%rcx,8),%rdi
lea    0xce5(%rip),%rsi
mov    $0x0,%al
call   1060 <str_cmp@plt>
cmp    $0x0,%eax
jne    1354 <main+0x174>
mov    -0x10(%rbp),%rax
mov    -0x3c(%rbp),%ecx
add    $0x1,%ecx
movslq %ecx,%rcx
mov    (%rax,%rcx,8),%rdi
mov    $0x0,%al
call   10b0 <parse_port@plt>
mov    %eax,-0x14(%rbp)
jmp    13c6 <main+0x1e6>
mov    -0x10(%rbp),%rax
movslq -0x3c(%rbp),%rcx
mov    (%rax,%rcx,8),%rdi
lea    0xca5(%rip),%rsi
mov    $0x0,%al
call   1060 <str_cmp@plt>
cmp    $0x0,%eax
jne    13b3 <main+0x1d3>
mov    -0x10(%rbp),%rax
mov    -0x3c(%rbp),%ecx
add    $0x1,%ecx
movslq %ecx,%rcx
mov    (%rax,%rcx,8),%rax
mov    %rax,-0x38(%rbp)
mov    -0x38(%rbp),%rdi
mov    $0x0,%al
call   10f0 <str_len@plt>
cmp    $0x40,%eax
jl     13ae <main+0x1ce>
lea    0xc68(%rip),%rdi
mov    $0x0,%al
call   1080 <sys_die@plt>
jmp    13c1 <main+0x1e1>
mov    -0x10(%rbp),%rax
mov    (%rax),%rdi
mov    $0x0,%al
call   10c0 <usage@plt>
jmp    13c6 <main+0x1e6>
jmp    13cb <main+0x1eb>
jmp    13d0 <main+0x1f0>
jmp    13d5 <main+0x1f5>
jmp    13da <main+0x1fa>
mov    -0x3c(%rbp),%eax
add    $0x2,%eax
mov    %eax,-0x3c(%rbp)
jmp    124b <main+0x6b>
mov    -0x10(%rbp),%rax
mov    0x8(%rax),%rdi
lea    0xc3f(%rip),%rsi
mov    $0x0,%al
call   1060 <str_cmp@plt>
cmp    $0x0,%eax
jne    149a <main+0x2ba>
cmpq   $0x0,-0x30(%rbp)
je     149a <main+0x2ba>
cmpq   $0x0,-0x20(%rbp)
je     149a <main+0x2ba>
cmpq   $0x0,-0x28(%rbp)
je     149a <main+0x2ba>
cmpl   $0x0,-0x14(%rbp)
je     149a <main+0x2ba>
cmpq   $0x0,-0x38(%rbp)
jne    149a <main+0x2ba>
movl   $0x0,-0x40(%rbp)
mov    -0x30(%rbp),%rdi
mov    -0x28(%rbp),%rsi
lea    -0x40(%rbp),%rdx
mov    $0x0,%al
call   1100 <tx_server@plt>
mov    -0x20(%rbp),%rsi
xor    %edi,%edi
mov    $0x0,%al
call   1050 <vol_init@plt>
lea    -0x80(%rbp),%rdi
mov    -0x40(%rbp),%edx
lea    0xbca(%rip),%rsi
mov    $0x0,%al
call   1090 <str_print@plt>
mov    -0x10(%rbp),%rax
mov    (%rax),%rdi
lea    -0x80(%rbp),%rsi
mov    -0x14(%rbp),%edx
mov    $0x0,%al
call   10e0 <multiplex@plt>
mov    $0x0,%al
call   10a0 <tx_free@plt>
jmp    16e4 <main+0x504>
mov    -0x10(%rbp),%rax
mov    0x8(%rax),%rdi
lea    0xba0(%rip),%rsi
mov    $0x0,%al
call   1060 <str_cmp@plt>
cmp    $0x0,%eax
jne    1502 <main+0x322>
cmpq   $0x0,-0x30(%rbp)
jne    1502 <main+0x322>
cmpq   $0x0,-0x20(%rbp)
jne    1502 <main+0x322>
cmpq   $0x0,-0x28(%rbp)
jne    1502 <main+0x322>
cmpl   $0x0,-0x14(%rbp)
je     1502 <main+0x322>
cmpq   $0x0,-0x38(%rbp)
je     1502 <main+0x322>
mov    -0x38(%rbp),%rdi
mov    -0x14(%rbp),%esi
mov    $0x0,%al
call   10d0 <processor@plt>
jmp    16df <main+0x4ff>
mov    -0x10(%rbp),%rax
mov    0x8(%rax),%rdi
lea    0xb42(%rip),%rsi
mov    $0x0,%al
call   1060 <str_cmp@plt>
cmp    $0x0,%eax
jne    156f <main+0x38f>
cmpq   $0x0,-0x30(%rbp)
je     156f <main+0x38f>
cmpq   $0x0,-0x20(%rbp)
jne    156f <main+0x38f>
cmpq   $0x0,-0x28(%rbp)
je     156f <main+0x38f>
cmpl   $0x0,-0x14(%rbp)
je     156f <main+0x38f>
cmpq   $0x0,-0x38(%rbp)
jne    156f <main+0x38f>
mov    -0x30(%rbp),%rdi
mov    -0x28(%rbp),%rsi
lea    -0x14(%rbp),%rdx
mov    $0x0,%al
call   1100 <tx_server@plt>
jmp    16da <main+0x4fa>
mov    -0x10(%rbp),%rax
mov    0x8(%rax),%rdi
lea    0xad8(%rip),%rsi
mov    $0x0,%al
call   1060 <str_cmp@plt>
cmp    $0x0,%eax
jne    15e2 <main+0x402>
cmpq   $0x0,-0x30(%rbp)
jne    15e2 <main+0x402>
cmpq   $0x0,-0x20(%rbp)
je     15e2 <main+0x402>
cmpq   $0x0,-0x28(%rbp)
jne    15e2 <main+0x402>
cmpl   $0x0,-0x14(%rbp)
je     15e2 <main+0x402>
cmpq   $0x0,-0x38(%rbp)
je     15e2 <main+0x402>
mov    -0x38(%rbp),%rdi
mov    $0x0,%al
call   1030 <tx_attach@plt>
mov    -0x14(%rbp),%edi
mov    -0x20(%rbp),%rsi
mov    $0x0,%al
call   1050 <vol_init@plt>
jmp    16d5 <main+0x4f5>
mov    -0x10(%rbp),%rax
mov    0x8(%rax),%rdi
lea    0xa69(%rip),%rsi
mov    $0x0,%al
call   1060 <str_cmp@plt>
cmp    $0x0,%eax
jne    165c <main+0x47c>
cmpq   $0x0,-0x30(%rbp)
jne    165c <main+0x47c>
cmpq   $0x0,-0x20(%rbp)
jne    165c <main+0x47c>
cmpq   $0x0,-0x28(%rbp)
jne    165c <main+0x47c>
cmpl   $0x0,-0x14(%rbp)
je     165c <main+0x47c>
cmpq   $0x0,-0x38(%rbp)
je     165c <main+0x47c>
mov    -0x38(%rbp),%rdi
mov    $0x0,%al
call   1030 <tx_attach@plt>
mov    -0x10(%rbp),%rax
mov    (%rax),%rdi
mov    -0x38(%rbp),%rsi
mov    -0x14(%rbp),%edx
mov    $0x0,%al
call   10e0 <multiplex@plt>
jmp    16d0 <main+0x4f0>
mov    -0x10(%rbp),%rax
mov    0x8(%rax),%rdi
lea    0x9f4(%rip),%rsi
mov    $0x0,%al
call   1060 <str_cmp@plt>
cmp    $0x0,%eax
jne    16bd <main+0x4dd>
cmpq   $0x0,-0x30(%rbp)
jne    16bd <main+0x4dd>
cmpq   $0x0,-0x20(%rbp)
jne    16bd <main+0x4dd>
cmpq   $0x0,-0x28(%rbp)
jne    16bd <main+0x4dd>
cmpl   $0x0,-0x14(%rbp)
jne    16bd <main+0x4dd>
cmpq   $0x0,-0x38(%rbp)
jne    16bd <main+0x4dd>
mov    $0x0,%al
call   1040 <conv_parse@plt>
jmp    16cb <main+0x4eb>
mov    -0x10(%rbp),%rax
mov    (%rax),%rdi
mov    $0x0,%al
call   10c0 <usage@plt>
jmp    16d0 <main+0x4f0>
jmp    16d5 <main+0x4f5>
jmp    16da <main+0x4fa>
jmp    16df <main+0x4ff>
jmp    16e4 <main+0x504>
xor    %eax,%eax
add    $0x80,%rsp
pop    %rbp
ret

x86 assembly (clang, -O2):
<main>:
push   %rbp
push   %r15
push   %r14
push   %r13
push   %r12
push   %rbx
sub    $0x78,%rsp
mov    %rsi,%rbx
mov    %edi,%r15d
mov    $0x1,%edi
xor    %eax,%eax
call   1070 <sys_init@plt>
cmp    $0x1,%r15d
jg     121c <main+0x3c>
mov    (%rbx),%rdi
xor    %eax,%eax
mov    %rax,0x18(%rsp)
xor    %eax,%eax
call   10c0 <usage@plt>
jmp    133f <main+0x15f>
cmp    $0x4,%r15d
jb     1338 <main+0x158>
mov    $0x3,%r14d
lea    0xdcd(%rip),%r13
xor    %eax,%eax
mov    %rax,0x10(%rsp)
xor    %ebp,%ebp
xor    %eax,%eax
mov    %rax,0x20(%rsp)
xor    %r12d,%r12d
xor    %eax,%eax
mov    %rax,0x18(%rsp)
jmp    1261 <main+0x81>
nop
mov    (%rbx,%r14,8),%r12
add    $0x2,%r14
cmp    %r15d,%r14d
jge    1352 <main+0x172>
mov    -0x8(%rbx,%r14,8),%rdi
mov    %r13,%rsi
xor    %eax,%eax
call   1060 <str_cmp@plt>
test   %eax,%eax
je     1250 <main+0x70>
mov    -0x8(%rbx,%r14,8),%rdi
lea    0xd83(%rip),%rsi
xor    %eax,%eax
call   1060 <str_cmp@plt>
test   %eax,%eax
je     12e0 <main+0x100>
mov    -0x8(%rbx,%r14,8),%rdi
lea    0xd6f(%rip),%rsi
xor    %eax,%eax
call   1060 <str_cmp@plt>
test   %eax,%eax
je     12e9 <main+0x109>
mov    -0x8(%rbx,%r14,8),%rdi
lea    0xd5b(%rip),%rsi
xor    %eax,%eax
call   1060 <str_cmp@plt>
test   %eax,%eax
je     12f7 <main+0x117>
mov    -0x8(%rbx,%r14,8),%rdi
lea    0xd47(%rip),%rsi
xor    %eax,%eax
call   1060 <str_cmp@plt>
test   %eax,%eax
je     130c <main+0x12c>
mov    (%rbx),%rdi
xor    %eax,%eax
call   10c0 <usage@plt>
jmp    1254 <main+0x74>
nop
mov    (%rbx,%r14,8),%rbp
jmp    1254 <main+0x74>
mov    (%rbx,%r14,8),%rax
mov    %rax,0x20(%rsp)
jmp    1254 <main+0x74>
mov    (%rbx,%r14,8),%rdi
xor    %eax,%eax
call   10b0 <parse_port@plt>
mov    %rax,0x18(%rsp)
jmp    1254 <main+0x74>
mov    (%rbx,%r14,8),%rdi
mov    %rdi,0x10(%rsp)
xor    %eax,%eax
call   10f0 <str_len@plt>
cmp    $0x40,%eax
jl     1254 <main+0x74>
lea    0xce3(%rip),%rdi
xor    %eax,%eax
call   1080 <sys_die@plt>
jmp    1254 <main+0x74>
xor    %eax,%eax
mov    %rax,0x18(%rsp)
xor    %r12d,%r12d
xor    %eax,%eax
mov    %rax,0x20(%rsp)
xor    %ebp,%ebp
xor    %eax,%eax
mov    %rax,0x10(%rsp)
mov    0x18(%rsp),%r14
mov    %r14d,0x2c(%rsp)
mov    0x8(%rbx),%rdi
lea    0xccf(%rip),%rsi
xor    %eax,%eax
call   1060 <str_cmp@plt>
test   %eax,%eax
mov    0x10(%rsp),%r15
mov    0x20(%rsp),%r13
jne    13f1 <main+0x211>
test   %rbp,%rbp
je     13f1 <main+0x211>
test   %r12,%r12
je     13f1 <main+0x211>
test   %r13,%r13
je     13f1 <main+0x211>
test   %r14d,%r14d
je     13f1 <main+0x211>
test   %r15,%r15
jne    13f1 <main+0x211>
movl   $0x0,0xc(%rsp)
lea    0xc(%rsp),%rdx
mov    %rbp,%rdi
mov    %r13,%rsi
xor    %eax,%eax
call   1100 <tx_server@plt>
xor    %edi,%edi
mov    %r12,%rsi
xor    %eax,%eax
call   1050 <vol_init@plt>
mov    0xc(%rsp),%edx
lea    0xc76(%rip),%rsi
lea    0x30(%rsp),%rbp
mov    %rbp,%rdi
xor    %eax,%eax
call   1090 <str_print@plt>
mov    (%rbx),%rdi
mov    %rbp,%rsi
mov    %r14d,%edx
xor    %eax,%eax
call   10e0 <multiplex@plt>
xor    %eax,%eax
call   10a0 <tx_free@plt>
jmp    1550 <main+0x370>
mov    0x8(%rbx),%rdi
lea    0xc4d(%rip),%rsi
xor    %eax,%eax
call   1060 <str_cmp@plt>
test   %eax,%eax
jne    1432 <main+0x252>
test   %rbp,%rbp
jne    1432 <main+0x252>
test   %r12,%r12
jne    1432 <main+0x252>
test   %r13,%r13
jne    1432 <main+0x252>
test   %r14d,%r14d
je     1432 <main+0x252>
test   %r15,%r15
je     1432 <main+0x252>
mov    %r15,%rdi
mov    %r14d,%esi
xor    %eax,%eax
call   10d0 <processor@plt>
jmp    1550 <main+0x370>
mov    0x8(%rbx),%rdi
lea    0xc16(%rip),%rsi
xor    %eax,%eax
call   1060 <str_cmp@plt>
test   %eax,%eax
jne    1478 <main+0x298>
test   %rbp,%rbp
je     1478 <main+0x298>
test   %r12,%r12
jne    1478 <main+0x298>
test   %r13,%r13
je     1478 <main+0x298>
test   %r14d,%r14d
je     1478 <main+0x298>
test   %r15,%r15
jne    1478 <main+0x298>
lea    0x2c(%rsp),%rdx
mov    %rbp,%rdi
mov    %r13,%rsi
xor    %eax,%eax
call   1100 <tx_server@plt>
jmp    1550 <main+0x370>
mov    0x8(%rbx),%rdi
lea    0xbd3(%rip),%rsi
xor    %eax,%eax
call   1060 <str_cmp@plt>
test   %eax,%eax
jne    14c3 <main+0x2e3>
test   %rbp,%rbp
jne    14c3 <main+0x2e3>
test   %r12,%r12
je     14c3 <main+0x2e3>
test   %r13,%r13
jne    14c3 <main+0x2e3>
test   %r14d,%r14d
je     14c3 <main+0x2e3>
test   %r15,%r15
je     14c3 <main+0x2e3>
mov    %r15,%rdi
xor    %eax,%eax
call   1030 <tx_attach@plt>
mov    %r14d,%edi
mov    %r12,%rsi
xor    %eax,%eax
call   1050 <vol_init@plt>
jmp    1550 <main+0x370>
mov    0x8(%rbx),%rdi
lea    0xb8c(%rip),%rsi
xor    %eax,%eax
call   1060 <str_cmp@plt>
test   %eax,%eax
jne    150e <main+0x32e>
test   %rbp,%rbp
jne    150e <main+0x32e>
test   %r12,%r12
jne    150e <main+0x32e>
test   %r13,%r13
jne    150e <main+0x32e>
test   %r14d,%r14d
je     150e <main+0x32e>
test   %r15,%r15
je     150e <main+0x32e>
mov    %r15,%rdi
xor    %eax,%eax
call   1030 <tx_attach@plt>
mov    (%rbx),%rdi
mov    %r15,%rsi
mov    %r14d,%edx
xor    %eax,%eax
call   10e0 <multiplex@plt>
jmp    1550 <main+0x370>
mov    0x8(%rbx),%rdi
lea    0xb46(%rip),%rsi
xor    %eax,%eax
call   1060 <str_cmp@plt>
test   %eax,%eax
jne    1546 <main+0x366>
test   %rbp,%rbp
jne    1546 <main+0x366>
test   %r12,%r12
jne    1546 <main+0x366>
test   %r13,%r13
jne    1546 <main+0x366>
test   %r14d,%r14d
jne    1546 <main+0x366>
test   %r15,%r15
jne    1546 <main+0x366>
xor    %eax,%eax
call   1040 <conv_parse@plt>
jmp    1550 <main+0x370>
mov    (%rbx),%rdi
xor    %eax,%eax
call   10c0 <usage@plt>
xor    %eax,%eax
add    $0x78,%rsp
pop    %rbx
pop    %r12
pop    %r13
pop    %r14
pop    %r15
pop    %rbp
ret

LLVM IR (-O0):
@.str = [3 x i8] c"-d\00"
@.str.1 = [3 x i8] c"-c\00"
@.str.2 = [3 x i8] c"-s\00"
@.str.3 = [3 x i8] c"-p\00"
@.str.4 = [3 x i8] c"-t\00"
@.str.5 = [39 x i8] c"tx address exceeds the maximum length\0A\00"
@.str.6 = [6 x i8] c"start\00"
@.str.7 = [13 x i8] c"127.0.0.1:%d\00"
@.str.8 = [10 x i8] c"processor\00"
@.str.9 = [3 x i8] c"tx\00"
@.str.10 = [4 x i8] c"vol\00"
@.str.11 = [5 x i8] c"exec\00"
@.str.12 = [8 x i8] c"convert\00"
define i32 @main(i32 %0, i8** %1) {
%3 = alloca i32
%4 = alloca i32
%5 = alloca i8**
%6 = alloca i32
%7 = alloca i8*
%8 = alloca i8*
%9 = alloca i8*
%10 = alloca i8*
%11 = alloca i32
%12 = alloca i32
%13 = alloca [64 x i8]
store i32 0, i32* %3
store i32 %0, i32* %4
store i8** %1, i8*** %5
store i32 0, i32* %6
store i8* null, i8** %7
store i8* null, i8** %8
store i8* null, i8** %9
store i8* null, i8** %10
%14 = call i32 (i32, ...) bitcast (i32 (...)* @sys_init to i32 (i32, ...)*)(i32 1)
%15 = load i32, i32* %4
%16 = icmp slt i32 %15, 2
br i1 %16, label %17, label %22
17: ; preds = %2
%18 = load i8**, i8*** %5
%19 = getelementptr inbounds i8*, i8** %18, i64 0
%20 = load i8*, i8** %19
%21 = call i32 (i8*, ...) bitcast (i32 (...)* @usage to i32 (i8*, ...)*)(i8* %20)
br label %22
22: ; preds = %17, %2
store i32 2, i32* %11
br label %23
23: ; preds = %120, %22
%24 = load i32, i32* %11
%25 = add nsw i32 %24, 1
%26 = load i32, i32* %4
%27 = icmp slt i32 %25, %26
br i1 %27, label %28, label %123
28: ; preds = %23
%29 = load i8**, i8*** %5
%30 = load i32, i32* %11
%31 = sext i32 %30 to i64
%32 = getelementptr inbounds i8*, i8** %29, i64 %31
%33 = load i8*, i8** %32
%34 = call i32 (i8*, i8*, ...) bitcast (i32 (...)* @str_cmp to i32 (i8*, i8*, ...)*)(i8* %33, i8* getelementptr inbounds ([3 x i8], [3 x i8]* @.str, i64 0, i64 0))
%35 = icmp eq i32 %34, 0
br i1 %35, label %36, label %43
36: ; preds = %28
%37 = load i8**, i8*** %5
%38 = load i32, i32* %11
%39 = add nsw i32 %38, 1
%40 = sext i32 %39 to i64
%41 = getelementptr inbounds i8*, i8** %37, i64 %40
%42 = load i8*, i8** %41
store i8* %42, i8** %7
br label %119
43: ; preds = %28
%44 = load i8**, i8*** %5
%45 = load i32, i32* %11
%46 = sext i32 %45 to i64
%47 = getelementptr inbounds i8*, i8** %44, i64 %46
%48 = load i8*, i8** %47
%49 = call i32 (i8*, i8*, ...) bitcast (i32 (...)* @str_cmp to i32 (i8*, i8*, ...)*)(i8* %48, i8* getelementptr inbounds ([3 x i8], [3 x i8]* @.str.1, i64 0, i64 0))
%50 = icmp eq i32 %49, 0
br i1 %50, label %51, label %58
51: ; preds = %43
%52 = load i8**, i8*** %5
%53 = load i32, i32* %11
%54 = add nsw i32 %53, 1
%55 = sext i32 %54 to i64
%56 = getelementptr inbounds i8*, i8** %52, i64 %55
%57 = load i8*, i8** %56
store i8* %57, i8** %9
br label %118
58: ; preds = %43
%59 = load i8**, i8*** %5
%60 = load i32, i32* %11
%61 = sext i32 %60 to i64
%62 = getelementptr inbounds i8*, i8** %59, i64 %61
%63 = load i8*, i8** %62
%64 = call i32 (i8*, i8*, ...) bitcast (i32 (...)* @str_cmp to i32 (i8*, i8*, ...)*)(i8* %63, i8* getelementptr inbounds ([3 x i8], [3 x i8]* @.str.2, i64 0, i64 0))
%65 = icmp eq i32 %64, 0
br i1 %65, label %66, label %73
66: ; preds = %58
%67 = load i8**, i8*** %5
%68 = load i32, i32* %11
%69 = add nsw i32 %68, 1
%70 = sext i32 %69 to i64
%71 = getelementptr inbounds i8*, i8** %67, i64 %70
%72 = load i8*, i8** %71
store i8* %72, i8** %8
br label %117
73: ; preds = %58
%74 = load i8**, i8*** %5
%75 = load i32, i32* %11
%76 = sext i32 %75 to i64
%77 = getelementptr inbounds i8*, i8** %74, i64 %76
%78 = load i8*, i8** %77
%79 = call i32 (i8*, i8*, ...) bitcast (i32 (...)* @str_cmp to i32 (i8*, i8*, ...)*)(i8* %78, i8* getelementptr inbounds ([3 x i8], [3 x i8]* @.str.3, i64 0, i64 0))
%80 = icmp eq i32 %79, 0
br i1 %80, label %81, label %89
81: ; preds = %73
%82 = load i8**, i8*** %5
%83 = load i32, i32* %11
%84 = add nsw i32 %83, 1
%85 = sext i32 %84 to i64
%86 = getelementptr inbounds i8*, i8** %82, i64 %85
%87 = load i8*, i8** %86
%88 = call i32 (i8*, ...) bitcast (i32 (...)* @parse_port to i32 (i8*, ...)*)(i8* %87)
store i32 %88, i32* %6
br label %116
89: ; preds = %73
%90 = load i8**, i8*** %5
%91 = load i32, i32* %11
%92 = sext i32 %91 to i64
%93 = getelementptr inbounds i8*, i8** %90, i64 %92
%94 = load i8*, i8** %93
%95 = call i32 (i8*, i8*, ...) bitcast (i32 (...)* @str_cmp to i32 (i8*, i8*, ...)*)(i8* %94, i8* getelementptr inbounds ([3 x i8], [3 x i8]* @.str.4, i64 0, i64 0))
%96 = icmp eq i32 %95, 0
br i1 %96, label %97, label %110
97: ; preds = %89
%98 = load i8**, i8*** %5
%99 = load i32, i32* %11
%100 = add nsw i32 %99, 1
%101 = sext i32 %100 to i64
%102 = getelementptr inbounds i8*, i8** %98, i64 %101
%103 = load i8*, i8** %102
store i8* %103, i8** %10
%104 = load i8*, i8** %10
%105 = call i32 (i8*, ...) bitcast (i32 (...)* @str_len to i32 (i8*, ...)*)(i8* %104)
%106 = icmp sge i32 %105, 64
br i1 %106, label %107, label %109
107: ; preds = %97
%108 = call i32 (i8*, ...) bitcast (i32 (...)* @sys_die to i32 (i8*, ...)*)(i8* getelementptr inbounds ([39 x i8], [39 x i8]* @.str.5, i64 0, i64 0))
br label %109
109: ; preds = %107, %97
br label %115
110: ; preds = %89
%111 = load i8**, i8*** %5
%112 = getelementptr inbounds i8*, i8** %111, i64 0
%113 = load i8*, i8** %112
%114 = call i32 (i8*, ...) bitcast (i32 (...)* @usage to i32 (i8*, ...)*)(i8* %113)
br label %115
115: ; preds = %110, %109
br label %116
116: ; preds = %115, %81
br label %117
117: ; preds = %116, %66
br label %118
118: ; preds = %117, %51
br label %119
119: ; preds = %118, %36
br label %120
120: ; preds = %119
%121 = load i32, i32* %11
%122 = add nsw i32 %121, 2
store i32 %122, i32* %11
br label %23
123: ; preds = %23
%124 = load i8**, i8*** %5
%125 = getelementptr inbounds i8*, i8** %124, i64 1
%126 = load i8*, i8** %125
%127 = call i32 (i8*, i8*, ...) bitcast (i32 (...)* @str_cmp to i32 (i8*, i8*, ...)*)(i8* %126, i8* getelementptr inbounds ([6 x i8], [6 x i8]* @.str.6, i64 0, i64 0))
%128 = icmp eq i32 %127, 0
br i1 %128, label %129, label %160
129: ; preds = %123
%130 = load i8*, i8** %9
%131 = icmp ne i8* %130, null
br i1 %131, label %132, label %160
132: ; preds = %129
%133 = load i8*, i8** %7
%134 = icmp ne i8* %133, null
br i1 %134, label %135, label %160
135: ; preds = %132
%136 = load i8*, i8** %8
%137 = icmp ne i8* %136, null
br i1 %137, label %138, label %160
138: ; preds = %135
%139 = load i32, i32* %6
%140 = icmp ne i32 %139, 0
br i1 %140, label %141, label %160
141: ; preds = %138
%142 = load i8*, i8** %10
%143 = icmp eq i8* %142, null
br i1 %143, label %144, label %160
144: ; preds = %141
store i32 0, i32* %12
%145 = load i8*, i8** %9
%146 = load i8*, i8** %8
%147 = call i32 (i8*, i8*, i32*, ...) bitcast (i32 (...)* @tx_server to i32 (i8*, i8*, i32*, ...)*)(i8* %145, i8* %146, i32* %12)
%148 = load i8*, i8** %7
%149 = call i32 (i32, i8*, ...) bitcast (i32 (...)* @vol_init to i32 (i32, i8*, ...)*)(i32 0, i8* %148)
%150 = getelementptr inbounds [64 x i8], [64 x i8]* %13, i64 0, i64 0
%151 = load i32, i32* %12
%152 = call i32 (i8*, i8*, i32, ...) bitcast (i32 (...)* @str_print to i32 (i8*, i8*, i32, ...)*)(i8* %150, i8* getelementptr inbounds ([13 x i8], [13 x i8]* @.str.7, i64 0, i64 0), i32 %151)
%153 = load i8**, i8*** %5
%154 = getelementptr inbounds i8*, i8** %153, i64 0
%155 = load i8*, i8** %154
%156 = getelementptr inbounds [64 x i8], [64 x i8]* %13, i64 0, i64 0
%157 = load i32, i32* %6
%158 = call i32 (i8*, i8*, i32, ...) bitcast (i32 (...)* @multiplex to i32 (i8*, i8*, i32, ...)*)(i8* %155, i8* %156, i32 %157)
%159 = call i32 (...) @tx_free()
br label %300
160: ; preds = %141, %138, %135, %132, %129, %123
%161 = load i8**, i8*** %5
%162 = getelementptr inbounds i8*, i8** %161, i64 1
%163 = load i8*, i8** %162
%164 = call i32 (i8*, i8*, ...) bitcast (i32 (...)* @str_cmp to i32 (i8*, i8*, ...)*)(i8* %163, i8* getelementptr inbounds ([10 x i8], [10 x i8]* @.str.8, i64 0, i64 0))
%165 = icmp eq i32 %164, 0
br i1 %165, label %166, label %185
166: ; preds = %160
%167 = load i8*, i8** %9
%168 = icmp eq i8* %167, null
br i1 %168, label %169, label %185
169: ; preds = %166
%170 = load i8*, i8** %7
%171 = icmp eq i8* %170, null
br i1 %171, label %172, label %185
172: ; preds = %169
%173 = load i8*, i8** %8
%174 = icmp eq i8* %173, null
br i1 %174, label %175, label %185
175: ; preds = %172
%176 = load i32, i32* %6
%177 = icmp ne i32 %176, 0
br i1 %177, label %178, label %185
178: ; preds = %175
%179 = load i8*, i8** %10
%180 = icmp ne i8* %179, null
br i1 %180, label %181, label %185
181: ; preds = %178
%182 = load i8*, i8** %10
%183 = load i32, i32* %6
%184 = call i32 (i8*, i32, ...) bitcast (i32 (...)* @processor to i32 (i8*, i32, ...)*)(i8* %182, i32 %183)
br label %299
185: ; preds = %178, %175, %172, %169, %166, %160
%186 = load i8**, i8*** %5
%187 = getelementptr inbounds i8*, i8** %186, i64 1
%188 = load i8*, i8** %187
%189 = call i32 (i8*, i8*, ...) bitcast (i32 (...)* @str_cmp to i32 (i8*, i8*, ...)*)(i8* %188, i8* getelementptr inbounds ([3 x i8], [3 x i8]* @.str.9, i64 0, i64 0))
%190 = icmp eq i32 %189, 0
br i1 %190, label %191, label %210
191: ; preds = %185
%192 = load i8*, i8** %9
%193 = icmp ne i8* %192, null
br i1 %193, label %194, label %210
194: ; preds = %191
%195 = load i8*, i8** %7
%196 = icmp eq i8* %195, null
br i1 %196, label %197, label %210
197: ; preds = %194
%198 = load i8*, i8** %8
%199 = icmp ne i8* %198, null
br i1 %199, label %200, label %210
200: ; preds = %197
%201 = load i32, i32* %6
%202 = icmp ne i32 %201, 0
br i1 %202, label %203, label %210
203: ; preds = %200
%204 = load i8*, i8** %10
%205 = icmp eq i8* %204, null
br i1 %205, label %206, label %210
206: ; preds = %203
%207 = load i8*, i8** %9
%208 = load i8*, i8** %8
%209 = call i32 (i8*, i8*, i32*, ...) bitcast (i32 (...)* @tx_server to i32 (i8*, i8*, i32*, ...)*)(i8* %207, i8* %208, i32* %6)
br label %298
210: ; preds = %203, %200, %197, %194, %191, %185
%211 = load i8**, i8*** %5
%212 = getelementptr inbounds i8*, i8** %211, i64 1
%213 = load i8*, i8** %212
%214 = call i32 (i8*, i8*, ...) bitcast (i32 (...)* @str_cmp to i32 (i8*, i8*, ...)*)(i8* %213, i8* getelementptr inbounds ([4 x i8], [4 x i8]* @.str.10, i64 0, i64 0))
%215 = icmp eq i32 %214, 0
br i1 %215, label %216, label %237
216: ; preds = %210
%217 = load i8*, i8** %9
%218 = icmp eq i8* %217, null
br i1 %218, label %219, label %237
219: ; preds = %216
%220 = load i8*, i8** %7
%221 = icmp ne i8* %220, null
br i1 %221, label %222, label %237
222: ; preds = %219
%223 = load i8*, i8** %8
%224 = icmp eq i8* %223, null
br i1 %224, label %225, label %237
225: ; preds = %222
%226 = load i32, i32* %6
%227 = icmp ne i32 %226, 0
br i1 %227, label %228, label %237
228: ; preds = %225
%229 = load i8*, i8** %10
%230 = icmp ne i8* %229, null
br i1 %230, label %231, label %237
231: ; preds = %228
%232 = load i8*, i8** %10
%233 = call i32 (i8*, ...) bitcast (i32 (...)* @tx_attach to i32 (i8*, ...)*)(i8* %232)
%234 = load i32, i32* %6
%235 = load i8*, i8** %7
%236 = call i32 (i32, i8*, ...) bitcast (i32 (...)* @vol_init to i32 (i32, i8*, ...)*)(i32 %234, i8* %235)
br label %297
237: ; preds = %228, %225, %222, %219, %216, %210
%238 = load i8**, i8*** %5
%239 = getelementptr inbounds i8*, i8** %238, i64 1
%240 = load i8*, i8** %239
%241 = call i32 (i8*, i8*, ...) bitcast (i32 (...)* @str_cmp to i32 (i8*, i8*, ...)*)(i8* %240, i8* getelementptr inbounds ([5 x i8], [5 x i8]* @.str.11, i64 0, i64 0))
%242 = icmp eq i32 %241, 0
br i1 %242, label %243, label %267
243: ; preds = %237
%244 = load i8*, i8** %9
%245 = icmp eq i8* %244, null
br i1 %245, label %246, label %267
246: ; preds = %243
%247 = load i8*, i8** %7
%248 = icmp eq i8* %247, null
br i1 %248, label %249, label %267
249: ; preds = %246
%250 = load i8*, i8** %8
%251 = icmp eq i8* %250, null
br i1 %251, label %252, label %267
252: ; preds = %249
%253 = load i32, i32* %6
%254 = icmp ne i32 %253, 0
br i1 %254, label %255, label %267
255: ; preds = %252
%256 = load i8*, i8** %10
%257 = icmp ne i8* %256, null
br i1 %257, label %258, label %267
258: ; preds = %255
%259 = load i8*, i8** %10
%260 = call i32 (i8*, ...) bitcast (i32 (...)* @tx_attach to i32 (i8*, ...)*)(i8* %259)
%261 = load i8**, i8*** %5
%262 = getelementptr inbounds i8*, i8** %261, i64 0
%263 = load i8*, i8** %262
%264 = load i8*, i8** %10
%265 = load i32, i32* %6
%266 = call i32 (i8*, i8*, i32, ...) bitcast (i32 (...)* @multiplex to i32 (i8*, i8*, i32, ...)*)(i8* %263, i8* %264, i32 %265)
br label %296
267: ; preds = %255, %252, %249, %246, %243, %237
%268 = load i8**, i8*** %5
%269 = getelementptr inbounds i8*, i8** %268, i64 1
%270 = load i8*, i8** %269
%271 = call i32 (i8*, i8*, ...) bitcast (i32 (...)* @str_cmp to i32 (i8*, i8*, ...)*)(i8* %270, i8* getelementptr inbounds ([8 x i8], [8 x i8]* @.str.12, i64 0, i64 0))
%272 = icmp eq i32 %271, 0
br i1 %272, label %273, label %290
273: ; preds = %267
%274 = load i8*, i8** %9
%275 = icmp eq i8* %274, null
br i1 %275, label %276, label %290
276: ; preds = %273
%277 = load i8*, i8** %7
%278 = icmp eq i8* %277, null
br i1 %278, label %279, label %290
279: ; preds = %276
%280 = load i8*, i8** %8
%281 = icmp eq i8* %280, null
br i1 %281, label %282, label %290
282: ; preds = %279
%283 = load i32, i32* %6
%284 = icmp eq i32 %283, 0
br i1 %284, label %285, label %290
285: ; preds = %282
%286 = load i8*, i8** %10
%287 = icmp eq i8* %286, null
br i1 %287, label %288, label %290
288: ; preds = %285
%289 = call i32 (...) @conv_parse()
br label %295
290: ; preds = %285, %282, %279, %276, %273, %267
%291 = load i8**, i8*** %5
%292 = getelementptr inbounds i8*, i8** %291, i64 0
%293 = load i8*, i8** %292
%294 = call i32 (i8*, ...) bitcast (i32 (...)* @usage to i32 (i8*, ...)*)(i8* %293)
br label %295
295: ; preds = %290, %288
br label %296
296: ; preds = %295, %258
br label %297
297: ; preds = %296, %231
br label %298
298: ; preds = %297, %206
br label %299
299: ; preds = %298, %181
br label %300
300: ; preds = %299, %144
ret i32 0
}

LLVM IR (-O2):
@.str = [3 x i8] c"-d\00"
@.str.1 = [3 x i8] c"-c\00"
@.str.2 = [3 x i8] c"-s\00"
@.str.3 = [3 x i8] c"-p\00"
@.str.4 = [3 x i8] c"-t\00"
@.str.5 = [39 x i8] c"tx address exceeds the maximum length\0A\00"
@.str.6 = [6 x i8] c"start\00"
@.str.7 = [13 x i8] c"127.0.0.1:%d\00"
@.str.8 = [10 x i8] c"processor\00"
@.str.9 = [3 x i8] c"tx\00"
@.str.10 = [4 x i8] c"vol\00"
@.str.11 = [5 x i8] c"exec\00"
@.str.12 = [8 x i8] c"convert\00"
define i32 @main(i32 %0, i8** nocapture %1) {
%3 = alloca i32
%4 = alloca i32
%5 = alloca [64 x i8]
%6 = bitcast i32* %3 to i8*
%7 = tail call i32 (i32, ...) bitcast (i32 (...)* @sys_init to i32 (i32, ...)*)(i32 1)
%8 = icmp slt i32 %0, 2
br i1 %8, label %9, label %12
9: ; preds = %2
%10 = load i8*, i8** %1
%11 = tail call i32 (i8*, ...) bitcast (i32 (...)* @usage to i32 (i8*, ...)*)(i8* %10)
br label %14
12: ; preds = %2
%13 = icmp ugt i32 %0, 3
br i1 %13, label %34, label %14
14: ; preds = %85, %9, %12
%15 = phi i32 [ 0, %12 ], [ 0, %9 ], [ %86, %85 ]
%16 = phi i8* [ null, %12 ], [ null, %9 ], [ %87, %85 ]
%17 = phi i8* [ null, %12 ], [ null, %9 ], [ %88, %85 ]
%18 = phi i8* [ null, %12 ], [ null, %9 ], [ %89, %85 ]
%19 = phi i8* [ null, %12 ], [ null, %9 ], [ %90, %85 ]
store i32 %15, i32* %3
%20 = getelementptr inbounds i8*, i8** %1, i64 1
%21 = load i8*, i8** %20
%22 = tail call i32 (i8*, i8*, ...) bitcast (i32 (...)* @str_cmp to i32 (i8*, i8*, ...)*)(i8* %21, i8* getelementptr inbounds ([6 x i8], [6 x i8]* @.str.6, i64 0, i64 0))
%23 = icmp eq i32 %22, 0
%24 = icmp ne i8* %18, null
%25 = select i1 %23, i1 %24, i1 false
%26 = icmp ne i8* %16, null
%27 = select i1 %25, i1 %26, i1 false
%28 = icmp ne i8* %17, null
%29 = select i1 %27, i1 %28, i1 false
%30 = icmp ne i32 %15, 0
%31 = select i1 %29, i1 %30, i1 false
%32 = icmp eq i8* %19, null
%33 = select i1 %31, i1 %32, i1 false
br i1 %33, label %96, label %106
34: ; preds = %12, %85
%35 = phi i64 [ %91, %85 ], [ 2, %12 ]
%36 = phi i64 [ %92, %85 ], [ 3, %12 ]
%37 = phi i8* [ %90, %85 ], [ null, %12 ]
%38 = phi i8* [ %89, %85 ], [ null, %12 ]
%39 = phi i8* [ %88, %85 ], [ null, %12 ]
%40 = phi i8* [ %87, %85 ], [ null, %12 ]
%41 = phi i32 [ %86, %85 ], [ 0, %12 ]
%42 = getelementptr inbounds i8*, i8** %1, i64 %35
%43 = load i8*, i8** %42
%44 = tail call i32 (i8*, i8*, ...) bitcast (i32 (...)* @str_cmp to i32 (i8*, i8*, ...)*)(i8* %43, i8* getelementptr inbounds ([3 x i8], [3 x i8]* @.str, i64 0, i64 0))
%45 = icmp eq i32 %44, 0
br i1 %45, label %46, label %49
46: ; preds = %34
%47 = getelementptr inbounds i8*, i8** %1, i64 %36
%48 = load i8*, i8** %47
br label %85
49: ; preds = %34
%50 = load i8*, i8** %42
%51 = tail call i32 (i8*, i8*, ...) bitcast (i32 (...)* @str_cmp to i32 (i8*, i8*, ...)*)(i8* %50, i8* getelementptr inbounds ([3 x i8], [3 x i8]* @.str.1, i64 0, i64 0))
%52 = icmp eq i32 %51, 0
br i1 %52, label %53, label %56
53: ; preds = %49
%54 = getelementptr inbounds i8*, i8** %1, i64 %36
%55 = load i8*, i8** %54
br label %85
56: ; preds = %49
%57 = load i8*, i8** %42
%58 = tail call i32 (i8*, i8*, ...) bitcast (i32 (...)* @str_cmp to i32 (i8*, i8*, ...)*)(i8* %57, i8* getelementptr inbounds ([3 x i8], [3 x i8]* @.str.2, i64 0, i64 0))
%59 = icmp eq i32 %58, 0
br i1 %59, label %60, label %63
60: ; preds = %56
%61 = getelementptr inbounds i8*, i8** %1, i64 %36
%62 = load i8*, i8** %61
br label %85
63: ; preds = %56
%64 = load i8*, i8** %42
%65 = tail call i32 (i8*, i8*, ...) bitcast (i32 (...)* @str_cmp to i32 (i8*, i8*, ...)*)(i8* %64, i8* getelementptr inbounds ([3 x i8], [3 x i8]* @.str.3, i64 0, i64 0))
%66 = icmp eq i32 %65, 0
br i1 %66, label %67, label %71
67: ; preds = %63
%68 = getelementptr inbounds i8*, i8** %1, i64 %36
%69 = load i8*, i8** %68
%70 = tail call i32 (i8*, ...) bitcast (i32 (...)* @parse_port to i32 (i8*, ...)*)(i8* %69)
br label %85
71: ; preds = %63
%72 = load i8*, i8** %42
%73 = tail call i32 (i8*, i8*, ...) bitcast (i32 (...)* @str_cmp to i32 (i8*, i8*, ...)*)(i8* %72, i8* getelementptr inbounds ([3 x i8], [3 x i8]* @.str.4, i64 0, i64 0))
%74 = icmp eq i32 %73, 0
br i1 %74, label %75, label %82
75: ; preds = %71
%76 = getelementptr inbounds i8*, i8** %1, i64 %36
%77 = load i8*, i8** %76
%78 = tail call i32 (i8*, ...) bitcast (i32 (...)* @str_len to i32 (i8*, ...)*)(i8* %77)
%79 = icmp sgt i32 %78, 63
br i1 %79, label %80, label %85
80: ; preds = %75
%81 = tail call i32 (i8*, ...) bitcast (i32 (...)* @sys_die to i32 (i8*, ...)*)(i8* getelementptr inbounds ([39 x i8], [39 x i8]* @.str.5, i64 0, i64 0))
br label %85
82: ; preds = %71
%83 = load i8*, i8** %1
%84 = tail call i32 (i8*, ...) bitcast (i32 (...)* @usage to i32 (i8*, ...)*)(i8* %83)
br label %85
85: ; preds = %46, %60, %82, %80, %75, %67, %53
%86 = phi i32 [ %41, %46 ], [ %41, %53 ], [ %41, %60 ], [ %70, %67 ], [ %41, %80 ], [ %41, %75 ], [ %41, %82 ]
%87 = phi i8* [ %48, %46 ], [ %40, %53 ], [ %40, %60 ], [ %40, %67 ], [ %40, %80 ], [ %40, %75 ], [ %40, %82 ]
%88 = phi i8* [ %39, %46 ], [ %39, %53 ], [ %62, %60 ], [ %39, %67 ], [ %39, %80 ], [ %39, %75 ], [ %39, %82 ]
%89 = phi i8* [ %38, %46 ], [ %55, %53 ], [ %38, %60 ], [ %38, %67 ], [ %38, %80 ], [ %38, %75 ], [ %38, %82 ]
%90 = phi i8* [ %37, %46 ], [ %37, %53 ], [ %37, %60 ], [ %37, %67 ], [ %77, %80 ], [ %77, %75 ], [ %37, %82 ]
%91 = add nuw i64 %35, 2
%92 = add nuw i64 %36, 2
%93 = trunc i64 %91 to i32
%94 = or i32 %93, 1
%95 = icmp slt i32 %94, %0
br i1 %95, label %34, label %14
96: ; preds = %14
%97 = bitcast i32* %4 to i8*
store i32 0, i32* %4
%98 = call i32 (i8*, i8*, i32*, ...) bitcast (i32 (...)* @tx_server to i32 (i8*, i8*, i32*, ...)*)(i8* %18, i8* %17, i32* %4)
%99 = call i32 (i32, i8*, ...) bitcast (i32 (...)* @vol_init to i32 (i32, i8*, ...)*)(i32 0, i8* %16)
%100 = getelementptr inbounds [64 x i8], [64 x i8]* %5, i64 0, i64 0
%101 = load i32, i32* %4
%102 = call i32 (i8*, i8*, i32, ...) bitcast (i32 (...)* @str_print to i32 (i8*, i8*, i32, ...)*)(i8* %100, i8* getelementptr inbounds ([13 x i8], [13 x i8]* @.str.7, i64 0, i64 0), i32 %101)
%103 = load i8*, i8** %1
%104 = call i32 (i8*, i8*, i32, ...) bitcast (i32 (...)* @multiplex to i32 (i8*, i8*, i32, ...)*)(i8* %103, i8* %100, i32 %15)
%105 = call i32 (...) @tx_free()
br label %172
106: ; preds = %14
%107 = load i8*, i8** %20
%108 = tail call i32 (i8*, i8*, ...) bitcast (i32 (...)* @str_cmp to i32 (i8*, i8*, ...)*)(i8* %107, i8* getelementptr inbounds ([10 x i8], [10 x i8]* @.str.8, i64 0, i64 0))
%109 = icmp eq i32 %108, 0
%110 = icmp eq i8* %18, null
%111 = select i1 %109, i1 %110, i1 false
%112 = icmp eq i8* %16, null
%113 = select i1 %111, i1 %112, i1 false
%114 = icmp eq i8* %17, null
%115 = select i1 %113, i1 %114, i1 false
%116 = select i1 %115, i1 %30, i1 false
%117 = icmp ne i8* %19, null
%118 = select i1 %116, i1 %117, i1 false
br i1 %118, label %119, label %121
119: ; preds = %106
%120 = tail call i32 (i8*, i32, ...) bitcast (i32 (...)* @processor to i32 (i8*, i32, ...)*)(i8* %19, i32 %15)
br label %172
121: ; preds = %106
%122 = load i8*, i8** %20
%123 = tail call i32 (i8*, i8*, ...) bitcast (i32 (...)* @str_cmp to i32 (i8*, i8*, ...)*)(i8* %122, i8* getelementptr inbounds ([3 x i8], [3 x i8]* @.str.9, i64 0, i64 0))
%124 = icmp eq i32 %123, 0
%125 = select i1 %124, i1 %24, i1 false
%126 = select i1 %125, i1 %112, i1 false
%127 = select i1 %126, i1 %28, i1 false
%128 = select i1 %127, i1 %30, i1 false
%129 = select i1 %128, i1 %32, i1 false
br i1 %129, label %130, label %132
130: ; preds = %121
%131 = call i32 (i8*, i8*, i32*, ...) bitcast (i32 (...)* @tx_server to i32 (i8*, i8*, i32*, ...)*)(i8* %18, i8* %17, i32* %3)
br label %172
132: ; preds = %121
%133 = load i8*, i8** %20
%134 = tail call i32 (i8*, i8*, ...) bitcast (i32 (...)* @str_cmp to i32 (i8*, i8*, ...)*)(i8* %133, i8* getelementptr inbounds ([4 x i8], [4 x i8]* @.str.10, i64 0, i64 0))
%135 = icmp eq i32 %134, 0
%136 = select i1 %135, i1 %110, i1 false
%137 = select i1 %136, i1 %26, i1 false
%138 = select i1 %137, i1 %114, i1 false
%139 = select i1 %138, i1 %30, i1 false
%140 = select i1 %139, i1 %117, i1 false
br i1 %140, label %141, label %144
141: ; preds = %132
%142 = tail call i32 (i8*, ...) bitcast (i32 (...)* @tx_attach to i32 (i8*, ...)*)(i8* %19)
%143 = tail call i32 (i32, i8*, ...) bitcast (i32 (...)* @vol_init to i32 (i32, i8*, ...)*)(i32 %15, i8* %16)
br label %172
144: ; preds = %132
%145 = load i8*, i8** %20
%146 = tail call i32 (i8*, i8*, ...) bitcast (i32 (...)* @str_cmp to i32 (i8*, i8*, ...)*)(i8* %145, i8* getelementptr inbounds ([5 x i8], [5 x i8]* @.str.11, i64 0, i64 0))
%147 = icmp eq i32 %146, 0
%148 = select i1 %147, i1 %110, i1 false
%149 = select i1 %148, i1 %112, i1 false
%150 = select i1 %149, i1 %114, i1 false
%151 = select i1 %150, i1 %30, i1 false
%152 = select i1 %151, i1 %117, i1 false
br i1 %152, label %153, label %157
153: ; preds = %144
%154 = tail call i32 (i8*, ...) bitcast (i32 (...)* @tx_attach to i32 (i8*, ...)*)(i8* %19)
%155 = load i8*, i8** %1
%156 = tail call i32 (i8*, i8*, i32, ...) bitcast (i32 (...)* @multiplex to i32 (i8*, i8*, i32, ...)*)(i8* %155, i8* %19, i32 %15)
br label %172
157: ; preds = %144
%158 = load i8*, i8** %20
%159 = tail call i32 (i8*, i8*, ...) bitcast (i32 (...)* @str_cmp to i32 (i8*, i8*, ...)*)(i8* %158, i8* getelementptr inbounds ([8 x i8], [8 x i8]* @.str.12, i64 0, i64 0))
%160 = icmp eq i32 %159, 0
%161 = select i1 %160, i1 %110, i1 false
%162 = select i1 %161, i1 %112, i1 false
%163 = select i1 %162, i1 %114, i1 false
%164 = icmp eq i32 %15, 0
%165 = select i1 %163, i1 %164, i1 false
%166 = select i1 %165, i1 %32, i1 false
br i1 %166, label %167, label %169
167: ; preds = %157
%168 = tail call i32 (...) @conv_parse()
br label %172
169: ; preds = %157
%170 = load i8*, i8** %1
%171 = tail call i32 (i8*, ...) bitcast (i32 (...)* @usage to i32 (i8*, ...)*)(i8* %170)
br label %172
172: ; preds = %119, %141, %167, %169, %153, %130, %96
ret i32 0
}