#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*/ wlabel;
typedef scalar_t__ wchar_t;

/* Variables and functions */
scalar_t__ dos_string_to_wchar_string(scalar_t__ *, char *, int);
scalar_t__ iswlower(scalar_t__);
scalar_t__ memcmp(char *, char *, int);
int validate_volume_label(char *doslabel) {
  int i;
  int ret = 0;
  wchar_t wlabel[12];
  if (dos_string_to_wchar_string(wlabel, doslabel, sizeof(wlabel))) {
    for (i = 0; wlabel[i]; i++) {
      if (iswlower(wlabel[i])) {
        ret |= 0x01;
        break;
      }
    }
  }
  for (i = 0; i < 11; i++) {
    if (doslabel[i] < 0x20)
      ret |= 0x02;
    if (doslabel[i] == 0x22 || (doslabel[i] >= 0x2A && doslabel[i] <= 0x2C) ||
        doslabel[i] == 0x2E || doslabel[i] == 0x2F ||
        (doslabel[i] >= 0x3A && doslabel[i] <= 0x3F) ||
        (doslabel[i] >= 0x5B && doslabel[i] <= 0x5D) || doslabel[i] == 0x7C)
      ret |= 0x04;
  }
  if (memcmp(doslabel, "           ", 11) == 0)
    ret |= 0x08;
  if (doslabel[0] == ' ')
    ret |= 0x10;
  return ret;
}


x86 assembly (clang, -O0):
<validate_volume_label>:
push   %rbp
mov    %rsp,%rbp
sub    $0x70,%rsp
mov    %rdi,-0x8(%rbp)
movl   $0x0,-0x10(%rbp)
lea    -0x70(%rbp),%rdi
mov    -0x8(%rbp),%rsi
mov    $0x60,%edx
call   1030 <dos_string_to_wchar_string@plt>
cmp    $0x0,%rax
je     11b4 <validate_volume_label+0x84>
movl   $0x0,-0xc(%rbp)
movslq -0xc(%rbp),%rax
cmpq   $0x0,-0x70(%rbp,%rax,8)
je     11af <validate_volume_label+0x7f>
movslq -0xc(%rbp),%rax
mov    -0x70(%rbp,%rax,8),%rdi
call   1040 <iswlower@plt>
cmp    $0x0,%rax
je     119c <validate_volume_label+0x6c>
mov    -0x10(%rbp),%eax
or     $0x1,%eax
mov    %eax,-0x10(%rbp)
jmp    11af <validate_volume_label+0x7f>
jmp    11a1 <validate_volume_label+0x71>
mov    -0xc(%rbp),%eax
add    $0x1,%eax
mov    %eax,-0xc(%rbp)
jmp    1166 <validate_volume_label+0x36>
jmp    11b4 <validate_volume_label+0x84>
movl   $0x0,-0xc(%rbp)
cmpl   $0xb,-0xc(%rbp)
jge    12d1 <validate_volume_label+0x1a1>
mov    -0x8(%rbp),%rax
movslq -0xc(%rbp),%rcx
movsbl (%rax,%rcx,1),%eax
cmp    $0x20,%eax
jge    11e3 <validate_volume_label+0xb3>
mov    -0x10(%rbp),%eax
or     $0x2,%eax
mov    %eax,-0x10(%rbp)
mov    -0x8(%rbp),%rax
movslq -0xc(%rbp),%rcx
movsbl (%rax,%rcx,1),%eax
cmp    $0x22,%eax
je     12b5 <validate_volume_label+0x185>
mov    -0x8(%rbp),%rax
movslq -0xc(%rbp),%rcx
movsbl (%rax,%rcx,1),%eax
cmp    $0x2a,%eax
jl     1222 <validate_volume_label+0xf2>
mov    -0x8(%rbp),%rax
movslq -0xc(%rbp),%rcx
movsbl (%rax,%rcx,1),%eax
cmp    $0x2c,%eax
jle    12b5 <validate_volume_label+0x185>
mov    -0x8(%rbp),%rax
movslq -0xc(%rbp),%rcx
movsbl (%rax,%rcx,1),%eax
cmp    $0x2e,%eax
je     12b5 <validate_volume_label+0x185>
mov    -0x8(%rbp),%rax
movslq -0xc(%rbp),%rcx
movsbl (%rax,%rcx,1),%eax
cmp    $0x2f,%eax
je     12b5 <validate_volume_label+0x185>
mov    -0x8(%rbp),%rax
movslq -0xc(%rbp),%rcx
movsbl (%rax,%rcx,1),%eax
cmp    $0x3a,%eax
jl     1276 <validate_volume_label+0x146>
mov    -0x8(%rbp),%rax
movslq -0xc(%rbp),%rcx
movsbl (%rax,%rcx,1),%eax
cmp    $0x3f,%eax
jle    12b5 <validate_volume_label+0x185>
mov    -0x8(%rbp),%rax
movslq -0xc(%rbp),%rcx
movsbl (%rax,%rcx,1),%eax
cmp    $0x5b,%eax
jl     12a0 <validate_volume_label+0x170>
mov    -0x8(%rbp),%rax
movslq -0xc(%rbp),%rcx
movsbl (%rax,%rcx,1),%eax
cmp    $0x5d,%eax
jle    12b5 <validate_volume_label+0x185>
mov    -0x8(%rbp),%rax
movslq -0xc(%rbp),%rcx
movsbl (%rax,%rcx,1),%eax
cmp    $0x7c,%eax
jne    12be <validate_volume_label+0x18e>
mov    -0x10(%rbp),%eax
or     $0x4,%eax
mov    %eax,-0x10(%rbp)
jmp    12c3 <validate_volume_label+0x193>
mov    -0xc(%rbp),%eax
add    $0x1,%eax
mov    %eax,-0xc(%rbp)
jmp    11bb <validate_volume_label+0x8b>
mov    -0x8(%rbp),%rdi
lea    0xd24(%rip),%rsi
mov    $0xb,%edx
call   1050 <memcmp@plt>
cmp    $0x0,%rax
jne    12f9 <validate_volume_label+0x1c9>
mov    -0x10(%rbp),%eax
or     $0x8,%eax
mov    %eax,-0x10(%rbp)
mov    -0x8(%rbp),%rax
movsbl (%rax),%eax
cmp    $0x20,%eax
jne    1312 <validate_volume_label+0x1e2>
mov    -0x10(%rbp),%eax
or     $0x10,%eax
mov    %eax,-0x10(%rbp)
mov    -0x10(%rbp),%eax
add    $0x70,%rsp
pop    %rbp
ret

