Skip to content

Instantly share code, notes, and snippets.

@Code-Hex
Last active February 20, 2018 06:57
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save Code-Hex/7a7bbbdc5470fea1cc7147fcf09dccdb to your computer and use it in GitHub Desktop.
Save Code-Hex/7a7bbbdc5470fea1cc7147fcf09dccdb to your computer and use it in GitHub Desktop.
Compiler::CodeGenerator::LLVM で生成した WebAssembly 向けの LLVM IR とそれから生成した wast
; ModuleID = 'LLVMIR'
source_filename = "LLVMIR"
target datalayout = "e-m:e-p:32:32-i64:64-n32:64-S128"
target triple = "wasm32-unknown-unknown-elf"
%union.UnionType = type { double }
%struct._Hash = type { i32, %union.UnionType*, %struct._String**, i32 }
%struct._String = type { i32, i8*, i32, i32 }
%struct._Object = type { i32, %union.UnionType, i8*, i8*, i8*, i8*, i8*, i8* }
%struct._IO_FILE = type opaque
%struct._Array = type { i32, %union.UnionType**, i32 }
%struct._IOHandlerObject = type { i32, %struct._IO_FILE*, i8*, i8* }
%struct._HashRef = type { i32, %union.UnionType }
%struct._BlessedObject = type { i32, %union.UnionType, %struct._Package*, i8* }
%struct._Package = type { i32, %union.UnionType*, %struct._String**, i32, %struct._Array*, i8* }
%struct._CodeRef = type { i32, void (%union.UnionType*, %struct._Array*)* }
%ArrayObject = type { i32, %union.UnionType**, i64 }
@count = hidden local_unnamed_addr global i32 0, align 4
@undef = hidden local_unnamed_addr global %union.UnionType zeroinitializer, align 8
@base_hash_table = hidden local_unnamed_addr global %union.UnionType* null, align 4
@pkg_map = hidden local_unnamed_addr global %struct._Hash* null, align 4
@object_pool = hidden local_unnamed_addr global %struct._Object** null, align 4
@stderr = external local_unnamed_addr constant %struct._IO_FILE*, align 4
@.str = private unnamed_addr constant [15 x i8] c"type = [%llu]\0A\00", align 1
@.str.1 = private unnamed_addr constant [21 x i8] c"0 && \22Type Error!\5Cn\22\00", align 1
@.str.2 = private unnamed_addr constant [25 x i8] c"gen/runtime_api_common.c\00", align 1
@__func__._open = private unnamed_addr constant [6 x i8] c"_open\00", align 1
@.str.7 = private unnamed_addr constant [2 x i8] c"r\00", align 1
@.str.3 = private unnamed_addr constant [1 x i8] zeroinitializer, align 1
@.str.5 = private unnamed_addr constant [2 x i8] c"w\00", align 1
@.str.8 = private unnamed_addr constant [26 x i8] c"ERROR: file open error!!\0A\00", align 1
@.str.9 = private unnamed_addr constant [23 x i8] c"argument size = [%zu]\0A\00", align 1
@.str.10 = private unnamed_addr constant [34 x i8] c"0 && \22Sorry, still not supported\22\00", align 1
@__func__._binmode = private unnamed_addr constant [9 x i8] c"_binmode\00", align 1
@.str.12 = private unnamed_addr constant [3 x i8] c"wb\00", align 1
@.str.11 = private unnamed_addr constant [3 x i8] c"rb\00", align 1
@.str.13 = private unnamed_addr constant [30 x i8] c"ERROR: could not reopen [%s]\0A\00", align 1
@__func__._chr = private unnamed_addr constant [5 x i8] c"_chr\00", align 1
@__func__._close = private unnamed_addr constant [7 x i8] c"_close\00", align 1
@.str.15 = private unnamed_addr constant [36 x i8] c"0 && \22Type Error!!! abs's argument\22\00", align 1
@__func__._abs = private unnamed_addr constant [5 x i8] c"_abs\00", align 1
@__func__._int = private unnamed_addr constant [5 x i8] c"_int\00", align 1
@__func__._sin = private unnamed_addr constant [5 x i8] c"_sin\00", align 1
@__func__._cos = private unnamed_addr constant [5 x i8] c"_cos\00", align 1
@stdout = external local_unnamed_addr constant %struct._IO_FILE*, align 4
@.str.18 = private unnamed_addr constant [3 x i8] c"{\0A\00", align 1
@.str.19 = private unnamed_addr constant [11 x i8] c" '%s' => \00", align 1
@.str.20 = private unnamed_addr constant [3 x i8] c",\0A\00", align 1
@.str.22 = private unnamed_addr constant [2 x i8] c"}\00", align 1
@.str.26 = private unnamed_addr constant [6 x i8] c"undef\00", align 1
@.str.23 = private unnamed_addr constant [3 x i8] c"[\0A\00", align 1
@.str.24 = private unnamed_addr constant [2 x i8] c"]\00", align 1
@.str.25 = private unnamed_addr constant [5 x i8] c"'%s'\00", align 1
@.str.38 = private unnamed_addr constant [3 x i8] c"%d\00", align 1
@.str.39 = private unnamed_addr constant [3 x i8] c"%f\00", align 1
@.str.42 = private unnamed_addr constant [10 x i8] c"ARRAY(%p)\00", align 1
@.str.43 = private unnamed_addr constant [9 x i8] c"HASH(%p)\00", align 1
@.str.44 = private unnamed_addr constant [9 x i8] c"CODE(%p)\00", align 1
@.str.45 = private unnamed_addr constant [12 x i8] c"%s=HASH(%p)\00", align 1
@.str.27 = private unnamed_addr constant [26 x i8] c"===== debug_print ======\0A\00", align 1
@.str.28 = private unnamed_addr constant [15 x i8] c"=============\0A\00", align 1
@__func__.shift = private unnamed_addr constant [6 x i8] c"shift\00", align 1
@.str.29 = private unnamed_addr constant [30 x i8] c"fetch from function argument\0A\00", align 1
@.str.30 = private unnamed_addr constant [34 x i8] c"ERROR!!: cannot allocated memory\0A\00", align 1
@.str.31 = private unnamed_addr constant [27 x i8] c"Type Error!: near by push\0A\00", align 1
@__func__.push = private unnamed_addr constant [5 x i8] c"push\00", align 1
@.str.32 = private unnamed_addr constant [33 x i8] c"0 && \22Type Error!: Unknown Type\22\00", align 1
@__func__.HashRef_get = private unnamed_addr constant [12 x i8] c"HashRef_get\00", align 1
@__func__.ArrayRef_get = private unnamed_addr constant [13 x i8] c"ArrayRef_get\00", align 1
@.str.33 = private unnamed_addr constant [54 x i8] c"ERROR!: bless function must be required two argument\0A\00", align 1
@__func__.bless = private unnamed_addr constant [6 x i8] c"bless\00", align 1
@.str.35 = private unnamed_addr constant [30 x i8] c"pkg && \22unknown package name\22\00", align 1
@.str.37 = private unnamed_addr constant [33 x i8] c"code_ref && \22cannot find method\22\00", align 1
@__func__.get_method_by_name = private unnamed_addr constant [19 x i8] c"get_method_by_name\00", align 1
@__func__.get_class_method_by_name = private unnamed_addr constant [25 x i8] c"get_class_method_by_name\00", align 1
@__func__.dynamic_blessed_object_cast_code = private unnamed_addr constant [33 x i8] c"dynamic_blessed_object_cast_code\00", align 1
@.str.40 = private unnamed_addr constant [23 x i8] c"called expandVariable\0A\00", align 1
@.str.41 = private unnamed_addr constant [12 x i8] c"buf = [%s]\0A\00", align 1
@0 = private unnamed_addr constant [13 x i8] c"Hello, World\00"
; Function Attrs: minsize noinline nounwind optsize
define hidden void @_open(%union.UnionType* noalias nocapture sret, %struct._Array* nocapture readonly) local_unnamed_addr #0 {
%3 = alloca %union.UnionType, align 8
%4 = getelementptr inbounds %struct._Array, %struct._Array* %1, i32 0, i32 2
%5 = load i32, i32* %4, align 4, !tbaa !2
%6 = icmp eq i32 %5, 3
br i1 %6, label %7, label %59
; <label>:7: ; preds = %2
%8 = getelementptr inbounds %struct._Array, %struct._Array* %1, i32 0, i32 1
%9 = load %union.UnionType**, %union.UnionType*** %8, align 4, !tbaa !8
%10 = getelementptr inbounds %union.UnionType*, %union.UnionType** %9, i32 1
%11 = bitcast %union.UnionType** %10 to i64**
%12 = load i64*, i64** %11, align 4, !tbaa !9
%13 = load i64, i64* %12, align 8, !tbaa !10
%14 = lshr i64 %13, 32
%15 = and i64 %14, 15
%16 = icmp eq i64 %15, 2
br i1 %16, label %20, label %17
; <label>:17: ; preds = %7
%18 = load %struct._IO_FILE*, %struct._IO_FILE** @stderr, align 4, !tbaa !9
%19 = tail call i32 (%struct._IO_FILE*, i8*, ...) @fprintf(%struct._IO_FILE* %18, i8* getelementptr inbounds ([15 x i8], [15 x i8]* @.str, i32 0, i32 0), i64 %15) #13
tail call void @__assert_fail(i8* getelementptr inbounds ([21 x i8], [21 x i8]* @.str.1, i32 0, i32 0), i8* getelementptr inbounds ([25 x i8], [25 x i8]* @.str.2, i32 0, i32 0), i32 17, i8* getelementptr inbounds ([6 x i8], [6 x i8]* @__func__._open, i32 0, i32 0)) #14
unreachable
; <label>:20: ; preds = %7
%21 = getelementptr inbounds %union.UnionType*, %union.UnionType** %9, i32 2
%22 = bitcast %union.UnionType** %21 to i64**
%23 = load i64*, i64** %22, align 4, !tbaa !9
%24 = load i64, i64* %23, align 8, !tbaa !10
%25 = lshr i64 %24, 32
%26 = and i64 %25, 15
%27 = icmp eq i64 %26, 2
br i1 %27, label %31, label %28
; <label>:28: ; preds = %20
%29 = load %struct._IO_FILE*, %struct._IO_FILE** @stderr, align 4, !tbaa !9
%30 = tail call i32 (%struct._IO_FILE*, i8*, ...) @fprintf(%struct._IO_FILE* %29, i8* getelementptr inbounds ([15 x i8], [15 x i8]* @.str, i32 0, i32 0), i64 %26) #13
tail call void @__assert_fail(i8* getelementptr inbounds ([21 x i8], [21 x i8]* @.str.1, i32 0, i32 0), i8* getelementptr inbounds ([25 x i8], [25 x i8]* @.str.2, i32 0, i32 0), i32 18, i8* getelementptr inbounds ([6 x i8], [6 x i8]* @__func__._open, i32 0, i32 0)) #14
unreachable
; <label>:31: ; preds = %20
%32 = trunc i64 %13 to i32
%33 = and i32 %32, 268435455
%34 = inttoptr i32 %33 to %struct._String*
%35 = getelementptr inbounds %struct._String, %struct._String* %34, i32 0, i32 1
%36 = load i8*, i8** %35, align 4, !tbaa !11
%37 = trunc i64 %24 to i32
%38 = and i32 %37, 268435455
%39 = inttoptr i32 %38 to %struct._String*
%40 = getelementptr inbounds %struct._String, %struct._String* %39, i32 0, i32 1
%41 = load i8*, i8** %40, align 4, !tbaa !11
%42 = load i8, i8* %36, align 1
%43 = icmp eq i8 %42, 62
%44 = icmp eq i8 %42, 60
%45 = select i1 %44, i8* getelementptr inbounds ([2 x i8], [2 x i8]* @.str.7, i32 0, i32 0), i8* getelementptr inbounds ([1 x i8], [1 x i8]* @.str.3, i32 0, i32 0)
%46 = select i1 %43, i8* getelementptr inbounds ([2 x i8], [2 x i8]* @.str.5, i32 0, i32 0), i8* %45
%47 = tail call %struct._IO_FILE* @fopen(i8* %41, i8* %46) #15
%48 = icmp eq %struct._IO_FILE* %47, null
br i1 %48, label %49, label %52
; <label>:49: ; preds = %31
%50 = load %struct._IO_FILE*, %struct._IO_FILE** @stderr, align 4, !tbaa !9
%51 = tail call i32 @fwrite(i8* getelementptr inbounds ([26 x i8], [26 x i8]* @.str.8, i32 0, i32 0), i32 25, i32 1, %struct._IO_FILE* %50) #16
tail call void @exit(i32 1) #14
unreachable
; <label>:52: ; preds = %31
%53 = bitcast %union.UnionType*** %8 to i64***
%54 = load i64**, i64*** %53, align 4, !tbaa !8
%55 = load i64*, i64** %54, align 4, !tbaa !9
call void @new_IOHandler(%union.UnionType* nonnull sret %3, i8* %41, i8* %46, %struct._IO_FILE* nonnull %47) #15
%56 = bitcast %union.UnionType* %3 to i64*
%57 = load i64, i64* %56, align 8
store i64 %57, i64* %55, align 8
%58 = bitcast %union.UnionType* %0 to i64*
store i64 -64424509440, i64* %58, align 8
ret void
; <label>:59: ; preds = %2
%60 = load %struct._IO_FILE*, %struct._IO_FILE** @stderr, align 4, !tbaa !9
%61 = tail call i32 (%struct._IO_FILE*, i8*, ...) @fprintf(%struct._IO_FILE* %60, i8* getelementptr inbounds ([23 x i8], [23 x i8]* @.str.9, i32 0, i32 0), i32 %5) #13
tail call void @__assert_fail(i8* getelementptr inbounds ([34 x i8], [34 x i8]* @.str.10, i32 0, i32 0), i8* getelementptr inbounds ([25 x i8], [25 x i8]* @.str.2, i32 0, i32 0), i32 35, i8* getelementptr inbounds ([6 x i8], [6 x i8]* @__func__._open, i32 0, i32 0)) #14
unreachable
}
; Function Attrs: minsize nounwind optsize
declare i32 @fprintf(%struct._IO_FILE* nocapture, i8* nocapture readonly, ...) local_unnamed_addr #1
; Function Attrs: minsize noreturn optsize
declare void @__assert_fail(i8*, i8*, i32, i8*) local_unnamed_addr #2
; Function Attrs: minsize nounwind optsize
declare noalias %struct._IO_FILE* @fopen(i8* nocapture readonly, i8* nocapture readonly) local_unnamed_addr #1
; Function Attrs: nounwind
declare i32 @fwrite(i8* nocapture, i32, i32, %struct._IO_FILE* nocapture) local_unnamed_addr #3
; Function Attrs: minsize noreturn optsize
declare void @exit(i32) local_unnamed_addr #2
; Function Attrs: minsize noinline norecurse nounwind optsize
define hidden void @new_IOHandler(%union.UnionType* noalias nocapture sret, i8*, i8*, %struct._IO_FILE*) local_unnamed_addr #4 {
%5 = tail call %struct._Object* @fetch_object() #15
%6 = bitcast %struct._Object* %5 to %struct._IOHandlerObject*
%7 = getelementptr inbounds %struct._IOHandlerObject, %struct._IOHandlerObject* %6, i32 0, i32 1
store %struct._IO_FILE* %3, %struct._IO_FILE** %7, align 4, !tbaa !14
%8 = getelementptr inbounds %struct._IOHandlerObject, %struct._IOHandlerObject* %6, i32 0, i32 3
store i8* %2, i8** %8, align 4, !tbaa !16
%9 = getelementptr inbounds %struct._Object, %struct._Object* %5, i32 0, i32 1
%10 = bitcast %union.UnionType* %9 to i8**
store i8* %1, i8** %10, align 4, !tbaa !17
%11 = ptrtoint %struct._Object* %5 to i32
%12 = zext i32 %11 to i64
%13 = or i64 %12, -25769803776
%14 = bitcast %union.UnionType* %0 to i64*
store i64 %13, i64* %14, align 8
ret void
}
; Function Attrs: minsize noinline norecurse nounwind optsize
define hidden %struct._Object* @fetch_object() local_unnamed_addr #4 {
%1 = load i32, i32* @count, align 4, !tbaa !18
%2 = add nsw i32 %1, 1
store i32 %2, i32* @count, align 4, !tbaa !18
%3 = load %struct._Object**, %struct._Object*** @object_pool, align 4, !tbaa !9
%4 = getelementptr inbounds %struct._Object*, %struct._Object** %3, i32 %2
%5 = load %struct._Object*, %struct._Object** %4, align 4, !tbaa !9
ret %struct._Object* %5
}
; Function Attrs: minsize noinline nounwind optsize
define hidden void @_binmode(%union.UnionType* noalias nocapture sret, %struct._Array* nocapture readonly) local_unnamed_addr #0 {
%3 = getelementptr inbounds %struct._Array, %struct._Array* %1, i32 0, i32 1
%4 = bitcast %union.UnionType*** %3 to i64***
%5 = load i64**, i64*** %4, align 4, !tbaa !8
%6 = load i64*, i64** %5, align 4, !tbaa !9
%7 = load i64, i64* %6, align 8
%8 = and i64 %7, 64424509440
%9 = icmp eq i64 %8, 30064771072
br i1 %9, label %10, label %17
; <label>:10: ; preds = %2
%11 = trunc i64 %7 to i32
%12 = and i32 %11, 268435455
%13 = inttoptr i32 %12 to i8*
%14 = getelementptr inbounds i8, i8* %13, i32 8
%15 = bitcast i8* %14 to i64*
%16 = load i64, i64* %15, align 8
br label %17
; <label>:17: ; preds = %10, %2
%18 = phi i64 [ %16, %10 ], [ %7, %2 ]
%19 = lshr i64 %18, 32
%20 = and i64 %19, 15
%21 = icmp eq i64 %20, 10
br i1 %21, label %25, label %22
; <label>:22: ; preds = %17
%23 = load %struct._IO_FILE*, %struct._IO_FILE** @stderr, align 4, !tbaa !9
%24 = tail call i32 (%struct._IO_FILE*, i8*, ...) @fprintf(%struct._IO_FILE* %23, i8* getelementptr inbounds ([15 x i8], [15 x i8]* @.str, i32 0, i32 0), i64 %20) #13
tail call void @__assert_fail(i8* getelementptr inbounds ([21 x i8], [21 x i8]* @.str.1, i32 0, i32 0), i8* getelementptr inbounds ([25 x i8], [25 x i8]* @.str.2, i32 0, i32 0), i32 46, i8* getelementptr inbounds ([9 x i8], [9 x i8]* @__func__._binmode, i32 0, i32 0)) #14
unreachable
; <label>:25: ; preds = %17
%26 = trunc i64 %18 to i32
%27 = and i32 %26, 268435455
%28 = inttoptr i32 %27 to %struct._IOHandlerObject*
%29 = getelementptr inbounds %struct._IOHandlerObject, %struct._IOHandlerObject* %28, i32 0, i32 3
%30 = load i8*, i8** %29, align 4, !tbaa !16
%31 = tail call i32 @strncmp(i8* %30, i8* getelementptr inbounds ([2 x i8], [2 x i8]* @.str.7, i32 0, i32 0), i32 2) #15
%32 = icmp eq i32 %31, 0
br i1 %32, label %37, label %33
; <label>:33: ; preds = %25
%34 = tail call i32 @strncmp(i8* %30, i8* getelementptr inbounds ([2 x i8], [2 x i8]* @.str.5, i32 0, i32 0), i32 2) #15
%35 = icmp eq i32 %34, 0
%36 = select i1 %35, i8* getelementptr inbounds ([3 x i8], [3 x i8]* @.str.12, i32 0, i32 0), i8* null
br label %37
; <label>:37: ; preds = %33, %25
%38 = phi i8* [ getelementptr inbounds ([3 x i8], [3 x i8]* @.str.11, i32 0, i32 0), %25 ], [ %36, %33 ]
%39 = getelementptr inbounds %struct._IOHandlerObject, %struct._IOHandlerObject* %28, i32 0, i32 2
%40 = load i8*, i8** %39, align 4, !tbaa !17
%41 = getelementptr inbounds %struct._IOHandlerObject, %struct._IOHandlerObject* %28, i32 0, i32 1
%42 = load %struct._IO_FILE*, %struct._IO_FILE** %41, align 4, !tbaa !14
%43 = tail call %struct._IO_FILE* @freopen(i8* %40, i8* %38, %struct._IO_FILE* %42) #17
store %struct._IO_FILE* %43, %struct._IO_FILE** %41, align 4, !tbaa !14
%44 = icmp eq %struct._IO_FILE* %43, null
br i1 %44, label %45, label %49
; <label>:45: ; preds = %37
%46 = load %struct._IO_FILE*, %struct._IO_FILE** @stderr, align 4, !tbaa !9
%47 = load i8*, i8** %39, align 4, !tbaa !17
%48 = tail call i32 (%struct._IO_FILE*, i8*, ...) @fprintf(%struct._IO_FILE* %46, i8* getelementptr inbounds ([30 x i8], [30 x i8]* @.str.13, i32 0, i32 0), i8* %47) #13
tail call void @exit(i32 1) #14
unreachable
; <label>:49: ; preds = %37
%50 = bitcast %union.UnionType* %0 to i64*
store i64 -64424509440, i64* %50, align 8
ret void
}
; Function Attrs: minsize nounwind optsize readonly
declare i32 @strncmp(i8* nocapture, i8* nocapture, i32) local_unnamed_addr #5
; Function Attrs: minsize optsize
declare %struct._IO_FILE* @freopen(i8*, i8*, %struct._IO_FILE*) local_unnamed_addr #6
; Function Attrs: minsize noinline nounwind optsize
define hidden void @_chr(%union.UnionType* noalias nocapture sret, %struct._Array* nocapture readonly) local_unnamed_addr #0 {
%3 = alloca i64, align 8
%4 = getelementptr inbounds %struct._Array, %struct._Array* %1, i32 0, i32 1
%5 = bitcast %union.UnionType*** %4 to i64***
%6 = load i64**, i64*** %5, align 4, !tbaa !8
%7 = load i64*, i64** %6, align 4, !tbaa !9
%8 = load i64, i64* %7, align 8
%9 = and i64 %8, 64424509440
%10 = icmp eq i64 %9, 30064771072
br i1 %10, label %11, label %18
; <label>:11: ; preds = %2
%12 = trunc i64 %8 to i32
%13 = and i32 %12, 268435455
%14 = inttoptr i32 %13 to i8*
%15 = getelementptr inbounds i8, i8* %14, i32 8
%16 = bitcast i8* %15 to i64*
%17 = load i64, i64* %16, align 8
br label %18
; <label>:18: ; preds = %11, %2
%19 = phi i64 [ %17, %11 ], [ %8, %2 ]
%20 = lshr i64 %19, 32
%21 = and i64 %20, 15
%22 = icmp eq i64 %21, 1
br i1 %22, label %26, label %23
; <label>:23: ; preds = %18
%24 = load %struct._IO_FILE*, %struct._IO_FILE** @stderr, align 4, !tbaa !9
%25 = tail call i32 (%struct._IO_FILE*, i8*, ...) @fprintf(%struct._IO_FILE* %24, i8* getelementptr inbounds ([15 x i8], [15 x i8]* @.str, i32 0, i32 0), i64 %21) #13
tail call void @__assert_fail(i8* getelementptr inbounds ([21 x i8], [21 x i8]* @.str.1, i32 0, i32 0), i8* getelementptr inbounds ([25 x i8], [25 x i8]* @.str.2, i32 0, i32 0), i32 67, i8* getelementptr inbounds ([5 x i8], [5 x i8]* @__func__._chr, i32 0, i32 0)) #14
unreachable
; <label>:26: ; preds = %18
%27 = bitcast i64* %3 to i8*
call void @llvm.lifetime.start.p0i8(i64 8, i8* nonnull %27) #3
store i64 0, i64* %3, align 8
%28 = trunc i64 %19 to i8
store i8 %28, i8* %27, align 8
call void @new_String(%union.UnionType* nonnull sret %0, i8* nonnull %27) #15
call void @llvm.lifetime.end.p0i8(i64 8, i8* nonnull %27) #3
ret void
}
; Function Attrs: argmemonly nounwind
declare void @llvm.lifetime.start.p0i8(i64, i8* nocapture) #7
; Function Attrs: minsize noinline nounwind optsize
define hidden void @new_String(%union.UnionType* noalias nocapture sret, i8* nocapture readonly) local_unnamed_addr #0 {
%3 = tail call %struct._Object* @fetch_object() #15
%4 = bitcast %struct._Object* %3 to %struct._String*
%5 = bitcast %struct._Object* %3 to i32*
store i32 2, i32* %5, align 4, !tbaa !19
%6 = tail call i32 @strlen(i8* %1) #15
%7 = add i32 %6, 1
%8 = getelementptr inbounds %struct._Object, %struct._Object* %3, i32 0, i32 1
%9 = bitcast %union.UnionType* %8 to i32*
store i32 %7, i32* %9, align 4, !tbaa !20
%10 = tail call i8* @malloc(i32 %7) #15
%11 = getelementptr inbounds %struct._String, %struct._String* %4, i32 0, i32 1
store i8* %10, i8** %11, align 4, !tbaa !11
%12 = load i32, i32* %9, align 4, !tbaa !20
tail call void @llvm.memcpy.p0i8.p0i8.i32(i8* align 1 %10, i8* align 1 %1, i32 %12, i1 false)
%13 = load i32, i32* %9, align 4, !tbaa !20
%14 = tail call i32 @make_hash(i8* %1, i32 %13) #15
%15 = and i32 %14, 511
%16 = getelementptr inbounds %struct._String, %struct._String* %4, i32 0, i32 3
store i32 %15, i32* %16, align 4, !tbaa !21
%17 = ptrtoint %struct._Object* %3 to i32
%18 = zext i32 %17 to i64
%19 = or i64 %18, -60129542144
%20 = bitcast %union.UnionType* %0 to i64*
store i64 %19, i64* %20, align 8
ret void
}
; Function Attrs: argmemonly nounwind
declare void @llvm.lifetime.end.p0i8(i64, i8* nocapture) #7
; Function Attrs: argmemonly minsize nounwind optsize readonly
declare i32 @strlen(i8* nocapture) local_unnamed_addr #8
; Function Attrs: minsize nounwind optsize
declare noalias i8* @malloc(i32) local_unnamed_addr #1
; Function Attrs: argmemonly nounwind
declare void @llvm.memcpy.p0i8.p0i8.i32(i8* nocapture writeonly, i8* nocapture readonly, i32, i1) #7
; Function Attrs: minsize noinline norecurse nounwind optsize readonly
define hidden i32 @make_hash(i8* nocapture readonly, i32) local_unnamed_addr #9 {
br label %3
; <label>:3: ; preds = %8, %2
%4 = phi i32 [ %1, %2 ], [ %9, %8 ]
%5 = phi i8* [ %0, %2 ], [ %11, %8 ]
%6 = phi i32 [ 5381, %2 ], [ %14, %8 ]
%7 = icmp eq i32 %4, 0
br i1 %7, label %15, label %8
; <label>:8: ; preds = %3
%9 = add i32 %4, -1
%10 = mul i32 %6, 33
%11 = getelementptr inbounds i8, i8* %5, i32 1
%12 = load i8, i8* %5, align 1, !tbaa !10
%13 = sext i8 %12 to i32
%14 = add i32 %10, %13
br label %3
; <label>:15: ; preds = %3
ret i32 %6
}
; Function Attrs: minsize noinline nounwind optsize
define hidden void @_close(%union.UnionType* noalias nocapture sret, %struct._Array* nocapture readonly) local_unnamed_addr #0 {
%3 = getelementptr inbounds %struct._Array, %struct._Array* %1, i32 0, i32 1
%4 = bitcast %union.UnionType*** %3 to i64***
%5 = load i64**, i64*** %4, align 4, !tbaa !8
%6 = load i64*, i64** %5, align 4, !tbaa !9
%7 = load i64, i64* %6, align 8
%8 = and i64 %7, 64424509440
%9 = icmp eq i64 %8, 30064771072
br i1 %9, label %10, label %17
; <label>:10: ; preds = %2
%11 = trunc i64 %7 to i32
%12 = and i32 %11, 268435455
%13 = inttoptr i32 %12 to i8*
%14 = getelementptr inbounds i8, i8* %13, i32 8
%15 = bitcast i8* %14 to i64*
%16 = load i64, i64* %15, align 8
br label %17
; <label>:17: ; preds = %10, %2
%18 = phi i64 [ %16, %10 ], [ %7, %2 ]
%19 = lshr i64 %18, 32
%20 = and i64 %19, 15
%21 = icmp eq i64 %20, 10
br i1 %21, label %25, label %22
; <label>:22: ; preds = %17
%23 = load %struct._IO_FILE*, %struct._IO_FILE** @stderr, align 4, !tbaa !9
%24 = tail call i32 (%struct._IO_FILE*, i8*, ...) @fprintf(%struct._IO_FILE* %23, i8* getelementptr inbounds ([15 x i8], [15 x i8]* @.str, i32 0, i32 0), i64 %20) #13
tail call void @__assert_fail(i8* getelementptr inbounds ([21 x i8], [21 x i8]* @.str.1, i32 0, i32 0), i8* getelementptr inbounds ([25 x i8], [25 x i8]* @.str.2, i32 0, i32 0), i32 80, i8* getelementptr inbounds ([7 x i8], [7 x i8]* @__func__._close, i32 0, i32 0)) #14
unreachable
; <label>:25: ; preds = %17
%26 = trunc i64 %18 to i32
%27 = and i32 %26, 268435455
%28 = inttoptr i32 %27 to %struct._IOHandlerObject*
%29 = getelementptr inbounds %struct._IOHandlerObject, %struct._IOHandlerObject* %28, i32 0, i32 1
%30 = load %struct._IO_FILE*, %struct._IO_FILE** %29, align 4, !tbaa !14
%31 = tail call i32 @fclose(%struct._IO_FILE* %30) #15
%32 = sext i32 %31 to i64
%33 = or i64 %32, -64424509440
%34 = bitcast %union.UnionType* %0 to i64*
store i64 %33, i64* %34, align 8
ret void
}
; Function Attrs: minsize nounwind optsize
declare i32 @fclose(%struct._IO_FILE* nocapture) local_unnamed_addr #1
; Function Attrs: minsize noinline nounwind optsize
define hidden void @_sqrt(%union.UnionType* noalias nocapture sret, %struct._Array* nocapture readonly) local_unnamed_addr #0 {
%3 = getelementptr inbounds %struct._Array, %struct._Array* %1, i32 0, i32 1
%4 = bitcast %union.UnionType*** %3 to i64***
%5 = load i64**, i64*** %4, align 4, !tbaa !8
%6 = load i64*, i64** %5, align 4, !tbaa !9
%7 = load i64, i64* %6, align 8
%8 = and i64 %7, 64424509440
%9 = icmp eq i64 %8, 30064771072
br i1 %9, label %10, label %17
; <label>:10: ; preds = %2
%11 = trunc i64 %7 to i32
%12 = and i32 %11, 268435455
%13 = inttoptr i32 %12 to i8*
%14 = getelementptr inbounds i8, i8* %13, i32 8
%15 = bitcast i8* %14 to i64*
%16 = load i64, i64* %15, align 8
br label %17
; <label>:17: ; preds = %10, %2
%18 = phi i64 [ %16, %10 ], [ %7, %2 ]
%19 = bitcast i64 %18 to double
%20 = tail call double @llvm.sqrt.f64(double %19)
%21 = bitcast %union.UnionType* %0 to double*
store double %20, double* %21, align 8
ret void
}
; Function Attrs: nounwind readnone speculatable
declare double @llvm.sqrt.f64(double) #10
; Function Attrs: minsize noinline nounwind optsize
define hidden void @_abs(%union.UnionType* noalias nocapture sret, %struct._Array* nocapture readonly) local_unnamed_addr #0 {
%3 = getelementptr inbounds %struct._Array, %struct._Array* %1, i32 0, i32 1
%4 = bitcast %union.UnionType*** %3 to i64***
%5 = load i64**, i64*** %4, align 4, !tbaa !8
%6 = load i64*, i64** %5, align 4, !tbaa !9
%7 = load i64, i64* %6, align 8, !tbaa !10
%8 = lshr i64 %7, 32
%9 = trunc i64 %8 to i4
switch i4 %9, label %22 [
i4 1, label %10
i4 0, label %18
]
; <label>:10: ; preds = %2
%11 = trunc i64 %7 to i32
%12 = icmp sgt i32 %11, -1
%13 = sub i64 0, %7
%14 = select i1 %12, i64 %7, i64 %13
%15 = shl i64 %14, 32
%16 = ashr exact i64 %15, 32
%17 = or i64 %16, -64424509440
br label %23
; <label>:18: ; preds = %2
%19 = bitcast i64 %7 to double
%20 = tail call double @llvm.fabs.f64(double %19)
%21 = bitcast double %20 to i64
br label %23
; <label>:22: ; preds = %2
tail call void @__assert_fail(i8* getelementptr inbounds ([36 x i8], [36 x i8]* @.str.15, i32 0, i32 0), i8* getelementptr inbounds ([25 x i8], [25 x i8]* @.str.2, i32 0, i32 0), i32 107, i8* getelementptr inbounds ([5 x i8], [5 x i8]* @__func__._abs, i32 0, i32 0)) #14
unreachable
; <label>:23: ; preds = %18, %10
%24 = phi i64 [ %21, %18 ], [ %17, %10 ]
%25 = bitcast %union.UnionType* %0 to i64*
store i64 %24, i64* %25, align 8
ret void
}
; Function Attrs: nounwind readnone speculatable
declare double @llvm.fabs.f64(double) #10
; Function Attrs: minsize noinline nounwind optsize
define hidden void @_int(%union.UnionType* noalias nocapture sret, %struct._Array* nocapture readonly) local_unnamed_addr #0 {
%3 = getelementptr inbounds %struct._Array, %struct._Array* %1, i32 0, i32 1
%4 = bitcast %union.UnionType*** %3 to i64***
%5 = load i64**, i64*** %4, align 4, !tbaa !8
%6 = load i64*, i64** %5, align 4, !tbaa !9
%7 = load i64, i64* %6, align 8, !tbaa !10
%8 = lshr i64 %7, 32
%9 = trunc i64 %8 to i4
switch i4 %9, label %15 [
i4 1, label %16
i4 0, label %10
]
; <label>:10: ; preds = %2
%11 = bitcast i64 %7 to double
%12 = fptosi double %11 to i32
%13 = sext i32 %12 to i64
%14 = or i64 %13, -64424509440
br label %16
; <label>:15: ; preds = %2
tail call void @__assert_fail(i8* getelementptr inbounds ([36 x i8], [36 x i8]* @.str.15, i32 0, i32 0), i8* getelementptr inbounds ([25 x i8], [25 x i8]* @.str.2, i32 0, i32 0), i32 125, i8* getelementptr inbounds ([5 x i8], [5 x i8]* @__func__._int, i32 0, i32 0)) #14
unreachable
; <label>:16: ; preds = %10, %2
%17 = phi i64 [ %14, %10 ], [ %7, %2 ]
%18 = bitcast %union.UnionType* %0 to i64*
store i64 %17, i64* %18, align 8
ret void
}
; Function Attrs: minsize noinline nounwind optsize
define hidden void @_rand(%union.UnionType* noalias nocapture sret, %struct._Array* nocapture readnone) local_unnamed_addr #0 {
%3 = tail call i32 @rand() #17
%4 = sitofp i32 %3 to double
%5 = fdiv double %4, 0x41DFFFFFFFC00000
%6 = bitcast %union.UnionType* %0 to double*
store double %5, double* %6, align 8
ret void
}
; Function Attrs: minsize optsize
declare i32 @rand() local_unnamed_addr #6
; Function Attrs: minsize noinline nounwind optsize
define hidden void @_sin(%union.UnionType* noalias nocapture sret, %struct._Array* nocapture readonly) local_unnamed_addr #0 {
%3 = getelementptr inbounds %struct._Array, %struct._Array* %1, i32 0, i32 1
%4 = bitcast %union.UnionType*** %3 to i64***
%5 = load i64**, i64*** %4, align 4, !tbaa !8
%6 = load i64*, i64** %5, align 4, !tbaa !9
%7 = load i64, i64* %6, align 8, !tbaa !10
%8 = lshr i64 %7, 32
%9 = trunc i64 %8 to i4
switch i4 %9, label %15 [
i4 1, label %10
i4 0, label %13
]
; <label>:10: ; preds = %2
%11 = trunc i64 %7 to i32
%12 = sitofp i32 %11 to double
br label %16
; <label>:13: ; preds = %2
%14 = bitcast i64 %7 to double
br label %16
; <label>:15: ; preds = %2
tail call void @__assert_fail(i8* getelementptr inbounds ([36 x i8], [36 x i8]* @.str.15, i32 0, i32 0), i8* getelementptr inbounds ([25 x i8], [25 x i8]* @.str.2, i32 0, i32 0), i32 151, i8* getelementptr inbounds ([5 x i8], [5 x i8]* @__func__._sin, i32 0, i32 0)) #14
unreachable
; <label>:16: ; preds = %13, %10
%17 = phi double [ %14, %13 ], [ %12, %10 ]
%18 = tail call double @llvm.sin.f64(double %17)
%19 = bitcast %union.UnionType* %0 to double*
store double %18, double* %19, align 8
ret void
}
; Function Attrs: nounwind readnone speculatable
declare double @llvm.sin.f64(double) #10
; Function Attrs: minsize noinline nounwind optsize
define hidden void @_cos(%union.UnionType* noalias nocapture sret, %struct._Array* nocapture readonly) local_unnamed_addr #0 {
%3 = getelementptr inbounds %struct._Array, %struct._Array* %1, i32 0, i32 1
%4 = bitcast %union.UnionType*** %3 to i64***
%5 = load i64**, i64*** %4, align 4, !tbaa !8
%6 = load i64*, i64** %5, align 4, !tbaa !9
%7 = load i64, i64* %6, align 8, !tbaa !10
%8 = lshr i64 %7, 32
%9 = trunc i64 %8 to i4
switch i4 %9, label %15 [
i4 1, label %10
i4 0, label %13
]
; <label>:10: ; preds = %2
%11 = trunc i64 %7 to i32
%12 = sitofp i32 %11 to double
br label %16
; <label>:13: ; preds = %2
%14 = bitcast i64 %7 to double
br label %16
; <label>:15: ; preds = %2
tail call void @__assert_fail(i8* getelementptr inbounds ([36 x i8], [36 x i8]* @.str.15, i32 0, i32 0), i8* getelementptr inbounds ([25 x i8], [25 x i8]* @.str.2, i32 0, i32 0), i32 169, i8* getelementptr inbounds ([5 x i8], [5 x i8]* @__func__._cos, i32 0, i32 0)) #14
unreachable
; <label>:16: ; preds = %13, %10
%17 = phi double [ %14, %13 ], [ %12, %10 ]
%18 = tail call double @llvm.cos.f64(double %17)
%19 = bitcast %union.UnionType* %0 to double*
store double %18, double* %19, align 8
ret void
}
; Function Attrs: nounwind readnone speculatable
declare double @llvm.cos.f64(double) #10
; Function Attrs: minsize noinline nounwind optsize
define hidden void @_atan2(%union.UnionType* noalias nocapture sret, %struct._Array* nocapture readonly) local_unnamed_addr #0 {
%3 = getelementptr inbounds %struct._Array, %struct._Array* %1, i32 0, i32 1
%4 = load %union.UnionType**, %union.UnionType*** %3, align 4, !tbaa !8
%5 = bitcast %union.UnionType** %4 to i64**
%6 = load i64*, i64** %5, align 4, !tbaa !9
%7 = getelementptr inbounds %union.UnionType*, %union.UnionType** %4, i32 1
%8 = bitcast %union.UnionType** %7 to i64**
%9 = load i64*, i64** %8, align 4, !tbaa !9
%10 = load i64, i64* %6, align 8, !tbaa !10
%11 = and i64 %10, 64424509440
%12 = icmp eq i64 %11, 4294967296
%13 = trunc i64 %10 to i32
%14 = sitofp i32 %13 to double
%15 = bitcast i64 %10 to double
%16 = select i1 %12, double %14, double %15
%17 = load i64, i64* %9, align 8, !tbaa !10
%18 = and i64 %17, 64424509440
%19 = icmp eq i64 %18, 4294967296
%20 = trunc i64 %17 to i32
%21 = sitofp i32 %20 to double
%22 = bitcast i64 %17 to double
%23 = select i1 %19, double %21, double %22
%24 = tail call double @atan2(double %16, double %23) #18
%25 = bitcast %union.UnionType* %0 to double*
store double %24, double* %25, align 8
ret void
}
; Function Attrs: minsize nounwind optsize readnone
declare double @atan2(double, double) local_unnamed_addr #11
; Function Attrs: minsize noinline nounwind optsize
define hidden void @new_Undef() local_unnamed_addr #0 {
%1 = tail call i8* @calloc(i32 4, i32 1) #15
%2 = ptrtoint i8* %1 to i32
%3 = zext i32 %2 to i64
%4 = or i64 %3, -12884901888
store i64 %4, i64* bitcast (%union.UnionType* @undef to i64*), align 8, !tbaa !10
ret void
}
; Function Attrs: minsize nounwind optsize
declare noalias i8* @calloc(i32, i32) local_unnamed_addr #1
; Function Attrs: minsize noinline norecurse nounwind optsize
define hidden void @get_undef_value(%union.UnionType* noalias nocapture sret) local_unnamed_addr #4 {
%2 = bitcast %union.UnionType* %0 to i64*
%3 = load i64, i64* bitcast (%union.UnionType* @undef to i64*), align 8
store i64 %3, i64* %2, align 8
ret void
}
; Function Attrs: minsize noinline nounwind optsize
define hidden void @print_space(i32) local_unnamed_addr #0 {
%2 = load %struct._IO_FILE*, %struct._IO_FILE** @stdout, align 4
br label %3
; <label>:3: ; preds = %6, %1
%4 = phi i32 [ 0, %1 ], [ %8, %6 ]
%5 = icmp eq i32 %4, %0
br i1 %5, label %9, label %6
; <label>:6: ; preds = %3
%7 = tail call i32 @fputc(i32 32, %struct._IO_FILE* %2)
%8 = add i32 %4, 1
br label %3
; <label>:9: ; preds = %3
ret void
}
; Function Attrs: nounwind
declare i32 @fputc(i32, %struct._IO_FILE* nocapture) local_unnamed_addr #3
; Function Attrs: minsize noinline nounwind optsize
define hidden void @print_message(i8* nocapture readonly, i32) local_unnamed_addr #0 {
tail call void @print_space(i32 %1) #15
%3 = load %struct._IO_FILE*, %struct._IO_FILE** @stdout, align 4, !tbaa !9
%4 = tail call i32 @fputs(i8* %0, %struct._IO_FILE* %3)
ret void
}
; Function Attrs: nounwind
declare i32 @fputs(i8* nocapture readonly, %struct._IO_FILE* nocapture) local_unnamed_addr #3
; Function Attrs: minsize noinline nounwind optsize
define hidden void @dump_hash_ref(%struct._HashRef* nocapture readonly, i32) local_unnamed_addr #0 {
%3 = alloca %union.UnionType, align 8
%4 = getelementptr inbounds %struct._HashRef, %struct._HashRef* %0, i32 0, i32 1
%5 = bitcast %union.UnionType* %4 to i64*
%6 = load i64, i64* %5, align 8, !tbaa !10
%7 = trunc i64 %6 to i32
%8 = and i32 %7, 268435455
%9 = inttoptr i32 %8 to %struct._Hash*
%10 = getelementptr inbounds %struct._Hash, %struct._Hash* %9, i32 0, i32 3
%11 = load i32, i32* %10, align 4, !tbaa !22
%12 = load %struct._IO_FILE*, %struct._IO_FILE** @stdout, align 4, !tbaa !9
%13 = tail call i32 @fwrite(i8* getelementptr inbounds ([3 x i8], [3 x i8]* @.str.18, i32 0, i32 0), i32 2, i32 1, %struct._IO_FILE* %12)
%14 = getelementptr inbounds %struct._Hash, %struct._Hash* %9, i32 0, i32 2
%15 = bitcast %union.UnionType* %3 to i8*
%16 = getelementptr inbounds %struct._Hash, %struct._Hash* %9, i32 0, i32 1
%17 = bitcast %union.UnionType* %3 to i64*
%18 = add i32 %1, 7
br label %19
; <label>:19: ; preds = %44, %2
%20 = phi i32 [ 0, %2 ], [ %38, %44 ]
%21 = icmp eq i32 %20, %11
br i1 %21, label %45, label %22
; <label>:22: ; preds = %19
%23 = load %struct._String**, %struct._String*** %14, align 4, !tbaa !24
%24 = getelementptr inbounds %struct._String*, %struct._String** %23, i32 %20
%25 = load %struct._String*, %struct._String** %24, align 4, !tbaa !9
%26 = getelementptr inbounds %struct._String, %struct._String* %25, i32 0, i32 1
%27 = load i8*, i8** %26, align 4, !tbaa !11
call void @llvm.lifetime.start.p0i8(i64 8, i8* nonnull %15) #3
%28 = load %union.UnionType*, %union.UnionType** %16, align 4, !tbaa !25
%29 = getelementptr inbounds %struct._String, %struct._String* %25, i32 0, i32 3
%30 = load i32, i32* %29, align 4, !tbaa !21
%31 = getelementptr inbounds %union.UnionType, %union.UnionType* %28, i32 %30
%32 = bitcast %union.UnionType* %31 to i64*
%33 = load i64, i64* %32, align 8
store i64 %33, i64* %17, align 8
tail call void @print_space(i32 %1) #15
%34 = tail call i32 (%struct._IO_FILE*, i8*, ...) @fprintf(%struct._IO_FILE* %12, i8* getelementptr inbounds ([11 x i8], [11 x i8]* @.str.19, i32 0, i32 0), i8* %27) #15
%35 = getelementptr inbounds %struct._String, %struct._String* %25, i32 0, i32 2
%36 = load i32, i32* %35, align 4, !tbaa !20
%37 = add i32 %18, %36
call void @dumper(%union.UnionType* byval nonnull align 8 %3, i32 %37) #15
%38 = add i32 %20, 1
%39 = icmp eq i32 %38, %11
br i1 %39, label %42, label %40
; <label>:40: ; preds = %22
%41 = tail call i32 @fwrite(i8* getelementptr inbounds ([3 x i8], [3 x i8]* @.str.20, i32 0, i32 0), i32 2, i32 1, %struct._IO_FILE* %12)
br label %44
; <label>:42: ; preds = %22
%43 = tail call i32 @fputc(i32 10, %struct._IO_FILE* %12)
br label %44
; <label>:44: ; preds = %42, %40
call void @llvm.lifetime.end.p0i8(i64 8, i8* nonnull %15) #3
br label %19
; <label>:45: ; preds = %19
%46 = icmp eq i32 %1, 0
br i1 %46, label %48, label %47
; <label>:47: ; preds = %45
tail call void @print_message(i8* getelementptr inbounds ([2 x i8], [2 x i8]* @.str.22, i32 0, i32 0), i32 %1) #15
br label %50
; <label>:48: ; preds = %45
%49 = tail call i32 @fputc(i32 125, %struct._IO_FILE* %12)
br label %50
; <label>:50: ; preds = %48, %47
ret void
}
; Function Attrs: minsize noinline nounwind optsize
define hidden void @dumper(%union.UnionType* byval nocapture readonly align 8, i32) local_unnamed_addr #0 {
%3 = bitcast %union.UnionType* %0 to i64*
%4 = load i64, i64* %3, align 8, !tbaa !10
%5 = lshr i64 %4, 32
%6 = trunc i64 %5 to i4
switch i4 %6, label %24 [
i4 1, label %7
i4 0, label %7
i4 2, label %9
i4 6, label %13
i4 4, label %17
i4 -3, label %21
]
; <label>:7: ; preds = %2, %2
%8 = load %struct._IO_FILE*, %struct._IO_FILE** @stdout, align 4, !tbaa !9
call void @print_object(%struct._IO_FILE* %8, %union.UnionType* byval nonnull align 8 %0) #15
br label %24
; <label>:9: ; preds = %2
%10 = trunc i64 %4 to i32
%11 = and i32 %10, 268435455
%12 = inttoptr i32 %11 to %struct._String*
tail call void @dump_string(%struct._String* %12) #15
br label %24
; <label>:13: ; preds = %2
%14 = trunc i64 %4 to i32
%15 = and i32 %14, 268435455
%16 = inttoptr i32 %15 to %struct._HashRef*
tail call void @dump_hash_ref(%struct._HashRef* %16, i32 %1) #15
br label %24
; <label>:17: ; preds = %2
%18 = trunc i64 %4 to i32
%19 = and i32 %18, 268435455
%20 = inttoptr i32 %19 to %struct._HashRef*
tail call void @dump_array_ref(%struct._HashRef* %20, i32 %1) #15
br label %24
; <label>:21: ; preds = %2
%22 = load %struct._IO_FILE*, %struct._IO_FILE** @stdout, align 4, !tbaa !9
%23 = tail call i32 @fwrite(i8* getelementptr inbounds ([6 x i8], [6 x i8]* @.str.26, i32 0, i32 0), i32 5, i32 1, %struct._IO_FILE* %22)
br label %24
; <label>:24: ; preds = %21, %17, %13, %9, %7, %2
ret void
}
; Function Attrs: minsize noinline nounwind optsize
define hidden void @print_object(%struct._IO_FILE*, %union.UnionType* byval nocapture readonly align 8) local_unnamed_addr #0 {
%3 = alloca %union.UnionType, align 8
%4 = icmp eq %struct._IO_FILE* %0, null
%5 = load %struct._IO_FILE*, %struct._IO_FILE** @stdout, align 4
%6 = select i1 %4, %struct._IO_FILE* %5, %struct._IO_FILE* %0
%7 = bitcast %union.UnionType* %1 to i64*
%8 = load i64, i64* %7, align 8, !tbaa !10
%9 = lshr i64 %8, 32
%10 = trunc i64 %9 to i4
switch i4 %10, label %64 [
i4 1, label %11
i4 0, label %14
i4 2, label %17
i4 3, label %24
i4 4, label %32
i4 5, label %37
i4 6, label %41
i4 -7, label %46
i4 7, label %51
i4 -8, label %56
]
; <label>:11: ; preds = %2
%12 = trunc i64 %8 to i32
%13 = tail call i32 (%struct._IO_FILE*, i8*, ...) @fprintf(%struct._IO_FILE* %6, i8* getelementptr inbounds ([3 x i8], [3 x i8]* @.str.38, i32 0, i32 0), i32 %12) #15
br label %64
; <label>:14: ; preds = %2
%15 = bitcast i64 %8 to double
%16 = tail call i32 (%struct._IO_FILE*, i8*, ...) @fprintf(%struct._IO_FILE* %6, i8* getelementptr inbounds ([3 x i8], [3 x i8]* @.str.39, i32 0, i32 0), double %15) #15
br label %64
; <label>:17: ; preds = %2
%18 = trunc i64 %8 to i32
%19 = and i32 %18, 268435455
%20 = inttoptr i32 %19 to %struct._String*
%21 = getelementptr inbounds %struct._String, %struct._String* %20, i32 0, i32 1
%22 = load i8*, i8** %21, align 4, !tbaa !11
%23 = tail call i32 @fputs(i8* %22, %struct._IO_FILE* %6)
br label %64
; <label>:24: ; preds = %2
%25 = icmp eq %struct._IO_FILE* %6, %5
%26 = trunc i64 %8 to i32
%27 = and i32 %26, 268435455
%28 = inttoptr i32 %27 to %struct._Array*
br i1 %25, label %30, label %29
; <label>:29: ; preds = %24
tail call void @_print_with_handler(%struct._IO_FILE* %6, %struct._Array* %28) #15
br label %64
; <label>:30: ; preds = %24
%31 = bitcast %union.UnionType* %3 to i8*
call void @llvm.lifetime.start.p0i8(i64 8, i8* nonnull %31) #3
call void @print(%union.UnionType* nonnull sret %3, %struct._Array* %28) #15
call void @llvm.lifetime.end.p0i8(i64 8, i8* nonnull %31) #3
br label %64
; <label>:32: ; preds = %2
%33 = trunc i64 %8 to i32
%34 = and i32 %33, 268435455
%35 = inttoptr i32 %34 to i8*
%36 = tail call i32 (%struct._IO_FILE*, i8*, ...) @fprintf(%struct._IO_FILE* %6, i8* getelementptr inbounds ([10 x i8], [10 x i8]* @.str.42, i32 0, i32 0), i8* %35) #15
br label %64
; <label>:37: ; preds = %2
%38 = trunc i64 %8 to i32
%39 = and i32 %38, 268435455
%40 = inttoptr i32 %39 to %struct._Hash*
tail call void @print_hash(%struct._IO_FILE* %6, %struct._Hash* %40) #15
br label %64
; <label>:41: ; preds = %2
%42 = trunc i64 %8 to i32
%43 = and i32 %42, 268435455
%44 = inttoptr i32 %43 to i8*
%45 = tail call i32 (%struct._IO_FILE*, i8*, ...) @fprintf(%struct._IO_FILE* %6, i8* getelementptr inbounds ([9 x i8], [9 x i8]* @.str.43, i32 0, i32 0), i8* %44) #15
br label %64
; <label>:46: ; preds = %2
%47 = trunc i64 %8 to i32
%48 = and i32 %47, 268435455
%49 = inttoptr i32 %48 to i8*
%50 = tail call i32 (%struct._IO_FILE*, i8*, ...) @fprintf(%struct._IO_FILE* %6, i8* getelementptr inbounds ([9 x i8], [9 x i8]* @.str.44, i32 0, i32 0), i8* %49) #15
br label %64
; <label>:51: ; preds = %2
%52 = trunc i64 %8 to i32
%53 = and i32 %52, 268435455
%54 = inttoptr i32 %53 to %struct._Object*
%55 = getelementptr inbounds %struct._Object, %struct._Object* %54, i32 0, i32 1
tail call void @print_object(%struct._IO_FILE* %6, %union.UnionType* byval nonnull align 8 %55) #15
br label %64
; <label>:56: ; preds = %2
%57 = trunc i64 %8 to i32
%58 = and i32 %57, 268435455
%59 = inttoptr i32 %58 to i8*
%60 = inttoptr i32 %58 to %struct._BlessedObject*
%61 = getelementptr inbounds %struct._BlessedObject, %struct._BlessedObject* %60, i32 0, i32 3
%62 = load i8*, i8** %61, align 4, !tbaa !26
%63 = tail call i32 (%struct._IO_FILE*, i8*, ...) @fprintf(%struct._IO_FILE* %6, i8* getelementptr inbounds ([12 x i8], [12 x i8]* @.str.45, i32 0, i32 0), i8* %62, i8* %59) #15
br label %64
; <label>:64: ; preds = %56, %51, %46, %41, %37, %32, %30, %29, %17, %14, %11, %2
ret void
}
; Function Attrs: minsize noinline nounwind optsize
define hidden void @dump_string(%struct._String* nocapture readonly) local_unnamed_addr #0 {
%2 = load %struct._IO_FILE*, %struct._IO_FILE** @stdout, align 4, !tbaa !9
%3 = getelementptr inbounds %struct._String, %struct._String* %0, i32 0, i32 1
%4 = load i8*, i8** %3, align 4, !tbaa !11
%5 = tail call i32 (%struct._IO_FILE*, i8*, ...) @fprintf(%struct._IO_FILE* %2, i8* getelementptr inbounds ([5 x i8], [5 x i8]* @.str.25, i32 0, i32 0), i8* %4) #15
ret void
}
; Function Attrs: minsize noinline nounwind optsize
define hidden void @dump_array_ref(%struct._HashRef* nocapture readonly, i32) local_unnamed_addr #0 {
%3 = alloca %union.UnionType, align 8
%4 = getelementptr inbounds %struct._HashRef, %struct._HashRef* %0, i32 0, i32 1
%5 = bitcast %union.UnionType* %4 to i64*
%6 = load i64, i64* %5, align 8, !tbaa !10
%7 = trunc i64 %6 to i32
%8 = and i32 %7, 268435455
%9 = inttoptr i32 %8 to %struct._Array*
%10 = getelementptr inbounds %struct._Array, %struct._Array* %9, i32 0, i32 2
%11 = load i32, i32* %10, align 4, !tbaa !2
%12 = load %struct._IO_FILE*, %struct._IO_FILE** @stdout, align 4, !tbaa !9
%13 = tail call i32 @fwrite(i8* getelementptr inbounds ([3 x i8], [3 x i8]* @.str.23, i32 0, i32 0), i32 2, i32 1, %struct._IO_FILE* %12)
%14 = bitcast %union.UnionType* %3 to i8*
%15 = getelementptr inbounds %struct._Array, %struct._Array* %9, i32 0, i32 1
%16 = bitcast %union.UnionType* %3 to i64*
%17 = add i32 %1, 2
br label %18
; <label>:18: ; preds = %33, %2
%19 = phi i32 [ 0, %2 ], [ %27, %33 ]
%20 = icmp eq i32 %19, %11
br i1 %20, label %34, label %21
; <label>:21: ; preds = %18
call void @llvm.lifetime.start.p0i8(i64 8, i8* nonnull %14) #3
%22 = load %union.UnionType**, %union.UnionType*** %15, align 4, !tbaa !8
%23 = getelementptr inbounds %union.UnionType*, %union.UnionType** %22, i32 %19
%24 = bitcast %union.UnionType** %23 to i64**
%25 = load i64*, i64** %24, align 4, !tbaa !9
%26 = load i64, i64* %25, align 8
store i64 %26, i64* %16, align 8
tail call void @print_space(i32 %17) #15
call void @dumper(%union.UnionType* byval nonnull align 8 %3, i32 %17) #15
%27 = add i32 %19, 1
%28 = icmp eq i32 %27, %11
br i1 %28, label %31, label %29
; <label>:29: ; preds = %21
%30 = tail call i32 @fwrite(i8* getelementptr inbounds ([3 x i8], [3 x i8]* @.str.20, i32 0, i32 0), i32 2, i32 1, %struct._IO_FILE* %12)
br label %33
; <label>:31: ; preds = %21
%32 = tail call i32 @fputc(i32 10, %struct._IO_FILE* %12)
br label %33
; <label>:33: ; preds = %31, %29
call void @llvm.lifetime.end.p0i8(i64 8, i8* nonnull %14) #3
br label %18
; <label>:34: ; preds = %18
%35 = icmp eq i32 %1, 0
br i1 %35, label %37, label %36
; <label>:36: ; preds = %34
tail call void @print_message(i8* getelementptr inbounds ([2 x i8], [2 x i8]* @.str.24, i32 0, i32 0), i32 %1) #15
br label %39
; <label>:37: ; preds = %34
%38 = tail call i32 @fputc(i32 93, %struct._IO_FILE* %12)
br label %39
; <label>:39: ; preds = %37, %36
ret void
}
; Function Attrs: minsize noinline nounwind optsize
define hidden void @_print_with_handler(%struct._IO_FILE*, %struct._Array* nocapture readonly) local_unnamed_addr #0 {
%3 = getelementptr inbounds %struct._Array, %struct._Array* %1, i32 0, i32 2
%4 = load i32, i32* %3, align 4, !tbaa !2
%5 = getelementptr inbounds %struct._Array, %struct._Array* %1, i32 0, i32 1
br label %6
; <label>:6: ; preds = %10, %2
%7 = phi i32 [ 0, %2 ], [ %14, %10 ]
%8 = icmp eq i32 %7, %4
br i1 %8, label %9, label %10
; <label>:9: ; preds = %6
ret void
; <label>:10: ; preds = %6
%11 = load %union.UnionType**, %union.UnionType*** %5, align 4, !tbaa !8
%12 = getelementptr inbounds %union.UnionType*, %union.UnionType** %11, i32 %7
%13 = load %union.UnionType*, %union.UnionType** %12, align 4, !tbaa !9
tail call void @print_object(%struct._IO_FILE* %0, %union.UnionType* byval align 8 %13) #15
%14 = add i32 %7, 1
br label %6
}
; Function Attrs: minsize noinline nounwind optsize
define hidden void @print(%union.UnionType* noalias nocapture sret, %struct._Array* nocapture readonly) local_unnamed_addr #0 {
%3 = getelementptr inbounds %struct._Array, %struct._Array* %1, i32 0, i32 2
%4 = load i32, i32* %3, align 4, !tbaa !2
%5 = load %struct._IO_FILE*, %struct._IO_FILE** @stdout, align 4
%6 = getelementptr inbounds %struct._Array, %struct._Array* %1, i32 0, i32 1
br label %7
; <label>:7: ; preds = %10, %2
%8 = phi i32 [ 0, %2 ], [ %14, %10 ]
%9 = icmp eq i32 %8, %4
br i1 %9, label %15, label %10
; <label>:10: ; preds = %7
%11 = load %union.UnionType**, %union.UnionType*** %6, align 4, !tbaa !8
%12 = getelementptr inbounds %union.UnionType*, %union.UnionType** %11, i32 %8
%13 = load %union.UnionType*, %union.UnionType** %12, align 4, !tbaa !9
tail call void @print_object(%struct._IO_FILE* %5, %union.UnionType* byval align 8 %13) #15
%14 = add i32 %8, 1
br label %7
; <label>:15: ; preds = %7
%16 = bitcast %union.UnionType* %0 to i64*
store i64 -64424509440, i64* %16, align 8
ret void
}
; Function Attrs: minsize noinline nounwind optsize
define hidden void @print_hash(%struct._IO_FILE*, %struct._Hash* nocapture readonly) local_unnamed_addr #0 {
%3 = getelementptr inbounds %struct._Hash, %struct._Hash* %1, i32 0, i32 3
%4 = load i32, i32* %3, align 4, !tbaa !22
%5 = getelementptr inbounds %struct._Hash, %struct._Hash* %1, i32 0, i32 2
%6 = getelementptr inbounds %struct._Hash, %struct._Hash* %1, i32 0, i32 1
br label %7
; <label>:7: ; preds = %10, %2
%8 = phi i32 [ 0, %2 ], [ %21, %10 ]
%9 = icmp eq i32 %8, %4
br i1 %9, label %22, label %10
; <label>:10: ; preds = %7
%11 = load %struct._String**, %struct._String*** %5, align 4, !tbaa !24
%12 = getelementptr inbounds %struct._String*, %struct._String** %11, i32 %8
%13 = load %struct._String*, %struct._String** %12, align 4, !tbaa !9
%14 = getelementptr inbounds %struct._String, %struct._String* %13, i32 0, i32 1
%15 = load i8*, i8** %14, align 4, !tbaa !11
%16 = tail call i32 @fputs(i8* %15, %struct._IO_FILE* %0)
%17 = load %union.UnionType*, %union.UnionType** %6, align 4, !tbaa !25
%18 = getelementptr inbounds %struct._String, %struct._String* %13, i32 0, i32 3
%19 = load i32, i32* %18, align 4, !tbaa !21
%20 = getelementptr inbounds %union.UnionType, %union.UnionType* %17, i32 %19
tail call void @print_object(%struct._IO_FILE* %0, %union.UnionType* byval align 8 %20) #15
%21 = add i32 %8, 1
br label %7
; <label>:22: ; preds = %7
ret void
}
; Function Attrs: minsize noinline nounwind optsize
define hidden void @Object_dumper(%union.UnionType* noalias nocapture sret, %struct._Array* nocapture readonly) local_unnamed_addr #0 {
%3 = getelementptr inbounds %struct._Array, %struct._Array* %1, i32 0, i32 2
%4 = load i32, i32* %3, align 4, !tbaa !2
%5 = icmp eq i32 %4, 0
br i1 %5, label %10, label %6
; <label>:6: ; preds = %2
%7 = getelementptr inbounds %struct._Array, %struct._Array* %1, i32 0, i32 1
%8 = load %union.UnionType**, %union.UnionType*** %7, align 4, !tbaa !8
%9 = load %union.UnionType*, %union.UnionType** %8, align 4, !tbaa !9
tail call void @dumper(%union.UnionType* byval align 8 %9, i32 0) #15
br label %10
; <label>:10: ; preds = %6, %2
%11 = bitcast %union.UnionType* %0 to i64*
store i64 -64424509440, i64* %11, align 8
ret void
}
; Function Attrs: minsize noinline nounwind optsize
define hidden void @print_with_handler(%union.UnionType* noalias nocapture sret, %union.UnionType* nocapture readonly, %struct._Array* nocapture readonly) local_unnamed_addr #0 {
%4 = bitcast %union.UnionType* %1 to i64*
%5 = load i64, i64* %4, align 8, !tbaa !10
%6 = trunc i64 %5 to i32
%7 = and i32 %6, 268435455
%8 = inttoptr i32 %7 to %struct._IOHandlerObject*
%9 = getelementptr inbounds %struct._IOHandlerObject, %struct._IOHandlerObject* %8, i32 0, i32 1
%10 = load %struct._IO_FILE*, %struct._IO_FILE** %9, align 4, !tbaa !14
tail call void @_print_with_handler(%struct._IO_FILE* %10, %struct._Array* %2) #15
%11 = bitcast %union.UnionType* %0 to i64*
store i64 -64424509440, i64* %11, align 8
ret void
}
; Function Attrs: minsize noinline nounwind optsize
define hidden void @say(%union.UnionType* noalias nocapture sret, %struct._Array* nocapture readonly) local_unnamed_addr #0 {
%3 = alloca %union.UnionType, align 8
%4 = bitcast %union.UnionType* %3 to i8*
call void @llvm.lifetime.start.p0i8(i64 8, i8* nonnull %4) #3
call void @print(%union.UnionType* nonnull sret %3, %struct._Array* %1) #15
call void @llvm.lifetime.end.p0i8(i64 8, i8* nonnull %4) #3
%5 = load %struct._IO_FILE*, %struct._IO_FILE** @stdout, align 4, !tbaa !9
%6 = tail call i32 @fputc(i32 10, %struct._IO_FILE* %5)
%7 = bitcast %union.UnionType* %0 to i64*
store i64 -64424509440, i64* %7, align 8
ret void
}
; Function Attrs: minsize noinline nounwind optsize
define hidden void @debug_print(%union.UnionType* byval nocapture readonly align 8) local_unnamed_addr #0 {
%2 = load %struct._IO_FILE*, %struct._IO_FILE** @stderr, align 4, !tbaa !9
%3 = tail call i32 @fwrite(i8* getelementptr inbounds ([26 x i8], [26 x i8]* @.str.27, i32 0, i32 0), i32 25, i32 1, %struct._IO_FILE* %2) #16
%4 = load %struct._IO_FILE*, %struct._IO_FILE** @stdout, align 4, !tbaa !9
call void @print_object(%struct._IO_FILE* %4, %union.UnionType* byval nonnull align 8 %0) #15
%5 = tail call i32 @fwrite(i8* getelementptr inbounds ([15 x i8], [15 x i8]* @.str.28, i32 0, i32 0), i32 14, i32 1, %struct._IO_FILE* %2) #16
ret void
}
; Function Attrs: minsize noinline nounwind optsize
define hidden void @shift(%union.UnionType* noalias nocapture sret, %struct._Array* nocapture readonly) local_unnamed_addr #0 {
%3 = getelementptr inbounds %struct._Array, %struct._Array* %1, i32 0, i32 2
%4 = load i32, i32* %3, align 4, !tbaa !2
%5 = icmp ugt i32 %4, 1
br i1 %5, label %42, label %6
; <label>:6: ; preds = %2
%7 = icmp eq i32 %4, 1
br i1 %7, label %8, label %36
; <label>:8: ; preds = %6
%9 = getelementptr inbounds %struct._Array, %struct._Array* %1, i32 0, i32 1
%10 = bitcast %union.UnionType*** %9 to i64***
%11 = load i64**, i64*** %10, align 4, !tbaa !8
%12 = load i64*, i64** %11, align 4, !tbaa !9
%13 = load i64, i64* %12, align 8
%14 = lshr i64 %13, 32
%15 = and i64 %14, 15
%16 = icmp eq i64 %15, 3
br i1 %16, label %20, label %17
; <label>:17: ; preds = %8
%18 = load %struct._IO_FILE*, %struct._IO_FILE** @stderr, align 4, !tbaa !9
%19 = tail call i32 (%struct._IO_FILE*, i8*, ...) @fprintf(%struct._IO_FILE* %18, i8* getelementptr inbounds ([15 x i8], [15 x i8]* @.str, i32 0, i32 0), i64 %15) #13
tail call void @__assert_fail(i8* getelementptr inbounds ([21 x i8], [21 x i8]* @.str.1, i32 0, i32 0), i8* getelementptr inbounds ([25 x i8], [25 x i8]* @.str.2, i32 0, i32 0), i32 363, i8* getelementptr inbounds ([6 x i8], [6 x i8]* @__func__.shift, i32 0, i32 0)) #14
unreachable
; <label>:20: ; preds = %8
%21 = trunc i64 %13 to i32
%22 = and i32 %21, 268435455
%23 = inttoptr i32 %22 to %struct._Array*
%24 = getelementptr inbounds %struct._Array, %struct._Array* %23, i32 0, i32 1
%25 = load %union.UnionType**, %union.UnionType*** %24, align 4, !tbaa !8
%26 = load %union.UnionType*, %union.UnionType** %25, align 4, !tbaa !9
%27 = bitcast %union.UnionType* %26 to double*
%28 = load double, double* %27, align 8
%29 = getelementptr inbounds %struct._Array, %struct._Array* %23, i32 0, i32 2
%30 = load i32, i32* %29, align 4, !tbaa !2
%31 = add i32 %30, -1
store i32 %31, i32* %29, align 4, !tbaa !2
%32 = bitcast %union.UnionType** %25 to i8*
%33 = getelementptr inbounds %union.UnionType*, %union.UnionType** %25, i32 1
%34 = bitcast %union.UnionType** %33 to i8*
%35 = shl i32 %31, 3
tail call void @llvm.memmove.p0i8.p0i8.i32(i8* align 4 %32, i8* nonnull align 4 %34, i32 %35, i1 false)
br label %39
; <label>:36: ; preds = %6
%37 = load %struct._IO_FILE*, %struct._IO_FILE** @stderr, align 4, !tbaa !9
%38 = tail call i32 @fwrite(i8* getelementptr inbounds ([30 x i8], [30 x i8]* @.str.29, i32 0, i32 0), i32 29, i32 1, %struct._IO_FILE* %37) #16
br label %39
; <label>:39: ; preds = %36, %20
%40 = phi double [ %28, %20 ], [ undef, %36 ]
%41 = bitcast %union.UnionType* %0 to double*
store double %40, double* %41, align 8
br label %42
; <label>:42: ; preds = %39, %2
ret void
}
; Function Attrs: argmemonly nounwind
declare void @llvm.memmove.p0i8.p0i8.i32(i8* nocapture, i8* nocapture readonly, i32, i1) #7
; Function Attrs: minsize noinline nounwind optsize
define hidden void @Array_grow(%struct._Array* nocapture, i32) local_unnamed_addr #0 {
%3 = getelementptr inbounds %struct._Array, %struct._Array* %0, i32 0, i32 2
%4 = load i32, i32* %3, align 4, !tbaa !2
%5 = shl i32 %1, 2
%6 = tail call i8* @malloc(i32 %5) #15
%7 = icmp eq i8* %6, null
br i1 %7, label %8, label %11
; <label>:8: ; preds = %2
%9 = load %struct._IO_FILE*, %struct._IO_FILE** @stderr, align 4, !tbaa !9
%10 = tail call i32 @fwrite(i8* getelementptr inbounds ([34 x i8], [34 x i8]* @.str.30, i32 0, i32 0), i32 33, i32 1, %struct._IO_FILE* %9) #16
br label %32
; <label>:11: ; preds = %2
%12 = getelementptr inbounds %struct._Array, %struct._Array* %0, i32 0, i32 1
%13 = load %union.UnionType**, %union.UnionType*** %12, align 4, !tbaa !8
%14 = icmp eq %union.UnionType** %13, null
br i1 %14, label %18, label %15
; <label>:15: ; preds = %11
%16 = bitcast %union.UnionType** %13 to i8*
%17 = shl i32 %4, 2
tail call void @llvm.memcpy.p0i8.p0i8.i32(i8* nonnull align 1 %6, i8* align 1 %16, i32 %17, i1 false)
br label %18
; <label>:18: ; preds = %15, %11
%19 = bitcast %union.UnionType*** %12 to i8**
store i8* %6, i8** %19, align 4, !tbaa !8
br label %20
; <label>:20: ; preds = %24, %18
%21 = phi i32 [ %4, %18 ], [ %31, %24 ]
%22 = icmp ugt i32 %21, %1
br i1 %22, label %23, label %24
; <label>:23: ; preds = %20
store i32 %1, i32* %3, align 4, !tbaa !2
br label %32
; <label>:24: ; preds = %20
%25 = tail call %struct._Object* @fetch_object() #15
%26 = load i64, i64* bitcast (%union.UnionType* @undef to i64*), align 8, !tbaa !10
%27 = bitcast %struct._Object* %25 to i64*
store i64 %26, i64* %27, align 8, !tbaa !10
%28 = load %union.UnionType**, %union.UnionType*** %12, align 4, !tbaa !8
%29 = getelementptr inbounds %union.UnionType*, %union.UnionType** %28, i32 %21
%30 = bitcast %union.UnionType** %29 to %struct._Object**
store %struct._Object* %25, %struct._Object** %30, align 4, !tbaa !9
%31 = add nsw i32 %21, 1
br label %20
; <label>:32: ; preds = %23, %8
ret void
}
; Function Attrs: minsize noinline nounwind optsize
define hidden void @push(%union.UnionType* noalias nocapture sret, %struct._Array* nocapture readonly) local_unnamed_addr #0 {
%3 = getelementptr inbounds %struct._Array, %struct._Array* %1, i32 0, i32 2
%4 = load i32, i32* %3, align 4, !tbaa !2
%5 = icmp eq i32 %4, 2
br i1 %5, label %9, label %6
; <label>:6: ; preds = %2
%7 = load %struct._IO_FILE*, %struct._IO_FILE** @stderr, align 4, !tbaa !9
%8 = tail call i32 @fwrite(i8* getelementptr inbounds ([27 x i8], [27 x i8]* @.str.31, i32 0, i32 0), i32 26, i32 1, %struct._IO_FILE* %7) #16
br label %39
; <label>:9: ; preds = %2
%10 = getelementptr inbounds %struct._Array, %struct._Array* %1, i32 0, i32 1
%11 = load %union.UnionType**, %union.UnionType*** %10, align 4, !tbaa !8
%12 = bitcast %union.UnionType** %11 to i64**
%13 = load i64*, i64** %12, align 4, !tbaa !9
%14 = load i64, i64* %13, align 8, !tbaa !10
%15 = lshr i64 %14, 32
%16 = and i64 %15, 15
%17 = icmp eq i64 %16, 3
br i1 %17, label %21, label %18
; <label>:18: ; preds = %9
%19 = load %struct._IO_FILE*, %struct._IO_FILE** @stderr, align 4, !tbaa !9
%20 = tail call i32 (%struct._IO_FILE*, i8*, ...) @fprintf(%struct._IO_FILE* %19, i8* getelementptr inbounds ([15 x i8], [15 x i8]* @.str, i32 0, i32 0), i64 %16) #13
tail call void @__assert_fail(i8* getelementptr inbounds ([21 x i8], [21 x i8]* @.str.1, i32 0, i32 0), i8* getelementptr inbounds ([25 x i8], [25 x i8]* @.str.2, i32 0, i32 0), i32 403, i8* getelementptr inbounds ([5 x i8], [5 x i8]* @__func__.push, i32 0, i32 0)) #14
unreachable
; <label>:21: ; preds = %9
%22 = getelementptr inbounds %union.UnionType*, %union.UnionType** %11, i32 1
%23 = bitcast %union.UnionType** %22 to i32*
%24 = load i32, i32* %23, align 4, !tbaa !9
%25 = trunc i64 %14 to i32
%26 = and i32 %25, 268435455
%27 = inttoptr i32 %26 to %struct._Array*
%28 = getelementptr inbounds %struct._Array, %struct._Array* %27, i32 0, i32 2
%29 = load i32, i32* %28, align 4, !tbaa !2
%30 = add i32 %29, 1
tail call void @Array_grow(%struct._Array* %27, i32 %30) #15
%31 = getelementptr inbounds %struct._Array, %struct._Array* %27, i32 0, i32 1
%32 = load %union.UnionType**, %union.UnionType*** %31, align 4, !tbaa !8
%33 = load i32, i32* %28, align 4, !tbaa !2
%34 = getelementptr inbounds %union.UnionType*, %union.UnionType** %32, i32 %33
%35 = bitcast %union.UnionType** %34 to i32*
store i32 %24, i32* %35, align 4, !tbaa !9
%36 = add i32 %33, 1
store i32 %36, i32* %28, align 4, !tbaa !2
%37 = zext i32 %36 to i64
%38 = or i64 %37, -64424509440
br label %39
; <label>:39: ; preds = %21, %6
%40 = phi i64 [ undef, %6 ], [ %38, %21 ]
%41 = bitcast %union.UnionType* %0 to i64*
store i64 %40, i64* %41, align 8
ret void
}
; Function Attrs: minsize noinline norecurse nounwind optsize
define hidden void @new_HashRef(%union.UnionType* noalias nocapture sret, %union.UnionType* byval nocapture readonly align 8) local_unnamed_addr #4 {
%3 = tail call %struct._Object* @fetch_object() #15
%4 = getelementptr inbounds %struct._Object, %struct._Object* %3, i32 0, i32 1
%5 = bitcast %union.UnionType* %1 to i64*
%6 = bitcast %union.UnionType* %4 to i64*
%7 = load i64, i64* %5, align 8
store i64 %7, i64* %6, align 8
%8 = ptrtoint %struct._Object* %3 to i32
%9 = zext i32 %8 to i64
%10 = or i64 %9, -42949672960
%11 = bitcast %union.UnionType* %0 to i64*
store i64 %10, i64* %11, align 8
ret void
}
; Function Attrs: minsize noinline norecurse nounwind optsize
define hidden void @new_ArrayRef(%union.UnionType* noalias nocapture sret, %union.UnionType* byval nocapture readonly align 8) local_unnamed_addr #4 {
%3 = tail call %struct._Object* @fetch_object() #15
%4 = getelementptr inbounds %struct._Object, %struct._Object* %3, i32 0, i32 1
%5 = bitcast %union.UnionType* %1 to i64*
%6 = bitcast %union.UnionType* %4 to i64*
%7 = load i64, i64* %5, align 8
store i64 %7, i64* %6, align 8
%8 = ptrtoint %struct._Object* %3 to i32
%9 = zext i32 %8 to i64
%10 = or i64 %9, -51539607552
%11 = bitcast %union.UnionType* %0 to i64*
store i64 %10, i64* %11, align 8
ret void
}
; Function Attrs: minsize noinline nounwind optsize
define hidden %union.UnionType* @HashRef_get(%union.UnionType* nocapture, %struct._String*) local_unnamed_addr #0 {
%3 = alloca %struct._Array, align 4
%4 = alloca %union.UnionType, align 8
%5 = alloca %union.UnionType, align 8
%6 = bitcast %union.UnionType* %0 to i64*
%7 = load i64, i64* %6, align 8, !tbaa !10
%8 = lshr i64 %7, 32
%9 = trunc i64 %8 to i4
switch i4 %9, label %62 [
i4 6, label %10
i4 7, label %25
i4 -8, label %25
i4 1, label %38
i4 0, label %38
i4 -3, label %38
]
; <label>:10: ; preds = %2
%11 = trunc i64 %7 to i32
%12 = and i32 %11, 268435455
%13 = inttoptr i32 %12 to %struct._HashRef*
%14 = getelementptr inbounds %struct._HashRef, %struct._HashRef* %13, i32 0, i32 1
%15 = bitcast %union.UnionType* %14 to i64*
%16 = load i64, i64* %15, align 8, !tbaa !10
%17 = trunc i64 %16 to i32
%18 = and i32 %17, 268435455
%19 = inttoptr i32 %18 to %struct._Hash*
%20 = getelementptr inbounds %struct._Hash, %struct._Hash* %19, i32 0, i32 1
%21 = load %union.UnionType*, %union.UnionType** %20, align 4, !tbaa !25
%22 = getelementptr inbounds %struct._String, %struct._String* %1, i32 0, i32 3
%23 = load i32, i32* %22, align 4, !tbaa !21
%24 = getelementptr inbounds %union.UnionType, %union.UnionType* %21, i32 %23
br label %63
; <label>:25: ; preds = %2, %2
%26 = tail call %struct._HashRef* @dynamic_hash_ref_cast_code(%union.UnionType* nonnull %0) #15
%27 = getelementptr inbounds %struct._HashRef, %struct._HashRef* %26, i32 0, i32 1
%28 = bitcast %union.UnionType* %27 to i64*
%29 = load i64, i64* %28, align 8, !tbaa !10
%30 = trunc i64 %29 to i32
%31 = and i32 %30, 268435455
%32 = inttoptr i32 %31 to %struct._Hash*
%33 = getelementptr inbounds %struct._Hash, %struct._Hash* %32, i32 0, i32 1
%34 = load %union.UnionType*, %union.UnionType** %33, align 4, !tbaa !25
%35 = getelementptr inbounds %struct._String, %struct._String* %1, i32 0, i32 3
%36 = load i32, i32* %35, align 4, !tbaa !21
%37 = getelementptr inbounds %union.UnionType, %union.UnionType* %34, i32 %36
br label %63
; <label>:38: ; preds = %2, %2, %2
%39 = bitcast %struct._Array* %3 to i8*
call void @llvm.lifetime.start.p0i8(i64 12, i8* nonnull %39) #3
%40 = getelementptr inbounds %struct._Array, %struct._Array* %3, i32 0, i32 2
store i32 0, i32* %40, align 4, !tbaa !2
%41 = getelementptr inbounds %struct._Array, %struct._Array* %3, i32 0, i32 1
store %union.UnionType** null, %union.UnionType*** %41, align 4, !tbaa !8
%42 = bitcast %union.UnionType* %4 to i8*
call void @llvm.lifetime.start.p0i8(i64 8, i8* nonnull %42) #3
call void @new_Hash(%union.UnionType* nonnull sret %5, %struct._Array* nonnull %3) #15
call void @new_HashRef(%union.UnionType* nonnull sret %4, %union.UnionType* byval nonnull align 8 %5) #15
%43 = bitcast %union.UnionType* %4 to i64*
%44 = load i64, i64* %43, align 8, !tbaa !10
store i64 %44, i64* %6, align 8, !tbaa !10
%45 = trunc i64 %44 to i32
%46 = and i32 %45, 268435455
%47 = inttoptr i32 %46 to %struct._HashRef*
%48 = getelementptr inbounds %struct._HashRef, %struct._HashRef* %47, i32 0, i32 1
%49 = bitcast %union.UnionType* %48 to i64*
%50 = load i64, i64* %49, align 8, !tbaa !10
%51 = trunc i64 %50 to i32
%52 = and i32 %51, 268435455
%53 = inttoptr i32 %52 to %struct._Hash*
%54 = getelementptr inbounds %struct._Hash, %struct._Hash* %53, i32 0, i32 2
%55 = load %struct._String**, %struct._String*** %54, align 4, !tbaa !24
store %struct._String* %1, %struct._String** %55, align 4, !tbaa !9
%56 = getelementptr inbounds %struct._Hash, %struct._Hash* %53, i32 0, i32 3
store i32 1, i32* %56, align 4, !tbaa !22
%57 = getelementptr inbounds %struct._Hash, %struct._Hash* %53, i32 0, i32 1
%58 = load %union.UnionType*, %union.UnionType** %57, align 4, !tbaa !25
%59 = getelementptr inbounds %struct._String, %struct._String* %1, i32 0, i32 3
%60 = load i32, i32* %59, align 4, !tbaa !21
%61 = getelementptr inbounds %union.UnionType, %union.UnionType* %58, i32 %60
call void @llvm.lifetime.end.p0i8(i64 8, i8* nonnull %42) #3
call void @llvm.lifetime.end.p0i8(i64 12, i8* nonnull %39) #3
br label %63
; <label>:62: ; preds = %2
tail call void @__assert_fail(i8* getelementptr inbounds ([33 x i8], [33 x i8]* @.str.32, i32 0, i32 0), i8* getelementptr inbounds ([25 x i8], [25 x i8]* @.str.2, i32 0, i32 0), i32 474, i8* getelementptr inbounds ([12 x i8], [12 x i8]* @__func__.HashRef_get, i32 0, i32 0)) #14
unreachable
; <label>:63: ; preds = %38, %25, %10
%64 = phi %union.UnionType* [ %61, %38 ], [ %37, %25 ], [ %24, %10 ]
ret %union.UnionType* %64
}
; Function Attrs: minsize noinline nounwind optsize readonly
define hidden %struct._HashRef* @dynamic_hash_ref_cast_code(%union.UnionType* nocapture readonly) local_unnamed_addr #12 {
br label %2
; <label>:2: ; preds = %12, %1
%3 = phi %union.UnionType* [ %0, %1 ], [ %16, %12 ]
%4 = bitcast %union.UnionType* %3 to i64*
%5 = load i64, i64* %4, align 8, !tbaa !10
%6 = lshr i64 %5, 32
%7 = trunc i64 %6 to i4
switch i4 %7, label %27 [
i4 6, label %8
i4 7, label %12
i4 -8, label %17
]
; <label>:8: ; preds = %2
%9 = trunc i64 %5 to i32
%10 = and i32 %9, 268435455
%11 = inttoptr i32 %10 to %struct._HashRef*
br label %27
; <label>:12: ; preds = %2
%13 = trunc i64 %5 to i32
%14 = and i32 %13, 268435455
%15 = inttoptr i32 %14 to %struct._Object*
%16 = getelementptr inbounds %struct._Object, %struct._Object* %15, i32 0, i32 1
br label %2
; <label>:17: ; preds = %2
%18 = trunc i64 %5 to i32
%19 = and i32 %18, 268435455
%20 = inttoptr i32 %19 to %struct._BlessedObject*
%21 = getelementptr inbounds %struct._BlessedObject, %struct._BlessedObject* %20, i32 0, i32 1
%22 = bitcast %union.UnionType* %21 to i64*
%23 = load i64, i64* %22, align 8, !tbaa !10
%24 = trunc i64 %23 to i32
%25 = and i32 %24, 268435455
%26 = inttoptr i32 %25 to %struct._HashRef*
br label %27
; <label>:27: ; preds = %17, %8, %2
%28 = phi %struct._HashRef* [ %26, %17 ], [ %11, %8 ], [ null, %2 ]
ret %struct._HashRef* %28
}
; Function Attrs: minsize noinline nounwind optsize
define hidden void @new_Hash(%union.UnionType* noalias nocapture sret, %struct._Array* nocapture readonly) local_unnamed_addr #0 {
%3 = tail call i8* @calloc(i32 16, i32 1) #15
%4 = tail call i8* @calloc(i32 8, i32 512) #15
%5 = getelementptr inbounds i8, i8* %3, i32 4
%6 = bitcast i8* %5 to %union.UnionType**
%7 = bitcast i8* %5 to i8**
store i8* %4, i8** %7, align 4, !tbaa !25
%8 = load i8*, i8** bitcast (%union.UnionType** @base_hash_table to i8**), align 4, !tbaa !9
tail call void @llvm.memcpy.p0i8.p0i8.i32(i8* align 8 %4, i8* align 8 %8, i32 4096, i1 false)
%9 = tail call i8* @calloc(i32 4, i32 512) #15
%10 = getelementptr inbounds i8, i8* %3, i32 8
%11 = bitcast i8* %10 to %struct._String***
%12 = bitcast i8* %10 to i8**
store i8* %9, i8** %12, align 4, !tbaa !24
%13 = getelementptr inbounds %struct._Array, %struct._Array* %1, i32 0, i32 2
%14 = load i32, i32* %13, align 4, !tbaa !2
%15 = getelementptr inbounds %struct._Array, %struct._Array* %1, i32 0, i32 1
%16 = load %union.UnionType**, %union.UnionType*** %15, align 4, !tbaa !8
br label %17
; <label>:17: ; preds = %54, %2
%18 = phi i32 [ 0, %2 ], [ %55, %54 ]
%19 = phi i32 [ 0, %2 ], [ %56, %54 ]
%20 = icmp ult i32 %18, %14
br i1 %20, label %21, label %57
; <label>:21: ; preds = %17
%22 = getelementptr inbounds %union.UnionType*, %union.UnionType** %16, i32 %18
%23 = bitcast %union.UnionType** %22 to i64**
%24 = load i64*, i64** %23, align 4, !tbaa !9
%25 = load i64, i64* %24, align 8, !tbaa !10
%26 = trunc i64 %25 to i32
%27 = and i32 %26, 268435455
%28 = inttoptr i32 %27 to %struct._String*
%29 = load %struct._String**, %struct._String*** %11, align 4, !tbaa !24
%30 = getelementptr inbounds %struct._String*, %struct._String** %29, i32 %19
store %struct._String* %28, %struct._String** %30, align 4, !tbaa !9
%31 = or i32 %18, 1
%32 = icmp ult i32 %31, %14
br i1 %32, label %33, label %54
; <label>:33: ; preds = %21
%34 = getelementptr inbounds %union.UnionType*, %union.UnionType** %16, i32 %31
%35 = load %union.UnionType*, %union.UnionType** %34, align 4, !tbaa !9
%36 = icmp eq %union.UnionType* %35, null
br i1 %36, label %54, label %37
; <label>:37: ; preds = %33
%38 = bitcast %union.UnionType* %35 to i64*
%39 = load i64, i64* %38, align 8, !tbaa !10
%40 = and i64 %39, 64424509440
%41 = icmp eq i64 %40, 30064771072
%42 = trunc i64 %39 to i32
%43 = and i32 %42, 268435455
%44 = inttoptr i32 %43 to %struct._Object*
%45 = getelementptr inbounds %struct._Object, %struct._Object* %44, i32 0, i32 1
%46 = select i1 %41, %union.UnionType* %45, %union.UnionType* %35
%47 = bitcast %union.UnionType* %46 to i64*
%48 = load i64, i64* %47, align 8, !tbaa !10
%49 = load %union.UnionType*, %union.UnionType** %6, align 4, !tbaa !25
%50 = getelementptr inbounds %struct._String, %struct._String* %28, i32 0, i32 3
%51 = load i32, i32* %50, align 4, !tbaa !21
%52 = getelementptr inbounds %union.UnionType, %union.UnionType* %49, i32 %51
%53 = bitcast %union.UnionType* %52 to i64*
store i64 %48, i64* %53, align 8, !tbaa !10
br label %54
; <label>:54: ; preds = %37, %33, %21
%55 = add i32 %18, 2
%56 = add nuw nsw i32 %19, 1
br label %17
; <label>:57: ; preds = %17
%58 = getelementptr inbounds i8, i8* %3, i32 12
%59 = bitcast i8* %58 to i32*
store i32 %19, i32* %59, align 4, !tbaa !22
%60 = ptrtoint i8* %3 to i32
%61 = zext i32 %60 to i64
%62 = or i64 %61, -47244640256
%63 = bitcast %union.UnionType* %0 to i64*
store i64 %62, i64* %63, align 8
ret void
}
; Function Attrs: minsize noinline nounwind optsize
define hidden void @Array_add(%struct._Array* nocapture, %union.UnionType*) local_unnamed_addr #0 {
%3 = getelementptr inbounds %struct._Array, %struct._Array* %0, i32 0, i32 2
%4 = load i32, i32* %3, align 4, !tbaa !2
%5 = add i32 %4, 1
tail call void @Array_grow(%struct._Array* %0, i32 %5) #15
%6 = getelementptr inbounds %struct._Array, %struct._Array* %0, i32 0, i32 1
%7 = load %union.UnionType**, %union.UnionType*** %6, align 4, !tbaa !8
%8 = getelementptr inbounds %union.UnionType*, %union.UnionType** %7, i32 %4
store %union.UnionType* %1, %union.UnionType** %8, align 4, !tbaa !9
ret void
}
; Function Attrs: minsize noinline nounwind optsize
define hidden %union.UnionType* @Array_get(%struct._Array* nocapture, i32) local_unnamed_addr #0 {
%3 = getelementptr inbounds %struct._Array, %struct._Array* %0, i32 0, i32 2
%4 = load i32, i32* %3, align 4, !tbaa !2
%5 = icmp ugt i32 %4, %1
br i1 %5, label %8, label %6
; <label>:6: ; preds = %2
%7 = add nsw i32 %1, 1
tail call void @Array_grow(%struct._Array* nonnull %0, i32 %7) #15
br label %8
; <label>:8: ; preds = %6, %2
%9 = getelementptr inbounds %struct._Array, %struct._Array* %0, i32 0, i32 1
%10 = load %union.UnionType**, %union.UnionType*** %9, align 4, !tbaa !8
%11 = getelementptr inbounds %union.UnionType*, %union.UnionType** %10, i32 %1
%12 = load %union.UnionType*, %union.UnionType** %11, align 4, !tbaa !9
ret %union.UnionType* %12
}
; Function Attrs: minsize noinline nounwind optsize
define hidden %union.UnionType* @ArrayRef_get(%union.UnionType* nocapture, i32) local_unnamed_addr #0 {
%3 = alloca %union.UnionType, align 8
%4 = alloca %union.UnionType, align 8
%5 = bitcast %union.UnionType* %0 to i64*
%6 = load i64, i64* %5, align 8, !tbaa !10
%7 = lshr i64 %6, 32
%8 = trunc i64 %7 to i4
switch i4 %8, label %40 [
i4 4, label %9
i4 7, label %20
i4 1, label %29
i4 0, label %29
i4 -3, label %29
]
; <label>:9: ; preds = %2
%10 = trunc i64 %6 to i32
%11 = and i32 %10, 268435455
%12 = inttoptr i32 %11 to %struct._HashRef*
%13 = getelementptr inbounds %struct._HashRef, %struct._HashRef* %12, i32 0, i32 1
%14 = bitcast %union.UnionType* %13 to i64*
%15 = load i64, i64* %14, align 8, !tbaa !10
%16 = trunc i64 %15 to i32
%17 = and i32 %16, 268435455
%18 = inttoptr i32 %17 to %struct._Array*
%19 = tail call %union.UnionType* @Array_get(%struct._Array* %18, i32 %1) #15
br label %41
; <label>:20: ; preds = %2
%21 = tail call %struct._HashRef* @dynamic_array_ref_cast_code(%union.UnionType* nonnull %0) #15
%22 = getelementptr inbounds %struct._HashRef, %struct._HashRef* %21, i32 0, i32 1
%23 = bitcast %union.UnionType* %22 to i64*
%24 = load i64, i64* %23, align 8, !tbaa !10
%25 = trunc i64 %24 to i32
%26 = and i32 %25, 268435455
%27 = inttoptr i32 %26 to %struct._Array*
%28 = tail call %union.UnionType* @Array_get(%struct._Array* %27, i32 %1) #15
br label %41
; <label>:29: ; preds = %2, %2, %2
%30 = bitcast %union.UnionType* %3 to i8*
call void @llvm.lifetime.start.p0i8(i64 8, i8* nonnull %30) #3
call void @new_Array(%union.UnionType* nonnull sret %3, %union.UnionType** null, i32 0) #15
%31 = bitcast %union.UnionType* %4 to i8*
call void @llvm.lifetime.start.p0i8(i64 8, i8* nonnull %31) #3
call void @new_ArrayRef(%union.UnionType* nonnull sret %4, %union.UnionType* byval nonnull align 8 %3) #15
%32 = bitcast %union.UnionType* %4 to i64*
%33 = load i64, i64* %32, align 8
store i64 %33, i64* %5, align 8
%34 = bitcast %union.UnionType* %3 to i64*
%35 = load i64, i64* %34, align 8, !tbaa !10
%36 = trunc i64 %35 to i32
%37 = and i32 %36, 268435455
%38 = inttoptr i32 %37 to %struct._Array*
%39 = tail call %union.UnionType* @Array_get(%struct._Array* %38, i32 %1) #15
call void @llvm.lifetime.end.p0i8(i64 8, i8* nonnull %31) #3
call void @llvm.lifetime.end.p0i8(i64 8, i8* nonnull %30) #3
br label %41
; <label>:40: ; preds = %2
tail call void @__assert_fail(i8* getelementptr inbounds ([33 x i8], [33 x i8]* @.str.32, i32 0, i32 0), i8* getelementptr inbounds ([25 x i8], [25 x i8]* @.str.2, i32 0, i32 0), i32 531, i8* getelementptr inbounds ([13 x i8], [13 x i8]* @__func__.ArrayRef_get, i32 0, i32 0)) #14
unreachable
; <label>:41: ; preds = %29, %20, %9
%42 = phi %union.UnionType* [ %39, %29 ], [ %28, %20 ], [ %19, %9 ]
ret %union.UnionType* %42
}
; Function Attrs: minsize noinline nounwind optsize readonly
define hidden %struct._HashRef* @dynamic_array_ref_cast_code(%union.UnionType* nocapture readonly) local_unnamed_addr #12 {
br label %2
; <label>:2: ; preds = %12, %1
%3 = phi %union.UnionType* [ %0, %1 ], [ %16, %12 ]
%4 = bitcast %union.UnionType* %3 to i64*
%5 = load i64, i64* %4, align 8, !tbaa !10
%6 = lshr i64 %5, 32
%7 = trunc i64 %6 to i4
switch i4 %7, label %17 [
i4 4, label %8
i4 7, label %12
]
; <label>:8: ; preds = %2
%9 = trunc i64 %5 to i32
%10 = and i32 %9, 268435455
%11 = inttoptr i32 %10 to %struct._HashRef*
br label %17
; <label>:12: ; preds = %2
%13 = trunc i64 %5 to i32
%14 = and i32 %13, 268435455
%15 = inttoptr i32 %14 to %struct._Object*
%16 = getelementptr inbounds %struct._Object, %struct._Object* %15, i32 0, i32 1
br label %2
; <label>:17: ; preds = %8, %2
%18 = phi %struct._HashRef* [ %11, %8 ], [ null, %2 ]
ret %struct._HashRef* %18
}
; Function Attrs: minsize noinline norecurse nounwind optsize
define hidden void @new_Array(%union.UnionType* noalias nocapture sret, %union.UnionType**, i32) local_unnamed_addr #4 {
%4 = tail call %struct._Object* @fetch_object() #15
%5 = bitcast %struct._Object* %4 to %struct._Array*
%6 = getelementptr inbounds %struct._Array, %struct._Array* %5, i32 0, i32 1
store %union.UnionType** %1, %union.UnionType*** %6, align 4, !tbaa !8
%7 = getelementptr inbounds %struct._Object, %struct._Object* %4, i32 0, i32 1
%8 = bitcast %union.UnionType* %7 to i32*
store i32 %2, i32* %8, align 4, !tbaa !2
%9 = ptrtoint %struct._Object* %4 to i32
%10 = zext i32 %9 to i64
%11 = or i64 %10, -55834574848
%12 = bitcast %union.UnionType* %0 to i64*
store i64 %11, i64* %12, align 8
ret void
}
; Function Attrs: minsize noinline nounwind optsize
define hidden void @Array_set(%struct._Array* nocapture, i32, %union.UnionType* byval align 8) local_unnamed_addr #0 {
%4 = getelementptr inbounds %struct._Array, %struct._Array* %0, i32 0, i32 2
%5 = load i32, i32* %4, align 4, !tbaa !2
%6 = icmp ugt i32 %5, %1
br i1 %6, label %9, label %7
; <label>:7: ; preds = %3
%8 = add nsw i32 %1, 1
tail call void @Array_grow(%struct._Array* nonnull %0, i32 %8) #15
br label %9
; <label>:9: ; preds = %7, %3
%10 = getelementptr inbounds %struct._Array, %struct._Array* %0, i32 0, i32 1
%11 = load %union.UnionType**, %union.UnionType*** %10, align 4, !tbaa !8
%12 = getelementptr inbounds %union.UnionType*, %union.UnionType** %11, i32 %1
store %union.UnionType* %2, %union.UnionType** %12, align 4, !tbaa !9
ret void
}
; Function Attrs: minsize noinline nounwind optsize
define hidden void @init_table() local_unnamed_addr #0 {
%1 = tail call i8* @calloc(i32 8, i32 512) #15
%2 = bitcast i8* %1 to %union.UnionType*
%3 = load i64, i64* bitcast (%union.UnionType* @undef to i64*), align 8
br label %4
; <label>:4: ; preds = %7, %0
%5 = phi i32 [ 0, %0 ], [ %10, %7 ]
%6 = icmp eq i32 %5, 512
br i1 %6, label %11, label %7
; <label>:7: ; preds = %4
%8 = getelementptr inbounds %union.UnionType, %union.UnionType* %2, i32 %5
%9 = bitcast %union.UnionType* %8 to i64*
store i64 %3, i64* %9, align 8
%10 = add nuw nsw i32 %5, 1
br label %4
; <label>:11: ; preds = %4
store i8* %1, i8** bitcast (%union.UnionType** @base_hash_table to i8**), align 4, !tbaa !9
ret void
}
; Function Attrs: minsize noinline nounwind optsize
define hidden void @init_package_map() local_unnamed_addr #0 {
%1 = tail call i8* @calloc(i32 16, i32 1) #15
%2 = tail call i8* @calloc(i32 8, i32 512) #15
%3 = getelementptr inbounds i8, i8* %1, i32 4
%4 = bitcast i8* %3 to i8**
store i8* %2, i8** %4, align 4, !tbaa !25
%5 = load i8*, i8** bitcast (%union.UnionType** @base_hash_table to i8**), align 4, !tbaa !9
tail call void @llvm.memcpy.p0i8.p0i8.i32(i8* align 8 %2, i8* align 8 %5, i32 4096, i1 false)
%6 = tail call i8* @calloc(i32 4, i32 512) #15
%7 = getelementptr inbounds i8, i8* %1, i32 8
%8 = bitcast i8* %7 to i8**
store i8* %6, i8** %8, align 4, !tbaa !24
store i8* %1, i8** bitcast (%struct._Hash** @pkg_map to i8**), align 4, !tbaa !9
ret void
}
; Function Attrs: minsize noinline nounwind optsize
define hidden void @global_init() local_unnamed_addr #0 {
tail call void @new_Undef() #15
tail call void @init_table() #15
tail call void @init_package_map() #15
tail call void @make_object_pool() #15
ret void
}
; Function Attrs: minsize noinline nounwind optsize
define hidden void @make_object_pool() local_unnamed_addr #0 {
%1 = tail call i8* @calloc(i32 4, i32 524288) #15
store i8* %1, i8** bitcast (%struct._Object*** @object_pool to i8**), align 4, !tbaa !9
br label %2
; <label>:2: ; preds = %6, %0
%3 = phi i32 [ 0, %0 ], [ %11, %6 ]
%4 = icmp eq i32 %3, 524288
br i1 %4, label %5, label %6
; <label>:5: ; preds = %2
ret void
; <label>:6: ; preds = %2
%7 = tail call i8* @calloc(i32 40, i32 1) #15
%8 = load %struct._Object**, %struct._Object*** @object_pool, align 4, !tbaa !9
%9 = getelementptr inbounds %struct._Object*, %struct._Object** %8, i32 %3
%10 = bitcast %struct._Object** %9 to i8**
store i8* %7, i8** %10, align 4, !tbaa !9
%11 = add nuw nsw i32 %3, 1
br label %2
}
; Function Attrs: minsize noinline norecurse nounwind optsize
define hidden void @Hash_add(%struct._Hash* nocapture, %struct._String*, %union.UnionType* byval nocapture readonly align 8) local_unnamed_addr #4 {
%4 = getelementptr inbounds %struct._Hash, %struct._Hash* %0, i32 0, i32 3
%5 = load i32, i32* %4, align 4, !tbaa !22
%6 = getelementptr inbounds %struct._Hash, %struct._Hash* %0, i32 0, i32 1
%7 = load %union.UnionType*, %union.UnionType** %6, align 4, !tbaa !25
%8 = getelementptr inbounds %struct._String, %struct._String* %1, i32 0, i32 3
%9 = load i32, i32* %8, align 4, !tbaa !21
%10 = getelementptr inbounds %union.UnionType, %union.UnionType* %7, i32 %9
%11 = bitcast %union.UnionType* %2 to i64*
%12 = bitcast %union.UnionType* %10 to i64*
%13 = load i64, i64* %11, align 8
store i64 %13, i64* %12, align 8
%14 = getelementptr inbounds %struct._Hash, %struct._Hash* %0, i32 0, i32 2
%15 = load %struct._String**, %struct._String*** %14, align 4, !tbaa !24
%16 = add i32 %5, 1
%17 = getelementptr inbounds %struct._String*, %struct._String** %15, i32 %16
store %struct._String* %1, %struct._String** %17, align 4, !tbaa !9
%18 = load i32, i32* %4, align 4, !tbaa !22
%19 = add i32 %18, 1
store i32 %19, i32* %4, align 4, !tbaa !22
ret void
}
; Function Attrs: minsize noinline norecurse nounwind optsize
define hidden void @Hash_get(%union.UnionType* noalias nocapture sret, %struct._Hash* nocapture readonly, %struct._String* nocapture readonly) local_unnamed_addr #4 {
%4 = getelementptr inbounds %struct._Hash, %struct._Hash* %1, i32 0, i32 1
%5 = load %union.UnionType*, %union.UnionType** %4, align 4, !tbaa !25
%6 = getelementptr inbounds %struct._String, %struct._String* %2, i32 0, i32 3
%7 = load i32, i32* %6, align 4, !tbaa !21
%8 = getelementptr inbounds %union.UnionType, %union.UnionType* %5, i32 %7
%9 = bitcast %union.UnionType* %8 to i64*
%10 = bitcast %union.UnionType* %0 to i64*
%11 = load i64, i64* %9, align 8
store i64 %11, i64* %10, align 8
ret void
}
; Function Attrs: minsize noinline nounwind optsize
define hidden void @bless(%union.UnionType* noalias nocapture sret, %struct._Array* nocapture readonly) local_unnamed_addr #0 {
%3 = getelementptr inbounds %struct._Array, %struct._Array* %1, i32 0, i32 2
%4 = load i32, i32* %3, align 4, !tbaa !2
%5 = icmp eq i32 %4, 2
br i1 %5, label %9, label %6
; <label>:6: ; preds = %2
%7 = load %struct._IO_FILE*, %struct._IO_FILE** @stderr, align 4, !tbaa !9
%8 = tail call i32 @fwrite(i8* getelementptr inbounds ([54 x i8], [54 x i8]* @.str.33, i32 0, i32 0), i32 53, i32 1, %struct._IO_FILE* %7) #16
br label %9
; <label>:9: ; preds = %6, %2
%10 = getelementptr inbounds %struct._Array, %struct._Array* %1, i32 0, i32 1
%11 = load %union.UnionType**, %union.UnionType*** %10, align 4, !tbaa !8
%12 = bitcast %union.UnionType** %11 to i64**
%13 = load i64*, i64** %12, align 4, !tbaa !9
%14 = load i64, i64* %13, align 8
%15 = getelementptr inbounds %union.UnionType*, %union.UnionType** %11, i32 1
%16 = bitcast %union.UnionType** %15 to i64**
%17 = load i64*, i64** %16, align 4, !tbaa !9
%18 = load i64, i64* %17, align 8
%19 = tail call i8* @calloc(i32 24, i32 1) #15
%20 = lshr i64 %14, 32
%21 = and i64 %20, 15
%22 = icmp eq i64 %21, 6
br i1 %22, label %26, label %23
; <label>:23: ; preds = %9
%24 = load %struct._IO_FILE*, %struct._IO_FILE** @stderr, align 4, !tbaa !9
%25 = tail call i32 (%struct._IO_FILE*, i8*, ...) @fprintf(%struct._IO_FILE* %24, i8* getelementptr inbounds ([15 x i8], [15 x i8]* @.str, i32 0, i32 0), i64 %21) #13
tail call void @__assert_fail(i8* getelementptr inbounds ([21 x i8], [21 x i8]* @.str.1, i32 0, i32 0), i8* getelementptr inbounds ([25 x i8], [25 x i8]* @.str.2, i32 0, i32 0), i32 634, i8* getelementptr inbounds ([6 x i8], [6 x i8]* @__func__.bless, i32 0, i32 0)) #14
unreachable
; <label>:26: ; preds = %9
%27 = and i64 %18, 64424509440
%28 = icmp eq i64 %27, 30064771072
br i1 %28, label %29, label %36
; <label>:29: ; preds = %26
%30 = trunc i64 %18 to i32
%31 = and i32 %30, 268435455
%32 = inttoptr i32 %31 to i8*
%33 = getelementptr inbounds i8, i8* %32, i32 8
%34 = bitcast i8* %33 to i64*
%35 = load i64, i64* %34, align 8
br label %36
; <label>:36: ; preds = %29, %26
%37 = phi i64 [ %35, %29 ], [ %18, %26 ]
%38 = lshr i64 %37, 32
%39 = and i64 %38, 15
%40 = icmp eq i64 %39, 2
br i1 %40, label %44, label %41
; <label>:41: ; preds = %36
%42 = load %struct._IO_FILE*, %struct._IO_FILE** @stderr, align 4, !tbaa !9
%43 = tail call i32 (%struct._IO_FILE*, i8*, ...) @fprintf(%struct._IO_FILE* %42, i8* getelementptr inbounds ([15 x i8], [15 x i8]* @.str, i32 0, i32 0), i64 %39) #13
tail call void @__assert_fail(i8* getelementptr inbounds ([21 x i8], [21 x i8]* @.str.1, i32 0, i32 0), i8* getelementptr inbounds ([25 x i8], [25 x i8]* @.str.2, i32 0, i32 0), i32 636, i8* getelementptr inbounds ([6 x i8], [6 x i8]* @__func__.bless, i32 0, i32 0)) #14
unreachable
; <label>:44: ; preds = %36
%45 = trunc i64 %37 to i32
%46 = and i32 %45, 268435455
%47 = inttoptr i32 %46 to %struct._String*
%48 = getelementptr inbounds %struct._String, %struct._String* %47, i32 0, i32 1
%49 = load i8*, i8** %48, align 4, !tbaa !11
%50 = getelementptr inbounds i8, i8* %19, i32 8
%51 = bitcast i8* %50 to i64*
store i64 %14, i64* %51, align 8
%52 = getelementptr inbounds i8, i8* %19, i32 20
%53 = bitcast i8* %52 to i8**
store i8* %49, i8** %53, align 4, !tbaa !26
%54 = tail call %struct._Package* @get_pkg(i8* %49) #15
%55 = icmp eq %struct._Package* %54, null
br i1 %55, label %56, label %57
; <label>:56: ; preds = %44
tail call void @__assert_fail(i8* getelementptr inbounds ([30 x i8], [30 x i8]* @.str.35, i32 0, i32 0), i8* getelementptr inbounds ([25 x i8], [25 x i8]* @.str.2, i32 0, i32 0), i32 647, i8* getelementptr inbounds ([6 x i8], [6 x i8]* @__func__.bless, i32 0, i32 0)) #14
unreachable
; <label>:57: ; preds = %44
%58 = getelementptr inbounds i8, i8* %19, i32 16
%59 = bitcast i8* %58 to %struct._Package**
store %struct._Package* %54, %struct._Package** %59, align 8, !tbaa !28
%60 = ptrtoint i8* %19 to i32
%61 = zext i32 %60 to i64
%62 = or i64 %61, -34359738368
%63 = bitcast %union.UnionType* %0 to i64*
store i64 %62, i64* %63, align 8
ret void
}
; Function Attrs: minsize noinline nounwind optsize
define hidden %struct._Package* @get_pkg(i8*) local_unnamed_addr #0 {
%2 = alloca %union.UnionType, align 8
%3 = alloca %union.UnionType, align 8
%4 = alloca %union.UnionType, align 8
%5 = alloca %union.UnionType, align 8
%6 = bitcast %union.UnionType* %2 to i8*
call void @llvm.lifetime.start.p0i8(i64 8, i8* nonnull %6) #3
call void @new_String(%union.UnionType* nonnull sret %2, i8* %0) #15
%7 = bitcast %union.UnionType* %2 to i64*
%8 = load i64, i64* %7, align 8, !tbaa !10
%9 = trunc i64 %8 to i32
%10 = and i32 %9, 268435455
%11 = inttoptr i32 %10 to %struct._String*
%12 = bitcast %union.UnionType* %3 to i8*
call void @llvm.lifetime.start.p0i8(i64 8, i8* nonnull %12) #3
%13 = load %struct._Hash*, %struct._Hash** @pkg_map, align 4, !tbaa !9
call void @Hash_get(%union.UnionType* nonnull sret %3, %struct._Hash* %13, %struct._String* %11) #15
%14 = bitcast %union.UnionType* %3 to i64*
%15 = load i64, i64* %14, align 8, !tbaa !10
%16 = and i64 %15, 64424509440
%17 = icmp eq i64 %16, 47244640256
br i1 %17, label %18, label %22
; <label>:18: ; preds = %1
%19 = trunc i64 %15 to i32
%20 = and i32 %19, 268435455
%21 = inttoptr i32 %20 to i8*
br label %46
; <label>:22: ; preds = %1
%23 = tail call i8* @calloc(i32 24, i32 1) #15
%24 = tail call i8* @calloc(i32 8, i32 512) #15
%25 = getelementptr inbounds i8, i8* %23, i32 4
%26 = bitcast i8* %25 to i8**
store i8* %24, i8** %26, align 4, !tbaa !29
%27 = load i8*, i8** bitcast (%union.UnionType** @base_hash_table to i8**), align 4, !tbaa !9
tail call void @llvm.memcpy.p0i8.p0i8.i32(i8* align 8 %24, i8* align 8 %27, i32 4096, i1 false)
%28 = tail call i8* @calloc(i32 4, i32 512) #15
%29 = getelementptr inbounds i8, i8* %23, i32 8
%30 = bitcast i8* %29 to i8**
store i8* %28, i8** %30, align 4, !tbaa !31
call void @new_Array(%union.UnionType* nonnull sret %4, %union.UnionType** null, i32 0) #15
%31 = bitcast %union.UnionType* %4 to i64*
%32 = load i64, i64* %31, align 8, !tbaa !10
%33 = trunc i64 %32 to i32
%34 = and i32 %33, 268435455
%35 = inttoptr i32 %34 to %struct._Array*
%36 = getelementptr inbounds i8, i8* %23, i32 16
%37 = bitcast i8* %36 to %struct._Array**
store %struct._Array* %35, %struct._Array** %37, align 4, !tbaa !32
%38 = getelementptr inbounds i8, i8* %23, i32 20
%39 = bitcast i8* %38 to i8**
store i8* %0, i8** %39, align 4, !tbaa !33
%40 = bitcast %union.UnionType* %5 to i8*
call void @llvm.lifetime.start.p0i8(i64 8, i8* nonnull %40) #3
%41 = ptrtoint i8* %23 to i32
%42 = zext i32 %41 to i64
%43 = or i64 %42, -21474836480
%44 = bitcast %union.UnionType* %5 to i64*
store i64 %43, i64* %44, align 8, !tbaa !10
%45 = load %struct._Hash*, %struct._Hash** @pkg_map, align 4, !tbaa !9
call void @Hash_add(%struct._Hash* %45, %struct._String* %11, %union.UnionType* byval nonnull align 8 %5) #15
call void @llvm.lifetime.end.p0i8(i64 8, i8* nonnull %40) #3
br label %46
; <label>:46: ; preds = %22, %18
%47 = phi i8* [ %21, %18 ], [ %23, %22 ]
%48 = bitcast i8* %47 to %struct._Package*
call void @llvm.lifetime.end.p0i8(i64 8, i8* nonnull %12) #3
call void @llvm.lifetime.end.p0i8(i64 8, i8* nonnull %6) #3
ret %struct._Package* %48
}
; Function Attrs: minsize noinline nounwind optsize
define hidden void @store_method_by_pkg_name(i8*, i8* nocapture readonly, void (%union.UnionType*, %struct._Array*)*) local_unnamed_addr #0 {
%4 = alloca %union.UnionType, align 8
%5 = alloca %union.UnionType, align 8
%6 = tail call %struct._Package* @get_pkg(i8* %0) #15
%7 = bitcast %union.UnionType* %4 to i8*
call void @llvm.lifetime.start.p0i8(i64 8, i8* nonnull %7) #3
call void @new_String(%union.UnionType* nonnull sret %4, i8* %1) #15
%8 = tail call i8* @calloc(i32 8, i32 1) #15
%9 = getelementptr inbounds i8, i8* %8, i32 4
%10 = bitcast i8* %9 to void (%union.UnionType*, %struct._Array*)**
store void (%union.UnionType*, %struct._Array*)* %2, void (%union.UnionType*, %struct._Array*)** %10, align 4, !tbaa !34
%11 = bitcast %union.UnionType* %5 to i8*
call void @llvm.lifetime.start.p0i8(i64 8, i8* nonnull %11) #3
%12 = ptrtoint i8* %8 to i32
%13 = zext i32 %12 to i64
%14 = or i64 %13, -30064771072
%15 = bitcast %union.UnionType* %5 to i64*
store i64 %14, i64* %15, align 8, !tbaa !10
%16 = bitcast %union.UnionType* %4 to i64*
%17 = load i64, i64* %16, align 8, !tbaa !10
%18 = trunc i64 %17 to i32
%19 = and i32 %18, 268435455
%20 = bitcast %struct._Package* %6 to %struct._Hash*
%21 = inttoptr i32 %19 to %struct._String*
call void @Hash_add(%struct._Hash* %20, %struct._String* %21, %union.UnionType* byval nonnull align 8 %5) #15
call void @llvm.lifetime.end.p0i8(i64 8, i8* nonnull %11) #3
call void @llvm.lifetime.end.p0i8(i64 8, i8* nonnull %7) #3
ret void
}
; Function Attrs: minsize noinline nounwind optsize
define hidden void (%union.UnionType*, %struct._Array*)* @get_method_by_name(%struct._BlessedObject* nocapture readonly, i8* nocapture readonly) local_unnamed_addr #0 {
%3 = alloca %union.UnionType, align 8
%4 = getelementptr inbounds %struct._BlessedObject, %struct._BlessedObject* %0, i32 0, i32 2
%5 = load %struct._Package*, %struct._Package** %4, align 8, !tbaa !28
%6 = bitcast %union.UnionType* %3 to i8*
call void @llvm.lifetime.start.p0i8(i64 8, i8* nonnull %6) #3
call void @new_String(%union.UnionType* nonnull sret %3, i8* %1) #15
%7 = bitcast %union.UnionType* %3 to i64*
%8 = load i64, i64* %7, align 8, !tbaa !10
%9 = trunc i64 %8 to i32
%10 = and i32 %9, 268435455
%11 = inttoptr i32 %10 to %struct._String*
%12 = getelementptr inbounds %struct._Package, %struct._Package* %5, i32 0, i32 1
%13 = load %union.UnionType*, %union.UnionType** %12, align 4, !tbaa !29
%14 = getelementptr inbounds %struct._String, %struct._String* %11, i32 0, i32 3
%15 = load i32, i32* %14, align 4, !tbaa !21
%16 = getelementptr inbounds %union.UnionType, %union.UnionType* %13, i32 %15
%17 = bitcast %union.UnionType* %16 to i64*
%18 = load i64, i64* %17, align 8
%19 = and i64 %18, 64424509440
%20 = icmp eq i64 %19, 38654705664
br i1 %20, label %21, label %25
; <label>:21: ; preds = %2
%22 = trunc i64 %18 to i32
%23 = and i32 %22, 268435455
%24 = inttoptr i32 %23 to %struct._CodeRef*
br label %55
; <label>:25: ; preds = %2
%26 = getelementptr inbounds %struct._Package, %struct._Package* %5, i32 0, i32 4
%27 = load %struct._Array*, %struct._Array** %26, align 4, !tbaa !32
%28 = getelementptr inbounds %struct._Array, %struct._Array* %27, i32 0, i32 2
%29 = load i32, i32* %28, align 4, !tbaa !2
%30 = getelementptr inbounds %struct._Array, %struct._Array* %27, i32 0, i32 1
br label %31
; <label>:31: ; preds = %34, %25
%32 = phi i32 [ 0, %25 ], [ %50, %34 ]
%33 = icmp ult i32 %32, %29
br i1 %33, label %34, label %55
; <label>:34: ; preds = %31
%35 = load %union.UnionType**, %union.UnionType*** %30, align 4, !tbaa !8
%36 = getelementptr inbounds %union.UnionType*, %union.UnionType** %35, i32 %32
%37 = bitcast %union.UnionType** %36 to i64**
%38 = load i64*, i64** %37, align 4, !tbaa !9
%39 = load i64, i64* %38, align 8, !tbaa !10
%40 = trunc i64 %39 to i32
%41 = and i32 %40, 268435455
%42 = inttoptr i32 %41 to %struct._Package*
%43 = getelementptr inbounds %struct._Package, %struct._Package* %42, i32 0, i32 1
%44 = load %union.UnionType*, %union.UnionType** %43, align 4, !tbaa !29
%45 = getelementptr inbounds %union.UnionType, %union.UnionType* %44, i32 %15
%46 = bitcast %union.UnionType* %45 to i64*
%47 = load i64, i64* %46, align 8
%48 = and i64 %47, 64424509440
%49 = icmp eq i64 %48, 38654705664
%50 = add i32 %32, 1
br i1 %49, label %51, label %31
; <label>:51: ; preds = %34
%52 = trunc i64 %47 to i32
%53 = and i32 %52, 268435455
%54 = inttoptr i32 %53 to %struct._CodeRef*
br label %55
; <label>:55: ; preds = %51, %31, %21
%56 = phi %struct._CodeRef* [ %24, %21 ], [ %54, %51 ], [ null, %31 ]
%57 = icmp eq %struct._CodeRef* %56, null
br i1 %57, label %58, label %59
; <label>:58: ; preds = %55
tail call void @__assert_fail(i8* getelementptr inbounds ([33 x i8], [33 x i8]* @.str.37, i32 0, i32 0), i8* getelementptr inbounds ([25 x i8], [25 x i8]* @.str.2, i32 0, i32 0), i32 732, i8* getelementptr inbounds ([19 x i8], [19 x i8]* @__func__.get_method_by_name, i32 0, i32 0)) #14
unreachable
; <label>:59: ; preds = %55
%60 = getelementptr inbounds %struct._CodeRef, %struct._CodeRef* %56, i32 0, i32 1
%61 = load void (%union.UnionType*, %struct._Array*)*, void (%union.UnionType*, %struct._Array*)** %60, align 4, !tbaa !34
call void @llvm.lifetime.end.p0i8(i64 8, i8* nonnull %6) #3
ret void (%union.UnionType*, %struct._Array*)* %61
}
; Function Attrs: minsize noinline nounwind optsize
define hidden void (%union.UnionType*, %struct._Array*)* @get_class_method_by_name(i8*, i8* nocapture readonly) local_unnamed_addr #0 {
%3 = alloca %union.UnionType, align 8
%4 = tail call %struct._Package* @get_pkg(i8* %0) #15
%5 = bitcast %union.UnionType* %3 to i8*
call void @llvm.lifetime.start.p0i8(i64 8, i8* nonnull %5) #3
call void @new_String(%union.UnionType* nonnull sret %3, i8* %1) #15
%6 = bitcast %union.UnionType* %3 to i64*
%7 = load i64, i64* %6, align 8, !tbaa !10
%8 = trunc i64 %7 to i32
%9 = and i32 %8, 268435455
%10 = inttoptr i32 %9 to %struct._String*
%11 = getelementptr inbounds %struct._Package, %struct._Package* %4, i32 0, i32 1
%12 = load %union.UnionType*, %union.UnionType** %11, align 4, !tbaa !29
%13 = getelementptr inbounds %struct._String, %struct._String* %10, i32 0, i32 3
%14 = load i32, i32* %13, align 4, !tbaa !21
%15 = getelementptr inbounds %union.UnionType, %union.UnionType* %12, i32 %14
%16 = bitcast %union.UnionType* %15 to i64*
%17 = load i64, i64* %16, align 8
%18 = and i64 %17, 64424509440
%19 = icmp eq i64 %18, 38654705664
br i1 %19, label %20, label %24
; <label>:20: ; preds = %2
%21 = trunc i64 %17 to i32
%22 = and i32 %21, 268435455
%23 = inttoptr i32 %22 to %struct._CodeRef*
br label %54
; <label>:24: ; preds = %2
%25 = getelementptr inbounds %struct._Package, %struct._Package* %4, i32 0, i32 4
%26 = load %struct._Array*, %struct._Array** %25, align 4, !tbaa !32
%27 = getelementptr inbounds %struct._Array, %struct._Array* %26, i32 0, i32 2
%28 = load i32, i32* %27, align 4, !tbaa !2
%29 = getelementptr inbounds %struct._Array, %struct._Array* %26, i32 0, i32 1
br label %30
; <label>:30: ; preds = %33, %24
%31 = phi i32 [ 0, %24 ], [ %49, %33 ]
%32 = icmp ult i32 %31, %28
br i1 %32, label %33, label %54
; <label>:33: ; preds = %30
%34 = load %union.UnionType**, %union.UnionType*** %29, align 4, !tbaa !8
%35 = getelementptr inbounds %union.UnionType*, %union.UnionType** %34, i32 %31
%36 = bitcast %union.UnionType** %35 to i64**
%37 = load i64*, i64** %36, align 4, !tbaa !9
%38 = load i64, i64* %37, align 8, !tbaa !10
%39 = trunc i64 %38 to i32
%40 = and i32 %39, 268435455
%41 = inttoptr i32 %40 to %struct._Package*
%42 = getelementptr inbounds %struct._Package, %struct._Package* %41, i32 0, i32 1
%43 = load %union.UnionType*, %union.UnionType** %42, align 4, !tbaa !29
%44 = getelementptr inbounds %union.UnionType, %union.UnionType* %43, i32 %14
%45 = bitcast %union.UnionType* %44 to i64*
%46 = load i64, i64* %45, align 8
%47 = and i64 %46, 64424509440
%48 = icmp eq i64 %47, 38654705664
%49 = add i32 %31, 1
br i1 %48, label %50, label %30
; <label>:50: ; preds = %33
%51 = trunc i64 %46 to i32
%52 = and i32 %51, 268435455
%53 = inttoptr i32 %52 to %struct._CodeRef*
br label %54
; <label>:54: ; preds = %50, %30, %20
%55 = phi %struct._CodeRef* [ %23, %20 ], [ %53, %50 ], [ null, %30 ]
%56 = icmp eq %struct._CodeRef* %55, null
br i1 %56, label %57, label %58
; <label>:57: ; preds = %54
tail call void @__assert_fail(i8* getelementptr inbounds ([33 x i8], [33 x i8]* @.str.37, i32 0, i32 0), i8* getelementptr inbounds ([25 x i8], [25 x i8]* @.str.2, i32 0, i32 0), i32 763, i8* getelementptr inbounds ([25 x i8], [25 x i8]* @__func__.get_class_method_by_name, i32 0, i32 0)) #14
unreachable
; <label>:58: ; preds = %54
%59 = getelementptr inbounds %struct._CodeRef, %struct._CodeRef* %55, i32 0, i32 1
%60 = load void (%union.UnionType*, %struct._Array*)*, void (%union.UnionType*, %struct._Array*)** %59, align 4, !tbaa !34
call void @llvm.lifetime.end.p0i8(i64 8, i8* nonnull %5) #3
ret void (%union.UnionType*, %struct._Array*)* %60
}
; Function Attrs: minsize noinline nounwind optsize
define hidden void @add_base_name(i8*, i8*) local_unnamed_addr #0 {
%3 = tail call %struct._Package* @get_pkg(i8* %0) #15
%4 = tail call %struct._Package* @get_pkg(i8* %1) #15
%5 = tail call %struct._Object* @fetch_object() #15
%6 = bitcast %struct._Object* %5 to %union.UnionType*
%7 = ptrtoint %struct._Package* %4 to i32
%8 = zext i32 %7 to i64
%9 = or i64 %8, -21474836480
%10 = bitcast %struct._Object* %5 to i64*
store i64 %9, i64* %10, align 8, !tbaa !10
%11 = getelementptr inbounds %struct._Package, %struct._Package* %3, i32 0, i32 4
%12 = load %struct._Array*, %struct._Array** %11, align 4, !tbaa !32
tail call void @Array_add(%struct._Array* %12, %union.UnionType* %6) #15
ret void
}
; Function Attrs: minsize noinline nounwind optsize
define hidden void @Hash_to_array(%union.UnionType* noalias nocapture sret, %struct._Hash* nocapture readonly) local_unnamed_addr #0 {
%3 = tail call i8* @calloc(i32 12, i32 1) #15
%4 = getelementptr inbounds %struct._Hash, %struct._Hash* %1, i32 0, i32 3
%5 = load i32, i32* %4, align 4, !tbaa !22
%6 = shl i32 %5, 1
%7 = tail call i8* @calloc(i32 8, i32 %6) #15
%8 = getelementptr inbounds i8, i8* %3, i32 4
%9 = bitcast i8* %8 to %union.UnionType***
%10 = bitcast i8* %8 to i8**
store i8* %7, i8** %10, align 4, !tbaa !8
%11 = getelementptr inbounds i8, i8* %3, i32 8
%12 = bitcast i8* %11 to i32*
store i32 %6, i32* %12, align 4, !tbaa !2
%13 = getelementptr inbounds %struct._Hash, %struct._Hash* %1, i32 0, i32 2
%14 = getelementptr inbounds %struct._Hash, %struct._Hash* %1, i32 0, i32 1
br label %15
; <label>:15: ; preds = %18, %2
%16 = phi i32 [ 0, %2 ], [ %38, %18 ]
%17 = icmp eq i32 %16, %5
br i1 %17, label %39, label %18
; <label>:18: ; preds = %15
%19 = load %struct._String**, %struct._String*** %13, align 4, !tbaa !24
%20 = getelementptr inbounds %struct._String*, %struct._String** %19, i32 %16
%21 = load %struct._String*, %struct._String** %20, align 4, !tbaa !9
%22 = tail call %struct._Object* @fetch_object() #15
%23 = ptrtoint %struct._String* %21 to i32
%24 = zext i32 %23 to i64
%25 = or i64 %24, -60129542144
%26 = bitcast %struct._Object* %22 to i64*
store i64 %25, i64* %26, align 8, !tbaa !10
%27 = load %union.UnionType**, %union.UnionType*** %9, align 4, !tbaa !8
%28 = shl i32 %16, 1
%29 = getelementptr inbounds %union.UnionType*, %union.UnionType** %27, i32 %28
%30 = bitcast %union.UnionType** %29 to %struct._Object**
store %struct._Object* %22, %struct._Object** %30, align 4, !tbaa !9
%31 = load %union.UnionType*, %union.UnionType** %14, align 4, !tbaa !25
%32 = getelementptr inbounds %struct._String, %struct._String* %21, i32 0, i32 3
%33 = load i32, i32* %32, align 4, !tbaa !21
%34 = getelementptr inbounds %union.UnionType, %union.UnionType* %31, i32 %33
%35 = load %union.UnionType**, %union.UnionType*** %9, align 4, !tbaa !8
%36 = or i32 %28, 1
%37 = getelementptr inbounds %union.UnionType*, %union.UnionType** %35, i32 %36
store %union.UnionType* %34, %union.UnionType** %37, align 4, !tbaa !9
%38 = add i32 %16, 1
br label %15
; <label>:39: ; preds = %15
%40 = ptrtoint i8* %3 to i32
%41 = zext i32 %40 to i64
%42 = or i64 %41, -55834574848
%43 = bitcast %union.UnionType* %0 to i64*
store i64 %42, i64* %43, align 8
ret void
}
; Function Attrs: minsize noinline nounwind optsize
define hidden %struct._BlessedObject* @dynamic_blessed_object_cast_code(%union.UnionType* nocapture readonly) local_unnamed_addr #0 {
%2 = bitcast %union.UnionType* %0 to i64*
%3 = load i64, i64* %2, align 8, !tbaa !10
%4 = lshr i64 %3, 32
%5 = trunc i64 %4 to i4
switch i4 %5, label %27 [
i4 7, label %6
i4 -8, label %23
]
; <label>:6: ; preds = %1
%7 = trunc i64 %3 to i32
%8 = and i32 %7, 268435455
%9 = inttoptr i32 %8 to %struct._Object*
%10 = getelementptr inbounds %struct._Object, %struct._Object* %9, i32 0, i32 1
%11 = bitcast %union.UnionType* %10 to i64*
%12 = load i64, i64* %11, align 8, !tbaa !10
%13 = lshr i64 %12, 32
%14 = and i64 %13, 15
%15 = icmp eq i64 %14, 8
br i1 %15, label %19, label %16
; <label>:16: ; preds = %6
%17 = load %struct._IO_FILE*, %struct._IO_FILE** @stderr, align 4, !tbaa !9
%18 = tail call i32 (%struct._IO_FILE*, i8*, ...) @fprintf(%struct._IO_FILE* %17, i8* getelementptr inbounds ([15 x i8], [15 x i8]* @.str, i32 0, i32 0), i64 %14) #13
tail call void @__assert_fail(i8* getelementptr inbounds ([21 x i8], [21 x i8]* @.str.1, i32 0, i32 0), i8* getelementptr inbounds ([25 x i8], [25 x i8]* @.str.2, i32 0, i32 0), i32 894, i8* getelementptr inbounds ([33 x i8], [33 x i8]* @__func__.dynamic_blessed_object_cast_code, i32 0, i32 0)) #14
unreachable
; <label>:19: ; preds = %6
%20 = trunc i64 %12 to i32
%21 = and i32 %20, 268435455
%22 = inttoptr i32 %21 to %struct._BlessedObject*
br label %27
; <label>:23: ; preds = %1
%24 = trunc i64 %3 to i32
%25 = and i32 %24, 268435455
%26 = inttoptr i32 %25 to %struct._BlessedObject*
br label %27
; <label>:27: ; preds = %23, %19, %1
%28 = phi %struct._BlessedObject* [ null, %1 ], [ %26, %23 ], [ %22, %19 ]
ret %struct._BlessedObject* %28
}
; Function Attrs: minsize noinline nounwind optsize
define hidden noalias %struct._Object* @new_Object() local_unnamed_addr #0 {
%1 = tail call i8* @malloc(i32 40) #15
%2 = bitcast i8* %1 to %struct._Object*
ret %struct._Object* %2
}
; Function Attrs: minsize noinline norecurse nounwind optsize
define hidden void @Object_addObject(%union.UnionType* noalias nocapture sret, %union.UnionType* nocapture readonly, %union.UnionType* nocapture readonly) local_unnamed_addr #4 {
%4 = bitcast %union.UnionType* %1 to i64*
%5 = load i64, i64* %4, align 8, !tbaa !10
%6 = lshr i64 %5, 32
%7 = trunc i64 %6 to i4
%8 = bitcast i64 %5 to double
switch i4 %7, label %41 [
i4 1, label %9
i4 0, label %25
]
; <label>:9: ; preds = %3
%10 = bitcast %union.UnionType* %2 to i64*
%11 = load i64, i64* %10, align 8, !tbaa !10
%12 = lshr i64 %11, 32
%13 = trunc i64 %12 to i4
switch i4 %13, label %41 [
i4 1, label %14
i4 0, label %19
]
; <label>:14: ; preds = %9
%15 = add i64 %11, %5
%16 = shl i64 %15, 32
%17 = ashr exact i64 %16, 32
%18 = or i64 %17, -64424509440
br label %41
; <label>:19: ; preds = %9
%20 = bitcast i64 %11 to double
%21 = trunc i64 %5 to i32
%22 = sitofp i32 %21 to double
%23 = fadd double %20, %22
%24 = bitcast double %23 to i64
br label %41
; <label>:25: ; preds = %3
%26 = bitcast %union.UnionType* %2 to i64*
%27 = load i64, i64* %26, align 8, !tbaa !10
%28 = lshr i64 %27, 32
%29 = trunc i64 %28 to i4
switch i4 %29, label %41 [
i4 1, label %30
i4 0, label %37
]
; <label>:30: ; preds = %25
%31 = trunc i64 %27 to i32
%32 = sitofp i32 %31 to double
%33 = fadd double %8, %32
%34 = fptosi double %33 to i32
%35 = sext i32 %34 to i64
%36 = or i64 %35, -64424509440
br label %41
; <label>:37: ; preds = %25
%38 = bitcast i64 %27 to double
%39 = fadd double %8, %38
%40 = bitcast double %39 to i64
br label %41
; <label>:41: ; preds = %37, %30, %25, %19, %14, %9, %3
%42 = phi i64 [ undef, %3 ], [ undef, %25 ], [ %40, %37 ], [ %36, %30 ], [ undef, %9 ], [ %24, %19 ], [ %18, %14 ]
%43 = bitcast %union.UnionType* %0 to i64*
store i64 %42, i64* %43, align 8
ret void
}
; Function Attrs: minsize noinline norecurse nounwind optsize
define hidden void @Object_subObject(%union.UnionType* noalias nocapture sret, %union.UnionType* nocapture readonly, %union.UnionType* nocapture readonly) local_unnamed_addr #4 {
%4 = bitcast %union.UnionType* %1 to i64*
%5 = load i64, i64* %4, align 8, !tbaa !10
%6 = lshr i64 %5, 32
%7 = trunc i64 %6 to i4
%8 = bitcast i64 %5 to double
switch i4 %7, label %41 [
i4 1, label %9
i4 0, label %25
]
; <label>:9: ; preds = %3
%10 = bitcast %union.UnionType* %2 to i64*
%11 = load i64, i64* %10, align 8, !tbaa !10
%12 = lshr i64 %11, 32
%13 = trunc i64 %12 to i4
switch i4 %13, label %41 [
i4 1, label %14
i4 0, label %19
]
; <label>:14: ; preds = %9
%15 = sub i64 %5, %11
%16 = shl i64 %15, 32
%17 = ashr exact i64 %16, 32
%18 = or i64 %17, -64424509440
br label %41
; <label>:19: ; preds = %9
%20 = bitcast i64 %11 to double
%21 = trunc i64 %5 to i32
%22 = sitofp i32 %21 to double
%23 = fsub double %22, %20
%24 = bitcast double %23 to i64
br label %41
; <label>:25: ; preds = %3
%26 = bitcast %union.UnionType* %2 to i64*
%27 = load i64, i64* %26, align 8, !tbaa !10
%28 = lshr i64 %27, 32
%29 = trunc i64 %28 to i4
switch i4 %29, label %41 [
i4 1, label %30
i4 0, label %37
]
; <label>:30: ; preds = %25
%31 = trunc i64 %27 to i32
%32 = sitofp i32 %31 to double
%33 = fsub double %8, %32
%34 = fptosi double %33 to i32
%35 = sext i32 %34 to i64
%36 = or i64 %35, -64424509440
br label %41
; <label>:37: ; preds = %25
%38 = bitcast i64 %27 to double
%39 = fsub double %8, %38
%40 = bitcast double %39 to i64
br label %41
; <label>:41: ; preds = %37, %30, %25, %19, %14, %9, %3
%42 = phi i64 [ undef, %3 ], [ undef, %25 ], [ %40, %37 ], [ %36, %30 ], [ undef, %9 ], [ %24, %19 ], [ %18, %14 ]
%43 = bitcast %union.UnionType* %0 to i64*
store i64 %42, i64* %43, align 8
ret void
}
; Function Attrs: minsize noinline norecurse nounwind optsize
define hidden void @Object_mulObject(%union.UnionType* noalias nocapture sret, %union.UnionType* nocapture readonly, %union.UnionType* nocapture readonly) local_unnamed_addr #4 {
%4 = bitcast %union.UnionType* %1 to i64*
%5 = load i64, i64* %4, align 8, !tbaa !10
%6 = lshr i64 %5, 32
%7 = trunc i64 %6 to i4
%8 = bitcast i64 %5 to double
switch i4 %7, label %41 [
i4 1, label %9
i4 0, label %25
]
; <label>:9: ; preds = %3
%10 = bitcast %union.UnionType* %2 to i64*
%11 = load i64, i64* %10, align 8, !tbaa !10
%12 = lshr i64 %11, 32
%13 = trunc i64 %12 to i4
switch i4 %13, label %41 [
i4 1, label %14
i4 0, label %19
]
; <label>:14: ; preds = %9
%15 = shl i64 %5, 32
%16 = mul i64 %15, %11
%17 = ashr exact i64 %16, 32
%18 = or i64 %17, -64424509440
br label %41
; <label>:19: ; preds = %9
%20 = bitcast i64 %11 to double
%21 = trunc i64 %5 to i32
%22 = sitofp i32 %21 to double
%23 = fmul double %20, %22
%24 = bitcast double %23 to i64
br label %41
; <label>:25: ; preds = %3
%26 = bitcast %union.UnionType* %2 to i64*
%27 = load i64, i64* %26, align 8, !tbaa !10
%28 = lshr i64 %27, 32
%29 = trunc i64 %28 to i4
switch i4 %29, label %41 [
i4 1, label %30
i4 0, label %37
]
; <label>:30: ; preds = %25
%31 = trunc i64 %27 to i32
%32 = sitofp i32 %31 to double
%33 = fmul double %8, %32
%34 = fptosi double %33 to i32
%35 = sext i32 %34 to i64
%36 = or i64 %35, -64424509440
br label %41
; <label>:37: ; preds = %25
%38 = bitcast i64 %27 to double
%39 = fmul double %8, %38
%40 = bitcast double %39 to i64
br label %41
; <label>:41: ; preds = %37, %30, %25, %19, %14, %9, %3
%42 = phi i64 [ undef, %3 ], [ undef, %25 ], [ %40, %37 ], [ %36, %30 ], [ undef, %9 ], [ %24, %19 ], [ %18, %14 ]
%43 = bitcast %union.UnionType* %0 to i64*
store i64 %42, i64* %43, align 8
ret void
}
; Function Attrs: minsize noinline norecurse nounwind optsize
define hidden void @Object_divObject(%union.UnionType* noalias nocapture sret, %union.UnionType* nocapture readonly, %union.UnionType* nocapture readonly) local_unnamed_addr #4 {
%4 = bitcast %union.UnionType* %1 to i64*
%5 = load i64, i64* %4, align 8, !tbaa !10
%6 = lshr i64 %5, 32
%7 = trunc i64 %6 to i4
%8 = bitcast i64 %5 to double
switch i4 %7, label %41 [
i4 1, label %9
i4 0, label %25
]
; <label>:9: ; preds = %3
%10 = trunc i64 %5 to i32
%11 = bitcast %union.UnionType* %2 to i64*
%12 = load i64, i64* %11, align 8, !tbaa !10
%13 = lshr i64 %12, 32
%14 = trunc i64 %13 to i4
switch i4 %14, label %41 [
i4 1, label %15
i4 0, label %20
]
; <label>:15: ; preds = %9
%16 = trunc i64 %12 to i32
%17 = sdiv i32 %10, %16
%18 = sext i32 %17 to i64
%19 = or i64 %18, -64424509440
br label %41
; <label>:20: ; preds = %9
%21 = bitcast i64 %12 to double
%22 = sitofp i32 %10 to double
%23 = fdiv double %22, %21
%24 = bitcast double %23 to i64
br label %41
; <label>:25: ; preds = %3
%26 = bitcast %union.UnionType* %2 to i64*
%27 = load i64, i64* %26, align 8, !tbaa !10
%28 = lshr i64 %27, 32
%29 = trunc i64 %28 to i4
switch i4 %29, label %41 [
i4 1, label %30
i4 0, label %37
]
; <label>:30: ; preds = %25
%31 = trunc i64 %27 to i32
%32 = sitofp i32 %31 to double
%33 = fdiv double %8, %32
%34 = fptosi double %33 to i32
%35 = sext i32 %34 to i64
%36 = or i64 %35, -64424509440
br label %41
; <label>:37: ; preds = %25
%38 = bitcast i64 %27 to double
%39 = fdiv double %8, %38
%40 = bitcast double %39 to i64
br label %41
; <label>:41: ; preds = %37, %30, %25, %20, %15, %9, %3
%42 = phi i64 [ undef, %3 ], [ undef, %25 ], [ %40, %37 ], [ %36, %30 ], [ undef, %9 ], [ %24, %20 ], [ %19, %15 ]
%43 = bitcast %union.UnionType* %0 to i64*
store i64 %42, i64* %43, align 8
ret void
}
; Function Attrs: minsize noinline norecurse nounwind optsize
define hidden void @Object_eqObject(%union.UnionType* noalias nocapture sret, %union.UnionType* nocapture readonly, %union.UnionType* nocapture readonly) local_unnamed_addr #4 {
%4 = bitcast %union.UnionType* %1 to i64*
%5 = load i64, i64* %4, align 8, !tbaa !10
%6 = lshr i64 %5, 32
%7 = trunc i64 %6 to i4
%8 = bitcast i64 %5 to double
switch i4 %7, label %43 [
i4 1, label %9
i4 0, label %27
]
; <label>:9: ; preds = %3
%10 = bitcast %union.UnionType* %2 to i64*
%11 = load i64, i64* %10, align 8, !tbaa !10
%12 = lshr i64 %11, 32
%13 = trunc i64 %12 to i4
switch i4 %13, label %43 [
i4 1, label %14
i4 0, label %20
]
; <label>:14: ; preds = %9
%15 = trunc i64 %5 to i32
%16 = trunc i64 %11 to i32
%17 = icmp eq i32 %15, %16
%18 = zext i1 %17 to i64
%19 = or i64 %18, -64424509440
br label %43
; <label>:20: ; preds = %9
%21 = bitcast i64 %11 to double
%22 = trunc i64 %5 to i32
%23 = sitofp i32 %22 to double
%24 = fcmp oeq double %21, %23
%25 = zext i1 %24 to i64
%26 = or i64 %25, -64424509440
br label %43
; <label>:27: ; preds = %3
%28 = bitcast %union.UnionType* %2 to i64*
%29 = load i64, i64* %28, align 8, !tbaa !10
%30 = lshr i64 %29, 32
%31 = trunc i64 %30 to i4
switch i4 %31, label %43 [
i4 1, label %32
i4 0, label %38
]
; <label>:32: ; preds = %27
%33 = trunc i64 %29 to i32
%34 = sitofp i32 %33 to double
%35 = fcmp oeq double %8, %34
%36 = zext i1 %35 to i64
%37 = or i64 %36, -64424509440
br label %43
; <label>:38: ; preds = %27
%39 = bitcast i64 %29 to double
%40 = fcmp oeq double %8, %39
%41 = zext i1 %40 to i64
%42 = or i64 %41, -64424509440
br label %43
; <label>:43: ; preds = %38, %32, %27, %20, %14, %9, %3
%44 = phi i64 [ undef, %3 ], [ undef, %27 ], [ %42, %38 ], [ %37, %32 ], [ undef, %9 ], [ %26, %20 ], [ %19, %14 ]
%45 = bitcast %union.UnionType* %0 to i64*
store i64 %44, i64* %45, align 8
ret void
}
; Function Attrs: minsize noinline norecurse nounwind optsize
define hidden void @Object_neObject(%union.UnionType* noalias nocapture sret, %union.UnionType* nocapture readonly, %union.UnionType* nocapture readonly) local_unnamed_addr #4 {
%4 = bitcast %union.UnionType* %1 to i64*
%5 = load i64, i64* %4, align 8, !tbaa !10
%6 = lshr i64 %5, 32
%7 = trunc i64 %6 to i4
%8 = bitcast i64 %5 to double
switch i4 %7, label %43 [
i4 1, label %9
i4 0, label %27
]
; <label>:9: ; preds = %3
%10 = bitcast %union.UnionType* %2 to i64*
%11 = load i64, i64* %10, align 8, !tbaa !10
%12 = lshr i64 %11, 32
%13 = trunc i64 %12 to i4
switch i4 %13, label %43 [
i4 1, label %14
i4 0, label %20
]
; <label>:14: ; preds = %9
%15 = trunc i64 %5 to i32
%16 = trunc i64 %11 to i32
%17 = icmp ne i32 %15, %16
%18 = zext i1 %17 to i64
%19 = or i64 %18, -64424509440
br label %43
; <label>:20: ; preds = %9
%21 = bitcast i64 %11 to double
%22 = trunc i64 %5 to i32
%23 = sitofp i32 %22 to double
%24 = fcmp une double %21, %23
%25 = zext i1 %24 to i64
%26 = or i64 %25, -64424509440
br label %43
; <label>:27: ; preds = %3
%28 = bitcast %union.UnionType* %2 to i64*
%29 = load i64, i64* %28, align 8, !tbaa !10
%30 = lshr i64 %29, 32
%31 = trunc i64 %30 to i4
switch i4 %31, label %43 [
i4 1, label %32
i4 0, label %38
]
; <label>:32: ; preds = %27
%33 = trunc i64 %29 to i32
%34 = sitofp i32 %33 to double
%35 = fcmp une double %8, %34
%36 = zext i1 %35 to i64
%37 = or i64 %36, -64424509440
br label %43
; <label>:38: ; preds = %27
%39 = bitcast i64 %29 to double
%40 = fcmp une double %8, %39
%41 = zext i1 %40 to i64
%42 = or i64 %41, -64424509440
br label %43
; <label>:43: ; preds = %38, %32, %27, %20, %14, %9, %3
%44 = phi i64 [ undef, %3 ], [ undef, %27 ], [ %42, %38 ], [ %37, %32 ], [ undef, %9 ], [ %26, %20 ], [ %19, %14 ]
%45 = bitcast %union.UnionType* %0 to i64*
store i64 %44, i64* %45, align 8
ret void
}
; Function Attrs: minsize noinline norecurse nounwind optsize
define hidden void @Object_gtObject(%union.UnionType* noalias nocapture sret, %union.UnionType* nocapture readonly, %union.UnionType* nocapture readonly) local_unnamed_addr #4 {
%4 = bitcast %union.UnionType* %1 to i64*
%5 = load i64, i64* %4, align 8, !tbaa !10
%6 = lshr i64 %5, 32
%7 = trunc i64 %6 to i4
%8 = bitcast i64 %5 to double
switch i4 %7, label %43 [
i4 1, label %9
i4 0, label %27
]
; <label>:9: ; preds = %3
%10 = bitcast %union.UnionType* %2 to i64*
%11 = load i64, i64* %10, align 8, !tbaa !10
%12 = lshr i64 %11, 32
%13 = trunc i64 %12 to i4
switch i4 %13, label %43 [
i4 1, label %14
i4 0, label %20
]
; <label>:14: ; preds = %9
%15 = trunc i64 %5 to i32
%16 = trunc i64 %11 to i32
%17 = icmp sgt i32 %15, %16
%18 = zext i1 %17 to i64
%19 = or i64 %18, -64424509440
br label %43
; <label>:20: ; preds = %9
%21 = bitcast i64 %11 to double
%22 = trunc i64 %5 to i32
%23 = sitofp i32 %22 to double
%24 = fcmp olt double %21, %23
%25 = zext i1 %24 to i64
%26 = or i64 %25, -64424509440
br label %43
; <label>:27: ; preds = %3
%28 = bitcast %union.UnionType* %2 to i64*
%29 = load i64, i64* %28, align 8, !tbaa !10
%30 = lshr i64 %29, 32
%31 = trunc i64 %30 to i4
switch i4 %31, label %43 [
i4 1, label %32
i4 0, label %38
]
; <label>:32: ; preds = %27
%33 = trunc i64 %29 to i32
%34 = sitofp i32 %33 to double
%35 = fcmp ogt double %8, %34
%36 = zext i1 %35 to i64
%37 = or i64 %36, -64424509440
br label %43
; <label>:38: ; preds = %27
%39 = bitcast i64 %29 to double
%40 = fcmp ogt double %8, %39
%41 = zext i1 %40 to i64
%42 = or i64 %41, -64424509440
br label %43
; <label>:43: ; preds = %38, %32, %27, %20, %14, %9, %3
%44 = phi i64 [ undef, %3 ], [ undef, %27 ], [ %42, %38 ], [ %37, %32 ], [ undef, %9 ], [ %26, %20 ], [ %19, %14 ]
%45 = bitcast %union.UnionType* %0 to i64*
store i64 %44, i64* %45, align 8
ret void
}
; Function Attrs: minsize noinline norecurse nounwind optsize
define hidden void @Object_ltObject(%union.UnionType* noalias nocapture sret, %union.UnionType* nocapture readonly, %union.UnionType* nocapture readonly) local_unnamed_addr #4 {
%4 = bitcast %union.UnionType* %1 to i64*
%5 = load i64, i64* %4, align 8, !tbaa !10
%6 = lshr i64 %5, 32
%7 = trunc i64 %6 to i4
%8 = bitcast i64 %5 to double
switch i4 %7, label %43 [
i4 1, label %9
i4 0, label %27
]
; <label>:9: ; preds = %3
%10 = bitcast %union.UnionType* %2 to i64*
%11 = load i64, i64* %10, align 8, !tbaa !10
%12 = lshr i64 %11, 32
%13 = trunc i64 %12 to i4
switch i4 %13, label %43 [
i4 1, label %14
i4 0, label %20
]
; <label>:14: ; preds = %9
%15 = trunc i64 %5 to i32
%16 = trunc i64 %11 to i32
%17 = icmp slt i32 %15, %16
%18 = zext i1 %17 to i64
%19 = or i64 %18, -64424509440
br label %43
; <label>:20: ; preds = %9
%21 = bitcast i64 %11 to double
%22 = trunc i64 %5 to i32
%23 = sitofp i32 %22 to double
%24 = fcmp ogt double %21, %23
%25 = zext i1 %24 to i64
%26 = or i64 %25, -64424509440
br label %43
; <label>:27: ; preds = %3
%28 = bitcast %union.UnionType* %2 to i64*
%29 = load i64, i64* %28, align 8, !tbaa !10
%30 = lshr i64 %29, 32
%31 = trunc i64 %30 to i4
switch i4 %31, label %43 [
i4 1, label %32
i4 0, label %38
]
; <label>:32: ; preds = %27
%33 = trunc i64 %29 to i32
%34 = sitofp i32 %33 to double
%35 = fcmp olt double %8, %34
%36 = zext i1 %35 to i64
%37 = or i64 %36, -64424509440
br label %43
; <label>:38: ; preds = %27
%39 = bitcast i64 %29 to double
%40 = fcmp olt double %8, %39
%41 = zext i1 %40 to i64
%42 = or i64 %41, -64424509440
br label %43
; <label>:43: ; preds = %38, %32, %27, %20, %14, %9, %3
%44 = phi i64 [ undef, %3 ], [ undef, %27 ], [ %42, %38 ], [ %37, %32 ], [ undef, %9 ], [ %26, %20 ], [ %19, %14 ]
%45 = bitcast %union.UnionType* %0 to i64*
store i64 %44, i64* %45, align 8
ret void
}
; Function Attrs: minsize noinline norecurse nounwind optsize
define hidden void @Object_addInt(%union.UnionType* noalias nocapture sret, %union.UnionType* nocapture readonly, i32) local_unnamed_addr #4 {
%4 = bitcast %union.UnionType* %1 to i64*
%5 = load i64, i64* %4, align 8, !tbaa !10
%6 = lshr i64 %5, 32
%7 = trunc i64 %6 to i4
switch i4 %7, label %18 [
i4 1, label %8
i4 0, label %13
]
; <label>:8: ; preds = %3
%9 = trunc i64 %5 to i32
%10 = add nsw i32 %9, %2
%11 = sext i32 %10 to i64
%12 = or i64 %11, -64424509440
br label %18
; <label>:13: ; preds = %3
%14 = bitcast i64 %5 to double
%15 = sitofp i32 %2 to double
%16 = fadd double %14, %15
%17 = bitcast double %16 to i64
br label %18
; <label>:18: ; preds = %13, %8, %3
%19 = phi i64 [ undef, %3 ], [ %17, %13 ], [ %12, %8 ]
%20 = bitcast %union.UnionType* %0 to i64*
store i64 %19, i64* %20, align 8
ret void
}
; Function Attrs: minsize noinline norecurse nounwind optsize
define hidden void @Object_subInt(%union.UnionType* noalias nocapture sret, %union.UnionType* nocapture readonly, i32) local_unnamed_addr #4 {
%4 = bitcast %union.UnionType* %1 to i64*
%5 = load i64, i64* %4, align 8, !tbaa !10
%6 = lshr i64 %5, 32
%7 = trunc i64 %6 to i4
switch i4 %7, label %18 [
i4 1, label %8
i4 0, label %13
]
; <label>:8: ; preds = %3
%9 = trunc i64 %5 to i32
%10 = sub nsw i32 %9, %2
%11 = sext i32 %10 to i64
%12 = or i64 %11, -64424509440
br label %18
; <label>:13: ; preds = %3
%14 = bitcast i64 %5 to double
%15 = sitofp i32 %2 to double
%16 = fsub double %14, %15
%17 = bitcast double %16 to i64
br label %18
; <label>:18: ; preds = %13, %8, %3
%19 = phi i64 [ undef, %3 ], [ %17, %13 ], [ %12, %8 ]
%20 = bitcast %union.UnionType* %0 to i64*
store i64 %19, i64* %20, align 8
ret void
}
; Function Attrs: minsize noinline norecurse nounwind optsize
define hidden void @Object_mulInt(%union.UnionType* noalias nocapture sret, %union.UnionType* nocapture readonly, i32) local_unnamed_addr #4 {
%4 = bitcast %union.UnionType* %1 to i64*
%5 = load i64, i64* %4, align 8, !tbaa !10
%6 = lshr i64 %5, 32
%7 = trunc i64 %6 to i4
switch i4 %7, label %18 [
i4 1, label %8
i4 0, label %13
]
; <label>:8: ; preds = %3
%9 = trunc i64 %5 to i32
%10 = mul nsw i32 %9, %2
%11 = sext i32 %10 to i64
%12 = or i64 %11, -64424509440
br label %18
; <label>:13: ; preds = %3
%14 = bitcast i64 %5 to double
%15 = sitofp i32 %2 to double
%16 = fmul double %14, %15
%17 = bitcast double %16 to i64
br label %18
; <label>:18: ; preds = %13, %8, %3
%19 = phi i64 [ undef, %3 ], [ %17, %13 ], [ %12, %8 ]
%20 = bitcast %union.UnionType* %0 to i64*
store i64 %19, i64* %20, align 8
ret void
}
; Function Attrs: minsize noinline norecurse nounwind optsize
define hidden void @Object_divInt(%union.UnionType* noalias nocapture sret, %union.UnionType* nocapture readonly, i32) local_unnamed_addr #4 {
%4 = bitcast %union.UnionType* %1 to i64*
%5 = load i64, i64* %4, align 8, !tbaa !10
%6 = lshr i64 %5, 32
%7 = trunc i64 %6 to i4
switch i4 %7, label %18 [
i4 1, label %8
i4 0, label %13
]
; <label>:8: ; preds = %3
%9 = trunc i64 %5 to i32
%10 = sdiv i32 %9, %2
%11 = sext i32 %10 to i64
%12 = or i64 %11, -64424509440
br label %18
; <label>:13: ; preds = %3
%14 = bitcast i64 %5 to double
%15 = sitofp i32 %2 to double
%16 = fdiv double %14, %15
%17 = bitcast double %16 to i64
br label %18
; <label>:18: ; preds = %13, %8, %3
%19 = phi i64 [ undef, %3 ], [ %17, %13 ], [ %12, %8 ]
%20 = bitcast %union.UnionType* %0 to i64*
store i64 %19, i64* %20, align 8
ret void
}
; Function Attrs: minsize noinline norecurse nounwind optsize
define hidden void @Object_eqInt(%union.UnionType* noalias nocapture sret, %union.UnionType* nocapture readonly, i32) local_unnamed_addr #4 {
%4 = bitcast %union.UnionType* %1 to i64*
%5 = load i64, i64* %4, align 8, !tbaa !10
%6 = lshr i64 %5, 32
%7 = trunc i64 %6 to i4
switch i4 %7, label %19 [
i4 1, label %8
i4 0, label %13
]
; <label>:8: ; preds = %3
%9 = trunc i64 %5 to i32
%10 = icmp eq i32 %9, %2
%11 = zext i1 %10 to i64
%12 = or i64 %11, -64424509440
br label %19
; <label>:13: ; preds = %3
%14 = bitcast i64 %5 to double
%15 = sitofp i32 %2 to double
%16 = fcmp oeq double %14, %15
%17 = zext i1 %16 to i64
%18 = or i64 %17, -64424509440
br label %19
; <label>:19: ; preds = %13, %8, %3
%20 = phi i64 [ undef, %3 ], [ %18, %13 ], [ %12, %8 ]
%21 = bitcast %union.UnionType* %0 to i64*
store i64 %20, i64* %21, align 8
ret void
}
; Function Attrs: minsize noinline norecurse nounwind optsize
define hidden void @Object_neInt(%union.UnionType* noalias nocapture sret, %union.UnionType* nocapture readonly, i32) local_unnamed_addr #4 {
%4 = bitcast %union.UnionType* %1 to i64*
%5 = load i64, i64* %4, align 8, !tbaa !10
%6 = lshr i64 %5, 32
%7 = trunc i64 %6 to i4
switch i4 %7, label %19 [
i4 1, label %8
i4 0, label %13
]
; <label>:8: ; preds = %3
%9 = trunc i64 %5 to i32
%10 = icmp ne i32 %9, %2
%11 = zext i1 %10 to i64
%12 = or i64 %11, -64424509440
br label %19
; <label>:13: ; preds = %3
%14 = bitcast i64 %5 to double
%15 = sitofp i32 %2 to double
%16 = fcmp une double %14, %15
%17 = zext i1 %16 to i64
%18 = or i64 %17, -64424509440
br label %19
; <label>:19: ; preds = %13, %8, %3
%20 = phi i64 [ undef, %3 ], [ %18, %13 ], [ %12, %8 ]
%21 = bitcast %union.UnionType* %0 to i64*
store i64 %20, i64* %21, align 8
ret void
}
; Function Attrs: minsize noinline norecurse nounwind optsize
define hidden void @Object_gtInt(%union.UnionType* noalias nocapture sret, %union.UnionType* nocapture readonly, i32) local_unnamed_addr #4 {
%4 = bitcast %union.UnionType* %1 to i64*
%5 = load i64, i64* %4, align 8, !tbaa !10
%6 = lshr i64 %5, 32
%7 = trunc i64 %6 to i4
switch i4 %7, label %19 [
i4 1, label %8
i4 0, label %13
]
; <label>:8: ; preds = %3
%9 = trunc i64 %5 to i32
%10 = icmp sgt i32 %9, %2
%11 = zext i1 %10 to i64
%12 = or i64 %11, -64424509440
br label %19
; <label>:13: ; preds = %3
%14 = bitcast i64 %5 to double
%15 = sitofp i32 %2 to double
%16 = fcmp ogt double %14, %15
%17 = zext i1 %16 to i64
%18 = or i64 %17, -64424509440
br label %19
; <label>:19: ; preds = %13, %8, %3
%20 = phi i64 [ undef, %3 ], [ %18, %13 ], [ %12, %8 ]
%21 = bitcast %union.UnionType* %0 to i64*
store i64 %20, i64* %21, align 8
ret void
}
; Function Attrs: minsize noinline norecurse nounwind optsize
define hidden void @Object_ltInt(%union.UnionType* noalias nocapture sret, %union.UnionType* nocapture readonly, i32) local_unnamed_addr #4 {
%4 = bitcast %union.UnionType* %1 to i64*
%5 = load i64, i64* %4, align 8, !tbaa !10
%6 = lshr i64 %5, 32
%7 = trunc i64 %6 to i4
switch i4 %7, label %19 [
i4 1, label %8
i4 0, label %13
]
; <label>:8: ; preds = %3
%9 = trunc i64 %5 to i32
%10 = icmp slt i32 %9, %2
%11 = zext i1 %10 to i64
%12 = or i64 %11, -64424509440
br label %19
; <label>:13: ; preds = %3
%14 = bitcast i64 %5 to double
%15 = sitofp i32 %2 to double
%16 = fcmp olt double %14, %15
%17 = zext i1 %16 to i64
%18 = or i64 %17, -64424509440
br label %19
; <label>:19: ; preds = %13, %8, %3
%20 = phi i64 [ undef, %3 ], [ %18, %13 ], [ %12, %8 ]
%21 = bitcast %union.UnionType* %0 to i64*
store i64 %20, i64* %21, align 8
ret void
}
; Function Attrs: minsize noinline norecurse nounwind optsize
define hidden void @Object_addInt2(%union.UnionType* noalias nocapture sret, i32, %union.UnionType* nocapture readonly) local_unnamed_addr #4 {
%4 = bitcast %union.UnionType* %2 to i64*
%5 = load i64, i64* %4, align 8, !tbaa !10
%6 = lshr i64 %5, 32
%7 = trunc i64 %6 to i4
switch i4 %7, label %18 [
i4 1, label %8
i4 0, label %13
]
; <label>:8: ; preds = %3
%9 = trunc i64 %5 to i32
%10 = add nsw i32 %9, %1
%11 = sext i32 %10 to i64
%12 = or i64 %11, -64424509440
br label %18
; <label>:13: ; preds = %3
%14 = bitcast i64 %5 to double
%15 = sitofp i32 %1 to double
%16 = fadd double %14, %15
%17 = bitcast double %16 to i64
br label %18
; <label>:18: ; preds = %13, %8, %3
%19 = phi i64 [ undef, %3 ], [ %17, %13 ], [ %12, %8 ]
%20 = bitcast %union.UnionType* %0 to i64*
store i64 %19, i64* %20, align 8
ret void
}
; Function Attrs: minsize noinline norecurse nounwind optsize
define hidden void @Object_subInt2(%union.UnionType* noalias nocapture sret, i32, %union.UnionType* nocapture readonly) local_unnamed_addr #4 {
%4 = bitcast %union.UnionType* %2 to i64*
%5 = load i64, i64* %4, align 8, !tbaa !10
%6 = lshr i64 %5, 32
%7 = trunc i64 %6 to i4
switch i4 %7, label %18 [
i4 1, label %8
i4 0, label %13
]
; <label>:8: ; preds = %3
%9 = trunc i64 %5 to i32
%10 = sub nsw i32 %1, %9
%11 = sext i32 %10 to i64
%12 = or i64 %11, -64424509440
br label %18
; <label>:13: ; preds = %3
%14 = bitcast i64 %5 to double
%15 = sitofp i32 %1 to double
%16 = fsub double %15, %14
%17 = bitcast double %16 to i64
br label %18
; <label>:18: ; preds = %13, %8, %3
%19 = phi i64 [ undef, %3 ], [ %17, %13 ], [ %12, %8 ]
%20 = bitcast %union.UnionType* %0 to i64*
store i64 %19, i64* %20, align 8
ret void
}
; Function Attrs: minsize noinline norecurse nounwind optsize
define hidden void @Object_mulInt2(%union.UnionType* noalias nocapture sret, i32, %union.UnionType* nocapture readonly) local_unnamed_addr #4 {
%4 = bitcast %union.UnionType* %2 to i64*
%5 = load i64, i64* %4, align 8, !tbaa !10
%6 = lshr i64 %5, 32
%7 = trunc i64 %6 to i4
switch i4 %7, label %18 [
i4 1, label %8
i4 0, label %13
]
; <label>:8: ; preds = %3
%9 = trunc i64 %5 to i32
%10 = mul nsw i32 %9, %1
%11 = sext i32 %10 to i64
%12 = or i64 %11, -64424509440
br label %18
; <label>:13: ; preds = %3
%14 = bitcast i64 %5 to double
%15 = sitofp i32 %1 to double
%16 = fmul double %14, %15
%17 = bitcast double %16 to i64
br label %18
; <label>:18: ; preds = %13, %8, %3
%19 = phi i64 [ undef, %3 ], [ %17, %13 ], [ %12, %8 ]
%20 = bitcast %union.UnionType* %0 to i64*
store i64 %19, i64* %20, align 8
ret void
}
; Function Attrs: minsize noinline norecurse nounwind optsize
define hidden void @Object_divInt2(%union.UnionType* noalias nocapture sret, i32, %union.UnionType* nocapture readonly) local_unnamed_addr #4 {
%4 = bitcast %union.UnionType* %2 to i64*
%5 = load i64, i64* %4, align 8, !tbaa !10
%6 = lshr i64 %5, 32
%7 = trunc i64 %6 to i4
switch i4 %7, label %18 [
i4 1, label %8
i4 0, label %13
]
; <label>:8: ; preds = %3
%9 = trunc i64 %5 to i32
%10 = sdiv i32 %1, %9
%11 = sext i32 %10 to i64
%12 = or i64 %11, -64424509440
br label %18
; <label>:13: ; preds = %3
%14 = bitcast i64 %5 to double
%15 = sitofp i32 %1 to double
%16 = fdiv double %15, %14
%17 = bitcast double %16 to i64
br label %18
; <label>:18: ; preds = %13, %8, %3
%19 = phi i64 [ undef, %3 ], [ %17, %13 ], [ %12, %8 ]
%20 = bitcast %union.UnionType* %0 to i64*
store i64 %19, i64* %20, align 8
ret void
}
; Function Attrs: minsize noinline norecurse nounwind optsize
define hidden void @Object_eqInt2(%union.UnionType* noalias nocapture sret, i32, %union.UnionType* nocapture readonly) local_unnamed_addr #4 {
%4 = bitcast %union.UnionType* %2 to i64*
%5 = load i64, i64* %4, align 8, !tbaa !10
%6 = lshr i64 %5, 32
%7 = trunc i64 %6 to i4
switch i4 %7, label %19 [
i4 1, label %8
i4 0, label %13
]
; <label>:8: ; preds = %3
%9 = trunc i64 %5 to i32
%10 = icmp eq i32 %9, %1
%11 = zext i1 %10 to i64
%12 = or i64 %11, -64424509440
br label %19
; <label>:13: ; preds = %3
%14 = bitcast i64 %5 to double
%15 = sitofp i32 %1 to double
%16 = fcmp oeq double %14, %15
%17 = zext i1 %16 to i64
%18 = or i64 %17, -64424509440
br label %19
; <label>:19: ; preds = %13, %8, %3
%20 = phi i64 [ undef, %3 ], [ %18, %13 ], [ %12, %8 ]
%21 = bitcast %union.UnionType* %0 to i64*
store i64 %20, i64* %21, align 8
ret void
}
; Function Attrs: minsize noinline norecurse nounwind optsize
define hidden void @Object_neInt2(%union.UnionType* noalias nocapture sret, i32, %union.UnionType* nocapture readonly) local_unnamed_addr #4 {
%4 = bitcast %union.UnionType* %2 to i64*
%5 = load i64, i64* %4, align 8, !tbaa !10
%6 = lshr i64 %5, 32
%7 = trunc i64 %6 to i4
switch i4 %7, label %19 [
i4 1, label %8
i4 0, label %13
]
; <label>:8: ; preds = %3
%9 = trunc i64 %5 to i32
%10 = icmp ne i32 %9, %1
%11 = zext i1 %10 to i64
%12 = or i64 %11, -64424509440
br label %19
; <label>:13: ; preds = %3
%14 = bitcast i64 %5 to double
%15 = sitofp i32 %1 to double
%16 = fcmp une double %14, %15
%17 = zext i1 %16 to i64
%18 = or i64 %17, -64424509440
br label %19
; <label>:19: ; preds = %13, %8, %3
%20 = phi i64 [ undef, %3 ], [ %18, %13 ], [ %12, %8 ]
%21 = bitcast %union.UnionType* %0 to i64*
store i64 %20, i64* %21, align 8
ret void
}
; Function Attrs: minsize noinline norecurse nounwind optsize
define hidden void @Object_gtInt2(%union.UnionType* noalias nocapture sret, i32, %union.UnionType* nocapture readonly) local_unnamed_addr #4 {
%4 = bitcast %union.UnionType* %2 to i64*
%5 = load i64, i64* %4, align 8, !tbaa !10
%6 = lshr i64 %5, 32
%7 = trunc i64 %6 to i4
switch i4 %7, label %19 [
i4 1, label %8
i4 0, label %13
]
; <label>:8: ; preds = %3
%9 = trunc i64 %5 to i32
%10 = icmp slt i32 %9, %1
%11 = zext i1 %10 to i64
%12 = or i64 %11, -64424509440
br label %19
; <label>:13: ; preds = %3
%14 = bitcast i64 %5 to double
%15 = sitofp i32 %1 to double
%16 = fcmp olt double %14, %15
%17 = zext i1 %16 to i64
%18 = or i64 %17, -64424509440
br label %19
; <label>:19: ; preds = %13, %8, %3
%20 = phi i64 [ undef, %3 ], [ %18, %13 ], [ %12, %8 ]
%21 = bitcast %union.UnionType* %0 to i64*
store i64 %20, i64* %21, align 8
ret void
}
; Function Attrs: minsize noinline norecurse nounwind optsize
define hidden void @Object_ltInt2(%union.UnionType* noalias nocapture sret, i32, %union.UnionType* nocapture readonly) local_unnamed_addr #4 {
%4 = bitcast %union.UnionType* %2 to i64*
%5 = load i64, i64* %4, align 8, !tbaa !10
%6 = lshr i64 %5, 32
%7 = trunc i64 %6 to i4
switch i4 %7, label %19 [
i4 1, label %8
i4 0, label %13
]
; <label>:8: ; preds = %3
%9 = trunc i64 %5 to i32
%10 = icmp sgt i32 %9, %1
%11 = zext i1 %10 to i64
%12 = or i64 %11, -64424509440
br label %19
; <label>:13: ; preds = %3
%14 = bitcast i64 %5 to double
%15 = sitofp i32 %1 to double
%16 = fcmp ogt double %14, %15
%17 = zext i1 %16 to i64
%18 = or i64 %17, -64424509440
br label %19
; <label>:19: ; preds = %13, %8, %3
%20 = phi i64 [ undef, %3 ], [ %18, %13 ], [ %12, %8 ]
%21 = bitcast %union.UnionType* %0 to i64*
store i64 %20, i64* %21, align 8
ret void
}
; Function Attrs: minsize noinline norecurse nounwind optsize
define hidden void @Object_addDouble(%union.UnionType* noalias nocapture sret, %union.UnionType* nocapture readonly, double) local_unnamed_addr #4 {
%4 = bitcast %union.UnionType* %1 to i64*
%5 = load i64, i64* %4, align 8, !tbaa !10
%6 = lshr i64 %5, 32
%7 = trunc i64 %6 to i4
switch i4 %7, label %15 [
i4 1, label %8
i4 0, label %12
]
; <label>:8: ; preds = %3
%9 = trunc i64 %5 to i32
%10 = sitofp i32 %9 to double
%11 = fadd double %10, %2
br label %15
; <label>:12: ; preds = %3
%13 = bitcast i64 %5 to double
%14 = fadd double %13, %2
br label %15
; <label>:15: ; preds = %12, %8, %3
%16 = phi double [ undef, %3 ], [ %14, %12 ], [ %11, %8 ]
%17 = bitcast %union.UnionType* %0 to double*
store double %16, double* %17, align 8
ret void
}
; Function Attrs: minsize noinline norecurse nounwind optsize
define hidden void @Object_subDouble(%union.UnionType* noalias nocapture sret, %union.UnionType* nocapture readonly, double) local_unnamed_addr #4 {
%4 = bitcast %union.UnionType* %1 to i64*
%5 = load i64, i64* %4, align 8, !tbaa !10
%6 = lshr i64 %5, 32
%7 = trunc i64 %6 to i4
switch i4 %7, label %15 [
i4 1, label %8
i4 0, label %12
]
; <label>:8: ; preds = %3
%9 = trunc i64 %5 to i32
%10 = sitofp i32 %9 to double
%11 = fsub double %10, %2
br label %15
; <label>:12: ; preds = %3
%13 = bitcast i64 %5 to double
%14 = fsub double %13, %2
br label %15
; <label>:15: ; preds = %12, %8, %3
%16 = phi double [ undef, %3 ], [ %14, %12 ], [ %11, %8 ]
%17 = bitcast %union.UnionType* %0 to double*
store double %16, double* %17, align 8
ret void
}
; Function Attrs: minsize noinline norecurse nounwind optsize
define hidden void @Object_mulDouble(%union.UnionType* noalias nocapture sret, %union.UnionType* nocapture readonly, double) local_unnamed_addr #4 {
%4 = bitcast %union.UnionType* %1 to i64*
%5 = load i64, i64* %4, align 8, !tbaa !10
%6 = lshr i64 %5, 32
%7 = trunc i64 %6 to i4
switch i4 %7, label %15 [
i4 1, label %8
i4 0, label %12
]
; <label>:8: ; preds = %3
%9 = trunc i64 %5 to i32
%10 = sitofp i32 %9 to double
%11 = fmul double %10, %2
br label %15
; <label>:12: ; preds = %3
%13 = bitcast i64 %5 to double
%14 = fmul double %13, %2
br label %15
; <label>:15: ; preds = %12, %8, %3
%16 = phi double [ undef, %3 ], [ %14, %12 ], [ %11, %8 ]
%17 = bitcast %union.UnionType* %0 to double*
store double %16, double* %17, align 8
ret void
}
; Function Attrs: minsize noinline norecurse nounwind optsize
define hidden void @Object_divDouble(%union.UnionType* noalias nocapture sret, %union.UnionType* nocapture readonly, double) local_unnamed_addr #4 {
%4 = bitcast %union.UnionType* %1 to i64*
%5 = load i64, i64* %4, align 8, !tbaa !10
%6 = lshr i64 %5, 32
%7 = trunc i64 %6 to i4
switch i4 %7, label %15 [
i4 1, label %8
i4 0, label %12
]
; <label>:8: ; preds = %3
%9 = trunc i64 %5 to i32
%10 = sitofp i32 %9 to double
%11 = fdiv double %10, %2
br label %15
; <label>:12: ; preds = %3
%13 = bitcast i64 %5 to double
%14 = fdiv double %13, %2
br label %15
; <label>:15: ; preds = %12, %8, %3
%16 = phi double [ undef, %3 ], [ %14, %12 ], [ %11, %8 ]
%17 = bitcast %union.UnionType* %0 to double*
store double %16, double* %17, align 8
ret void
}
; Function Attrs: minsize noinline norecurse nounwind optsize
define hidden void @Object_eqDouble(%union.UnionType* noalias nocapture sret, %union.UnionType* nocapture readonly, double) local_unnamed_addr #4 {
%4 = bitcast %union.UnionType* %1 to i64*
%5 = load i64, i64* %4, align 8, !tbaa !10
%6 = lshr i64 %5, 32
%7 = trunc i64 %6 to i4
switch i4 %7, label %19 [
i4 1, label %8
i4 0, label %14
]
; <label>:8: ; preds = %3
%9 = trunc i64 %5 to i32
%10 = sitofp i32 %9 to double
%11 = fcmp oeq double %10, %2
%12 = zext i1 %11 to i64
%13 = or i64 %12, -64424509440
br label %19
; <label>:14: ; preds = %3
%15 = bitcast i64 %5 to double
%16 = fcmp oeq double %15, %2
%17 = zext i1 %16 to i64
%18 = or i64 %17, -64424509440
br label %19
; <label>:19: ; preds = %14, %8, %3
%20 = phi i64 [ undef, %3 ], [ %18, %14 ], [ %13, %8 ]
%21 = bitcast %union.UnionType* %0 to i64*
store i64 %20, i64* %21, align 8
ret void
}
; Function Attrs: minsize noinline norecurse nounwind optsize
define hidden void @Object_neDouble(%union.UnionType* noalias nocapture sret, %union.UnionType* nocapture readonly, double) local_unnamed_addr #4 {
%4 = bitcast %union.UnionType* %1 to i64*
%5 = load i64, i64* %4, align 8, !tbaa !10
%6 = lshr i64 %5, 32
%7 = trunc i64 %6 to i4
switch i4 %7, label %19 [
i4 1, label %8
i4 0, label %14
]
; <label>:8: ; preds = %3
%9 = trunc i64 %5 to i32
%10 = sitofp i32 %9 to double
%11 = fcmp une double %10, %2
%12 = zext i1 %11 to i64
%13 = or i64 %12, -64424509440
br label %19
; <label>:14: ; preds = %3
%15 = bitcast i64 %5 to double
%16 = fcmp une double %15, %2
%17 = zext i1 %16 to i64
%18 = or i64 %17, -64424509440
br label %19
; <label>:19: ; preds = %14, %8, %3
%20 = phi i64 [ undef, %3 ], [ %18, %14 ], [ %13, %8 ]
%21 = bitcast %union.UnionType* %0 to i64*
store i64 %20, i64* %21, align 8
ret void
}
; Function Attrs: minsize noinline norecurse nounwind optsize
define hidden void @Object_gtDouble(%union.UnionType* noalias nocapture sret, %union.UnionType* nocapture readonly, double) local_unnamed_addr #4 {
%4 = bitcast %union.UnionType* %1 to i64*
%5 = load i64, i64* %4, align 8, !tbaa !10
%6 = lshr i64 %5, 32
%7 = trunc i64 %6 to i4
switch i4 %7, label %19 [
i4 1, label %8
i4 0, label %14
]
; <label>:8: ; preds = %3
%9 = trunc i64 %5 to i32
%10 = sitofp i32 %9 to double
%11 = fcmp ogt double %10, %2
%12 = zext i1 %11 to i64
%13 = or i64 %12, -64424509440
br label %19
; <label>:14: ; preds = %3
%15 = bitcast i64 %5 to double
%16 = fcmp ogt double %15, %2
%17 = zext i1 %16 to i64
%18 = or i64 %17, -64424509440
br label %19
; <label>:19: ; preds = %14, %8, %3
%20 = phi i64 [ undef, %3 ], [ %18, %14 ], [ %13, %8 ]
%21 = bitcast %union.UnionType* %0 to i64*
store i64 %20, i64* %21, align 8
ret void
}
; Function Attrs: minsize noinline norecurse nounwind optsize
define hidden void @Object_ltDouble(%union.UnionType* noalias nocapture sret, %union.UnionType* nocapture readonly, double) local_unnamed_addr #4 {
%4 = bitcast %union.UnionType* %1 to i64*
%5 = load i64, i64* %4, align 8, !tbaa !10
%6 = lshr i64 %5, 32
%7 = trunc i64 %6 to i4
switch i4 %7, label %19 [
i4 1, label %8
i4 0, label %14
]
; <label>:8: ; preds = %3
%9 = trunc i64 %5 to i32
%10 = sitofp i32 %9 to double
%11 = fcmp olt double %10, %2
%12 = zext i1 %11 to i64
%13 = or i64 %12, -64424509440
br label %19
; <label>:14: ; preds = %3
%15 = bitcast i64 %5 to double
%16 = fcmp olt double %15, %2
%17 = zext i1 %16 to i64
%18 = or i64 %17, -64424509440
br label %19
; <label>:19: ; preds = %14, %8, %3
%20 = phi i64 [ undef, %3 ], [ %18, %14 ], [ %13, %8 ]
%21 = bitcast %union.UnionType* %0 to i64*
store i64 %20, i64* %21, align 8
ret void
}
; Function Attrs: minsize noinline norecurse nounwind optsize
define hidden void @Object_addDouble2(%union.UnionType* noalias nocapture sret, double, %union.UnionType* nocapture readonly) local_unnamed_addr #4 {
%4 = bitcast %union.UnionType* %2 to i64*
%5 = load i64, i64* %4, align 8, !tbaa !10
%6 = lshr i64 %5, 32
%7 = trunc i64 %6 to i4
switch i4 %7, label %15 [
i4 1, label %8
i4 0, label %12
]
; <label>:8: ; preds = %3
%9 = trunc i64 %5 to i32
%10 = sitofp i32 %9 to double
%11 = fadd double %10, %1
br label %15
; <label>:12: ; preds = %3
%13 = bitcast i64 %5 to double
%14 = fadd double %13, %1
br label %15
; <label>:15: ; preds = %12, %8, %3
%16 = phi double [ undef, %3 ], [ %14, %12 ], [ %11, %8 ]
%17 = bitcast %union.UnionType* %0 to double*
store double %16, double* %17, align 8
ret void
}
; Function Attrs: minsize noinline norecurse nounwind optsize
define hidden void @Object_subDouble2(%union.UnionType* noalias nocapture sret, double, %union.UnionType* nocapture readonly) local_unnamed_addr #4 {
%4 = bitcast %union.UnionType* %2 to i64*
%5 = load i64, i64* %4, align 8, !tbaa !10
%6 = lshr i64 %5, 32
%7 = trunc i64 %6 to i4
switch i4 %7, label %15 [
i4 1, label %8
i4 0, label %12
]
; <label>:8: ; preds = %3
%9 = trunc i64 %5 to i32
%10 = sitofp i32 %9 to double
%11 = fadd double %10, %1
br label %15
; <label>:12: ; preds = %3
%13 = bitcast i64 %5 to double
%14 = fadd double %13, %1
br label %15
; <label>:15: ; preds = %12, %8, %3
%16 = phi double [ undef, %3 ], [ %14, %12 ], [ %11, %8 ]
%17 = bitcast %union.UnionType* %0 to double*
store double %16, double* %17, align 8
ret void
}
; Function Attrs: minsize noinline norecurse nounwind optsize
define hidden void @Object_mulDouble2(%union.UnionType* noalias nocapture sret, double, %union.UnionType* nocapture readonly) local_unnamed_addr #4 {
%4 = bitcast %union.UnionType* %2 to i64*
%5 = load i64, i64* %4, align 8, !tbaa !10
%6 = lshr i64 %5, 32
%7 = trunc i64 %6 to i4
switch i4 %7, label %15 [
i4 1, label %8
i4 0, label %12
]
; <label>:8: ; preds = %3
%9 = trunc i64 %5 to i32
%10 = sitofp i32 %9 to double
%11 = fmul double %10, %1
br label %15
; <label>:12: ; preds = %3
%13 = bitcast i64 %5 to double
%14 = fmul double %13, %1
br label %15
; <label>:15: ; preds = %12, %8, %3
%16 = phi double [ undef, %3 ], [ %14, %12 ], [ %11, %8 ]
%17 = bitcast %union.UnionType* %0 to double*
store double %16, double* %17, align 8
ret void
}
; Function Attrs: minsize noinline norecurse nounwind optsize
define hidden void @Object_divDouble2(%union.UnionType* noalias nocapture sret, double, %union.UnionType* nocapture readonly) local_unnamed_addr #4 {
%4 = bitcast %union.UnionType* %2 to i64*
%5 = load i64, i64* %4, align 8, !tbaa !10
%6 = lshr i64 %5, 32
%7 = trunc i64 %6 to i4
switch i4 %7, label %15 [
i4 1, label %8
i4 0, label %12
]
; <label>:8: ; preds = %3
%9 = trunc i64 %5 to i32
%10 = sitofp i32 %9 to double
%11 = fdiv double %1, %10
br label %15
; <label>:12: ; preds = %3
%13 = bitcast i64 %5 to double
%14 = fdiv double %1, %13
br label %15
; <label>:15: ; preds = %12, %8, %3
%16 = phi double [ undef, %3 ], [ %14, %12 ], [ %11, %8 ]
%17 = bitcast %union.UnionType* %0 to double*
store double %16, double* %17, align 8
ret void
}
; Function Attrs: minsize noinline norecurse nounwind optsize
define hidden void @Object_eqDouble2(%union.UnionType* noalias nocapture sret, double, %union.UnionType* nocapture readonly) local_unnamed_addr #4 {
%4 = bitcast %union.UnionType* %2 to i64*
%5 = load i64, i64* %4, align 8, !tbaa !10
%6 = lshr i64 %5, 32
%7 = trunc i64 %6 to i4
switch i4 %7, label %19 [
i4 1, label %8
i4 0, label %14
]
; <label>:8: ; preds = %3
%9 = trunc i64 %5 to i32
%10 = sitofp i32 %9 to double
%11 = fcmp oeq double %10, %1
%12 = zext i1 %11 to i64
%13 = or i64 %12, -64424509440
br label %19
; <label>:14: ; preds = %3
%15 = bitcast i64 %5 to double
%16 = fcmp oeq double %15, %1
%17 = zext i1 %16 to i64
%18 = or i64 %17, -64424509440
br label %19
; <label>:19: ; preds = %14, %8, %3
%20 = phi i64 [ undef, %3 ], [ %18, %14 ], [ %13, %8 ]
%21 = bitcast %union.UnionType* %0 to i64*
store i64 %20, i64* %21, align 8
ret void
}
; Function Attrs: minsize noinline norecurse nounwind optsize
define hidden void @Object_neDouble2(%union.UnionType* noalias nocapture sret, double, %union.UnionType* nocapture readonly) local_unnamed_addr #4 {
%4 = bitcast %union.UnionType* %2 to i64*
%5 = load i64, i64* %4, align 8, !tbaa !10
%6 = lshr i64 %5, 32
%7 = trunc i64 %6 to i4
switch i4 %7, label %19 [
i4 1, label %8
i4 0, label %14
]
; <label>:8: ; preds = %3
%9 = trunc i64 %5 to i32
%10 = sitofp i32 %9 to double
%11 = fcmp une double %10, %1
%12 = zext i1 %11 to i64
%13 = or i64 %12, -64424509440
br label %19
; <label>:14: ; preds = %3
%15 = bitcast i64 %5 to double
%16 = fcmp une double %15, %1
%17 = zext i1 %16 to i64
%18 = or i64 %17, -64424509440
br label %19
; <label>:19: ; preds = %14, %8, %3
%20 = phi i64 [ undef, %3 ], [ %18, %14 ], [ %13, %8 ]
%21 = bitcast %union.UnionType* %0 to i64*
store i64 %20, i64* %21, align 8
ret void
}
; Function Attrs: minsize noinline norecurse nounwind optsize
define hidden void @Object_gtDouble2(%union.UnionType* noalias nocapture sret, double, %union.UnionType* nocapture readonly) local_unnamed_addr #4 {
%4 = bitcast %union.UnionType* %2 to i64*
%5 = load i64, i64* %4, align 8, !tbaa !10
%6 = lshr i64 %5, 32
%7 = trunc i64 %6 to i4
switch i4 %7, label %19 [
i4 1, label %8
i4 0, label %14
]
; <label>:8: ; preds = %3
%9 = trunc i64 %5 to i32
%10 = sitofp i32 %9 to double
%11 = fcmp olt double %10, %1
%12 = zext i1 %11 to i64
%13 = or i64 %12, -64424509440
br label %19
; <label>:14: ; preds = %3
%15 = bitcast i64 %5 to double
%16 = fcmp olt double %15, %1
%17 = zext i1 %16 to i64
%18 = or i64 %17, -64424509440
br label %19
; <label>:19: ; preds = %14, %8, %3
%20 = phi i64 [ undef, %3 ], [ %18, %14 ], [ %13, %8 ]
%21 = bitcast %union.UnionType* %0 to i64*
store i64 %20, i64* %21, align 8
ret void
}
; Function Attrs: minsize noinline norecurse nounwind optsize
define hidden void @Object_ltDouble2(%union.UnionType* noalias nocapture sret, double, %union.UnionType* nocapture readonly) local_unnamed_addr #4 {
%4 = bitcast %union.UnionType* %2 to i64*
%5 = load i64, i64* %4, align 8, !tbaa !10
%6 = lshr i64 %5, 32
%7 = trunc i64 %6 to i4
switch i4 %7, label %19 [
i4 1, label %8
i4 0, label %14
]
; <label>:8: ; preds = %3
%9 = trunc i64 %5 to i32
%10 = sitofp i32 %9 to double
%11 = fcmp ogt double %10, %1
%12 = zext i1 %11 to i64
%13 = or i64 %12, -64424509440
br label %19
; <label>:14: ; preds = %3
%15 = bitcast i64 %5 to double
%16 = fcmp ogt double %15, %1
%17 = zext i1 %16 to i64
%18 = or i64 %17, -64424509440
br label %19
; <label>:19: ; preds = %14, %8, %3
%20 = phi i64 [ undef, %3 ], [ %18, %14 ], [ %13, %8 ]
%21 = bitcast %union.UnionType* %0 to i64*
store i64 %20, i64* %21, align 8
ret void
}
; Function Attrs: minsize noinline norecurse nounwind optsize readonly
define hidden i32 @Object_isTrue(%union.UnionType* byval nocapture readonly align 8) local_unnamed_addr #9 {
%2 = bitcast %union.UnionType* %0 to i64*
%3 = load i64, i64* %2, align 8, !tbaa !10
%4 = lshr i64 %3, 32
%5 = trunc i64 %4 to i4
switch i4 %5, label %12 [
i4 1, label %6
i4 0, label %9
]
; <label>:6: ; preds = %1
%7 = trunc i64 %3 to i32
%8 = icmp ne i32 %7, 0
br label %12
; <label>:9: ; preds = %1
%10 = bitcast i64 %3 to double
%11 = fcmp une double %10, 0.000000e+00
br label %12
; <label>:12: ; preds = %9, %6, %1
%13 = phi i1 [ false, %1 ], [ %11, %9 ], [ %8, %6 ]
%14 = zext i1 %13 to i32
ret i32 %14
}
; Function Attrs: minsize noinline norecurse nounwind optsize readonly
define hidden i32 @Value_isTrue(%union.UnionType* nocapture readonly) local_unnamed_addr #9 {
%2 = bitcast %union.UnionType* %0 to i64*
%3 = load i64, i64* %2, align 8, !tbaa !10
%4 = lshr i64 %3, 32
%5 = trunc i64 %4 to i4
switch i4 %5, label %12 [
i4 1, label %6
i4 0, label %9
]
; <label>:6: ; preds = %1
%7 = trunc i64 %3 to i32
%8 = icmp ne i32 %7, 0
br label %12
; <label>:9: ; preds = %1
%10 = bitcast i64 %3 to double
%11 = fcmp une double %10, 0.000000e+00
br label %12
; <label>:12: ; preds = %9, %6, %1
%13 = phi i1 [ false, %1 ], [ %11, %9 ], [ %8, %6 ]
%14 = zext i1 %13 to i32
ret i32 %14
}
; Function Attrs: minsize noinline nounwind optsize
define hidden noalias i8* @int_to_string(i32) local_unnamed_addr #0 {
%2 = alloca [256 x i8], align 16
%3 = bitcast [256 x i8]* %2 to i8*
call void @llvm.lifetime.start.p0i8(i64 256, i8* nonnull %3) #3
call void @llvm.memset.p0i8.i32(i8* nonnull align 16 %3, i8 0, i32 256, i1 false)
%4 = call i32 (i8*, i32, i8*, ...) @snprintf(i8* nonnull %3, i32 256, i8* getelementptr inbounds ([3 x i8], [3 x i8]* @.str.38, i32 0, i32 0), i32 %0) #15
%5 = call i32 @strlen(i8* nonnull %3) #15
%6 = add i32 %5, 1
%7 = tail call i8* @malloc(i32 %6) #15
call void @llvm.memcpy.p0i8.p0i8.i32(i8* align 1 %7, i8* nonnull align 1 %3, i32 %6, i1 false)
call void @llvm.lifetime.end.p0i8(i64 256, i8* nonnull %3) #3
ret i8* %7
}
; Function Attrs: argmemonly nounwind
declare void @llvm.memset.p0i8.i32(i8* nocapture writeonly, i8, i32, i1) #7
; Function Attrs: minsize nounwind optsize
declare i32 @snprintf(i8* nocapture, i32, i8* nocapture readonly, ...) local_unnamed_addr #1
; Function Attrs: minsize noinline nounwind optsize
define hidden noalias i8* @double_to_string(double) local_unnamed_addr #0 {
%2 = alloca [256 x i8], align 16
%3 = bitcast [256 x i8]* %2 to i8*
call void @llvm.lifetime.start.p0i8(i64 256, i8* nonnull %3) #3
call void @llvm.memset.p0i8.i32(i8* nonnull align 16 %3, i8 0, i32 256, i1 false)
%4 = call i32 (i8*, i32, i8*, ...) @snprintf(i8* nonnull %3, i32 256, i8* getelementptr inbounds ([3 x i8], [3 x i8]* @.str.39, i32 0, i32 0), double %0) #15
%5 = call i32 @strlen(i8* nonnull %3) #15
%6 = add i32 %5, 1
%7 = tail call i8* @malloc(i32 %6) #15
call void @llvm.memcpy.p0i8.p0i8.i32(i8* align 1 %7, i8* nonnull align 1 %3, i32 %6, i1 false)
call void @llvm.lifetime.end.p0i8(i64 256, i8* nonnull %3) #3
ret i8* %7
}
; Function Attrs: minsize noinline nounwind optsize
define hidden void @expandVariable(%union.UnionType* noalias nocapture sret, i8* nocapture readonly, ...) local_unnamed_addr #0 {
%3 = alloca i8*, align 4
%4 = load %struct._IO_FILE*, %struct._IO_FILE** @stderr, align 4, !tbaa !9
%5 = tail call i32 @fwrite(i8* getelementptr inbounds ([23 x i8], [23 x i8]* @.str.40, i32 0, i32 0), i32 22, i32 1, %struct._IO_FILE* %4) #16
%6 = bitcast i8** %3 to i8*
call void @llvm.lifetime.start.p0i8(i64 4, i8* nonnull %6) #3
call void @llvm.va_start(i8* nonnull %6)
br label %7
; <label>:7: ; preds = %15, %2
%8 = phi i32 [ %20, %15 ], [ 0, %2 ]
%9 = phi i8* [ %16, %15 ], [ %1, %2 ]
br label %10
; <label>:10: ; preds = %13, %7
%11 = phi i8* [ %14, %13 ], [ %9, %7 ]
%12 = load i8, i8* %11, align 1, !tbaa !10
switch i8 %12, label %13 [
i8 0, label %21
i8 37, label %15
]
; <label>:13: ; preds = %10
%14 = getelementptr inbounds i8, i8* %11, i32 1
br label %10
; <label>:15: ; preds = %10
%16 = getelementptr inbounds i8, i8* %11, i32 1
%17 = load i8, i8* %16, align 1, !tbaa !10
%18 = icmp eq i8 %17, 115
%19 = zext i1 %18 to i32
%20 = add i32 %8, %19
br label %7
; <label>:21: ; preds = %10
%22 = call i8* @llvm.stacksave()
%23 = alloca i8*, i32 %8, align 16
br label %24
; <label>:24: ; preds = %55, %21
%25 = phi i32 [ 0, %21 ], [ %58, %55 ]
%26 = phi i8* [ %1, %21 ], [ %59, %55 ]
%27 = load i8, i8* %26, align 1, !tbaa !10
switch i8 %27, label %55 [
i8 0, label %60
i8 37, label %28
]
; <label>:28: ; preds = %24
%29 = getelementptr inbounds i8, i8* %26, i32 1
%30 = load i8, i8* %29, align 1, !tbaa !10
%31 = icmp eq i8 %30, 115
br i1 %31, label %32, label %55
; <label>:32: ; preds = %28
%33 = load i8*, i8** %3, align 4
%34 = getelementptr inbounds i8, i8* %33, i32 4
store i8* %34, i8** %3, align 4
%35 = bitcast i8* %33 to i64**
%36 = load i64*, i64** %35, align 4
%37 = load i64, i64* %36, align 8, !tbaa !10
%38 = lshr i64 %37, 32
%39 = trunc i64 %38 to i4
switch i4 %39, label %52 [
i4 1, label %40
i4 0, label %43
i4 2, label %46
]
; <label>:40: ; preds = %32
%41 = trunc i64 %37 to i32
%42 = call i8* @int_to_string(i32 %41) #15
br label %52
; <label>:43: ; preds = %32
%44 = bitcast i64 %37 to double
%45 = call i8* @double_to_string(double %44) #15
br label %52
; <label>:46: ; preds = %32
%47 = trunc i64 %37 to i32
%48 = and i32 %47, 268435455
%49 = inttoptr i32 %48 to %struct._String*
%50 = getelementptr inbounds %struct._String, %struct._String* %49, i32 0, i32 1
%51 = load i8*, i8** %50, align 4, !tbaa !11
br label %52
; <label>:52: ; preds = %46, %43, %40, %32
%53 = phi i8* [ null, %32 ], [ %51, %46 ], [ %45, %43 ], [ %42, %40 ]
store i8* %53, i8** %23, align 16, !tbaa !9
%54 = call i32 @strlen(i8* %53) #15
br label %55
; <label>:55: ; preds = %52, %28, %24
%56 = phi i32 [ %54, %52 ], [ 1, %24 ], [ 1, %28 ]
%57 = phi i8* [ %29, %52 ], [ %26, %24 ], [ %26, %28 ]
%58 = add i32 %56, %25
%59 = getelementptr inbounds i8, i8* %57, i32 1
br label %24
; <label>:60: ; preds = %24
%61 = alloca i8, i32 %25, align 16
br label %62
; <label>:62: ; preds = %91, %60
%63 = phi i32 [ 0, %60 ], [ %94, %91 ]
%64 = phi i32 [ 0, %60 ], [ %95, %91 ]
%65 = phi i8* [ %1, %60 ], [ %96, %91 ]
%66 = load i8, i8* %65, align 1, !tbaa !10
switch i8 %66, label %85 [
i8 0, label %97
i8 37, label %67
]
; <label>:67: ; preds = %62
%68 = getelementptr inbounds i8, i8* %65, i32 1
%69 = load i8, i8* %68, align 1, !tbaa !10
%70 = icmp eq i8 %69, 115
br i1 %70, label %71, label %85
; <label>:71: ; preds = %67
%72 = getelementptr inbounds i8*, i8** %23, i32 %63
%73 = load i8*, i8** %72, align 4, !tbaa !9
%74 = call i32 @strlen(i8* %73) #15
br label %75
; <label>:75: ; preds = %79, %71
%76 = phi i32 [ %63, %71 ], [ %83, %79 ]
%77 = phi i32 [ 0, %71 ], [ %84, %79 ]
%78 = icmp eq i32 %77, %74
br i1 %78, label %89, label %79
; <label>:79: ; preds = %75
%80 = getelementptr inbounds i8, i8* %73, i32 %77
%81 = load i8, i8* %80, align 1, !tbaa !10
%82 = getelementptr inbounds i8, i8* %61, i32 %76
store i8 %81, i8* %82, align 1, !tbaa !10
%83 = add i32 %76, 1
%84 = add i32 %77, 1
br label %75
; <label>:85: ; preds = %67, %62
%86 = getelementptr inbounds i8, i8* %1, i32 %64
%87 = load i8, i8* %86, align 1, !tbaa !10
%88 = getelementptr inbounds i8, i8* %61, i32 %63
store i8 %87, i8* %88, align 1, !tbaa !10
br label %91
; <label>:89: ; preds = %75
%90 = add i32 %74, %63
br label %91
; <label>:91: ; preds = %89, %85
%92 = phi i32 [ %63, %85 ], [ %90, %89 ]
%93 = phi i8* [ %65, %85 ], [ %68, %89 ]
%94 = add i32 %92, 1
%95 = add i32 %64, 1
%96 = getelementptr inbounds i8, i8* %93, i32 1
br label %62
; <label>:97: ; preds = %62
%98 = call i32 (%struct._IO_FILE*, i8*, ...) @fprintf(%struct._IO_FILE* %4, i8* getelementptr inbounds ([12 x i8], [12 x i8]* @.str.41, i32 0, i32 0), i8* nonnull %61) #13
call void @new_String(%union.UnionType* sret %0, i8* nonnull %61) #15
call void @llvm.stackrestore(i8* %22)
call void @llvm.lifetime.end.p0i8(i64 4, i8* nonnull %6) #3
ret void
}
; Function Attrs: nounwind
declare void @llvm.va_start(i8*) #3
; Function Attrs: nounwind
declare i8* @llvm.stacksave() #3
; Function Attrs: nounwind
declare void @llvm.stackrestore(i8*) #3
; Function Attrs: minsize noinline nounwind optsize
define hidden void @new_FFI(%union.UnionType* noalias nocapture sret, i8*, i8*) local_unnamed_addr #0 {
%4 = alloca %struct._Array, align 4
%5 = alloca %union.UnionType, align 8
%6 = alloca %union.UnionType, align 8
%7 = tail call %struct._Object* @fetch_object() #15
%8 = bitcast %struct._Array* %4 to i8*
call void @llvm.lifetime.start.p0i8(i64 12, i8* nonnull %8) #3
%9 = getelementptr inbounds %struct._Array, %struct._Array* %4, i32 0, i32 2
store i32 0, i32* %9, align 4, !tbaa !2
%10 = getelementptr inbounds %struct._Array, %struct._Array* %4, i32 0, i32 1
store %union.UnionType** null, %union.UnionType*** %10, align 4, !tbaa !8
%11 = bitcast %union.UnionType* %5 to i8*
call void @llvm.lifetime.start.p0i8(i64 8, i8* nonnull %11) #3
call void @new_Hash(%union.UnionType* nonnull sret %6, %struct._Array* nonnull %4) #15
call void @new_HashRef(%union.UnionType* nonnull sret %5, %union.UnionType* byval nonnull align 8 %6) #15
%12 = tail call %struct._Package* @get_pkg(i8* %1) #15
%13 = bitcast %struct._Object* %7 to i32*
store i32 12, i32* %13, align 8, !tbaa !36
%14 = getelementptr inbounds %struct._Object, %struct._Object* %7, i32 0, i32 1
%15 = bitcast %union.UnionType* %5 to i64*
%16 = bitcast %union.UnionType* %14 to i64*
%17 = load i64, i64* %15, align 8
store i64 %17, i64* %16, align 8
%18 = getelementptr inbounds %struct._Object, %struct._Object* %7, i32 0, i32 2
%19 = bitcast i8** %18 to %struct._Package**
store %struct._Package* %12, %struct._Package** %19, align 8, !tbaa !38
%20 = getelementptr inbounds %struct._Object, %struct._Object* %7, i32 0, i32 3
store i8* %1, i8** %20, align 4, !tbaa !39
%21 = getelementptr inbounds %struct._Object, %struct._Object* %7, i32 0, i32 4
store i8* %2, i8** %21, align 8, !tbaa !40
%22 = ptrtoint %struct._Object* %7 to i32
%23 = zext i32 %22 to i64
%24 = or i64 %23, -17179869184
%25 = bitcast %union.UnionType* %0 to i64*
store i64 %24, i64* %25, align 8
call void @llvm.lifetime.end.p0i8(i64 8, i8* nonnull %11) #3
call void @llvm.lifetime.end.p0i8(i64 12, i8* nonnull %8) #3
ret void
}
define i64 @main(...) {
entrypoint:
tail call void @global_init()
%args = alloca %union.UnionType*, i64 1
%string = alloca %union.UnionType, align 8
%0 = call i64 bitcast (void (%union.UnionType*, i8*)* @new_String to i64 (%union.UnionType*, i8*)*)(%union.UnionType* %string, i8* getelementptr inbounds ([13 x i8], [13 x i8]* @0, i32 0, i32 0))
%get_idx1 = bitcast %union.UnionType** %args to %union.UnionType**
store %union.UnionType* %string, %union.UnionType** %get_idx1
%array = alloca %ArrayObject
%array_type2 = bitcast %ArrayObject* %array to i32*
%array_list = getelementptr inbounds %ArrayObject, %ArrayObject* %array, i32 0, i32 1
%array_size = getelementptr inbounds %ArrayObject, %ArrayObject* %array, i32 0, i32 2
store i32 3, i32* %array_type2
store %union.UnionType** %args, %union.UnionType*** %array_list
store i64 1, i64* %array_size
%result = alloca %union.UnionType, align 8
call void bitcast (void (%union.UnionType*, %struct._Array*)* @say to void (%union.UnionType*, %ArrayObject*)*)(%union.UnionType* %result, %ArrayObject* %array)
ret i64 0
}
attributes #0 = { minsize noinline nounwind optsize "correctly-rounded-divide-sqrt-fp-math"="false" "disable-tail-calls"="false" "less-precise-fpmad"="false" "no-frame-pointer-elim"="false" "no-infs-fp-math"="false" "no-jump-tables"="false" "no-nans-fp-math"="false" "no-signed-zeros-fp-math"="false" "no-trapping-math"="false" "stack-protector-buffer-size"="8" "target-cpu"="generic" "unsafe-fp-math"="false" "use-soft-float"="false" }
attributes #1 = { minsize nounwind optsize "correctly-rounded-divide-sqrt-fp-math"="false" "disable-tail-calls"="false" "less-precise-fpmad"="false" "no-frame-pointer-elim"="false" "no-infs-fp-math"="false" "no-nans-fp-math"="false" "no-signed-zeros-fp-math"="false" "no-trapping-math"="false" "stack-protector-buffer-size"="8" "target-cpu"="generic" "unsafe-fp-math"="false" "use-soft-float"="false" }
attributes #2 = { minsize noreturn optsize "correctly-rounded-divide-sqrt-fp-math"="false" "disable-tail-calls"="false" "less-precise-fpmad"="false" "no-frame-pointer-elim"="false" "no-infs-fp-math"="false" "no-nans-fp-math"="false" "no-signed-zeros-fp-math"="false" "no-trapping-math"="false" "stack-protector-buffer-size"="8" "target-cpu"="generic" "unsafe-fp-math"="false" "use-soft-float"="false" }
attributes #3 = { nounwind }
attributes #4 = { minsize noinline norecurse nounwind optsize "correctly-rounded-divide-sqrt-fp-math"="false" "disable-tail-calls"="false" "less-precise-fpmad"="false" "no-frame-pointer-elim"="false" "no-infs-fp-math"="false" "no-jump-tables"="false" "no-nans-fp-math"="false" "no-signed-zeros-fp-math"="false" "no-trapping-math"="false" "stack-protector-buffer-size"="8" "target-cpu"="generic" "unsafe-fp-math"="false" "use-soft-float"="false" }
attributes #5 = { minsize nounwind optsize readonly "correctly-rounded-divide-sqrt-fp-math"="false" "disable-tail-calls"="false" "less-precise-fpmad"="false" "no-frame-pointer-elim"="false" "no-infs-fp-math"="false" "no-nans-fp-math"="false" "no-signed-zeros-fp-math"="false" "no-trapping-math"="false" "stack-protector-buffer-size"="8" "target-cpu"="generic" "unsafe-fp-math"="false" "use-soft-float"="false" }
attributes #6 = { minsize optsize "correctly-rounded-divide-sqrt-fp-math"="false" "disable-tail-calls"="false" "less-precise-fpmad"="false" "no-frame-pointer-elim"="false" "no-infs-fp-math"="false" "no-nans-fp-math"="false" "no-signed-zeros-fp-math"="false" "no-trapping-math"="false" "stack-protector-buffer-size"="8" "target-cpu"="generic" "unsafe-fp-math"="false" "use-soft-float"="false" }
attributes #7 = { argmemonly nounwind }
attributes #8 = { argmemonly minsize nounwind optsize readonly "correctly-rounded-divide-sqrt-fp-math"="false" "disable-tail-calls"="false" "less-precise-fpmad"="false" "no-frame-pointer-elim"="false" "no-infs-fp-math"="false" "no-nans-fp-math"="false" "no-signed-zeros-fp-math"="false" "no-trapping-math"="false" "stack-protector-buffer-size"="8" "target-cpu"="generic" "unsafe-fp-math"="false" "use-soft-float"="false" }
attributes #9 = { minsize noinline norecurse nounwind optsize readonly "correctly-rounded-divide-sqrt-fp-math"="false" "disable-tail-calls"="false" "less-precise-fpmad"="false" "no-frame-pointer-elim"="false" "no-infs-fp-math"="false" "no-jump-tables"="false" "no-nans-fp-math"="false" "no-signed-zeros-fp-math"="false" "no-trapping-math"="false" "stack-protector-buffer-size"="8" "target-cpu"="generic" "unsafe-fp-math"="false" "use-soft-float"="false" }
attributes #10 = { nounwind readnone speculatable }
attributes #11 = { minsize nounwind optsize readnone "correctly-rounded-divide-sqrt-fp-math"="false" "disable-tail-calls"="false" "less-precise-fpmad"="false" "no-frame-pointer-elim"="false" "no-infs-fp-math"="false" "no-nans-fp-math"="false" "no-signed-zeros-fp-math"="false" "no-trapping-math"="false" "stack-protector-buffer-size"="8" "target-cpu"="generic" "unsafe-fp-math"="false" "use-soft-float"="false" }
attributes #12 = { minsize noinline nounwind optsize readonly "correctly-rounded-divide-sqrt-fp-math"="false" "disable-tail-calls"="false" "less-precise-fpmad"="false" "no-frame-pointer-elim"="false" "no-infs-fp-math"="false" "no-jump-tables"="false" "no-nans-fp-math"="false" "no-signed-zeros-fp-math"="false" "no-trapping-math"="false" "stack-protector-buffer-size"="8" "target-cpu"="generic" "unsafe-fp-math"="false" "use-soft-float"="false" }
attributes #13 = { cold minsize optsize }
attributes #14 = { minsize noreturn nounwind optsize }
attributes #15 = { minsize optsize }
attributes #16 = { cold }
attributes #17 = { minsize nounwind optsize }
attributes #18 = { minsize nounwind optsize readnone }
!llvm.ident = !{!0}
!llvm.module.flags = !{!1}
!0 = !{!"clang version 7.0.0 (https://llvm.org/git/clang.git d708604f14579e08854da5978099926d3f7403da) (https://llvm.org/git/llvm.git 9188313527c3590c75d9c17a056de904e53aec17)"}
!1 = !{i32 1, !"wchar_size", i32 4}
!2 = !{!3, !4, i64 8}
!3 = !{!"_Array", !4, i64 0, !7, i64 4, !4, i64 8}
!4 = !{!"int", !5, i64 0}
!5 = !{!"omnipotent char", !6, i64 0}
!6 = !{!"Simple C/C++ TBAA"}
!7 = !{!"any pointer", !5, i64 0}
!8 = !{!3, !7, i64 4}
!9 = !{!7, !7, i64 0}
!10 = !{!5, !5, i64 0}
!11 = !{!12, !7, i64 4}
!12 = !{!"_String", !4, i64 0, !7, i64 4, !4, i64 8, !13, i64 12}
!13 = !{!"long", !5, i64 0}
!14 = !{!15, !7, i64 4}
!15 = !{!"_IOHandlerObject", !4, i64 0, !7, i64 4, !7, i64 8, !7, i64 12}
!16 = !{!15, !7, i64 12}
!17 = !{!15, !7, i64 8}
!18 = !{!4, !4, i64 0}
!19 = !{!12, !4, i64 0}
!20 = !{!12, !4, i64 8}
!21 = !{!12, !13, i64 12}
!22 = !{!23, !4, i64 12}
!23 = !{!"_Hash", !4, i64 0, !7, i64 4, !7, i64 8, !4, i64 12}
!24 = !{!23, !7, i64 8}
!25 = !{!23, !7, i64 4}
!26 = !{!27, !7, i64 20}
!27 = !{!"_BlessedObject", !4, i64 0, !5, i64 8, !7, i64 16, !7, i64 20}
!28 = !{!27, !7, i64 16}
!29 = !{!30, !7, i64 4}
!30 = !{!"_Package", !4, i64 0, !7, i64 4, !7, i64 8, !4, i64 12, !7, i64 16, !7, i64 20}
!31 = !{!30, !7, i64 8}
!32 = !{!30, !7, i64 16}
!33 = !{!30, !7, i64 20}
!34 = !{!35, !7, i64 4}
!35 = !{!"_CodeRef", !4, i64 0, !7, i64 4}
!36 = !{!37, !4, i64 0}
!37 = !{!"_FFIObject", !4, i64 0, !5, i64 8, !7, i64 16, !7, i64 20, !7, i64 24}
!38 = !{!37, !7, i64 16}
!39 = !{!37, !7, i64 20}
!40 = !{!37, !7, i64 24}
This file has been truncated, but you can view the full file.
(module
(type $FUNCSIG$iiii (func (param i32 i32 i32) (result i32)))
(type $FUNCSIG$ii (func (param i32) (result i32)))
(type $FUNCSIG$vi (func (param i32)))
(type $FUNCSIG$vijjjj (func (param i32 i64 i64 i64 i64)))
(type $FUNCSIG$iii (func (param i32 i32) (result i32)))
(type $FUNCSIG$v (func))
(import "env" "__lock" (func $__lock (param i32)))
(import "env" "__syscall140" (func $__syscall140 (param i32 i32) (result i32)))
(import "env" "__syscall146" (func $__syscall146 (param i32 i32) (result i32)))
(import "env" "__syscall54" (func $__syscall54 (param i32 i32) (result i32)))
(import "env" "__syscall6" (func $__syscall6 (param i32 i32) (result i32)))
(import "env" "__unlock" (func $__unlock (param i32)))
(import "env" "sbrk" (func $sbrk (param i32) (result i32)))
(import "env" "memory" (memory $0 256))
(table 5 5 anyfunc)
(elem (i32.const 0) $__wasm_nullptr $__stdio_write $__stdio_close $__stdout_write $__stdio_seek)
(data (i32.const 1072) "%d\00")
(data (i32.const 1088) "%f\00")
(data (i32.const 1104) "ARRAY(%p)\00")
(data (i32.const 1120) "HASH(%p)\00")
(data (i32.const 1136) "CODE(%p)\00")
(data (i32.const 1152) "%s=HASH(%p)\00")
(data (i32.const 1168) "Hello, World\00")
(data (i32.const 1748) "\d8\06\00\00")
(data (i32.const 1752) "\05\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\03\00\00\00\04\00\00\00h\07\00\00\00\04\00\00\00\00\00\00\00\00\00\00\01\00\00\00\00\00\00\00\00\00\00\00\00\00\00\n\ff\ff\ff\ff\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00")
(data (i32.const 2920) "\d8\06\00\00")
(data (i32.const 2928) "\11\00\n\00\11\11\11\00\00\00\00\05\00\00\00\00\00\00\t\00\00\00\00\0b\00\00\00\00\00\00\00\00\11\00\0f\n\11\11\11\03\n\07\00\01\13\t\0b\0b\00\00\t\06\0b\00\00\0b\00\06\11\00\00\00\11\11\11\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\0b\00\00\00\00\00\00\00\00\11\00\n\n\11\11\11\00\n\00\00\02\00\t\0b\00\00\00\t\00\0b\00\00\0b\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\0c\00\00\00\00\00\00\00\00\00\00\00\0c\00\00\00\00\0c\00\00\00\00\t\0c\00\00\00\00\00\0c\00\00\0c\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\0e\00\00\00\00\00\00\00\00\00\00\00\0d\00\00\00\04\0d\00\00\00\00\t\0e\00\00\00\00\00\0e\00\00\0e\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\10\00\00\00\00\00\00\00\00\00\00\00\0f\00\00\00\00\0f\00\00\00\00\t\10\00\00\00\00\00\10\00\00\10\00\00\12\00\00\00\12\12\12\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\12\00\00\00\12\12\12\00\00\00\00\00\00\t\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\0b\00\00\00\00\00\00\00\00\00\00\00\n\00\00\00\00\n\00\00\00\00\t\0b\00\00\00\00\00\0b\00\00\0b\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\0c\00\00\00\00\00\00\00\00\00\00\00\0c\00\00\00\00\0c\00\00\00\00\t\0c\00\00\00\00\00\0c\00\00\0c\00\00")
(data (i32.const 3392) "-+ 0X0x\00")
(data (i32.const 3408) "(null)\00")
(data (i32.const 3424) "-0X+0X 0X-0x+0x 0x\00")
(data (i32.const 3456) "inf\00")
(data (i32.const 3472) "INF\00")
(data (i32.const 3488) "nan\00")
(data (i32.const 3504) "NAN\00")
(data (i32.const 3520) "0123456789ABCDEF")
(data (i32.const 3536) ".\00")
(data (i32.const 3540) "\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\b8\06\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00")
(data (i32.const 3792) "T!\"\19\0d\01\02\03\11K\1c\0c\10\04\0b\1d\12\1e\'hnopqb \05\06\0f\13\14\15\1a\08\16\07($\17\18\t\n\0e\1b\1f%#\83\82}&*+<=>?CGJMXYZ[\\]^_`acdefgijklrstyz{|\00")
(data (i32.const 3888) "Illegal byte sequence\00Domain error\00Result not representable\00Not a tty\00Permission denied\00Operation not permitted\00No such file or directory\00No such process\00File exists\00Value too large for data type\00No space left on device\00Out of memory\00Resource busy\00Interrupted system call\00Resource temporarily unavailable\00Invalid seek\00Cross-device link\00Read-only file system\00Directory not empty\00Connection reset by peer\00Operation timed out\00Connection refused\00Host is down\00Host is unreachable\00Address in use\00Broken pipe\00I/O error\00No such device or address\00Block device required\00No such device\00Not a directory\00Is a directory\00Text file busy\00Exec format error\00Invalid argument\00Argument list too long\00Symbolic link loop\00Filename too long\00Too many open files in system\00No file descriptors available\00Bad file descriptor\00No child process\00Bad address\00File too large\00Too many links\00No locks available\00Resource deadlock would occur\00State not recoverable\00Previous owner died\00Operation canceled\00Function not implemented\00No message of desired type\00Identifier removed\00Device not a stream\00No data available\00Device timeout\00Out of streams resources\00Link has been severed\00Protocol error\00Bad message\00File descriptor in bad state\00Not a socket\00Destination address required\00Message too large\00Protocol wrong type for socket\00Protocol not available\00Protocol not supported\00Socket type not supported\00Not supported\00Protocol family not supported\00Address family not supported by protocol\00Address not available\00Network is down\00Network unreachable\00Connection reset by network\00Connection aborted\00No buffer space available\00Socket is connected\00Socket not connected\00Cannot send after socket shutdown\00Operation already in progress\00Operation in progress\00Stale file handle\00Remote I/O error\00Quota exceeded\00No medium found\00Wrong medium type\00No error information\00\00")
(export "main" (func $main))
(export "__errno_location" (func $__errno_location))
(export "fflush" (func $fflush))
(export "memcpy" (func $memcpy))
(export "memset" (func $memset))
(export "__addtf3" (func $__addtf3))
(export "__ashlti3" (func $__ashlti3))
(export "__letf2" (func $__letf2))
(export "__getf2" (func $__getf2))
(export "__unordtf2" (func $__unordtf2))
(export "__eqtf2" (func $__eqtf2))
(export "__lttf2" (func $__lttf2))
(export "__netf2" (func $__netf2))
(export "__gttf2" (func $__gttf2))
(export "__extenddftf2" (func $__extenddftf2))
(export "__fixtfsi" (func $__fixtfsi))
(export "__fixunstfsi" (func $__fixunstfsi))
(export "__floatsitf" (func $__floatsitf))
(export "__floatunsitf" (func $__floatunsitf))
(export "__lshrti3" (func $__lshrti3))
(export "__multf3" (func $__multf3))
(export "__subtf3" (func $__subtf3))
(export "malloc" (func $malloc))
(export "free" (func $free))
(export "stackSave" (func $stackSave))
(export "stackAlloc" (func $stackAlloc))
(export "stackRestore" (func $stackRestore))
(export "__growWasmMemory" (func $__growWasmMemory))
(export "dynCall_iiii" (func $dynCall_iiii))
(export "dynCall_ii" (func $dynCall_ii))
(func $fetch_object (; 7 ;) (result i32)
(local $0 i32)
(set_local $0
(i32.add
(i32.load offset=1032
(i32.const 0)
)
(i32.const 1)
)
)
(i32.store offset=1032
(i32.const 0)
(get_local $0)
)
(i32.load
(i32.add
(i32.load offset=1056
(i32.const 0)
)
(i32.shl
(get_local $0)
(i32.const 2)
)
)
)
)
(func $new_String (; 8 ;) (param $0 i32) (param $1 i32)
(local $2 i32)
(local $3 i32)
(set_local $2
(call $fetch_object)
)
(i32.store
(get_local $2)
(i32.const 2)
)
(set_local $3
(i32.add
(call $strlen
(get_local $1)
)
(i32.const 1)
)
)
(i32.store offset=8
(get_local $2)
(get_local $3)
)
(set_local $3
(call $malloc
(get_local $3)
)
)
(i32.store offset=4
(get_local $2)
(get_local $3)
)
(drop
(call $memcpy
(get_local $3)
(get_local $1)
(i32.load offset=8
(get_local $2)
)
)
)
(i32.store offset=12
(get_local $2)
(i32.and
(call $make_hash
(get_local $1)
(i32.load offset=8
(get_local $2)
)
)
(i32.const 511)
)
)
(i64.store
(get_local $0)
(i64.or
(i64.extend_u/i32
(get_local $2)
)
(i64.const -60129542144)
)
)
)
(func $make_hash (; 9 ;) (param $0 i32) (param $1 i32) (result i32)
(local $2 i32)
(set_local $2
(i32.const 5381)
)
(block $label$0
(loop $label$1
(br_if $label$0
(i32.eqz
(get_local $1)
)
)
(set_local $1
(i32.add
(get_local $1)
(i32.const -1)
)
)
(set_local $2
(i32.add
(i32.mul
(get_local $2)
(i32.const 33)
)
(i32.load8_s
(get_local $0)
)
)
)
(set_local $0
(i32.add
(get_local $0)
(i32.const 1)
)
)
(br $label$1)
)
)
(get_local $2)
)
(func $new_Undef (; 10 ;)
(i64.store offset=1040
(i32.const 0)
(i64.or
(i64.extend_u/i32
(call $calloc
(i32.const 4)
(i32.const 1)
)
)
(i64.const -12884901888)
)
)
)
(func $print_object (; 11 ;) (param $0 i32) (param $1 i32)
(local $2 i32)
(local $3 i64)
(local $4 i32)
(set_local $4
(i32.sub
(i32.load offset=1024
(i32.const 0)
)
(i32.const 96)
)
)
(i32.store offset=1024
(i32.const 0)
(get_local $4)
)
(set_local $3
(i64.load
(get_local $1)
)
)
(set_local $1
(i32.and
(i32.wrap/i64
(i64.shr_u
(get_local $3)
(i64.const 32)
)
)
(i32.const 15)
)
)
(block $label$0
(br_if $label$0
(i32.gt_u
(get_local $1)
(i32.const 9)
)
)
(set_local $2
(i32.load offset=1748
(i32.const 0)
)
)
(set_local $0
(select
(get_local $0)
(get_local $2)
(get_local $0)
)
)
(block $label$1
(block $label$2
(block $label$3
(block $label$4
(block $label$5
(block $label$6
(block $label$7
(block $label$8
(block $label$9
(block $label$10
(block $label$11
(br_table $label$11 $label$10 $label$9 $label$8 $label$7 $label$6 $label$5 $label$4 $label$3 $label$2 $label$11
(get_local $1)
)
)
(i64.store offset=16
(get_local $4)
(get_local $3)
)
(drop
(call $fprintf
(get_local $0)
(i32.const 1088)
(i32.add
(get_local $4)
(i32.const 16)
)
)
)
(br $label$0)
)
(i64.store32
(get_local $4)
(get_local $3)
)
(drop
(call $fprintf
(get_local $0)
(i32.const 1072)
(get_local $4)
)
)
(br $label$0)
)
(drop
(call $fputs
(i32.load offset=4
(i32.and
(i32.wrap/i64
(get_local $3)
)
(i32.const 268435455)
)
)
(get_local $0)
)
)
(br $label$0)
)
(set_local $1
(i32.and
(i32.wrap/i64
(get_local $3)
)
(i32.const 268435455)
)
)
(br_if $label$1
(i32.eq
(get_local $0)
(get_local $2)
)
)
(call $_print_with_handler
(get_local $0)
(get_local $1)
)
(br $label$0)
)
(i32.store offset=32
(get_local $4)
(i32.and
(i32.wrap/i64
(get_local $3)
)
(i32.const 268435455)
)
)
(drop
(call $fprintf
(get_local $0)
(i32.const 1104)
(i32.add
(get_local $4)
(i32.const 32)
)
)
)
(br $label$0)
)
(call $print_hash
(get_local $0)
(i32.and
(i32.wrap/i64
(get_local $3)
)
(i32.const 268435455)
)
)
(br $label$0)
)
(i32.store offset=48
(get_local $4)
(i32.and
(i32.wrap/i64
(get_local $3)
)
(i32.const 268435455)
)
)
(drop
(call $fprintf
(get_local $0)
(i32.const 1120)
(i32.add
(get_local $4)
(i32.const 48)
)
)
)
(br $label$0)
)
(i64.store offset=72
(get_local $4)
(i64.load offset=8
(i32.and
(i32.wrap/i64
(get_local $3)
)
(i32.const 268435455)
)
)
)
(call $print_object
(get_local $0)
(i32.add
(get_local $4)
(i32.const 72)
)
)
(br $label$0)
)
(set_local $1
(i32.and
(i32.wrap/i64
(get_local $3)
)
(i32.const 268435455)
)
)
(set_local $2
(i32.load offset=20
(get_local $1)
)
)
(i32.store offset=84
(get_local $4)
(get_local $1)
)
(i32.store offset=80
(get_local $4)
(get_local $2)
)
(drop
(call $fprintf
(get_local $0)
(i32.const 1152)
(i32.add
(get_local $4)
(i32.const 80)
)
)
)
(br $label$0)
)
(i32.store offset=64
(get_local $4)
(i32.and
(i32.wrap/i64
(get_local $3)
)
(i32.const 268435455)
)
)
(drop
(call $fprintf
(get_local $0)
(i32.const 1136)
(i32.add
(get_local $4)
(i32.const 64)
)
)
)
(br $label$0)
)
(call $print
(i32.add
(get_local $4)
(i32.const 88)
)
(get_local $1)
)
)
(i32.store offset=1024
(i32.const 0)
(i32.add
(get_local $4)
(i32.const 96)
)
)
)
(func $_print_with_handler (; 12 ;) (param $0 i32) (param $1 i32)
(local $2 i32)
(local $3 i32)
(local $4 i32)
(set_local $4
(i32.sub
(i32.load offset=1024
(i32.const 0)
)
(i32.const 16)
)
)
(i32.store offset=1024
(i32.const 0)
(get_local $4)
)
(set_local $2
(i32.load offset=8
(get_local $1)
)
)
(set_local $3
(i32.const 0)
)
(block $label$0
(loop $label$1
(br_if $label$0
(i32.eqz
(get_local $2)
)
)
(i64.store offset=8
(get_local $4)
(i64.load
(i32.load
(i32.add
(i32.load
(i32.add
(get_local $1)
(i32.const 4)
)
)
(get_local $3)
)
)
)
)
(call $print_object
(get_local $0)
(i32.add
(get_local $4)
(i32.const 8)
)
)
(set_local $2
(i32.add
(get_local $2)
(i32.const -1)
)
)
(set_local $3
(i32.add
(get_local $3)
(i32.const 4)
)
)
(br $label$1)
)
)
(i32.store offset=1024
(i32.const 0)
(i32.add
(get_local $4)
(i32.const 16)
)
)
)
(func $print (; 13 ;) (param $0 i32) (param $1 i32)
(local $2 i32)
(local $3 i32)
(local $4 i32)
(local $5 i32)
(set_local $5
(i32.sub
(i32.load offset=1024
(i32.const 0)
)
(i32.const 16)
)
)
(i32.store offset=1024
(i32.const 0)
(get_local $5)
)
(set_local $4
(i32.const 0)
)
(set_local $2
(i32.load offset=1748
(i32.const 0)
)
)
(set_local $3
(i32.load offset=8
(get_local $1)
)
)
(block $label$0
(loop $label$1
(br_if $label$0
(i32.eqz
(get_local $3)
)
)
(i64.store offset=8
(get_local $5)
(i64.load
(i32.load
(i32.add
(i32.load
(i32.add
(get_local $1)
(i32.const 4)
)
)
(get_local $4)
)
)
)
)
(call $print_object
(get_local $2)
(i32.add
(get_local $5)
(i32.const 8)
)
)
(set_local $3
(i32.add
(get_local $3)
(i32.const -1)
)
)
(set_local $4
(i32.add
(get_local $4)
(i32.const 4)
)
)
(br $label$1)
)
)
(i64.store
(get_local $0)
(i64.const -64424509440)
)
(i32.store offset=1024
(i32.const 0)
(i32.add
(get_local $5)
(i32.const 16)
)
)
)
(func $print_hash (; 14 ;) (param $0 i32) (param $1 i32)
(local $2 i32)
(local $3 i32)
(local $4 i32)
(local $5 i32)
(local $6 i32)
(set_local $6
(i32.sub
(i32.load offset=1024
(i32.const 0)
)
(i32.const 16)
)
)
(i32.store offset=1024
(i32.const 0)
(get_local $6)
)
(set_local $4
(i32.load offset=12
(get_local $1)
)
)
(set_local $5
(i32.const 0)
)
(set_local $2
(i32.add
(get_local $1)
(i32.const 8)
)
)
(block $label$0
(loop $label$1
(br_if $label$0
(i32.eqz
(get_local $4)
)
)
(set_local $3
(i32.load
(i32.add
(i32.load
(get_local $2)
)
(get_local $5)
)
)
)
(drop
(call $fputs
(i32.load offset=4
(get_local $3)
)
(get_local $0)
)
)
(i64.store offset=8
(get_local $6)
(i64.load
(i32.add
(i32.load
(i32.add
(get_local $1)
(i32.const 4)
)
)
(i32.shl
(i32.load offset=12
(get_local $3)
)
(i32.const 3)
)
)
)
)
(call $print_object
(get_local $0)
(i32.add
(get_local $6)
(i32.const 8)
)
)
(set_local $4
(i32.add
(get_local $4)
(i32.const -1)
)
)
(set_local $5
(i32.add
(get_local $5)
(i32.const 4)
)
)
(br $label$1)
)
)
(i32.store offset=1024
(i32.const 0)
(i32.add
(get_local $6)
(i32.const 16)
)
)
)
(func $say (; 15 ;) (param $0 i32) (param $1 i32)
(local $2 i32)
(set_local $2
(i32.sub
(i32.load offset=1024
(i32.const 0)
)
(i32.const 16)
)
)
(i32.store offset=1024
(i32.const 0)
(get_local $2)
)
(call $print
(i32.add
(get_local $2)
(i32.const 8)
)
(get_local $1)
)
(drop
(call $fputc
(i32.const 10)
(i32.load offset=1748
(i32.const 0)
)
)
)
(i64.store
(get_local $0)
(i64.const -64424509440)
)
(i32.store offset=1024
(i32.const 0)
(i32.add
(get_local $2)
(i32.const 16)
)
)
)
(func $init_table (; 16 ;)
(local $0 i32)
(local $1 i64)
(local $2 i32)
(set_local $0
(call $calloc
(i32.const 8)
(i32.const 512)
)
)
(set_local $2
(i32.const 0)
)
(set_local $1
(i64.load offset=1040
(i32.const 0)
)
)
(block $label$0
(loop $label$1
(br_if $label$0
(i32.eq
(get_local $2)
(i32.const 4096)
)
)
(i64.store
(i32.add
(get_local $0)
(get_local $2)
)
(get_local $1)
)
(set_local $2
(i32.add
(get_local $2)
(i32.const 8)
)
)
(br $label$1)
)
)
(i32.store offset=1048
(i32.const 0)
(get_local $0)
)
)
(func $init_package_map (; 17 ;)
(local $0 i32)
(local $1 i32)
(set_local $0
(call $calloc
(i32.const 16)
(i32.const 1)
)
)
(set_local $1
(call $calloc
(i32.const 8)
(i32.const 512)
)
)
(i32.store offset=4
(get_local $0)
(get_local $1)
)
(drop
(call $memcpy
(get_local $1)
(i32.load offset=1048
(i32.const 0)
)
(i32.const 4096)
)
)
(i32.store offset=8
(get_local $0)
(call $calloc
(i32.const 4)
(i32.const 512)
)
)
(i32.store offset=1052
(i32.const 0)
(get_local $0)
)
)
(func $global_init (; 18 ;)
(call $new_Undef)
(call $init_table)
(call $init_package_map)
(call $make_object_pool)
)
(func $make_object_pool (; 19 ;)
(local $0 i32)
(local $1 i32)
(i32.store offset=1056
(i32.const 0)
(call $calloc
(i32.const 4)
(i32.const 524288)
)
)
(set_local $1
(i32.const 0)
)
(block $label$0
(loop $label$1
(br_if $label$0
(i32.eq
(get_local $1)
(i32.const 2097152)
)
)
(set_local $0
(call $calloc
(i32.const 40)
(i32.const 1)
)
)
(i32.store
(i32.add
(i32.load offset=1056
(i32.const 0)
)
(get_local $1)
)
(get_local $0)
)
(set_local $1
(i32.add
(get_local $1)
(i32.const 4)
)
)
(br $label$1)
)
)
)
(func $main (; 20 ;) (param $0 i32) (result i64)
(local $1 i32)
(set_local $1
(i32.sub
(i32.load offset=1024
(i32.const 0)
)
(i32.const 48)
)
)
(i32.store offset=1024
(i32.const 0)
(get_local $1)
)
(call $global_init)
(drop
(call $.Lbitcast
(i32.add
(get_local $1)
(i32.const 32)
)
(i32.const 1168)
)
)
(i32.store offset=16
(get_local $1)
(i32.const 3)
)
(i64.store offset=24
(get_local $1)
(i64.const 1)
)
(i32.store offset=44
(get_local $1)
(i32.add
(get_local $1)
(i32.const 32)
)
)
(i32.store offset=20
(get_local $1)
(i32.add
(get_local $1)
(i32.const 44)
)
)
(call $say
(i32.add
(get_local $1)
(i32.const 8)
)
(i32.add
(get_local $1)
(i32.const 16)
)
)
(i32.store offset=1024
(i32.const 0)
(i32.add
(get_local $1)
(i32.const 48)
)
)
(i64.const 0)
)
(func $malloc (; 21 ;) (param $0 i32) (result i32)
(local $1 i32)
(local $2 i32)
(local $3 i32)
(local $4 i32)
(local $5 i32)
(local $6 i32)
(local $7 i32)
(local $8 i32)
(local $9 i32)
(local $10 i32)
(local $11 i32)
(local $12 i32)
(local $13 i32)
(set_local $12
(i32.sub
(i32.load offset=1024
(i32.const 0)
)
(i32.const 16)
)
)
(i32.store offset=1024
(i32.const 0)
(get_local $12)
)
(block $label$0
(block $label$1
(block $label$2
(block $label$3
(block $label$4
(block $label$5
(block $label$6
(block $label$7
(block $label$8
(block $label$9
(block $label$10
(block $label$11
(block $label$12
(block $label$13
(block $label$14
(block $label$15
(block $label$16
(block $label$17
(block $label$18
(block $label$19
(block $label$20
(block $label$21
(br_if $label$21
(i32.gt_u
(get_local $0)
(i32.const 244)
)
)
(set_local $11
(select
(i32.const 16)
(i32.and
(i32.add
(get_local $0)
(i32.const 11)
)
(i32.const -8)
)
(i32.lt_u
(get_local $0)
(i32.const 11)
)
)
)
(set_local $8
(i32.shr_u
(get_local $11)
(i32.const 3)
)
)
(set_local $10
(i32.load offset=1184
(i32.const 0)
)
)
(set_local $0
(i32.shr_u
(get_local $10)
(get_local $8)
)
)
(br_if $label$20
(i32.eqz
(i32.and
(get_local $0)
(i32.const 3)
)
)
)
(set_local $9
(i32.add
(i32.and
(i32.xor
(get_local $0)
(i32.const -1)
)
(i32.const 1)
)
(get_local $8)
)
)
(set_local $0
(i32.shl
(get_local $9)
(i32.const 3)
)
)
(set_local $11
(i32.add
(get_local $0)
(i32.const 1224)
)
)
(set_local $8
(i32.load
(i32.add
(get_local $0)
(i32.const 1232)
)
)
)
(set_local $5
(i32.load offset=8
(get_local $8)
)
)
(set_local $0
(i32.add
(get_local $8)
(i32.const 8)
)
)
(br_if $label$19
(i32.eq
(get_local $5)
(get_local $11)
)
)
(i32.store offset=12
(get_local $5)
(get_local $11)
)
(i32.store
(i32.add
(get_local $11)
(i32.const 8)
)
(get_local $5)
)
(br $label$18)
)
(set_local $11
(i32.const -1)
)
(br_if $label$10
(i32.gt_u
(get_local $0)
(i32.const -65)
)
)
(set_local $0
(i32.add
(get_local $0)
(i32.const 11)
)
)
(set_local $11
(i32.and
(get_local $0)
(i32.const -8)
)
)
(set_local $3
(i32.load offset=1188
(i32.const 0)
)
)
(br_if $label$7
(i32.eqz
(get_local $3)
)
)
(set_local $0
(i32.shr_u
(get_local $0)
(i32.const 8)
)
)
(set_local $7
(i32.const 0)
)
(block $label$22
(br_if $label$22
(i32.eqz
(get_local $0)
)
)
(set_local $7
(i32.const 31)
)
(br_if $label$22
(i32.gt_u
(get_local $11)
(i32.const 16777215)
)
)
(set_local $8
(i32.and
(i32.shr_u
(i32.add
(get_local $0)
(i32.const 1048320)
)
(i32.const 16)
)
(i32.const 8)
)
)
(set_local $0
(i32.shl
(get_local $0)
(get_local $8)
)
)
(set_local $9
(i32.and
(i32.shr_u
(i32.add
(get_local $0)
(i32.const 520192)
)
(i32.const 16)
)
(i32.const 4)
)
)
(set_local $0
(i32.shl
(get_local $0)
(get_local $9)
)
)
(set_local $5
(i32.and
(i32.shr_u
(i32.add
(get_local $0)
(i32.const 245760)
)
(i32.const 16)
)
(i32.const 2)
)
)
(set_local $0
(i32.add
(i32.sub
(i32.const 14)
(i32.or
(i32.or
(get_local $9)
(get_local $8)
)
(get_local $5)
)
)
(i32.shr_u
(i32.shl
(get_local $0)
(get_local $5)
)
(i32.const 15)
)
)
)
(set_local $7
(i32.or
(i32.and
(i32.shr_u
(get_local $11)
(i32.add
(get_local $0)
(i32.const 7)
)
)
(i32.const 1)
)
(i32.shl
(get_local $0)
(i32.const 1)
)
)
)
)
(set_local $9
(i32.sub
(i32.const 0)
(get_local $11)
)
)
(set_local $8
(i32.load
(i32.add
(i32.shl
(get_local $7)
(i32.const 2)
)
(i32.const 1488)
)
)
)
(br_if $label$17
(i32.eqz
(get_local $8)
)
)
(set_local $0
(i32.const 0)
)
(set_local $6
(i32.shl
(get_local $11)
(select
(i32.const 0)
(i32.sub
(i32.const 25)
(i32.shr_u
(get_local $7)
(i32.const 1)
)
)
(i32.eq
(get_local $7)
(i32.const 31)
)
)
)
)
(set_local $10
(i32.const 0)
)
(loop $label$23
(set_local $5
(i32.sub
(i32.and
(i32.load offset=4
(get_local $8)
)
(i32.const -8)
)
(get_local $11)
)
)
(block $label$24
(br_if $label$24
(i32.ge_u
(get_local $5)
(get_local $9)
)
)
(set_local $9
(get_local $5)
)
(set_local $10
(get_local $8)
)
(br_if $label$14
(i32.eqz
(get_local $5)
)
)
)
(set_local $5
(i32.load
(i32.add
(get_local $8)
(i32.const 20)
)
)
)
(set_local $8
(i32.load
(i32.add
(i32.add
(get_local $8)
(i32.and
(i32.shr_u
(get_local $6)
(i32.const 29)
)
(i32.const 4)
)
)
(i32.const 16)
)
)
)
(set_local $0
(select
(select
(get_local $0)
(get_local $5)
(i32.eq
(get_local $5)
(get_local $8)
)
)
(get_local $0)
(get_local $5)
)
)
(set_local $6
(i32.shl
(get_local $6)
(i32.const 1)
)
)
(br_if $label$23
(get_local $8)
)
)
(br_if $label$16
(i32.eqz
(i32.or
(get_local $0)
(get_local $10)
)
)
)
(br $label$3)
)
(set_local $7
(i32.load offset=1192
(i32.const 0)
)
)
(br_if $label$9
(i32.le_u
(get_local $11)
(get_local $7)
)
)
(br_if $label$15
(i32.eqz
(get_local $0)
)
)
(set_local $9
(i32.shl
(i32.const 2)
(get_local $8)
)
)
(set_local $0
(i32.and
(i32.shl
(get_local $0)
(get_local $8)
)
(i32.or
(get_local $9)
(i32.sub
(i32.const 0)
(get_local $9)
)
)
)
)
(set_local $0
(i32.add
(i32.and
(get_local $0)
(i32.sub
(i32.const 0)
(get_local $0)
)
)
(i32.const -1)
)
)
(set_local $8
(i32.and
(i32.shr_u
(get_local $0)
(i32.const 12)
)
(i32.const 16)
)
)
(set_local $0
(i32.shr_u
(get_local $0)
(get_local $8)
)
)
(set_local $9
(i32.and
(i32.shr_u
(get_local $0)
(i32.const 5)
)
(i32.const 8)
)
)
(set_local $0
(i32.shr_u
(get_local $0)
(get_local $9)
)
)
(set_local $5
(i32.and
(i32.shr_u
(get_local $0)
(i32.const 2)
)
(i32.const 4)
)
)
(set_local $0
(i32.shr_u
(get_local $0)
(get_local $5)
)
)
(set_local $6
(i32.and
(i32.shr_u
(get_local $0)
(i32.const 1)
)
(i32.const 2)
)
)
(set_local $0
(i32.shr_u
(get_local $0)
(get_local $6)
)
)
(set_local $3
(i32.and
(i32.shr_u
(get_local $0)
(i32.const 1)
)
(i32.const 1)
)
)
(set_local $9
(i32.add
(i32.or
(i32.or
(i32.or
(i32.or
(get_local $9)
(get_local $8)
)
(get_local $5)
)
(get_local $6)
)
(get_local $3)
)
(i32.shr_u
(get_local $0)
(get_local $3)
)
)
)
(set_local $8
(i32.shl
(get_local $9)
(i32.const 3)
)
)
(set_local $0
(i32.add
(get_local $8)
(i32.const 1224)
)
)
(set_local $8
(i32.load
(i32.add
(get_local $8)
(i32.const 1232)
)
)
)
(set_local $5
(i32.load offset=8
(get_local $8)
)
)
(br_if $label$13
(i32.eq
(get_local $5)
(get_local $0)
)
)
(i32.store offset=12
(get_local $5)
(get_local $0)
)
(i32.store
(i32.add
(get_local $0)
(i32.const 8)
)
(get_local $5)
)
(br $label$12)
)
(i32.store offset=1184
(i32.const 0)
(i32.and
(get_local $10)
(i32.rotl
(i32.const -2)
(get_local $9)
)
)
)
)
(set_local $9
(i32.shl
(get_local $9)
(i32.const 3)
)
)
(i32.store offset=4
(get_local $8)
(i32.or
(get_local $9)
(i32.const 3)
)
)
(set_local $8
(i32.add
(get_local $8)
(get_local $9)
)
)
(i32.store offset=4
(get_local $8)
(i32.or
(i32.load offset=4
(get_local $8)
)
(i32.const 1)
)
)
(br $label$5)
)
(set_local $0
(i32.const 0)
)
(set_local $10
(i32.const 0)
)
(br_if $label$3
(i32.or
(i32.const 0)
(i32.const 0)
)
)
)
(set_local $0
(i32.shl
(i32.const 2)
(get_local $7)
)
)
(set_local $10
(i32.const 0)
)
(set_local $0
(i32.and
(i32.or
(get_local $0)
(i32.sub
(i32.const 0)
(get_local $0)
)
)
(get_local $3)
)
)
(br_if $label$6
(i32.eqz
(get_local $0)
)
)
(set_local $0
(i32.add
(i32.and
(get_local $0)
(i32.sub
(i32.const 0)
(get_local $0)
)
)
(i32.const -1)
)
)
(set_local $8
(i32.and
(i32.shr_u
(get_local $0)
(i32.const 12)
)
(i32.const 16)
)
)
(set_local $0
(i32.shr_u
(get_local $0)
(get_local $8)
)
)
(set_local $5
(i32.and
(i32.shr_u
(get_local $0)
(i32.const 5)
)
(i32.const 8)
)
)
(set_local $0
(i32.shr_u
(get_local $0)
(get_local $5)
)
)
(set_local $6
(i32.and
(i32.shr_u
(get_local $0)
(i32.const 2)
)
(i32.const 4)
)
)
(set_local $0
(i32.shr_u
(get_local $0)
(get_local $6)
)
)
(set_local $7
(i32.and
(i32.shr_u
(get_local $0)
(i32.const 1)
)
(i32.const 2)
)
)
(set_local $0
(i32.shr_u
(get_local $0)
(get_local $7)
)
)
(set_local $4
(i32.and
(i32.shr_u
(get_local $0)
(i32.const 1)
)
(i32.const 1)
)
)
(set_local $0
(i32.load
(i32.add
(i32.shl
(i32.add
(i32.or
(i32.or
(i32.or
(i32.or
(get_local $5)
(get_local $8)
)
(get_local $6)
)
(get_local $7)
)
(get_local $4)
)
(i32.shr_u
(get_local $0)
(get_local $4)
)
)
(i32.const 2)
)
(i32.const 1488)
)
)
)
(br_if $label$2
(get_local $0)
)
(br $label$1)
)
(set_local $4
(i32.load offset=1188
(i32.const 0)
)
)
(br_if $label$8
(i32.eqz
(get_local $4)
)
)
(set_local $0
(i32.add
(i32.and
(get_local $4)
(i32.sub
(i32.const 0)
(get_local $4)
)
)
(i32.const -1)
)
)
(set_local $8
(i32.and
(i32.shr_u
(get_local $0)
(i32.const 12)
)
(i32.const 16)
)
)
(set_local $0
(i32.shr_u
(get_local $0)
(get_local $8)
)
)
(set_local $9
(i32.and
(i32.shr_u
(get_local $0)
(i32.const 5)
)
(i32.const 8)
)
)
(set_local $0
(i32.shr_u
(get_local $0)
(get_local $9)
)
)
(set_local $5
(i32.and
(i32.shr_u
(get_local $0)
(i32.const 2)
)
(i32.const 4)
)
)
(set_local $0
(i32.shr_u
(get_local $0)
(get_local $5)
)
)
(set_local $6
(i32.and
(i32.shr_u
(get_local $0)
(i32.const 1)
)
(i32.const 2)
)
)
(set_local $0
(i32.shr_u
(get_local $0)
(get_local $6)
)
)
(set_local $3
(i32.and
(i32.shr_u
(get_local $0)
(i32.const 1)
)
(i32.const 1)
)
)
(set_local $6
(i32.load
(i32.add
(i32.shl
(i32.add
(i32.or
(i32.or
(i32.or
(i32.or
(get_local $9)
(get_local $8)
)
(get_local $5)
)
(get_local $6)
)
(get_local $3)
)
(i32.shr_u
(get_local $0)
(get_local $3)
)
)
(i32.const 2)
)
(i32.const 1488)
)
)
)
(set_local $8
(i32.sub
(i32.and
(i32.load offset=4
(get_local $6)
)
(i32.const -8)
)
(get_local $11)
)
)
(set_local $9
(get_local $6)
)
(set_local $0
(i32.load offset=16
(get_local $9)
)
)
(br_if $label$11
(i32.eqz
(get_local $0)
)
)
(set_local $13
(i32.const 0)
)
(br $label$0)
)
(set_local $9
(i32.const 0)
)
(set_local $10
(get_local $8)
)
(set_local $0
(get_local $8)
)
(br $label$2)
)
(set_local $10
(i32.and
(get_local $10)
(i32.rotl
(i32.const -2)
(get_local $9)
)
)
)
(i32.store offset=1184
(i32.const 0)
(get_local $10)
)
)
(set_local $0
(i32.add
(get_local $8)
(i32.const 8)
)
)
(i32.store offset=4
(get_local $8)
(i32.or
(get_local $11)
(i32.const 3)
)
)
(set_local $5
(i32.add
(get_local $8)
(get_local $11)
)
)
(set_local $6
(i32.shl
(get_local $9)
(i32.const 3)
)
)
(set_local $9
(i32.sub
(get_local $6)
(get_local $11)
)
)
(i32.store offset=4
(get_local $5)
(i32.or
(get_local $9)
(i32.const 1)
)
)
(i32.store
(i32.add
(get_local $8)
(get_local $6)
)
(get_local $9)
)
(block $label$25
(br_if $label$25
(i32.eqz
(get_local $7)
)
)
(set_local $8
(i32.shr_u
(get_local $7)
(i32.const 3)
)
)
(set_local $11
(i32.add
(i32.shl
(get_local $8)
(i32.const 3)
)
(i32.const 1224)
)
)
(set_local $6
(i32.shl
(i32.const 1)
(get_local $8)
)
)
(set_local $8
(i32.load offset=1204
(i32.const 0)
)
)
(block $label$26
(block $label$27
(br_if $label$27
(i32.eqz
(i32.and
(get_local $10)
(get_local $6)
)
)
)
(set_local $6
(i32.load offset=8
(get_local $11)
)
)
(br $label$26)
)
(i32.store offset=1184
(i32.const 0)
(i32.or
(get_local $10)
(get_local $6)
)
)
(set_local $6
(get_local $11)
)
)
(i32.store
(i32.add
(get_local $11)
(i32.const 8)
)
(get_local $8)
)
(i32.store offset=12
(get_local $6)
(get_local $8)
)
(i32.store offset=12
(get_local $8)
(get_local $11)
)
(i32.store offset=8
(get_local $8)
(get_local $6)
)
)
(i32.store offset=1204
(i32.const 0)
(get_local $5)
)
(i32.store offset=1192
(i32.const 0)
(get_local $9)
)
(br $label$4)
)
(set_local $13
(i32.const 1)
)
(br $label$0)
)
(set_local $13
(i32.const 3)
)
(br $label$0)
)
(set_local $13
(i32.const 3)
)
(br $label$0)
)
(set_local $13
(i32.const 3)
)
(br $label$0)
)
(set_local $13
(i32.const 3)
)
(br $label$0)
)
(set_local $13
(i32.const 3)
)
(br $label$0)
)
(set_local $13
(i32.const 7)
)
(br $label$0)
)
(set_local $13
(i32.const 7)
)
(br $label$0)
)
(br_if $label$1
(i32.eqz
(get_local $0)
)
)
)
(loop $label$28
(set_local $5
(i32.sub
(i32.and
(i32.load offset=4
(get_local $0)
)
(i32.const -8)
)
(get_local $11)
)
)
(set_local $6
(i32.lt_u
(get_local $5)
(get_local $9)
)
)
(set_local $8
(i32.load offset=16
(get_local $0)
)
)
(block $label$29
(br_if $label$29
(get_local $8)
)
(set_local $8
(i32.load
(i32.add
(get_local $0)
(i32.const 20)
)
)
)
)
(set_local $9
(select
(get_local $5)
(get_local $9)
(get_local $6)
)
)
(set_local $10
(select
(get_local $0)
(get_local $10)
(get_local $6)
)
)
(set_local $0
(get_local $8)
)
(br_if $label$28
(get_local $8)
)
)
)
(block $label$30
(block $label$31
(block $label$32
(block $label$33
(block $label$34
(br_if $label$34
(i32.eqz
(get_local $10)
)
)
(br_if $label$33
(i32.ge_u
(get_local $9)
(i32.sub
(i32.load offset=1192
(i32.const 0)
)
(get_local $11)
)
)
)
(set_local $7
(i32.add
(get_local $10)
(get_local $11)
)
)
(br_if $label$32
(i32.le_u
(get_local $7)
(get_local $10)
)
)
(set_local $5
(i32.load offset=12
(get_local $10)
)
)
(set_local $4
(i32.load offset=24
(get_local $10)
)
)
(block $label$35
(br_if $label$35
(i32.eq
(get_local $5)
(get_local $10)
)
)
(set_local $0
(i32.load offset=8
(get_local $10)
)
)
(i32.store offset=12
(get_local $0)
(get_local $5)
)
(i32.store offset=8
(get_local $5)
(get_local $0)
)
(br_if $label$31
(get_local $4)
)
(br $label$30)
)
(set_local $8
(i32.add
(get_local $10)
(i32.const 20)
)
)
(set_local $0
(i32.load
(get_local $8)
)
)
(block $label$36
(block $label$37
(br_if $label$37
(get_local $0)
)
(set_local $0
(i32.load offset=16
(get_local $10)
)
)
(br_if $label$36
(i32.eqz
(get_local $0)
)
)
(set_local $8
(i32.add
(get_local $10)
(i32.const 16)
)
)
)
(loop $label$38
(set_local $5
(get_local $0)
)
(set_local $6
(get_local $8)
)
(set_local $8
(i32.add
(get_local $5)
(i32.const 20)
)
)
(set_local $0
(i32.load
(get_local $8)
)
)
(br_if $label$38
(get_local $0)
)
(set_local $8
(i32.add
(get_local $5)
(i32.const 16)
)
)
(set_local $0
(i32.load offset=16
(get_local $5)
)
)
(br_if $label$38
(get_local $0)
)
)
(i32.store
(get_local $6)
(i32.const 0)
)
(br_if $label$30
(i32.eqz
(get_local $4)
)
)
(br $label$31)
)
(set_local $5
(i32.const 0)
)
(br_if $label$31
(get_local $4)
)
(br $label$30)
)
(set_local $13
(i32.const 3)
)
(br $label$0)
)
(set_local $13
(i32.const 3)
)
(br $label$0)
)
(set_local $13
(i32.const 3)
)
(br $label$0)
)
(set_local $8
(i32.load offset=28
(get_local $10)
)
)
(set_local $0
(i32.add
(i32.shl
(get_local $8)
(i32.const 2)
)
(i32.const 1488)
)
)
(block $label$39
(block $label$40
(block $label$41
(br_if $label$41
(i32.eq
(get_local $10)
(i32.load
(get_local $0)
)
)
)
(i32.store
(select
(i32.add
(get_local $4)
(i32.const 16)
)
(i32.add
(get_local $4)
(i32.const 20)
)
(i32.eq
(i32.load offset=16
(get_local $4)
)
(get_local $10)
)
)
(get_local $5)
)
(br_if $label$40
(get_local $5)
)
(br $label$30)
)
(i32.store
(get_local $0)
(get_local $5)
)
(br_if $label$39
(i32.eqz
(get_local $5)
)
)
)
(i32.store offset=24
(get_local $5)
(get_local $4)
)
(set_local $0
(i32.load offset=16
(get_local $10)
)
)
(block $label$42
(br_if $label$42
(i32.eqz
(get_local $0)
)
)
(i32.store offset=16
(get_local $5)
(get_local $0)
)
(i32.store offset=24
(get_local $0)
(get_local $5)
)
)
(set_local $0
(i32.load
(i32.add
(get_local $10)
(i32.const 20)
)
)
)
(br_if $label$30
(i32.eqz
(get_local $0)
)
)
(i32.store
(i32.add
(get_local $5)
(i32.const 20)
)
(get_local $0)
)
(i32.store offset=24
(get_local $0)
(get_local $5)
)
(br $label$30)
)
(set_local $3
(i32.and
(get_local $3)
(i32.rotl
(i32.const -2)
(get_local $8)
)
)
)
(i32.store offset=1188
(i32.const 0)
(get_local $3)
)
)
(block $label$43
(block $label$44
(br_if $label$44
(i32.gt_u
(get_local $9)
(i32.const 15)
)
)
(set_local $0
(i32.add
(get_local $9)
(get_local $11)
)
)
(i32.store offset=4
(get_local $10)
(i32.or
(get_local $0)
(i32.const 3)
)
)
(set_local $0
(i32.add
(get_local $10)
(get_local $0)
)
)
(i32.store offset=4
(get_local $0)
(i32.or
(i32.load offset=4
(get_local $0)
)
(i32.const 1)
)
)
(br $label$43)
)
(i32.store offset=4
(get_local $10)
(i32.or
(get_local $11)
(i32.const 3)
)
)
(i32.store offset=4
(get_local $7)
(i32.or
(get_local $9)
(i32.const 1)
)
)
(i32.store
(i32.add
(get_local $7)
(get_local $9)
)
(get_local $9)
)
(block $label$45
(block $label$46
(block $label$47
(block $label$48
(block $label$49
(br_if $label$49
(i32.gt_u
(get_local $9)
(i32.const 255)
)
)
(set_local $8
(i32.shr_u
(get_local $9)
(i32.const 3)
)
)
(set_local $0
(i32.add
(i32.shl
(get_local $8)
(i32.const 3)
)
(i32.const 1224)
)
)
(set_local $8
(i32.shl
(i32.const 1)
(get_local $8)
)
)
(set_local $9
(i32.load offset=1184
(i32.const 0)
)
)
(br_if $label$48
(i32.eqz
(i32.and
(get_local $9)
(get_local $8)
)
)
)
(set_local $9
(i32.add
(get_local $0)
(i32.const 8)
)
)
(set_local $8
(i32.load offset=8
(get_local $0)
)
)
(br $label$47)
)
(set_local $8
(i32.shr_u
(get_local $9)
(i32.const 8)
)
)
(br_if $label$46
(i32.eqz
(get_local $8)
)
)
(set_local $0
(i32.const 31)
)
(br_if $label$45
(i32.gt_u
(get_local $9)
(i32.const 16777215)
)
)
(set_local $0
(i32.and
(i32.shr_u
(i32.add
(get_local $8)
(i32.const 1048320)
)
(i32.const 16)
)
(i32.const 8)
)
)
(set_local $8
(i32.shl
(get_local $8)
(get_local $0)
)
)
(set_local $11
(i32.and
(i32.shr_u
(i32.add
(get_local $8)
(i32.const 520192)
)
(i32.const 16)
)
(i32.const 4)
)
)
(set_local $8
(i32.shl
(get_local $8)
(get_local $11)
)
)
(set_local $5
(i32.and
(i32.shr_u
(i32.add
(get_local $8)
(i32.const 245760)
)
(i32.const 16)
)
(i32.const 2)
)
)
(set_local $0
(i32.add
(i32.sub
(i32.const 14)
(i32.or
(i32.or
(get_local $11)
(get_local $0)
)
(get_local $5)
)
)
(i32.shr_u
(i32.shl
(get_local $8)
(get_local $5)
)
(i32.const 15)
)
)
)
(set_local $0
(i32.or
(i32.and
(i32.shr_u
(get_local $9)
(i32.add
(get_local $0)
(i32.const 7)
)
)
(i32.const 1)
)
(i32.shl
(get_local $0)
(i32.const 1)
)
)
)
(br $label$45)
)
(i32.store offset=1184
(i32.const 0)
(i32.or
(get_local $9)
(get_local $8)
)
)
(set_local $9
(i32.add
(get_local $0)
(i32.const 8)
)
)
(set_local $8
(get_local $0)
)
)
(i32.store
(get_local $9)
(get_local $7)
)
(i32.store offset=12
(get_local $8)
(get_local $7)
)
(i32.store offset=12
(get_local $7)
(get_local $0)
)
(i32.store offset=8
(get_local $7)
(get_local $8)
)
(br $label$43)
)
(set_local $0
(i32.const 0)
)
)
(i32.store offset=28
(get_local $7)
(get_local $0)
)
(i64.store offset=16 align=4
(get_local $7)
(i64.const 0)
)
(set_local $8
(i32.add
(i32.shl
(get_local $0)
(i32.const 2)
)
(i32.const 1488)
)
)
(set_local $11
(i32.shl
(i32.const 1)
(get_local $0)
)
)
(block $label$50
(block $label$51
(block $label$52
(block $label$53
(block $label$54
(br_if $label$54
(i32.eqz
(i32.and
(get_local $3)
(get_local $11)
)
)
)
(set_local $11
(i32.load
(get_local $8)
)
)
(br_if $label$53
(i32.ne
(i32.and
(i32.load offset=4
(get_local $11)
)
(i32.const -8)
)
(get_local $9)
)
)
(set_local $0
(get_local $11)
)
(br $label$52)
)
(i32.store offset=1188
(i32.const 0)
(i32.or
(get_local $3)
(get_local $11)
)
)
(i32.store
(get_local $8)
(get_local $7)
)
(i32.store offset=24
(get_local $7)
(get_local $8)
)
(br $label$50)
)
(set_local $8
(i32.shl
(get_local $9)
(select
(i32.const 0)
(i32.sub
(i32.const 25)
(i32.shr_u
(get_local $0)
(i32.const 1)
)
)
(i32.eq
(get_local $0)
(i32.const 31)
)
)
)
)
(loop $label$55
(set_local $5
(i32.add
(i32.add
(get_local $11)
(i32.and
(i32.shr_u
(get_local $8)
(i32.const 29)
)
(i32.const 4)
)
)
(i32.const 16)
)
)
(set_local $0
(i32.load
(get_local $5)
)
)
(br_if $label$51
(i32.eqz
(get_local $0)
)
)
(set_local $8
(i32.shl
(get_local $8)
(i32.const 1)
)
)
(set_local $11
(get_local $0)
)
(br_if $label$55
(i32.ne
(i32.and
(i32.load offset=4
(get_local $0)
)
(i32.const -8)
)
(get_local $9)
)
)
)
)
(set_local $8
(i32.load offset=8
(get_local $0)
)
)
(i32.store offset=12
(get_local $8)
(get_local $7)
)
(i32.store offset=8
(get_local $0)
(get_local $7)
)
(i32.store offset=12
(get_local $7)
(get_local $0)
)
(i32.store offset=8
(get_local $7)
(get_local $8)
)
(i32.store offset=24
(get_local $7)
(i32.const 0)
)
(br $label$43)
)
(i32.store
(get_local $5)
(get_local $7)
)
(i32.store offset=24
(get_local $7)
(get_local $11)
)
)
(i32.store offset=12
(get_local $7)
(get_local $7)
)
(i32.store offset=8
(get_local $7)
(get_local $7)
)
)
(set_local $0
(i32.add
(get_local $10)
(i32.const 8)
)
)
(set_local $13
(i32.const 7)
)
)
(loop $label$56 (result i32)
(block $label$57
(block $label$58
(block $label$59
(block $label$60
(block $label$61
(block $label$62
(block $label$63
(block $label$64
(block $label$65
(block $label$66
(block $label$67
(block $label$68
(block $label$69
(block $label$70
(block $label$71
(block $label$72
(block $label$73
(block $label$74
(block $label$75
(block $label$76
(block $label$77
(block $label$78
(block $label$79
(block $label$80
(block $label$81
(block $label$82
(block $label$83
(block $label$84
(block $label$85
(block $label$86
(block $label$87
(block $label$88
(block $label$89
(block $label$90
(block $label$91
(block $label$92
(block $label$93
(block $label$94
(block $label$95
(block $label$96
(block $label$97
(block $label$98
(block $label$99
(block $label$100
(block $label$101
(block $label$102
(block $label$103
(block $label$104
(block $label$105
(block $label$106
(block $label$107
(block $label$108
(block $label$109
(block $label$110
(block $label$111
(block $label$112
(block $label$113
(block $label$114
(block $label$115
(block $label$116
(block $label$117
(block $label$118
(block $label$119
(block $label$120
(block $label$121
(block $label$122
(block $label$123
(block $label$124
(block $label$125
(block $label$126
(block $label$127
(block $label$128
(block $label$129
(block $label$130
(block $label$131
(block $label$132
(block $label$133
(block $label$134
(block $label$135
(block $label$136
(block $label$137
(block $label$138
(block $label$139
(block $label$140
(block $label$141
(block $label$142
(block $label$143
(block $label$144
(block $label$145
(block $label$146
(block $label$147
(block $label$148
(block $label$149
(block $label$150
(block $label$151
(block $label$152
(block $label$153
(block $label$154
(block $label$155
(block $label$156
(block $label$157
(block $label$158
(block $label$159
(block $label$160
(block $label$161
(block $label$162
(block $label$163
(block $label$164
(block $label$165
(block $label$166
(block $label$167
(block $label$168
(block $label$169
(block $label$170
(block $label$171
(block $label$172
(block $label$173
(block $label$174
(block $label$175
(block $label$176
(block $label$177
(block $label$178
(block $label$179
(block $label$180
(block $label$181
(block $label$182
(block $label$183
(block $label$184
(block $label$185
(block $label$186
(block $label$187
(block $label$188
(block $label$189
(block $label$190
(block $label$191
(block $label$192
(block $label$193
(block $label$194
(block $label$195
(block $label$196
(block $label$197
(block $label$198
(block $label$199
(block $label$200
(block $label$201
(block $label$202
(block $label$203
(block $label$204
(block $label$205
(block $label$206
(block $label$207
(block $label$208
(block $label$209
(block $label$210
(block $label$211
(block $label$212
(block $label$213
(block $label$214
(block $label$215
(block $label$216
(block $label$217
(block $label$218
(block $label$219
(block $label$220
(block $label$221
(block $label$222
(block $label$223
(block $label$224
(block $label$225
(block $label$226
(block $label$227
(block $label$228
(block $label$229
(block $label$230
(block $label$231
(block $label$232
(block $label$233
(block $label$234
(block $label$235
(block $label$236
(block $label$237
(block $label$238
(block $label$239
(block $label$240
(block $label$241
(block $label$242
(block $label$243
(block $label$244
(block $label$245
(block $label$246
(block $label$247
(block $label$248
(block $label$249
(block $label$250
(block $label$251
(block $label$252
(block $label$253
(block $label$254
(block $label$255
(block $label$256
(block $label$257
(block $label$258
(block $label$259
(block $label$260
(block $label$261
(block $label$262
(block $label$263
(block $label$264
(block $label$265
(block $label$266
(block $label$267
(block $label$268
(block $label$269
(block $label$270
(block $label$271
(block $label$272
(block $label$273
(block $label$274
(block $label$275
(block $label$276
(block $label$277
(block $label$278
(block $label$279
(block $label$280
(block $label$281
(block $label$282
(block $label$283
(block $label$284
(block $label$285
(block $label$286
(block $label$287
(block $label$288
(block $label$289
(block $label$290
(block $label$291
(block $label$292
(block $label$293
(block $label$294
(block $label$295
(block $label$296
(block $label$297
(block $label$298
(block $label$299
(block $label$300
(block $label$301
(block $label$302
(block $label$303
(block $label$304
(block $label$305
(block $label$306
(block $label$307
(block $label$308
(block $label$309
(block $label$310
(block $label$311
(block $label$312
(block $label$313
(block $label$314
(block $label$315
(block $label$316
(block $label$317
(block $label$318
(block $label$319
(block $label$320
(block $label$321
(block $label$322
(block $label$323
(block $label$324
(block $label$325
(block $label$326
(block $label$327
(block $label$328
(block $label$329
(block $label$330
(block $label$331
(block $label$332
(block $label$333
(block $label$334
(block $label$335
(block $label$336
(block $label$337
(block $label$338
(block $label$339
(block $label$340
(block $label$341
(block $label$342
(block $label$343
(block $label$344
(block $label$345
(block $label$346
(block $label$347
(block $label$348
(block $label$349
(block $label$350
(block $label$351
(block $label$352
(block $label$353
(block $label$354
(block $label$355
(block $label$356
(block $label$357
(block $label$358
(block $label$359
(block $label$360
(block $label$361
(block $label$362
(block $label$363
(block $label$364
(block $label$365
(block $label$366
(block $label$367
(block $label$368
(block $label$369
(block $label$370
(block $label$371
(block $label$372
(block $label$373
(block $label$374
(block $label$375
(block $label$376
(br_table $label$376 $label$375 $label$374 $label$371 $label$368 $label$364 $label$363 $label$241 $label$367 $label$370 $label$366 $label$365 $label$361 $label$360 $label$359 $label$358 $label$357 $label$304 $label$242 $label$303 $label$302 $label$301 $label$300 $label$299 $label$297 $label$296 $label$295 $label$294 $label$283 $label$281 $label$280 $label$279 $label$271 $label$269 $label$268 $label$270 $label$267 $label$266 $label$265 $label$264 $label$261 $label$260 $label$259 $label$258 $label$257 $label$251 $label$250 $label$249 $label$248 $label$244 $label$243 $label$246 $label$245 $label$256 $label$252 $label$263 $label$262 $label$253 $label$254 $label$278 $label$277 $label$276 $label$275 $label$223 $label$220 $label$219 $label$218 $label$217 $label$216 $label$211 $label$210 $label$209 $label$208 $label$205 $label$207 $label$206 $label$215 $label$212 $label$222 $label$221 $label$213 $label$214 $label$274 $label$240 $label$239 $label$232 $label$231 $label$229 $label$228 $label$227 $label$226 $label$224 $label$230 $label$225 $label$237 $label$235 $label$234 $label$233 $label$236 $label$204 $label$273 $label$272 $label$238 $label$247 $label$255 $label$282 $label$287 $label$286 $label$285 $label$284 $label$293 $label$292 $label$290 $label$289 $label$288 $label$291 $label$298 $label$356 $label$355 $label$354 $label$353 $label$352 $label$351 $label$350 $label$349 $label$348 $label$305 $label$347 $label$346 $label$345 $label$344 $label$343 $label$325 $label$319 $label$324 $label$323 $label$322 $label$321 $label$320 $label$306 $label$328 $label$327 $label$326 $label$307 $label$362 $label$369 $label$373 $label$372 $label$335 $label$334 $label$332 $label$331 $label$330 $label$329 $label$317 $label$315 $label$314 $label$313 $label$311 $label$310 $label$309 $label$312 $label$316 $label$333 $label$318 $label$342 $label$339 $label$338 $label$337 $label$336 $label$341 $label$340 $label$308 $label$308
(get_local $13)
)
)
(set_local $9
(i32.sub
(i32.and
(i32.load offset=4
(get_local $0)
)
(i32.const -8)
)
(get_local $11)
)
)
(set_local $5
(i32.lt_u
(get_local $9)
(get_local $8)
)
)
(set_local $8
(select
(get_local $9)
(get_local $8)
(get_local $5)
)
)
(set_local $6
(select
(get_local $0)
(get_local $6)
(get_local $5)
)
)
(set_local $9
(get_local $0)
)
(set_local $0
(i32.load offset=16
(get_local $9)
)
)
(br_if $label$203
(get_local $0)
)
(set_local $13
(i32.const 1)
)
(br $label$56)
)
(set_local $0
(i32.load
(i32.add
(get_local $9)
(i32.const 20)
)
)
)
(br_if $label$202
(get_local $0)
)
(set_local $13
(i32.const 2)
)
(br $label$56)
)
(set_local $1
(i32.add
(get_local $6)
(get_local $11)
)
)
(br_if $label$201
(i32.le_u
(get_local $1)
(get_local $6)
)
)
(set_local $13
(i32.const 146)
)
(br $label$56)
)
(set_local $5
(i32.load offset=12
(get_local $6)
)
)
(set_local $2
(i32.load offset=24
(get_local $6)
)
)
(br_if $label$78
(i32.eq
(get_local $5)
(get_local $6)
)
)
(set_local $13
(i32.const 147)
)
(br $label$56)
)
(set_local $0
(i32.load offset=8
(get_local $6)
)
)
(i32.store offset=12
(get_local $0)
(get_local $5)
)
(i32.store offset=8
(get_local $5)
(get_local $0)
)
(br_if $label$76
(get_local $2)
)
(br $label$77)
)
(set_local $0
(i32.load offset=1192
(i32.const 0)
)
)
(br_if $label$200
(i32.ge_u
(get_local $0)
(get_local $11)
)
)
(set_local $13
(i32.const 9)
)
(br $label$56)
)
(set_local $9
(i32.load offset=1196
(i32.const 0)
)
)
(br_if $label$189
(i32.le_u
(get_local $9)
(get_local $11)
)
)
(set_local $13
(i32.const 145)
)
(br $label$56)
)
(set_local $8
(i32.sub
(get_local $9)
(get_local $11)
)
)
(i32.store offset=1196
(i32.const 0)
(get_local $8)
)
(set_local $0
(i32.load offset=1208
(i32.const 0)
)
)
(set_local $9
(i32.add
(get_local $0)
(get_local $11)
)
)
(i32.store offset=1208
(i32.const 0)
(get_local $9)
)
(i32.store offset=4
(get_local $9)
(i32.or
(get_local $8)
(i32.const 1)
)
)
(i32.store offset=4
(get_local $0)
(i32.or
(get_local $11)
(i32.const 3)
)
)
(set_local $0
(i32.add
(get_local $0)
(i32.const 8)
)
)
(br $label$191)
)
(set_local $9
(i32.sub
(get_local $0)
(get_local $11)
)
)
(set_local $8
(i32.load offset=1204
(i32.const 0)
)
)
(br_if $label$199
(i32.lt_u
(get_local $9)
(i32.const 16)
)
)
(set_local $13
(i32.const 8)
)
(br $label$56)
)
(i32.store offset=1192
(i32.const 0)
(get_local $9)
)
(set_local $5
(i32.add
(get_local $8)
(get_local $11)
)
)
(i32.store offset=1204
(i32.const 0)
(get_local $5)
)
(i32.store offset=4
(get_local $5)
(i32.or
(get_local $9)
(i32.const 1)
)
)
(i32.store
(i32.add
(get_local $8)
(get_local $0)
)
(get_local $9)
)
(i32.store offset=4
(get_local $8)
(i32.or
(get_local $11)
(i32.const 3)
)
)
(br $label$198)
)
(br_if $label$188
(i32.eqz
(i32.load offset=1656
(i32.const 0)
)
)
)
(set_local $13
(i32.const 11)
)
(br $label$56)
)
(set_local $8
(i32.load offset=1664
(i32.const 0)
)
)
(br $label$187)
)
(i32.store offset=1204
(i32.const 0)
(i32.const 0)
)
(i32.store offset=1192
(i32.const 0)
(i32.const 0)
)
(i32.store offset=4
(get_local $8)
(i32.or
(get_local $0)
(i32.const 3)
)
)
(set_local $0
(i32.add
(get_local $8)
(get_local $0)
)
)
(i32.store offset=4
(get_local $0)
(i32.or
(i32.load offset=4
(get_local $0)
)
(i32.const 1)
)
)
(set_local $13
(i32.const 6)
)
(br $label$56)
)
(set_local $0
(i32.add
(get_local $8)
(i32.const 8)
)
)
(br $label$196)
)
(i64.store offset=1660 align=4
(i32.const 0)
(i64.const 17592186048512)
)
(i64.store offset=1668 align=4
(i32.const 0)
(i64.const -1)
)
(i32.store offset=1656
(i32.const 0)
(i32.xor
(i32.and
(i32.add
(get_local $12)
(i32.const 12)
)
(i32.const -16)
)
(i32.const 1431655768)
)
)
(i32.store offset=1676
(i32.const 0)
(i32.const 0)
)
(i32.store offset=1628
(i32.const 0)
(i32.const 0)
)
(set_local $8
(i32.const 4096)
)
(set_local $13
(i32.const 12)
)
(br $label$56)
)
(set_local $0
(i32.const 0)
)
(set_local $10
(i32.sub
(i32.const 0)
(get_local $8)
)
)
(set_local $3
(i32.add
(get_local $11)
(i32.const 47)
)
)
(set_local $7
(i32.add
(get_local $8)
(get_local $3)
)
)
(set_local $6
(i32.and
(get_local $7)
(get_local $10)
)
)
(br_if $label$195
(i32.le_u
(get_local $6)
(get_local $11)
)
)
(set_local $13
(i32.const 13)
)
(br $label$56)
)
(set_local $0
(i32.const 0)
)
(set_local $8
(i32.load offset=1624
(i32.const 0)
)
)
(br_if $label$186
(i32.eqz
(get_local $8)
)
)
(set_local $13
(i32.const 14)
)
(br $label$56)
)
(set_local $5
(i32.load offset=1616
(i32.const 0)
)
)
(set_local $4
(i32.add
(get_local $5)
(get_local $6)
)
)
(br_if $label$190
(i32.le_u
(get_local $4)
(get_local $5)
)
)
(set_local $13
(i32.const 15)
)
(br $label$56)
)
(br_if $label$194
(i32.gt_u
(get_local $4)
(get_local $8)
)
)
(set_local $13
(i32.const 16)
)
(br $label$56)
)
(br_if $label$185
(i32.and
(i32.load8_u offset=1628
(i32.const 0)
)
(i32.const 4)
)
)
(set_local $13
(i32.const 117)
)
(br $label$56)
)
(set_local $5
(i32.load offset=1208
(i32.const 0)
)
)
(br_if $label$95
(i32.eqz
(get_local $5)
)
)
(set_local $13
(i32.const 118)
)
(br $label$56)
)
(set_local $0
(i32.const 1632)
)
(set_local $13
(i32.const 119)
)
(br $label$56)
)
(set_local $8
(i32.load
(get_local $0)
)
)
(br_if $label$93
(i32.gt_u
(get_local $8)
(get_local $5)
)
)
(set_local $13
(i32.const 120)
)
(br $label$56)
)
(br_if $label$92
(i32.gt_u
(i32.add
(get_local $8)
(i32.load offset=4
(get_local $0)
)
)
(get_local $5)
)
)
(set_local $13
(i32.const 121)
)
(br $label$56)
)
(set_local $0
(i32.load offset=8
(get_local $0)
)
)
(br_if $label$94
(get_local $0)
)
(set_local $13
(i32.const 122)
)
(br $label$56)
)
(set_local $5
(call $sbrk
(i32.const 0)
)
)
(br_if $label$91
(i32.eq
(get_local $5)
(i32.const -1)
)
)
(set_local $13
(i32.const 123)
)
(br $label$56)
)
(set_local $0
(i32.load offset=1660
(i32.const 0)
)
)
(set_local $8
(i32.add
(get_local $0)
(i32.const -1)
)
)
(set_local $10
(get_local $6)
)
(br_if $label$90
(i32.eqz
(i32.and
(get_local $8)
(get_local $5)
)
)
)
(set_local $13
(i32.const 124)
)
(br $label$56)
)
(set_local $10
(i32.add
(i32.sub
(get_local $6)
(get_local $5)
)
(i32.and
(i32.add
(get_local $8)
(get_local $5)
)
(i32.sub
(i32.const 0)
(get_local $0)
)
)
)
)
(set_local $13
(i32.const 125)
)
(br $label$56)
)
(br_if $label$88
(i32.le_u
(get_local $10)
(get_local $11)
)
)
(set_local $13
(i32.const 127)
)
(br $label$56)
)
(br_if $label$87
(i32.gt_u
(get_local $10)
(i32.const 2147483646)
)
)
(set_local $13
(i32.const 128)
)
(br $label$56)
)
(set_local $0
(i32.load offset=1624
(i32.const 0)
)
)
(br_if $label$84
(i32.eqz
(get_local $0)
)
)
(set_local $13
(i32.const 129)
)
(br $label$56)
)
(set_local $8
(i32.load offset=1616
(i32.const 0)
)
)
(set_local $9
(i32.add
(get_local $8)
(get_local $10)
)
)
(br_if $label$86
(i32.le_u
(get_local $9)
(get_local $8)
)
)
(set_local $13
(i32.const 130)
)
(br $label$56)
)
(br_if $label$85
(i32.gt_u
(get_local $9)
(get_local $0)
)
)
(set_local $13
(i32.const 131)
)
(br $label$56)
)
(set_local $0
(call $sbrk
(get_local $10)
)
)
(br_if $label$175
(i32.ne
(get_local $0)
(get_local $5)
)
)
(br $label$176)
)
(set_local $9
(i32.add
(get_local $6)
(i32.const 20)
)
)
(set_local $0
(i32.load
(get_local $9)
)
)
(br_if $label$60
(get_local $0)
)
(set_local $13
(i32.const 170)
)
(br $label$56)
)
(set_local $0
(i32.load offset=16
(get_local $6)
)
)
(br_if $label$57
(i32.eqz
(get_local $0)
)
)
(set_local $13
(i32.const 171)
)
(br $label$56)
)
(set_local $9
(i32.add
(get_local $6)
(i32.const 16)
)
)
(set_local $13
(i32.const 166)
)
(br $label$56)
)
(set_local $13
(i32.const 167)
)
(br $label$56)
)
(set_local $5
(get_local $0)
)
(set_local $3
(get_local $9)
)
(set_local $9
(i32.add
(get_local $5)
(i32.const 20)
)
)
(set_local $0
(i32.load
(get_local $9)
)
)
(br_if $label$59
(get_local $0)
)
(set_local $13
(i32.const 168)
)
(br $label$56)
)
(set_local $9
(i32.add
(get_local $5)
(i32.const 16)
)
)
(set_local $0
(i32.load offset=16
(get_local $5)
)
)
(br_if $label$58
(get_local $0)
)
(set_local $13
(i32.const 169)
)
(br $label$56)
)
(i32.store
(get_local $3)
(i32.const 0)
)
(br_if $label$73
(i32.eqz
(get_local $2)
)
)
(set_local $13
(i32.const 148)
)
(br $label$56)
)
(set_local $9
(i32.load offset=28
(get_local $6)
)
)
(set_local $0
(i32.add
(i32.shl
(get_local $9)
(i32.const 2)
)
(i32.const 1488)
)
)
(br_if $label$72
(i32.eq
(get_local $6)
(i32.load
(get_local $0)
)
)
)
(set_local $13
(i32.const 149)
)
(br $label$56)
)
(i32.store
(select
(i32.add
(get_local $2)
(i32.const 16)
)
(i32.add
(get_local $2)
(i32.const 20)
)
(i32.eq
(i32.load offset=16
(get_local $2)
)
(get_local $6)
)
)
(get_local $5)
)
(br_if $label$70
(get_local $5)
)
(br $label$71)
)
(i32.store
(get_local $0)
(get_local $5)
)
(br_if $label$69
(i32.eqz
(get_local $5)
)
)
(set_local $13
(i32.const 150)
)
(br $label$56)
)
(i32.store offset=24
(get_local $5)
(get_local $2)
)
(set_local $0
(i32.load offset=16
(get_local $6)
)
)
(br_if $label$68
(i32.eqz
(get_local $0)
)
)
(set_local $13
(i32.const 151)
)
(br $label$56)
)
(i32.store offset=16
(get_local $5)
(get_local $0)
)
(i32.store offset=24
(get_local $0)
(get_local $5)
)
(set_local $13
(i32.const 152)
)
(br $label$56)
)
(set_local $0
(i32.load
(i32.add
(get_local $6)
(i32.const 20)
)
)
)
(br_if $label$67
(i32.eqz
(get_local $0)
)
)
(set_local $13
(i32.const 153)
)
(br $label$56)
)
(i32.store
(i32.add
(get_local $5)
(i32.const 20)
)
(get_local $0)
)
(i32.store offset=24
(get_local $0)
(get_local $5)
)
(br $label$66)
)
(set_local $10
(i32.and
(i32.sub
(get_local $7)
(get_local $9)
)
(get_local $10)
)
)
(br_if $label$89
(i32.gt_u
(get_local $10)
(i32.const 2147483646)
)
)
(set_local $13
(i32.const 141)
)
(br $label$56)
)
(set_local $5
(call $sbrk
(get_local $10)
)
)
(br_if $label$79
(i32.eq
(get_local $5)
(i32.add
(i32.load
(get_local $0)
)
(i32.load offset=4
(get_local $0)
)
)
)
)
(set_local $13
(i32.const 142)
)
(br $label$56)
)
(set_local $0
(get_local $5)
)
(set_local $13
(i32.const 132)
)
(br $label$56)
)
(set_local $5
(get_local $0)
)
(br_if $label$83
(i32.le_u
(i32.add
(get_local $11)
(i32.const 48)
)
(get_local $10)
)
)
(set_local $13
(i32.const 134)
)
(br $label$56)
)
(br_if $label$82
(i32.gt_u
(get_local $10)
(i32.const 2147483646)
)
)
(set_local $13
(i32.const 135)
)
(br $label$56)
)
(br_if $label$81
(i32.eq
(get_local $5)
(i32.const -1)
)
)
(set_local $13
(i32.const 136)
)
(br $label$56)
)
(set_local $0
(i32.load offset=1664
(i32.const 0)
)
)
(set_local $0
(i32.and
(i32.add
(i32.sub
(get_local $3)
(get_local $10)
)
(get_local $0)
)
(i32.sub
(i32.const 0)
(get_local $0)
)
)
)
(br_if $label$171
(i32.gt_u
(get_local $0)
(i32.const 2147483646)
)
)
(set_local $13
(i32.const 137)
)
(br $label$56)
)
(br_if $label$80
(i32.eq
(call $sbrk
(get_local $0)
)
(i32.const -1)
)
)
(set_local $13
(i32.const 138)
)
(br $label$56)
)
(set_local $10
(i32.add
(get_local $0)
(get_local $10)
)
)
(br $label$172)
)
(br_if $label$173
(i32.ne
(get_local $5)
(i32.const -1)
)
)
(br $label$174)
)
(i32.store offset=1188
(i32.const 0)
(i32.and
(get_local $4)
(i32.rotl
(i32.const -2)
(get_local $9)
)
)
)
(set_local $13
(i32.const 154)
)
(br $label$56)
)
(br_if $label$65
(i32.gt_u
(get_local $8)
(i32.const 15)
)
)
(set_local $13
(i32.const 162)
)
(br $label$56)
)
(set_local $0
(i32.add
(get_local $8)
(get_local $11)
)
)
(i32.store offset=4
(get_local $6)
(i32.or
(get_local $0)
(i32.const 3)
)
)
(set_local $0
(i32.add
(get_local $6)
(get_local $0)
)
)
(i32.store offset=4
(get_local $0)
(i32.or
(i32.load offset=4
(get_local $0)
)
(i32.const 1)
)
)
(br $label$61)
)
(i32.store offset=4
(get_local $6)
(i32.or
(get_local $11)
(i32.const 3)
)
)
(i32.store offset=4
(get_local $1)
(i32.or
(get_local $8)
(i32.const 1)
)
)
(i32.store
(i32.add
(get_local $1)
(get_local $8)
)
(get_local $8)
)
(br_if $label$64
(i32.eqz
(get_local $7)
)
)
(set_local $13
(i32.const 156)
)
(br $label$56)
)
(set_local $0
(i32.shr_u
(get_local $7)
(i32.const 3)
)
)
(set_local $9
(i32.add
(i32.shl
(get_local $0)
(i32.const 3)
)
(i32.const 1224)
)
)
(set_local $11
(i32.shl
(i32.const 1)
(get_local $0)
)
)
(set_local $0
(i32.load offset=1204
(i32.const 0)
)
)
(br_if $label$63
(i32.eqz
(i32.and
(get_local $11)
(get_local $10)
)
)
)
(set_local $13
(i32.const 157)
)
(br $label$56)
)
(set_local $11
(i32.load offset=8
(get_local $9)
)
)
(br $label$62)
)
(i32.store offset=1184
(i32.const 0)
(i32.or
(get_local $11)
(get_local $10)
)
)
(set_local $11
(get_local $9)
)
(set_local $13
(i32.const 158)
)
(br $label$56)
)
(i32.store
(i32.add
(get_local $9)
(i32.const 8)
)
(get_local $0)
)
(i32.store offset=12
(get_local $11)
(get_local $0)
)
(i32.store offset=12
(get_local $0)
(get_local $9)
)
(i32.store offset=8
(get_local $0)
(get_local $11)
)
(set_local $13
(i32.const 159)
)
(br $label$56)
)
(i32.store offset=1204
(i32.const 0)
(get_local $1)
)
(i32.store offset=1192
(i32.const 0)
(get_local $8)
)
(set_local $13
(i32.const 160)
)
(br $label$56)
)
(set_local $0
(i32.add
(get_local $6)
(i32.const 8)
)
)
(br $label$197)
)
(set_local $5
(i32.const 0)
)
(br_if $label$74
(get_local $2)
)
(br $label$75)
)
(br_if $label$177
(i32.ne
(get_local $5)
(i32.const -1)
)
)
(br $label$178)
)
(drop
(call $sbrk
(i32.sub
(i32.const 0)
(get_local $10)
)
)
)
(set_local $13
(i32.const 126)
)
(br $label$56)
)
(i32.store offset=1628
(i32.const 0)
(i32.or
(i32.load offset=1628
(i32.const 0)
)
(i32.const 4)
)
)
(set_local $13
(i32.const 17)
)
(br $label$56)
)
(br_if $label$184
(i32.gt_u
(get_local $6)
(i32.const 2147483646)
)
)
(set_local $13
(i32.const 19)
)
(br $label$56)
)
(set_local $5
(call $sbrk
(get_local $6)
)
)
(set_local $0
(call $sbrk
(i32.const 0)
)
)
(br_if $label$183
(i32.ge_u
(get_local $5)
(get_local $0)
)
)
(set_local $13
(i32.const 20)
)
(br $label$56)
)
(br_if $label$182
(i32.eq
(get_local $5)
(i32.const -1)
)
)
(set_local $13
(i32.const 21)
)
(br $label$56)
)
(br_if $label$181
(i32.eq
(get_local $0)
(i32.const -1)
)
)
(set_local $13
(i32.const 22)
)
(br $label$56)
)
(set_local $10
(i32.sub
(get_local $0)
(get_local $5)
)
)
(br_if $label$180
(i32.le_u
(get_local $10)
(i32.add
(get_local $11)
(i32.const 40)
)
)
)
(set_local $13
(i32.const 23)
)
(br $label$56)
)
(set_local $0
(i32.add
(i32.load offset=1616
(i32.const 0)
)
(get_local $10)
)
)
(i32.store offset=1616
(i32.const 0)
(get_local $0)
)
(br_if $label$170
(i32.le_u
(get_local $0)
(i32.load offset=1620
(i32.const 0)
)
)
)
(set_local $13
(i32.const 116)
)
(br $label$56)
)
(i32.store offset=1620
(i32.const 0)
(get_local $0)
)
(set_local $13
(i32.const 24)
)
(br $label$56)
)
(set_local $9
(i32.load offset=1208
(i32.const 0)
)
)
(br_if $label$169
(i32.eqz
(get_local $9)
)
)
(set_local $13
(i32.const 25)
)
(br $label$56)
)
(set_local $0
(i32.const 1632)
)
(set_local $13
(i32.const 26)
)
(br $label$56)
)
(set_local $6
(i32.load offset=4
(get_local $0)
)
)
(set_local $8
(i32.load
(get_local $0)
)
)
(br_if $label$166
(i32.eq
(get_local $5)
(i32.add
(get_local $8)
(get_local $6)
)
)
)
(set_local $13
(i32.const 27)
)
(br $label$56)
)
(set_local $0
(i32.load offset=8
(get_local $0)
)
)
(br_if $label$167
(get_local $0)
)
(br $label$168)
)
(set_local $0
(i32.load offset=1200
(i32.const 0)
)
)
(br_if $label$98
(i32.eqz
(get_local $0)
)
)
(set_local $13
(i32.const 111)
)
(br $label$56)
)
(br_if $label$97
(i32.ge_u
(get_local $5)
(get_local $0)
)
)
(set_local $13
(i32.const 115)
)
(br $label$56)
)
(i32.store offset=1200
(i32.const 0)
(get_local $5)
)
(set_local $13
(i32.const 112)
)
(br $label$56)
)
(set_local $0
(i32.const 0)
)
(i32.store offset=1636
(i32.const 0)
(get_local $10)
)
(i32.store offset=1632
(i32.const 0)
(get_local $5)
)
(i32.store offset=1216
(i32.const 0)
(i32.const -1)
)
(i32.store offset=1220
(i32.const 0)
(i32.load offset=1656
(i32.const 0)
)
)
(i32.store offset=1644
(i32.const 0)
(i32.const 0)
)
(set_local $13
(i32.const 113)
)
(br $label$56)
)
(set_local $8
(i32.add
(get_local $0)
(i32.const 1224)
)
)
(i32.store
(i32.add
(get_local $0)
(i32.const 1232)
)
(get_local $8)
)
(i32.store
(i32.add
(get_local $0)
(i32.const 1236)
)
(get_local $8)
)
(set_local $0
(i32.add
(get_local $0)
(i32.const 8)
)
)
(br_if $label$96
(i32.ne
(get_local $0)
(i32.const 256)
)
)
(set_local $13
(i32.const 114)
)
(br $label$56)
)
(set_local $0
(select
(i32.and
(i32.sub
(i32.const -8)
(get_local $5)
)
(i32.const 7)
)
(i32.const 0)
(i32.and
(i32.add
(get_local $5)
(i32.const 8)
)
(i32.const 7)
)
)
)
(set_local $8
(i32.add
(get_local $10)
(i32.const -40)
)
)
(set_local $9
(i32.sub
(get_local $8)
(get_local $0)
)
)
(i32.store offset=1196
(i32.const 0)
(get_local $9)
)
(set_local $0
(i32.add
(get_local $5)
(get_local $0)
)
)
(i32.store offset=1208
(i32.const 0)
(get_local $0)
)
(i32.store offset=4
(get_local $0)
(i32.or
(get_local $9)
(i32.const 1)
)
)
(i32.store offset=4
(i32.add
(get_local $5)
(get_local $8)
)
(i32.const 40)
)
(i32.store offset=1212
(i32.const 0)
(i32.load offset=1672
(i32.const 0)
)
)
(br $label$141)
)
(br_if $label$165
(i32.and
(i32.load8_u offset=12
(get_local $0)
)
(i32.const 8)
)
)
(set_local $13
(i32.const 107)
)
(br $label$56)
)
(br_if $label$164
(i32.le_u
(get_local $5)
(get_local $9)
)
)
(set_local $13
(i32.const 108)
)
(br $label$56)
)
(br_if $label$163
(i32.gt_u
(get_local $8)
(get_local $9)
)
)
(set_local $13
(i32.const 109)
)
(br $label$56)
)
(i32.store
(i32.add
(get_local $0)
(i32.const 4)
)
(i32.add
(get_local $6)
(get_local $10)
)
)
(set_local $0
(select
(i32.and
(i32.sub
(i32.const -8)
(get_local $9)
)
(i32.const 7)
)
(i32.const 0)
(i32.and
(i32.add
(get_local $9)
(i32.const 8)
)
(i32.const 7)
)
)
)
(set_local $8
(i32.add
(get_local $9)
(get_local $0)
)
)
(i32.store offset=1208
(i32.const 0)
(get_local $8)
)
(set_local $5
(i32.add
(i32.load offset=1196
(i32.const 0)
)
(get_local $10)
)
)
(set_local $0
(i32.sub
(get_local $5)
(get_local $0)
)
)
(i32.store offset=1196
(i32.const 0)
(get_local $0)
)
(i32.store offset=4
(get_local $8)
(i32.or
(get_local $0)
(i32.const 1)
)
)
(i32.store offset=4
(i32.add
(get_local $9)
(get_local $5)
)
(i32.const 40)
)
(i32.store offset=1212
(i32.const 0)
(i32.load offset=1672
(i32.const 0)
)
)
(br $label$142)
)
(br_if $label$162
(i32.ge_u
(get_local $5)
(i32.load offset=1200
(i32.const 0)
)
)
)
(set_local $13
(i32.const 105)
)
(br $label$56)
)
(i32.store offset=1200
(i32.const 0)
(get_local $5)
)
(set_local $13
(i32.const 29)
)
(br $label$56)
)
(set_local $8
(i32.add
(get_local $5)
(get_local $10)
)
)
(set_local $0
(i32.const 1632)
)
(set_local $13
(i32.const 30)
)
(br $label$56)
)
(br_if $label$159
(i32.eq
(i32.load
(get_local $0)
)
(get_local $8)
)
)
(set_local $13
(i32.const 31)
)
(br $label$56)
)
(set_local $0
(i32.load offset=8
(get_local $0)
)
)
(br_if $label$160
(get_local $0)
)
(br $label$161)
)
(br_if $label$158
(i32.and
(i32.load8_u offset=12
(get_local $0)
)
(i32.const 8)
)
)
(set_local $13
(i32.const 60)
)
(br $label$56)
)
(i32.store
(get_local $0)
(get_local $5)
)
(i32.store offset=4
(get_local $0)
(i32.add
(i32.load offset=4
(get_local $0)
)
(get_local $10)
)
)
(set_local $10
(i32.add
(get_local $5)
(select
(i32.and
(i32.sub
(i32.const -8)
(get_local $5)
)
(i32.const 7)
)
(i32.const 0)
(i32.and
(i32.add
(get_local $5)
(i32.const 8)
)
(i32.const 7)
)
)
)
)
(i32.store offset=4
(get_local $10)
(i32.or
(get_local $11)
(i32.const 3)
)
)
(set_local $5
(i32.add
(get_local $8)
(select
(i32.and
(i32.sub
(i32.const -8)
(get_local $8)
)
(i32.const 7)
)
(i32.const 0)
(i32.and
(i32.add
(get_local $8)
(i32.const 8)
)
(i32.const 7)
)
)
)
)
(set_local $6
(i32.sub
(i32.sub
(get_local $5)
(get_local $10)
)
(get_local $11)
)
)
(set_local $11
(i32.add
(get_local $10)
(get_local $11)
)
)
(br_if $label$137
(i32.eq
(get_local $9)
(get_local $5)
)
)
(set_local $13
(i32.const 61)
)
(br $label$56)
)
(br_if $label$136
(i32.eq
(i32.load offset=1204
(i32.const 0)
)
(get_local $5)
)
)
(set_local $13
(i32.const 62)
)
(br $label$56)
)
(set_local $0
(i32.load offset=4
(get_local $5)
)
)
(br_if $label$135
(i32.ne
(i32.and
(get_local $0)
(i32.const 3)
)
(i32.const 1)
)
)
(set_local $13
(i32.const 82)
)
(br $label$56)
)
(set_local $3
(i32.and
(get_local $0)
(i32.const -8)
)
)
(br_if $label$119
(i32.gt_u
(get_local $0)
(i32.const 255)
)
)
(set_local $13
(i32.const 100)
)
(br $label$56)
)
(set_local $8
(i32.load offset=8
(get_local $5)
)
)
(set_local $9
(i32.load offset=12
(get_local $5)
)
)
(br_if $label$99
(i32.eq
(get_local $9)
(get_local $8)
)
)
(set_local $13
(i32.const 101)
)
(br $label$56)
)
(i32.store offset=12
(get_local $8)
(get_local $9)
)
(i32.store offset=8
(get_local $9)
(get_local $8)
)
(br $label$105)
)
(set_local $0
(i32.const 1632)
)
(br $label$157)
)
(set_local $0
(i32.load offset=8
(get_local $0)
)
)
(set_local $13
(i32.const 33)
)
(br $label$56)
)
(set_local $8
(i32.load
(get_local $0)
)
)
(br_if $label$156
(i32.gt_u
(get_local $8)
(get_local $9)
)
)
(set_local $13
(i32.const 34)
)
(br $label$56)
)
(set_local $8
(i32.add
(get_local $8)
(i32.load offset=4
(get_local $0)
)
)
)
(br_if $label$155
(i32.le_u
(get_local $8)
(get_local $9)
)
)
(set_local $13
(i32.const 36)
)
(br $label$56)
)
(set_local $0
(select
(i32.and
(i32.sub
(i32.const -8)
(get_local $5)
)
(i32.const 7)
)
(i32.const 0)
(i32.and
(i32.add
(get_local $5)
(i32.const 8)
)
(i32.const 7)
)
)
)
(set_local $6
(i32.add
(get_local $10)
(i32.const -40)
)
)
(set_local $7
(i32.sub
(get_local $6)
(get_local $0)
)
)
(i32.store offset=1196
(i32.const 0)
(get_local $7)
)
(set_local $0
(i32.add
(get_local $5)
(get_local $0)
)
)
(i32.store offset=1208
(i32.const 0)
(get_local $0)
)
(i32.store offset=4
(get_local $0)
(i32.or
(get_local $7)
(i32.const 1)
)
)
(i32.store offset=4
(i32.add
(get_local $5)
(get_local $6)
)
(i32.const 40)
)
(i32.store offset=1212
(i32.const 0)
(i32.load offset=1672
(i32.const 0)
)
)
(set_local $0
(i32.add
(i32.add
(get_local $8)
(select
(i32.and
(i32.sub
(i32.const 39)
(get_local $8)
)
(i32.const 7)
)
(i32.const 0)
(i32.and
(i32.add
(get_local $8)
(i32.const -39)
)
(i32.const 7)
)
)
)
(i32.const -47)
)
)
(set_local $6
(select
(get_local $9)
(get_local $0)
(i32.lt_u
(get_local $0)
(i32.add
(get_local $9)
(i32.const 16)
)
)
)
)
(i32.store offset=4
(get_local $6)
(i32.const 27)
)
(i64.store align=4
(i32.add
(get_local $6)
(i32.const 16)
)
(i64.load offset=1640 align=4
(i32.const 0)
)
)
(i64.store offset=8 align=4
(get_local $6)
(i64.load offset=1632 align=4
(i32.const 0)
)
)
(i32.store offset=1632
(i32.const 0)
(get_local $5)
)
(i32.store offset=1636
(i32.const 0)
(get_local $10)
)
(i32.store offset=1640
(i32.const 0)
(i32.add
(get_local $6)
(i32.const 8)
)
)
(i32.store offset=1644
(i32.const 0)
(i32.const 0)
)
(set_local $0
(i32.add
(get_local $6)
(i32.const 28)
)
)
(set_local $13
(i32.const 37)
)
(br $label$56)
)
(i32.store
(get_local $0)
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment