char __dt__37hashTableIterator__pt__12_9CC_StringiFv(__0this, __0__free)
struct hashTableIterator__pt__12_9CC_Stringi *__0this;
int __0__free;
{
  if (__0this)
    if (__0this)
      if (__0__free & 1)
        __dl__FPv((char *)__0this);
}


x86 assembly (clang, -O0):
<__dt__37hashTableIterator__pt__12_9CC_StringiFv>:
push   %rbp
mov    %rsp,%rbp
sub    $0x20,%rsp
mov    %rdi,-0x10(%rbp)
mov    %esi,-0x14(%rbp)
cmpq   $0x0,-0x10(%rbp)
je     1159 <__dt__37hashTableIterator__pt__12_9CC_StringiFv+0x49>
cmpq   $0x0,-0x10(%rbp)
je     1154 <__dt__37hashTableIterator__pt__12_9CC_StringiFv+0x44>
mov    -0x14(%rbp),%eax
and    $0x1,%eax
cmp    $0x0,%eax
je     114f <__dt__37hashTableIterator__pt__12_9CC_StringiFv+0x3f>
mov    -0x10(%rbp),%rdi
mov    $0x0,%al
call   1030 <__dl__FPv@plt>
jmp    1154 <__dt__37hashTableIterator__pt__12_9CC_StringiFv+0x44>
jmp    1159 <__dt__37hashTableIterator__pt__12_9CC_StringiFv+0x49>
movsbl -0x1(%rbp),%eax
add    $0x20,%rsp
pop    %rbp
ret

x86 assembly (clang, -O2):
<__dt__37hashTableIterator__pt__12_9CC_StringiFv>:
test   %rdi,%rdi
je     1126 <__dt__37hashTableIterator__pt__12_9CC_StringiFv+0x16>
and    $0x1,%esi
je     1126 <__dt__37hashTableIterator__pt__12_9CC_StringiFv+0x16>
push   %rax
xor    %eax,%eax
call   1030 <__dl__FPv@plt>
add    $0x8,%rsp
ret

LLVM IR (-O0):
%struct.hashTableIterator__pt__12_9CC_Stringi = type opaque
define signext i8 @__dt__37hashTableIterator__pt__12_9CC_StringiFv(%struct.hashTableIterator__pt__12_9CC_Stringi* %0, i32 %1) {
%3 = alloca i8
%4 = alloca %struct.hashTableIterator__pt__12_9CC_Stringi*
%5 = alloca i32
store %struct.hashTableIterator__pt__12_9CC_Stringi* %0, %struct.hashTableIterator__pt__12_9CC_Stringi** %4
store i32 %1, i32* %5
%6 = load %struct.hashTableIterator__pt__12_9CC_Stringi*, %struct.hashTableIterator__pt__12_9CC_Stringi** %4
%7 = icmp ne %struct.hashTableIterator__pt__12_9CC_Stringi* %6, null
br i1 %7, label %8, label %21
8: ; preds = %2
%9 = load %struct.hashTableIterator__pt__12_9CC_Stringi*, %struct.hashTableIterator__pt__12_9CC_Stringi** %4
%10 = icmp ne %struct.hashTableIterator__pt__12_9CC_Stringi* %9, null
br i1 %10, label %11, label %20
11: ; preds = %8
%12 = load i32, i32* %5
%13 = and i32 %12, 1
%14 = icmp ne i32 %13, 0
br i1 %14, label %15, label %19
15: ; preds = %11
%16 = load %struct.hashTableIterator__pt__12_9CC_Stringi*, %struct.hashTableIterator__pt__12_9CC_Stringi** %4
%17 = bitcast %struct.hashTableIterator__pt__12_9CC_Stringi* %16 to i8*
%18 = call i32 (i8*, ...) bitcast (i32 (...)* @__dl__FPv to i32 (i8*, ...)*)(i8* %17)
br label %19
19: ; preds = %15, %11
br label %20
20: ; preds = %19, %8
br label %21
21: ; preds = %20, %2
%22 = load i8, i8* %3
ret i8 %22
}

LLVM IR (-O2):
%struct.hashTableIterator__pt__12_9CC_Stringi = type opaque
define signext i8 @__dt__37hashTableIterator__pt__12_9CC_StringiFv(%struct.hashTableIterator__pt__12_9CC_Stringi* %0, i32 %1) {
%3 = icmp eq %struct.hashTableIterator__pt__12_9CC_Stringi* %0, null
%4 = and i32 %1, 1
%5 = icmp eq i32 %4, 0
%6 = or i1 %3, %5
br i1 %6, label %10, label %7
7: ; preds = %2
%8 = bitcast %struct.hashTableIterator__pt__12_9CC_Stringi* %0 to i8*
%9 = tail call i32 (i8*, ...) bitcast (i32 (...)* @__dl__FPv to i32 (i8*, ...)*)(i8* %8)
br label %10
10: ; preds = %7, %2
ret i8 undef
}