x86 assembly (clang, -O2):
<validate_volume_label>:
push   %r15
push   %r14
push   %rbx
sub    $0x60,%rsp
mov    %rdi,%r14
mov    %rsp,%rdi
mov    %r14,%rsi
mov    $0x60,%edx
call   1030 <dos_string_to_wchar_string@plt>
xor    %r15d,%r15d
test   %rax,%rax
je     118e <validate_volume_label+0x5e>
mov    (%rsp),%rdi
test   %rdi,%rdi
je     118e <validate_volume_label+0x5e>
lea    0x8(%rsp),%rbx
cs nopw 0x0(%rax,%rax,1)
nopl   0x0(%rax)
call   1040 <iswlower@plt>
test   %rax,%rax
jne    1188 <validate_volume_label+0x58>
mov    (%rbx),%rdi
add    $0x8,%rbx
test   %rdi,%rdi
jne    1170 <validate_volume_label+0x40>
jmp    118e <validate_volume_label+0x5e>
mov    $0x1,%r15d
mov    (%r14),%dl
lea    0x2(%r15),%ecx
cmp    $0x20,%dl
cmovge %r15d,%ecx
movabs $0xdc0400000000,%rax
cmp    $0x2f,%dl
ja     139b <validate_volume_label+0x26b>
movzbl %dl,%esi
bt     %rsi,%rax
jae    139b <validate_volume_label+0x26b>
or     $0x4,%ecx
mov    0x1(%r14),%sil
mov    %ecx,%edx
or     $0x2,%edx
cmp    $0x20,%sil
cmovge %ecx,%edx
cmp    $0x2f,%sil
ja     13d0 <validate_volume_label+0x2a0>
movzbl %sil,%ecx
bt     %rcx,%rax
jae    13d0 <validate_volume_label+0x2a0>
or     $0x4,%edx
mov    0x2(%r14),%sil
mov    %edx,%ecx
or     $0x2,%ecx
cmp    $0x20,%sil
cmovge %edx,%ecx
cmp    $0x2f,%sil
ja     1407 <validate_volume_label+0x2d7>
movzbl %sil,%edx
bt     %rdx,%rax
jae    1407 <validate_volume_label+0x2d7>
or     $0x4,%ecx
mov    0x3(%r14),%sil
mov    %ecx,%edx
or     $0x2,%edx
cmp    $0x20,%sil
cmovge %ecx,%edx
cmp    $0x2f,%sil
ja     143e <validate_volume_label+0x30e>
movzbl %sil,%ecx
bt     %rcx,%rax
jae    143e <validate_volume_label+0x30e>
or     $0x4,%edx
mov    0x4(%r14),%sil
mov    %edx,%ecx
or     $0x2,%ecx
cmp    $0x20,%sil
cmovge %edx,%ecx
cmp    $0x2f,%sil
ja     1475 <validate_volume_label+0x345>
movzbl %sil,%edx
bt     %rdx,%rax
jae    1475 <validate_volume_label+0x345>
or     $0x4,%ecx
mov    0x5(%r14),%sil
mov    %ecx,%edx
or     $0x2,%edx
cmp    $0x20,%sil
cmovge %ecx,%edx
cmp    $0x2f,%sil
ja     14ac <validate_volume_label+0x37c>
movzbl %sil,%ecx
bt     %rcx,%rax
jae    14ac <validate_volume_label+0x37c>
or     $0x4,%edx
mov    0x6(%r14),%sil
mov    %edx,%ecx
or     $0x2,%ecx
cmp    $0x20,%sil
cmovge %edx,%ecx
cmp    $0x2f,%sil
ja     14e3 <validate_volume_label+0x3b3>
movzbl %sil,%edx
bt     %rdx,%rax
jae    14e3 <validate_volume_label+0x3b3>
or     $0x4,%ecx
mov    0x7(%r14),%sil
mov    %ecx,%edx
or     $0x2,%edx
cmp    $0x20,%sil
cmovge %ecx,%edx
cmp    $0x2f,%sil
ja     151a <validate_volume_label+0x3ea>
movzbl %sil,%ecx
bt     %rcx,%rax
jae    151a <validate_volume_label+0x3ea>
or     $0x4,%edx
mov    0x8(%r14),%sil
mov    %edx,%ecx
or     $0x2,%ecx
cmp    $0x20,%sil
cmovge %edx,%ecx
cmp    $0x2f,%sil
ja     1551 <validate_volume_label+0x421>
movzbl %sil,%edx
bt     %rdx,%rax
jae    1551 <validate_volume_label+0x421>
or     $0x4,%ecx
mov    0x9(%r14),%sil
mov    %ecx,%edx
or     $0x2,%edx
cmp    $0x20,%sil
cmovge %ecx,%edx
cmp    $0x2f,%sil
ja     1588 <validate_volume_label+0x458>
movzbl %sil,%ecx
bt     %rcx,%rax
jae    1588 <validate_volume_label+0x458>
or     $0x4,%edx
mov    0xa(%r14),%cl
mov    %edx,%ebx
or     $0x2,%ebx
cmp    $0x20,%cl
cmovge %edx,%ebx
cmp    $0x2f,%cl
ja     15bf <validate_volume_label+0x48f>
movzbl %cl,%edx
bt     %rdx,%rax
jae    15bf <validate_volume_label+0x48f>
or     $0x4,%ebx
lea    0xc8f(%rip),%rsi
mov    %r14,%rdi
mov    $0xb,%edx
call   1050 <memcmp@plt>
lea    0x8(%rbx),%ecx
test   %rax,%rax
cmovne %ebx,%ecx
lea    0x10(%rcx),%eax
cmpb   $0x20,(%r14)
cmovne %ecx,%eax
add    $0x60,%rsp
pop    %rbx
pop    %r14
pop    %r15
ret
lea    -0x3a(%rdx),%esi
cmp    $0x6,%sil
jb     11bc <validate_volume_label+0x8c>
add    $0xa5,%dl
cmp    $0x21,%dl
ja     11bf <validate_volume_label+0x8f>
movzbl %dl,%edx
movabs $0x200000007,%rsi
bt     %rdx,%rsi
jb     11bc <validate_volume_label+0x8c>
jmp    11bf <validate_volume_label+0x8f>
lea    -0x3a(%rsi),%ecx
cmp    $0x6,%cl
jb     11e7 <validate_volume_label+0xb7>
add    $0xa5,%sil
cmp    $0x21,%sil
ja     11ea <validate_volume_label+0xba>
movzbl %sil,%ecx
movabs $0x200000007,%rsi
bt     %rcx,%rsi
jb     11e7 <validate_volume_label+0xb7>
jmp    11ea <validate_volume_label+0xba>
lea    -0x3a(%rsi),%edx
cmp    $0x6,%dl
jb     1212 <validate_volume_label+0xe2>
add    $0xa5,%sil
cmp    $0x21,%sil
ja     1215 <validate_volume_label+0xe5>
movzbl %sil,%edx
movabs $0x200000007,%rsi
bt     %rdx,%rsi
jb     1212 <validate_volume_label+0xe2>
jmp    1215 <validate_volume_label+0xe5>
lea    -0x3a(%rsi),%ecx
cmp    $0x6,%cl
jb     123d <validate_volume_label+0x10d>
add    $0xa5,%sil
cmp    $0x21,%sil
ja     1240 <validate_volume_label+0x110>
movzbl %sil,%ecx
movabs $0x200000007,%rsi
bt     %rcx,%rsi
jb     123d <validate_volume_label+0x10d>
jmp    1240 <validate_volume_label+0x110>
lea    -0x3a(%rsi),%edx
cmp    $0x6,%dl
jb     1268 <validate_volume_label+0x138>
add    $0xa5,%sil
cmp    $0x21,%sil
ja     126b <validate_volume_label+0x13b>
movzbl %sil,%edx
movabs $0x200000007,%rsi
bt     %rdx,%rsi
jb     1268 <validate_volume_label+0x138>
jmp    126b <validate_volume_label+0x13b>
lea    -0x3a(%rsi),%ecx
cmp    $0x6,%cl
jb     1293 <validate_volume_label+0x163>
add    $0xa5,%sil
cmp    $0x21,%sil
ja     1296 <validate_volume_label+0x166>
movzbl %sil,%ecx
movabs $0x200000007,%rsi
bt     %rcx,%rsi
jb     1293 <validate_volume_label+0x163>
jmp    1296 <validate_volume_label+0x166>
lea    -0x3a(%rsi),%edx
cmp    $0x6,%dl
jb     12be <validate_volume_label+0x18e>
add    $0xa5,%sil
cmp    $0x21,%sil
ja     12c1 <validate_volume_label+0x191>
movzbl %sil,%edx
movabs $0x200000007,%rsi
bt     %rdx,%rsi
jb     12be <validate_volume_label+0x18e>
jmp    12c1 <validate_volume_label+0x191>
lea    -0x3a(%rsi),%ecx
cmp    $0x6,%cl
jb     12e9 <validate_volume_label+0x1b9>
add    $0xa5,%sil
cmp    $0x21,%sil
ja     12ec <validate_volume_label+0x1bc>
movzbl %sil,%ecx
movabs $0x200000007,%rsi
bt     %rcx,%rsi
jb     12e9 <validate_volume_label+0x1b9>
jmp    12ec <validate_volume_label+0x1bc>
lea    -0x3a(%rsi),%edx
cmp    $0x6,%dl
jb     1314 <validate_volume_label+0x1e4>
add    $0xa5,%sil
cmp    $0x21,%sil
ja     1317 <validate_volume_label+0x1e7>
movzbl %sil,%edx
movabs $0x200000007,%rsi
bt     %rdx,%rsi
jb     1314 <validate_volume_label+0x1e4>
jmp    1317 <validate_volume_label+0x1e7>
lea    -0x3a(%rsi),%ecx
cmp    $0x6,%cl
jb     133f <validate_volume_label+0x20f>
add    $0xa5,%sil
cmp    $0x21,%sil
ja     1342 <validate_volume_label+0x212>
movzbl %sil,%ecx
movabs $0x200000007,%rsi
bt     %rcx,%rsi
jb     133f <validate_volume_label+0x20f>
jmp    1342 <validate_volume_label+0x212>
lea    -0x3a(%rcx),%eax
cmp    $0x6,%al
jb     1367 <validate_volume_label+0x237>
add    $0xa5,%cl
cmp    $0x21,%cl
ja     136a <validate_volume_label+0x23a>
movzbl %cl,%eax
movabs $0x200000007,%rcx
bt     %rax,%rcx
jb     1367 <validate_volume_label+0x237>
jmp    136a <validate_volume_label+0x23a>

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

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